javascript-time-ago 2.5.11 → 2.5.12

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 (433) hide show
  1. package/bundle/javascript-time-ago.js +1 -1
  2. package/bundle/javascript-time-ago.js.map +1 -1
  3. package/bundle/javascript-time-ago.min.js +1 -1
  4. package/bundle/javascript-time-ago.min.js.map +1 -1
  5. package/commonjs/LocaleDataStore.js +2 -5
  6. package/commonjs/LocaleDataStore.js.map +1 -1
  7. package/commonjs/PropTypes.js +12 -12
  8. package/commonjs/PropTypes.js.map +1 -1
  9. package/commonjs/TimeAgo.js +135 -190
  10. package/commonjs/TimeAgo.js.map +1 -1
  11. package/commonjs/TimeAgo.test.js +124 -130
  12. package/commonjs/TimeAgo.test.js.map +1 -1
  13. package/commonjs/cache.js +7 -25
  14. package/commonjs/cache.js.map +1 -1
  15. package/commonjs/cache.test.js +1 -3
  16. package/commonjs/cache.test.js.map +1 -1
  17. package/commonjs/isStyleObject.js +9 -9
  18. package/commonjs/isStyleObject.js.map +1 -1
  19. package/commonjs/isStyleObject.test.js +1 -3
  20. package/commonjs/isStyleObject.test.js.map +1 -1
  21. package/commonjs/locale.js +6 -19
  22. package/commonjs/locale.js.map +1 -1
  23. package/commonjs/locale.test.js +2 -11
  24. package/commonjs/locale.test.js.map +1 -1
  25. package/commonjs/round.js +2 -5
  26. package/commonjs/round.js.map +1 -1
  27. package/commonjs/steps/approximate.js +1 -4
  28. package/commonjs/steps/approximate.js.map +1 -1
  29. package/commonjs/steps/approximate.test.js +1 -6
  30. package/commonjs/steps/approximate.test.js.map +1 -1
  31. package/commonjs/steps/getStep.js +36 -53
  32. package/commonjs/steps/getStep.js.map +1 -1
  33. package/commonjs/steps/getStep.test.js +7 -7
  34. package/commonjs/steps/getStep.test.js.map +1 -1
  35. package/commonjs/steps/getStepDenominator.js +2 -5
  36. package/commonjs/steps/getStepDenominator.js.map +1 -1
  37. package/commonjs/steps/getStepDenominator.test.js +1 -3
  38. package/commonjs/steps/getStepDenominator.test.js.map +1 -1
  39. package/commonjs/steps/getStepMinTime.js +17 -32
  40. package/commonjs/steps/getStepMinTime.js.map +1 -1
  41. package/commonjs/steps/getStepMinTime.test.js +1 -3
  42. package/commonjs/steps/getStepMinTime.test.js.map +1 -1
  43. package/commonjs/steps/getTimeToNextUpdate.js +19 -41
  44. package/commonjs/steps/getTimeToNextUpdate.js.map +1 -1
  45. package/commonjs/steps/getTimeToNextUpdate.test.js +29 -25
  46. package/commonjs/steps/getTimeToNextUpdate.test.js.map +1 -1
  47. package/commonjs/steps/getTimeToNextUpdateForUnit.js +3 -12
  48. package/commonjs/steps/getTimeToNextUpdateForUnit.js.map +1 -1
  49. package/commonjs/steps/getTimeToNextUpdateForUnit.test.js +1 -7
  50. package/commonjs/steps/getTimeToNextUpdateForUnit.test.js.map +1 -1
  51. package/commonjs/steps/helpers.js +1 -2
  52. package/commonjs/steps/helpers.js.map +1 -1
  53. package/commonjs/steps/helpers.test.js +0 -1
  54. package/commonjs/steps/helpers.test.js.map +1 -1
  55. package/commonjs/steps/index.js +1 -6
  56. package/commonjs/steps/index.js.map +1 -1
  57. package/commonjs/steps/renameLegacyProperties.js +6 -14
  58. package/commonjs/steps/renameLegacyProperties.js.map +1 -1
  59. package/commonjs/steps/renameLegacyProperties.test.js +1 -3
  60. package/commonjs/steps/renameLegacyProperties.test.js.map +1 -1
  61. package/commonjs/steps/round.js +1 -2
  62. package/commonjs/steps/round.js.map +1 -1
  63. package/commonjs/steps/round.test.js +1 -7
  64. package/commonjs/steps/round.test.js.map +1 -1
  65. package/commonjs/steps/units.js +10 -21
  66. package/commonjs/steps/units.js.map +1 -1
  67. package/commonjs/style/approximate.js +2 -6
  68. package/commonjs/style/approximate.js.map +1 -1
  69. package/commonjs/style/approximateTime.js +2 -6
  70. package/commonjs/style/approximateTime.js.map +1 -1
  71. package/commonjs/style/approximateTime.test.js +116 -75
  72. package/commonjs/style/approximateTime.test.js.map +1 -1
  73. package/commonjs/style/getStyleByName.js +3 -29
  74. package/commonjs/style/getStyleByName.js.map +1 -1
  75. package/commonjs/style/mini.js +9 -6
  76. package/commonjs/style/mini.js.map +1 -1
  77. package/commonjs/style/mini.test.js +15 -25
  78. package/commonjs/style/mini.test.js.map +1 -1
  79. package/commonjs/style/miniMinute.js +8 -13
  80. package/commonjs/style/miniMinute.js.map +1 -1
  81. package/commonjs/style/miniMinute.test.js +11 -17
  82. package/commonjs/style/miniMinute.test.js.map +1 -1
  83. package/commonjs/style/miniMinuteNow.js +8 -13
  84. package/commonjs/style/miniMinuteNow.js.map +1 -1
  85. package/commonjs/style/miniMinuteNow.test.js +11 -17
  86. package/commonjs/style/miniMinuteNow.test.js.map +1 -1
  87. package/commonjs/style/miniNow.js +8 -13
  88. package/commonjs/style/miniNow.js.map +1 -1
  89. package/commonjs/style/miniNow.test.js +11 -17
  90. package/commonjs/style/miniNow.test.js.map +1 -1
  91. package/commonjs/style/renameLegacyProperties.js +7 -13
  92. package/commonjs/style/renameLegacyProperties.js.map +1 -1
  93. package/commonjs/style/renameLegacyProperties.test.js +1 -4
  94. package/commonjs/style/renameLegacyProperties.test.js.map +1 -1
  95. package/commonjs/style/round.js +2 -6
  96. package/commonjs/style/round.js.map +1 -1
  97. package/commonjs/style/round.test.js +51 -67
  98. package/commonjs/style/round.test.js.map +1 -1
  99. package/commonjs/style/roundMinute.js +8 -13
  100. package/commonjs/style/roundMinute.js.map +1 -1
  101. package/commonjs/style/roundMinute.test.js +20 -27
  102. package/commonjs/style/roundMinute.test.js.map +1 -1
  103. package/commonjs/style/twitter.js +34 -38
  104. package/commonjs/style/twitter.js.map +1 -1
  105. package/commonjs/style/twitter.test.js +49 -55
  106. package/commonjs/style/twitter.test.js.map +1 -1
  107. package/commonjs/style/twitterFirstMinute.js +10 -15
  108. package/commonjs/style/twitterFirstMinute.js.map +1 -1
  109. package/commonjs/style/twitterFirstMinute.test.js +16 -23
  110. package/commonjs/style/twitterFirstMinute.test.js.map +1 -1
  111. package/commonjs/style/twitterMinute.js +8 -13
  112. package/commonjs/style/twitterMinute.js.map +1 -1
  113. package/commonjs/style/twitterMinute.test.js +20 -25
  114. package/commonjs/style/twitterMinute.test.js.map +1 -1
  115. package/commonjs/style/twitterMinuteNow.js +8 -13
  116. package/commonjs/style/twitterMinuteNow.js.map +1 -1
  117. package/commonjs/style/twitterMinuteNow.test.js +20 -25
  118. package/commonjs/style/twitterMinuteNow.test.js.map +1 -1
  119. package/commonjs/style/twitterNow.js +8 -13
  120. package/commonjs/style/twitterNow.js.map +1 -1
  121. package/commonjs/style/twitterNow.test.js +18 -24
  122. package/commonjs/style/twitterNow.test.js.map +1 -1
  123. package/load-all-locales/index.cjs +32 -0
  124. package/load-all-locales/index.cjs.js +32 -0
  125. package/load-all-locales/index.js +64 -0
  126. package/locale/ak/package.json +16 -0
  127. package/locale/ak.json +267 -0
  128. package/locale/ak.json.d.ts +4 -0
  129. package/locale/ak.json.js +267 -0
  130. package/locale/bal-Latn/package.json +16 -0
  131. package/locale/bal-Latn.json +240 -0
  132. package/locale/bal-Latn.json.d.ts +4 -0
  133. package/locale/bal-Latn.json.js +240 -0
  134. package/locale/be-tarask/package.json +16 -0
  135. package/locale/be-tarask.json +259 -0
  136. package/locale/be-tarask.json.d.ts +4 -0
  137. package/locale/be-tarask.json.js +259 -0
  138. package/locale/blo/package.json +16 -0
  139. package/locale/blo.json +159 -0
  140. package/locale/blo.json.d.ts +4 -0
  141. package/locale/blo.json.js +159 -0
  142. package/locale/bn.json +5 -2
  143. package/locale/bn.json.js +5 -2
  144. package/locale/bs.json +8 -2
  145. package/locale/bs.json.js +8 -2
  146. package/locale/ccp.json +2 -8
  147. package/locale/ccp.json.js +2 -8
  148. package/locale/csw/package.json +16 -0
  149. package/locale/csw.json +180 -0
  150. package/locale/csw.json.d.ts +4 -0
  151. package/locale/csw.json.js +180 -0
  152. package/locale/cy.json +6 -12
  153. package/locale/cy.json.js +6 -12
  154. package/locale/doi/package.json +16 -0
  155. package/locale/doi.json +159 -0
  156. package/locale/doi.json.d.ts +4 -0
  157. package/locale/doi.json.js +159 -0
  158. package/locale/en-AU.json +12 -12
  159. package/locale/en-AU.json.js +12 -12
  160. package/locale/en-CZ/package.json +16 -0
  161. package/locale/en-CZ.json +219 -0
  162. package/locale/en-CZ.json.d.ts +4 -0
  163. package/locale/en-CZ.json.js +219 -0
  164. package/locale/en-ES/package.json +16 -0
  165. package/locale/en-ES.json +219 -0
  166. package/locale/en-ES.json.d.ts +4 -0
  167. package/locale/en-ES.json.js +219 -0
  168. package/locale/en-FR/package.json +16 -0
  169. package/locale/en-FR.json +219 -0
  170. package/locale/en-FR.json.d.ts +4 -0
  171. package/locale/en-FR.json.js +219 -0
  172. package/locale/en-GS/package.json +16 -0
  173. package/locale/en-GS.json +219 -0
  174. package/locale/en-GS.json.d.ts +4 -0
  175. package/locale/en-GS.json.js +219 -0
  176. package/locale/en-HU/package.json +16 -0
  177. package/locale/en-HU.json +219 -0
  178. package/locale/en-HU.json.d.ts +4 -0
  179. package/locale/en-HU.json.js +219 -0
  180. package/locale/en-ID/package.json +16 -0
  181. package/locale/en-ID.json +219 -0
  182. package/locale/en-ID.json.d.ts +4 -0
  183. package/locale/en-ID.json.js +219 -0
  184. package/locale/en-IT/package.json +16 -0
  185. package/locale/en-IT.json +219 -0
  186. package/locale/en-IT.json.d.ts +4 -0
  187. package/locale/en-IT.json.js +219 -0
  188. package/locale/en-NO/package.json +16 -0
  189. package/locale/en-NO.json +219 -0
  190. package/locale/en-NO.json.d.ts +4 -0
  191. package/locale/en-NO.json.js +219 -0
  192. package/locale/en-PL/package.json +16 -0
  193. package/locale/en-PL.json +219 -0
  194. package/locale/en-PL.json.d.ts +4 -0
  195. package/locale/en-PL.json.js +219 -0
  196. package/locale/en-PT/package.json +16 -0
  197. package/locale/en-PT.json +219 -0
  198. package/locale/en-PT.json.d.ts +4 -0
  199. package/locale/en-PT.json.js +219 -0
  200. package/locale/en-RO/package.json +16 -0
  201. package/locale/en-RO.json +219 -0
  202. package/locale/en-RO.json.d.ts +4 -0
  203. package/locale/en-RO.json.js +219 -0
  204. package/locale/en-SK/package.json +16 -0
  205. package/locale/en-SK.json +219 -0
  206. package/locale/en-SK.json.d.ts +4 -0
  207. package/locale/en-SK.json.js +219 -0
  208. package/locale/es-MX.json +12 -9
  209. package/locale/es-MX.json.js +12 -9
  210. package/locale/es-SV.json +2 -2
  211. package/locale/es-SV.json.js +2 -2
  212. package/locale/eu.json +24 -24
  213. package/locale/eu.json.js +24 -24
  214. package/locale/ha.json +119 -65
  215. package/locale/ha.json.js +119 -65
  216. package/locale/he.json +0 -6
  217. package/locale/he.json.js +0 -6
  218. package/locale/hi-Latn.json +2 -2
  219. package/locale/hi-Latn.json.js +2 -2
  220. package/locale/ht/package.json +16 -0
  221. package/locale/ht.json +207 -0
  222. package/locale/ht.json.d.ts +4 -0
  223. package/locale/ht.json.js +207 -0
  224. package/locale/id.json +1 -1
  225. package/locale/id.json.js +1 -1
  226. package/locale/ie/package.json +16 -0
  227. package/locale/ie.json +159 -0
  228. package/locale/ie.json.d.ts +4 -0
  229. package/locale/ie.json.js +159 -0
  230. package/locale/ig.json +17 -17
  231. package/locale/ig.json.js +17 -17
  232. package/locale/ii/package.json +16 -0
  233. package/locale/ii.json +165 -0
  234. package/locale/ii.json.d.ts +4 -0
  235. package/locale/ii.json.js +165 -0
  236. package/locale/is.json +4 -1
  237. package/locale/is.json.js +4 -1
  238. package/locale/kaa/package.json +16 -0
  239. package/locale/kaa.json +159 -0
  240. package/locale/kaa.json.d.ts +4 -0
  241. package/locale/kaa.json.js +159 -0
  242. package/locale/kok-Latn/package.json +16 -0
  243. package/locale/kok-Latn.json +159 -0
  244. package/locale/kok-Latn.json.d.ts +4 -0
  245. package/locale/kok-Latn.json.js +159 -0
  246. package/locale/kok.json +8 -8
  247. package/locale/kok.json.js +8 -8
  248. package/locale/ks.json +9 -9
  249. package/locale/ks.json.js +9 -9
  250. package/locale/ku.json +55 -46
  251. package/locale/ku.json.js +55 -46
  252. package/locale/lld/package.json +16 -0
  253. package/locale/lld.json +291 -0
  254. package/locale/lld.json.d.ts +4 -0
  255. package/locale/lld.json.js +291 -0
  256. package/locale/mi.json +22 -22
  257. package/locale/mi.json.js +22 -22
  258. package/locale/ms-Arab/package.json +16 -0
  259. package/locale/ms-Arab.json +159 -0
  260. package/locale/ms-Arab.json.d.ts +4 -0
  261. package/locale/ms-Arab.json.js +159 -0
  262. package/locale/nb.json +2 -2
  263. package/locale/nb.json.js +2 -2
  264. package/locale/ne.json +1 -1
  265. package/locale/ne.json.js +1 -1
  266. package/locale/nn.json +4 -4
  267. package/locale/nn.json.js +4 -4
  268. package/locale/no.json +2 -2
  269. package/locale/no.json.js +2 -2
  270. package/locale/nqo/package.json +16 -0
  271. package/locale/nqo.json +159 -0
  272. package/locale/nqo.json.d.ts +4 -0
  273. package/locale/nqo.json.js +159 -0
  274. package/locale/om/package.json +16 -0
  275. package/locale/om.json +213 -0
  276. package/locale/om.json.d.ts +4 -0
  277. package/locale/om.json.js +213 -0
  278. package/locale/or.json +1 -1
  279. package/locale/or.json.js +1 -1
  280. package/locale/qu.json +46 -46
  281. package/locale/qu.json.js +46 -46
  282. package/locale/rhg/package.json +16 -0
  283. package/locale/rhg.json +159 -0
  284. package/locale/rhg.json.d.ts +4 -0
  285. package/locale/rhg.json.js +159 -0
  286. package/locale/sl.json +12 -12
  287. package/locale/sl.json.js +12 -12
  288. package/locale/sr-Cyrl-BA.json +2 -2
  289. package/locale/sr-Cyrl-BA.json.js +2 -2
  290. package/locale/sr-Latn-BA.json +2 -2
  291. package/locale/sr-Latn-BA.json.js +2 -2
  292. package/locale/sv.json +1 -1
  293. package/locale/sv.json.js +1 -1
  294. package/locale/syr/package.json +16 -0
  295. package/locale/syr.json +303 -0
  296. package/locale/syr.json.d.ts +4 -0
  297. package/locale/syr.json.js +303 -0
  298. package/locale/ti.json +6 -6
  299. package/locale/ti.json.js +6 -6
  300. package/locale/tn/package.json +16 -0
  301. package/locale/tn.json +159 -0
  302. package/locale/tn.json.d.ts +4 -0
  303. package/locale/tn.json.js +159 -0
  304. package/locale/to.json +26 -26
  305. package/locale/to.json.js +26 -26
  306. package/locale/uk.json +1 -1
  307. package/locale/uk.json.js +1 -1
  308. package/locale/ur-IN.json +9 -6
  309. package/locale/ur-IN.json.js +9 -6
  310. package/locale/vec/package.json +16 -0
  311. package/locale/vec.json +267 -0
  312. package/locale/vec.json.d.ts +4 -0
  313. package/locale/vec.json.js +267 -0
  314. package/locale/xnr/package.json +16 -0
  315. package/locale/xnr.json +159 -0
  316. package/locale/xnr.json.d.ts +4 -0
  317. package/locale/xnr.json.js +159 -0
  318. package/locale/yo-BJ.json +17 -17
  319. package/locale/yo-BJ.json.js +17 -17
  320. package/locale/yo.json +17 -17
  321. package/locale/yo.json.js +17 -17
  322. package/modules/LocaleDataStore.js +2 -3
  323. package/modules/LocaleDataStore.js.map +1 -1
  324. package/modules/PropTypes.js +11 -7
  325. package/modules/PropTypes.js.map +1 -1
  326. package/modules/TimeAgo.js +135 -174
  327. package/modules/TimeAgo.js.map +1 -1
  328. package/modules/TimeAgo.test.js +126 -115
  329. package/modules/TimeAgo.test.js.map +1 -1
  330. package/modules/cache.js +6 -22
  331. package/modules/cache.js.map +1 -1
  332. package/modules/cache.test.js.map +1 -1
  333. package/modules/isStyleObject.js +9 -7
  334. package/modules/isStyleObject.js.map +1 -1
  335. package/modules/isStyleObject.test.js.map +1 -1
  336. package/modules/locale.js +6 -16
  337. package/modules/locale.js.map +1 -1
  338. package/modules/locale.test.js +0 -4
  339. package/modules/locale.test.js.map +1 -1
  340. package/modules/round.js +2 -3
  341. package/modules/round.js.map +1 -1
  342. package/modules/steps/approximate.js +6 -2
  343. package/modules/steps/approximate.js.map +1 -1
  344. package/modules/steps/approximate.test.js +0 -2
  345. package/modules/steps/approximate.test.js.map +1 -1
  346. package/modules/steps/getStep.js +36 -48
  347. package/modules/steps/getStep.js.map +1 -1
  348. package/modules/steps/getStep.test.js +6 -2
  349. package/modules/steps/getStep.test.js.map +1 -1
  350. package/modules/steps/getStepDenominator.js +2 -3
  351. package/modules/steps/getStepDenominator.js.map +1 -1
  352. package/modules/steps/getStepDenominator.test.js.map +1 -1
  353. package/modules/steps/getStepMinTime.js +17 -29
  354. package/modules/steps/getStepMinTime.js.map +1 -1
  355. package/modules/steps/getStepMinTime.test.js.map +1 -1
  356. package/modules/steps/getTimeToNextUpdate.js +19 -31
  357. package/modules/steps/getTimeToNextUpdate.js.map +1 -1
  358. package/modules/steps/getTimeToNextUpdate.test.js +27 -18
  359. package/modules/steps/getTimeToNextUpdate.test.js.map +1 -1
  360. package/modules/steps/getTimeToNextUpdateForUnit.js +4 -10
  361. package/modules/steps/getTimeToNextUpdateForUnit.js.map +1 -1
  362. package/modules/steps/getTimeToNextUpdateForUnit.test.js +0 -4
  363. package/modules/steps/getTimeToNextUpdateForUnit.test.js.map +1 -1
  364. package/modules/steps/helpers.js +1 -1
  365. package/modules/steps/helpers.js.map +1 -1
  366. package/modules/steps/helpers.test.js.map +1 -1
  367. package/modules/steps/index.js +2 -1
  368. package/modules/steps/index.js.map +1 -1
  369. package/modules/steps/renameLegacyProperties.js +6 -13
  370. package/modules/steps/renameLegacyProperties.js.map +1 -1
  371. package/modules/steps/renameLegacyProperties.test.js.map +1 -1
  372. package/modules/steps/round.js.map +1 -1
  373. package/modules/steps/round.test.js +0 -3
  374. package/modules/steps/round.test.js.map +1 -1
  375. package/modules/steps/units.js +5 -9
  376. package/modules/steps/units.js.map +1 -1
  377. package/modules/style/approximate.js +5 -1
  378. package/modules/style/approximate.js.map +1 -1
  379. package/modules/style/approximateTime.js +6 -2
  380. package/modules/style/approximateTime.js.map +1 -1
  381. package/modules/style/approximateTime.test.js +115 -70
  382. package/modules/style/approximateTime.test.js.map +1 -1
  383. package/modules/style/getStyleByName.js +4 -17
  384. package/modules/style/getStyleByName.js.map +1 -1
  385. package/modules/style/mini.js +8 -4
  386. package/modules/style/mini.js.map +1 -1
  387. package/modules/style/mini.test.js +14 -20
  388. package/modules/style/mini.test.js.map +1 -1
  389. package/modules/style/miniMinute.js +6 -6
  390. package/modules/style/miniMinute.js.map +1 -1
  391. package/modules/style/miniMinute.test.js +10 -12
  392. package/modules/style/miniMinute.test.js.map +1 -1
  393. package/modules/style/miniMinuteNow.js +6 -6
  394. package/modules/style/miniMinuteNow.js.map +1 -1
  395. package/modules/style/miniMinuteNow.test.js +10 -12
  396. package/modules/style/miniMinuteNow.test.js.map +1 -1
  397. package/modules/style/miniNow.js +6 -6
  398. package/modules/style/miniNow.js.map +1 -1
  399. package/modules/style/miniNow.test.js +10 -12
  400. package/modules/style/miniNow.test.js.map +1 -1
  401. package/modules/style/renameLegacyProperties.js +8 -10
  402. package/modules/style/renameLegacyProperties.js.map +1 -1
  403. package/modules/style/renameLegacyProperties.test.js +0 -1
  404. package/modules/style/renameLegacyProperties.test.js.map +1 -1
  405. package/modules/style/round.js +3 -2
  406. package/modules/style/round.js.map +1 -1
  407. package/modules/style/round.test.js +50 -62
  408. package/modules/style/round.test.js.map +1 -1
  409. package/modules/style/roundMinute.js +8 -7
  410. package/modules/style/roundMinute.js.map +1 -1
  411. package/modules/style/roundMinute.test.js +19 -22
  412. package/modules/style/roundMinute.test.js.map +1 -1
  413. package/modules/style/twitter.js +35 -32
  414. package/modules/style/twitter.js.map +1 -1
  415. package/modules/style/twitter.test.js +48 -50
  416. package/modules/style/twitter.test.js.map +1 -1
  417. package/modules/style/twitterFirstMinute.js +8 -7
  418. package/modules/style/twitterFirstMinute.js.map +1 -1
  419. package/modules/style/twitterFirstMinute.test.js +15 -18
  420. package/modules/style/twitterFirstMinute.test.js.map +1 -1
  421. package/modules/style/twitterMinute.js +6 -6
  422. package/modules/style/twitterMinute.js.map +1 -1
  423. package/modules/style/twitterMinute.test.js +19 -20
  424. package/modules/style/twitterMinute.test.js.map +1 -1
  425. package/modules/style/twitterMinuteNow.js +6 -6
  426. package/modules/style/twitterMinuteNow.js.map +1 -1
  427. package/modules/style/twitterMinuteNow.test.js +19 -20
  428. package/modules/style/twitterMinuteNow.test.js.map +1 -1
  429. package/modules/style/twitterNow.js +6 -6
  430. package/modules/style/twitterNow.js.map +1 -1
  431. package/modules/style/twitterNow.test.js +17 -19
  432. package/modules/style/twitterNow.test.js.map +1 -1
  433. package/package.json +261 -4
@@ -1 +1 @@
1
- {"version":3,"file":"TimeAgo.test.js","names":["TimeAgo","getLocaleData","english","type","setDefaultLocale","describe","it","timeAgo","format","Date","now","should","equal","future","labels","steps","formatAs","flavour","gradation","englishNow","addLocale","undefined","NumberFormat","Intl","englishLongTimeMinute","minute","past","mockedDate","getTime","thrower","units","custom","time","date","locale","style2","style","unit","factor","include","secondLabels","second","getTimeToNextUpdate","round","deep","minTime","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' assert { 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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"}
1
+ {"version":3,"file":"TimeAgo.test.js","names":["TimeAgo","getLocaleData","english","type","setDefaultLocale","describe","it","timeAgo","format","Date","now","should","equal","future","labels","steps","formatAs","flavour","gradation","englishNow","addLocale","undefined","NumberFormat","Intl","englishLongTimeMinute","minute","past","mockedDate","getTime","thrower","units","custom","_ref","time","date","locale","_ref2","style2","style","unit","factor","include","secondLabels","second","getTimeToNextUpdate","round","deep","minTime","_ref3","polyfill","global","expect","to","getDefaultLocale","addDefaultLocale"],"sources":["../source/TimeAgo.test.js"],"sourcesContent":["import TimeAgo from './TimeAgo.js'\r\nimport { getLocaleData } from './LocaleDataStore.js'\r\n\r\n// Load locale specific relative date/time messages\r\nimport english from '../locale/en.json' with { type: 'json' }\r\n\r\n// Just so this function code is covered.\r\nTimeAgo.setDefaultLocale('en')\r\n\r\ndescribe(`javascript-time-ago`, () => {\r\n\tit('should default to \"round-minute\" style', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now()).should.equal('just now')\r\n\t\ttimeAgo.format(Date.now() + 20 * 1000).should.equal('in a moment')\r\n\t\ttimeAgo.format(Date.now() + 1 * 60 * 1000).should.equal('in 1 minute')\r\n\t\ttimeAgo.format(Date.now() + 4 * 60 * 1000).should.equal('in 4 minutes')\r\n\t})\r\n\r\n\tit('should tell `options` argument from `style` argument', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), 'mini-now').should.equal('now')\r\n\t\ttimeAgo.format(0, { future: true, now: 0 }).should.equal('in a moment')\r\n\t\ttimeAgo.format(0, { labels: 'mini', steps: [{ formatAs: 'now' }, { formatAs: 'second' }] }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { labels: ['mini'], steps: [{ formatAs: 'now' }, { formatAs: 'second' }] }, { future: true, now: 0 }).should.equal('now')\r\n\t\t// `flavour` is a legacy name of `labels` property.\r\n\t\ttimeAgo.format(0, { flavour: 'mini' }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { flavour: ['mini'] }, { future: true, now: 0 }).should.equal('now')\r\n\t\ttimeAgo.format(0, { steps: [{ formatAs: 'minute' }] }, { future: true, now: 0 }).should.equal('in 0 minutes')\r\n\t\t// `gradation` is a legacy name of `steps` property.\r\n\t\ttimeAgo.format(0, { gradation: [{ formatAs: 'minute' }] }, { future: true, now: 0 }).should.equal('in 0 minutes')\r\n\t})\r\n\r\n\tit('should try various label types until an appropriate one is found', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { labels: ['exotic', 'short'] }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should support the legacy name \"flavour\" of \"labels\"', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { labels: ['exotic', 'short'] }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should fallback to \"second.current\" for \"now\" when \"now\" is not defined', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishNow = english.now\r\n\t\tdelete english.now\r\n\t\tTimeAgo.addLocale(english)\r\n\t\tenglish.now = undefined\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('now')\r\n\t\tenglish.now = englishNow\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should not use Intl.NumberFormat if it is not available', () => {\r\n\t\tconst NumberFormat = Intl.NumberFormat\r\n\t\tdelete Intl.NumberFormat\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 60 * 1000, { labels: 'long-time' }).should.equal('1 minute')\r\n\t\tIntl.NumberFormat = NumberFormat\r\n\t})\r\n\r\n\tit('should work when \"past\"/\"future\" messages are same for all quantifiers', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 365 * 24 * 60 * 60 * 1000, { labels: 'short' }).should.equal('in 1 yr.')\r\n\t})\r\n\r\n\tit('should work when \"now\" is a string (does not differentiate between \"past\" and \"future\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishNow = english.now\r\n\t\tenglish.now = { now: 'now' }\r\n\t\tTimeAgo.addLocale(english)\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('now')\r\n\t\tenglish.now = englishNow\r\n\t\ttimeAgo.format(Date.now(), { labels: 'long' }).should.equal('just now')\r\n\t})\r\n\r\n\tit('should work when a unit has formatting rules for \"past\" and \"future\" which are strings (style: not \"long\", not \"short\", not \"narrow\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst englishLongTimeMinute = english['long-time'].minute\r\n\t\tenglish['long-time'].minute = {\r\n\t\t\tpast: '{0} minute(s) ago',\r\n\t\t\tfuture: 'in {0} minute(s)'\r\n\t\t}\r\n\t\tTimeAgo.addLocale(english)\r\n\t\t// Past.\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, { labels: 'long-time' }).should.equal('1 minute(s) ago')\r\n\t\t// Future (covers an \"else\" branch).\r\n\t\ttimeAgo.format(Date.now() + 60 * 1000, { labels: 'long-time' }).should.equal('in 1 minute(s)')\r\n\t\t// Undo.\r\n\t\tenglish['long-time'].minute = englishLongTimeMinute\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, { labels: 'long-time' }).should.equal('1 minute')\r\n\t})\r\n\r\n\tit(`should format \"now\" for \"past\" time`, () =>\r\n\t{\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now() + 10, { labels: ['long'] }).should.equal('in a moment')\r\n\t})\r\n\r\n\tit('should accept a string style name argument', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// \"mini\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'mini').should.equal('0s')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'mini').should.equal('1s')\r\n\t\t// \"mini-now\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'mini-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'mini-now').should.equal('1s')\r\n\t\t// \"mini-minute-now\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'mini-minute-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'mini-minute-now').should.equal('1m')\r\n\t\t// \"mini-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'mini-minute').should.equal('0m')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'mini-minute').should.equal('1m')\r\n\t\t// \"twitter\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'twitter').should.equal('0s')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'twitter').should.equal('1s')\r\n\t\t// \"twitter-now\".\r\n\t\ttimeAgo.format(Date.now() - 0 * 1000, 'twitter-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 1 * 1000, 'twitter-now').should.equal('1s')\r\n\t\t// \"twitter-minute-now\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-minute-now').should.equal('now')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-minute-now').should.equal('1m')\r\n\t\t// \"twitter-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-minute').should.equal('0m')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-minute').should.equal('1m')\r\n\t\t// \"twitter-first-minute\".\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'twitter-first-minute').should.equal('')\r\n\t\ttimeAgo.format(Date.now() - 60 * 1000, 'twitter-first-minute').should.equal('1m')\r\n\t\t// \"approximate\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'approximate').should.equal('just now')\r\n\t\t// \"convenient\" style was renamed to \"approximate\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'convenient').should.equal('just now')\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'round').should.equal('45 seconds ago')\r\n\t\t// \"default\" style was renamed to \"round\".\r\n\t\ttimeAgo.format(Date.now() - 45 * 1000, 'default').should.equal('45 seconds ago')\r\n\t\ttimeAgo.format(Date.now() - 29 * 1000, 'round-minute').should.equal('just now')\r\n\t\t// \"time\" style was renamed to \"approximate-time\".\r\n\t\ttimeAgo.format(Date.now() - 2 * 60 * 1000, 'time').should.equal('2 minutes')\r\n\t\ttimeAgo.format(Date.now() - 2 * 60 * 1000, 'approximate-time').should.equal('2 minutes')\r\n\t\ttimeAgo.format(Date.now(), 'exotic').should.equal('just now')\r\n\t})\r\n\r\n\tit('should accept empty constructor parameters', () => {\r\n\t\tconst timeAgo = new TimeAgo()\r\n\t\ttimeAgo.format(new Date()).should.equal('just now')\r\n\t})\r\n\r\n\tit('should accept \"mocked\" Dates when testing', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst mockedDate = { getTime: () => Date.now() }\r\n\t\ttimeAgo.format(mockedDate).should.equal('just now')\r\n\t})\r\n\r\n\tit('should not accept anything but Dates and timestamps', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\tconst thrower = () => timeAgo.format('Jan 14, 2017')\r\n\t\tthrower.should.throw('Unsupported relative time formatter input: string, Jan 14, 2017')\r\n\t})\r\n\r\n\tit('should return an empty string if the specified units are not available in locale data', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), { units: ['femtosecond'] }).should.equal('')\r\n\t})\r\n\r\n\tit('should format for a style with \"custom\" function', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\r\n\t\t// `custom` returns a string\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\tcustom({ now, time, date, locale }) {\r\n\t\t\t\treturn locale\r\n\t\t\t}\r\n\t\t})\r\n\t\t.should.equal('en')\r\n\r\n\t\t// `custom` returns `undefined`\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\tcustom({ now, time, date, locale }) {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t})\r\n\t\t.should.equal('just now')\r\n\t})\r\n\r\n\tit('should format future dates', () => {\r\n\t\tnew TimeAgo('en').format(Date.now() + 60 * 60 * 1000).should.equal('in 1 hour')\r\n\t\tnew TimeAgo('ru').format(Date.now() + 60 * 1000).should.equal('через 1 минуту')\r\n\t})\r\n\r\n\tit('should accept \"future\" option', () => {\r\n\t\t// \"now\" unit.\r\n\t\tnew TimeAgo('en').format(Date.now()).should.equal('just now')\r\n\t\tnew TimeAgo('en').format(Date.now(), 'approximate', { future: true }).should.equal('in a moment')\r\n\r\n\t\t// Non-\"now\" unit, \"long\" style.\r\n\t\t// const style = {\r\n\t\t// \tgradation: [{\r\n\t\t// \t\tfactor: 1,\r\n\t\t// \t\tunit: 'second'\r\n\t\t// \t}],\r\n\t\t// \tlabels: 'long'\r\n\t\t// }\r\n\t\t// new TimeAgo('en').format(Date.now(), style).should.equal('0 seconds ago')\r\n\t\t// new TimeAgo('en').format(Date.now(), style, { future: true }).should.equal('in 0 seconds')\r\n\r\n\t\t// Non-\"now\" unit, \"mini\" style.\r\n\t\tconst style2 = {\r\n\t\t\tstyle: [{\r\n\t\t\t\tunit: 'year'\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini'\r\n\t\t}\r\n\t\tnew TimeAgo('ru').format(Date.now() - 5 * 365 * 24 * 60 * 60 * 1000, style2).should.equal('5 л')\r\n\t\tnew TimeAgo('ru').format(Date.now() - 5 * 365 * 24 * 60 * 60 * 1000, style2, { future: true }).should.equal('5 л')\r\n\t})\r\n\r\n\tit('should support the legacy properties: \"gradation\", \"flavour\", \"factor\", \"unit\", \"\\'tiny\\'\" labels style', () => {\r\n\t\t// Non-\"now\" unit, \"tiny\" style.\r\n\t\tconst style = {\r\n\t\t\tgradation: [{\r\n\t\t\t\tfactor: 5,\r\n\t\t\t\tunit: 'year'\r\n\t\t\t}],\r\n\t\t\tflavour: 'tiny'\r\n\t\t}\r\n\t\tnew TimeAgo('ru').format(Date.now() - 10 * 1000, style).should.equal('2 г')\r\n\t\tnew TimeAgo('ru').format(Date.now() - 10 * 1000, style, { future: true }).should.equal('2 г')\r\n\t})\r\n\r\n\tit('should have generated missing quantifier functions for locales that do not have it in CLDR data', () => {\r\n\t\tnew TimeAgo('ccp').format(Date.now() + 60 * 1000).should.include(' 𑄟𑄨𑄚𑄨𑄘𑄬')\r\n\t})\r\n\r\n\tit('should throw for non-existing locales', () => {\r\n\t\t(() => TimeAgo.addLocale()).should.throw('No locale data passed')\r\n\t})\r\n\r\n\tit('should choose \"future\" variant of a label for `0` if \"future: true\" option is passed', () => {\r\n\t\tTimeAgo.addLocale(english)\r\n\t\tconst secondLabels = english['mini'].second\r\n\t\tenglish['mini'].second = {\r\n\t\t\tpast: '{0} seconds ago',\r\n\t\t\tfuture: 'in {0} seconds'\r\n\t\t}\r\n\r\n\t\tnew TimeAgo('en').format(Date.now(), {\r\n\t\t\tsteps: [{\r\n\t\t\t\tunit: 'second'\r\n\t\t\t}],\r\n\t\t\t// Uses \"mini\" labels so that it doesn't use `Intl.RelativeTimeFormat`.\r\n\t\t\tlabels: 'mini'\r\n\t\t}).should.equal('0 seconds ago')\r\n\r\n\t\tnew TimeAgo('en').format(Date.now(), {\r\n\t\t\tsteps: [{\r\n\t\t\t\tunit: 'second'\r\n\t\t\t}],\r\n\t\t\t// Uses \"mini\" labels so that it doesn't use `Intl.RelativeTimeFormat`.\r\n\t\t\tlabels: 'mini'\r\n\t\t}, {\r\n\t\t\tfuture: true\r\n\t\t}).should.equal('in 0 seconds')\r\n\r\n\t\tenglish['mini'].second = secondLabels\r\n\t})\r\n\r\n\tit('should get time to next update (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (round: \"round\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// in 1 second -> in 0 seconds.\r\n\t\ttimeAgo.format(1000, 'twitter', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t501\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (\"mini-now\" style) (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// In 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t// Right after zero point.\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (\"mini-now\" style) (round: \"round\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\t// In 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 0\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t500 + 1\r\n\t\t])\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 500 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59.5 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59.5 * 1000 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t// Right after zero point.\r\n\t\t\t500\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t500\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t500 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 500\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should get time to next update (first step has non-zero \"minTime\") (round: \"floor\")', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\r\n\t\t// Future.\r\n\t\t// Inside the first step.\r\n\t\t// Updates soon.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: -0.5 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t0.5 * 1000 + 1\r\n\t\t])\r\n\r\n\t\t// Future.\r\n\t\t// Outside of the first step.\r\n\t\t// Updates right after zero point.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60 * 1000\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'',\r\n\t\t\t59 * 1000 + 1\r\n\t\t])\r\n\r\n\t\t// Zero point.\r\n\t\t// Outside of the first step.\r\n\t\t// Updates at the first step's `minTime`.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'',\r\n\t\t\t60 * 1000\r\n\t\t])\r\n\r\n\t\t// Past.\r\n\t\t// Inside the first step.\r\n\t\t// Updates at the next minute.\r\n\t\ttimeAgo.format(60 * 1000, {\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'minute',\r\n\t\t\t\tminTime: 60\r\n\t\t\t}],\r\n\t\t\tlabels: 'mini',\r\n\t\t\tround: 'floor'\r\n\t\t}, {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 60 * 1000\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1m',\r\n\t\t\t60 * 1000\r\n\t\t])\r\n\r\n\t\t// Almost in 1 minute.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'59s',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// In 1 second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Almost in 1 second.\r\n\t\t// Updates right after the zero point.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 59 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: true`.\r\n\t\t// Updates right after zero point.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1\r\n\t\t])\r\n\t\t// Zero point (future to past).\r\n\t\t// `future: false`.\r\n\t\t// Updates at the next second.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000\r\n\t\t])\r\n\t\t// Right after zero point (past).\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'now',\r\n\t\t\t1000 - 1\r\n\t\t])\r\n\t\t// 1 second ago.\r\n\t\ttimeAgo.format(60 * 1000, 'mini-now', {\r\n\t\t\tgetTimeToNextUpdate: true,\r\n\t\t\tnow: 60 * 1000 + 1000,\r\n\t\t\tround: 'floor'\r\n\t\t}).should.deep.equal([\r\n\t\t\t'1s',\r\n\t\t\t1000\r\n\t\t])\r\n\t})\r\n\r\n\tit('should pass `formatAs()` in `step.format()`', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(Date.now(), {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformat(date, locale, { formatAs }) {\r\n\t\t\t\t\treturn formatAs('second', 1)\r\n\t\t\t\t}\r\n\t\t\t}]\r\n\t\t}).should.equal('in 1 second')\r\n\t})\r\n\r\n\tit('should support `polyfill: false` option', () => {\r\n\t\tconst timeAgo = new TimeAgo('en', { polyfill: false })\r\n\t\t// Still uses \"now\" labels, even when not polyfilled.\r\n\t\ttimeAgo.format(0, 'round', { now: 0 }).should.equal('just now')\r\n\t\ttimeAgo.format(1000, 'round', { now: 0 }).should.equal('in 1 second')\r\n\t})\r\n\r\n\tit('should not use Intl.NumberFormat if it is not available', () => {\r\n\t\tconst Intl = global.Intl\r\n\t\tglobal.Intl = undefined\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(1000, 'round', { now: 0 }).should.equal('in 1 second')\r\n\t\tglobal.Intl = Intl\r\n\t})\r\n\r\n\tit('should format `0` in past mode by default', () => {\r\n\t\tnew TimeAgo('en').format(0, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'second'\r\n\t\t\t}]\r\n\t\t}, { now: 0 }).should.equal('0 seconds ago')\r\n\t})\r\n\r\n\tit('should format `0` in future mode when `future: true` option was passed', () => {\r\n\t\tnew TimeAgo('en').format(0, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{\r\n\t\t\t\tformatAs: 'second'\r\n\t\t\t}]\r\n\t\t}, { now: 0, future: true }).should.equal('in 0 seconds')\r\n\t})\r\n\r\n\tit('should throw if a step does not define `formatAs` or `format()`', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\texpect(() => timeAgo.format(Date.now() + 1000, {\r\n\t\t\tlabels: 'long',\r\n\t\t\tsteps: [{}]\r\n\t\t})).to.throw('Each step must define either `formatAs` or `format()`.')\r\n\t})\r\n\r\n\tit('should add default locale', () => {\r\n\t\tTimeAgo.getDefaultLocale().should.equal('en')\r\n\t\tTimeAgo.addDefaultLocale({\r\n\t\t\tlocale: 'el'\r\n\t\t})\r\n\t\tTimeAgo.getDefaultLocale().should.equal('el')\r\n\t\t// expect(() => {\r\n\t\t\tTimeAgo.addDefaultLocale({\r\n\t\t\t\tlocale: 'el'\r\n\t\t\t})\r\n\t\t// }).to.throw('`TimeAgo.addDefaultLocale()` can only be called once')\r\n\t\tTimeAgo.setDefaultLocale('en')\r\n\t})\r\n\r\n\tit('should support \"floor\" rounding', () => {\r\n\t\tconst timeAgo = new TimeAgo('en')\r\n\t\ttimeAgo.format(0.9 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('0s')\r\n\t\ttimeAgo.format(1 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1s')\r\n\t\ttimeAgo.format(1.9 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1s')\r\n\t\ttimeAgo.format(2 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('2s')\r\n\t\ttimeAgo.format(1.9 * 60 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('1m')\r\n\t\ttimeAgo.format(2 * 60 * 1000, 'twitter', { now: 0, round: 'floor' }).should.equal('2m')\r\n\t})\r\n})"],"mappings":"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","ignoreList":[]}
package/modules/cache.js CHANGED
@@ -1,11 +1,9 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
-
3
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
4
-
5
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
6
-
7
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
8
-
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
3
+ function _defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, _toPropertyKey(o.key), o); } }
4
+ function _createClass(e, r, t) { return r && _defineProperties(e.prototype, r), t && _defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
5
+ function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
6
+ function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
9
7
  /**
10
8
  * A basic in-memory cache.
11
9
  *
@@ -16,29 +14,22 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
16
14
  var Cache = /*#__PURE__*/function () {
17
15
  function Cache() {
18
16
  _classCallCheck(this, Cache);
19
-
20
17
  this.cache = {};
21
18
  }
22
-
23
19
  _createClass(Cache, [{
24
20
  key: "get",
25
21
  value: function get() {
26
22
  var cache = this.cache;
27
-
28
23
  for (var _len = arguments.length, keys = new Array(_len), _key = 0; _key < _len; _key++) {
29
24
  keys[_key] = arguments[_key];
30
25
  }
31
-
32
26
  for (var _i = 0, _keys = keys; _i < _keys.length; _i++) {
33
27
  var key = _keys[_i];
34
-
35
28
  if (_typeof(cache) !== 'object') {
36
29
  return;
37
30
  }
38
-
39
31
  cache = cache[key];
40
32
  }
41
-
42
33
  return cache;
43
34
  }
44
35
  }, {
@@ -47,27 +38,20 @@ var Cache = /*#__PURE__*/function () {
47
38
  for (var _len2 = arguments.length, keys = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
48
39
  keys[_key2] = arguments[_key2];
49
40
  }
50
-
51
41
  var value = keys.pop();
52
42
  var lastKey = keys.pop();
53
43
  var cache = this.cache;
54
-
55
44
  for (var _i2 = 0, _keys2 = keys; _i2 < _keys2.length; _i2++) {
56
45
  var key = _keys2[_i2];
57
-
58
46
  if (_typeof(cache[key]) !== 'object') {
59
47
  cache[key] = {};
60
48
  }
61
-
62
49
  cache = cache[key];
63
50
  }
64
-
65
51
  return cache[lastKey] = value;
66
52
  }
67
53
  }]);
68
-
69
54
  return Cache;
70
55
  }();
71
-
72
56
  export { Cache as default };
73
57
  //# sourceMappingURL=cache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","names":["Cache","cache","keys","key","value","pop","lastKey"],"sources":["../source/cache.js"],"sourcesContent":["/**\r\n * A basic in-memory cache.\r\n *\r\n * import Cache from 'javascript-time-ago/Cache'\r\n * const cache = new Cache()\r\n * const object = cache.get('key1', 'key2', ...) || cache.put('key1', 'key2', ..., createObject())\r\n */\r\nexport default class Cache {\r\n\tconstructor() {\r\n\t\tthis.cache = {}\r\n\t}\r\n\r\n\tget(...keys) {\r\n\t\tlet cache = this.cache\r\n\t\tfor (const key of keys) {\r\n\t\t\tif (typeof cache !== 'object') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tcache = cache[key]\r\n\t\t}\r\n\t\treturn cache\r\n\t}\r\n\r\n\tput(...keys) {\r\n\t\tconst value = keys.pop()\r\n\t\tconst lastKey = keys.pop()\r\n\t\tlet cache = this.cache\r\n\t\tfor (const key of keys) {\r\n\t\t\tif (typeof cache[key] !== 'object') {\r\n\t\t\t\tcache[key] = {}\r\n\t\t\t}\r\n\t\t\tcache = cache[key]\r\n\t\t}\r\n\t\treturn cache[lastKey] = value\r\n\t}\r\n}"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;IACqBA,K;EACpB,iBAAc;IAAA;;IACb,KAAKC,KAAL,GAAa,EAAb;EACA;;;;WAED,eAAa;MACZ,IAAIA,KAAK,GAAG,KAAKA,KAAjB;;MADY,kCAANC,IAAM;QAANA,IAAM;MAAA;;MAEZ,yBAAkBA,IAAlB,2BAAwB;QAAnB,IAAMC,GAAG,YAAT;;QACJ,IAAI,QAAOF,KAAP,MAAiB,QAArB,EAA+B;UAC9B;QACA;;QACDA,KAAK,GAAGA,KAAK,CAACE,GAAD,CAAb;MACA;;MACD,OAAOF,KAAP;IACA;;;WAED,eAAa;MAAA,mCAANC,IAAM;QAANA,IAAM;MAAA;;MACZ,IAAME,KAAK,GAAGF,IAAI,CAACG,GAAL,EAAd;MACA,IAAMC,OAAO,GAAGJ,IAAI,CAACG,GAAL,EAAhB;MACA,IAAIJ,KAAK,GAAG,KAAKA,KAAjB;;MACA,2BAAkBC,IAAlB,8BAAwB;QAAnB,IAAMC,GAAG,cAAT;;QACJ,IAAI,QAAOF,KAAK,CAACE,GAAD,CAAZ,MAAsB,QAA1B,EAAoC;UACnCF,KAAK,CAACE,GAAD,CAAL,GAAa,EAAb;QACA;;QACDF,KAAK,GAAGA,KAAK,CAACE,GAAD,CAAb;MACA;;MACD,OAAOF,KAAK,CAACK,OAAD,CAAL,GAAiBF,KAAxB;IACA;;;;;;SA3BmBJ,K"}
1
+ {"version":3,"file":"cache.js","names":["Cache","_classCallCheck","cache","_createClass","key","value","get","_len","arguments","length","keys","Array","_key","_i","_keys","_typeof","put","_len2","_key2","pop","lastKey","_i2","_keys2","default"],"sources":["../source/cache.js"],"sourcesContent":["/**\r\n * A basic in-memory cache.\r\n *\r\n * import Cache from 'javascript-time-ago/Cache'\r\n * const cache = new Cache()\r\n * const object = cache.get('key1', 'key2', ...) || cache.put('key1', 'key2', ..., createObject())\r\n */\r\nexport default class Cache {\r\n\tconstructor() {\r\n\t\tthis.cache = {}\r\n\t}\r\n\r\n\tget(...keys) {\r\n\t\tlet cache = this.cache\r\n\t\tfor (const key of keys) {\r\n\t\t\tif (typeof cache !== 'object') {\r\n\t\t\t\treturn\r\n\t\t\t}\r\n\t\t\tcache = cache[key]\r\n\t\t}\r\n\t\treturn cache\r\n\t}\r\n\r\n\tput(...keys) {\r\n\t\tconst value = keys.pop()\r\n\t\tconst lastKey = keys.pop()\r\n\t\tlet cache = this.cache\r\n\t\tfor (const key of keys) {\r\n\t\t\tif (typeof cache[key] !== 'object') {\r\n\t\t\t\tcache[key] = {}\r\n\t\t\t}\r\n\t\t\tcache = cache[key]\r\n\t\t}\r\n\t\treturn cache[lastKey] = value\r\n\t}\r\n}"],"mappings":";;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AANA,IAOqBA,KAAK;EACzB,SAAAA,MAAA,EAAc;IAAAC,eAAA,OAAAD,KAAA;IACb,IAAI,CAACE,KAAK,GAAG,CAAC,CAAC;EAChB;EAACC,YAAA,CAAAH,KAAA;IAAAI,GAAA;IAAAC,KAAA,EAED,SAAAC,IAAA,EAAa;MACZ,IAAIJ,KAAK,GAAG,IAAI,CAACA,KAAK;MAAA,SAAAK,IAAA,GAAAC,SAAA,CAAAC,MAAA,EADhBC,IAAI,OAAAC,KAAA,CAAAJ,IAAA,GAAAK,IAAA,MAAAA,IAAA,GAAAL,IAAA,EAAAK,IAAA;QAAJF,IAAI,CAAAE,IAAA,IAAAJ,SAAA,CAAAI,IAAA;MAAA;MAEV,SAAAC,EAAA,MAAAC,KAAA,GAAkBJ,IAAI,EAAAG,EAAA,GAAAC,KAAA,CAAAL,MAAA,EAAAI,EAAA,IAAE;QAAnB,IAAMT,GAAG,GAAAU,KAAA,CAAAD,EAAA;QACb,IAAIE,OAAA,CAAOb,KAAK,MAAK,QAAQ,EAAE;UAC9B;QACD;QACAA,KAAK,GAAGA,KAAK,CAACE,GAAG,CAAC;MACnB;MACA,OAAOF,KAAK;IACb;EAAC;IAAAE,GAAA;IAAAC,KAAA,EAED,SAAAW,IAAA,EAAa;MAAA,SAAAC,KAAA,GAAAT,SAAA,CAAAC,MAAA,EAANC,IAAI,OAAAC,KAAA,CAAAM,KAAA,GAAAC,KAAA,MAAAA,KAAA,GAAAD,KAAA,EAAAC,KAAA;QAAJR,IAAI,CAAAQ,KAAA,IAAAV,SAAA,CAAAU,KAAA;MAAA;MACV,IAAMb,KAAK,GAAGK,IAAI,CAACS,GAAG,CAAC,CAAC;MACxB,IAAMC,OAAO,GAAGV,IAAI,CAACS,GAAG,CAAC,CAAC;MAC1B,IAAIjB,KAAK,GAAG,IAAI,CAACA,KAAK;MACtB,SAAAmB,GAAA,MAAAC,MAAA,GAAkBZ,IAAI,EAAAW,GAAA,GAAAC,MAAA,CAAAb,MAAA,EAAAY,GAAA,IAAE;QAAnB,IAAMjB,GAAG,GAAAkB,MAAA,CAAAD,GAAA;QACb,IAAIN,OAAA,CAAOb,KAAK,CAACE,GAAG,CAAC,MAAK,QAAQ,EAAE;UACnCF,KAAK,CAACE,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB;QACAF,KAAK,GAAGA,KAAK,CAACE,GAAG,CAAC;MACnB;MACA,OAAOF,KAAK,CAACkB,OAAO,CAAC,GAAGf,KAAK;IAC9B;EAAC;EAAA,OAAAL,KAAA;AAAA;AAAA,SA3BmBA,KAAK,IAAAuB,OAAA","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"cache.test.js","names":["Cache","describe","it","cache","value","expect","get","to","be","undefined","put","equal"],"sources":["../source/cache.test.js"],"sourcesContent":["import Cache from './cache.js'\r\n\r\ndescribe('cache', () => {\r\n\tit('should cache', () => {\r\n\t\tconst cache = new Cache()\r\n\r\n\t\tconst value = {}\r\n\t\texpect(cache.get('123', '456')).to.be.undefined\r\n\t\texpect(cache.put('123', '456', value)).to.equal(value)\r\n\t\texpect(cache.get('123', '456')).to.equal(value)\r\n\r\n\t\texpect(cache.put('123', '789', 123)).to.equal(123)\r\n\t})\r\n})\r\n"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,YAAlB;AAEAC,QAAQ,CAAC,OAAD,EAAU,YAAM;EACvBC,EAAE,CAAC,cAAD,EAAiB,YAAM;IACxB,IAAMC,KAAK,GAAG,IAAIH,KAAJ,EAAd;IAEA,IAAMI,KAAK,GAAG,EAAd;IACAC,MAAM,CAACF,KAAK,CAACG,GAAN,CAAU,KAAV,EAAiB,KAAjB,CAAD,CAAN,CAAgCC,EAAhC,CAAmCC,EAAnC,CAAsCC,SAAtC;IACAJ,MAAM,CAACF,KAAK,CAACO,GAAN,CAAU,KAAV,EAAiB,KAAjB,EAAwBN,KAAxB,CAAD,CAAN,CAAuCG,EAAvC,CAA0CI,KAA1C,CAAgDP,KAAhD;IACAC,MAAM,CAACF,KAAK,CAACG,GAAN,CAAU,KAAV,EAAiB,KAAjB,CAAD,CAAN,CAAgCC,EAAhC,CAAmCI,KAAnC,CAAyCP,KAAzC;IAEAC,MAAM,CAACF,KAAK,CAACO,GAAN,CAAU,KAAV,EAAiB,KAAjB,EAAwB,GAAxB,CAAD,CAAN,CAAqCH,EAArC,CAAwCI,KAAxC,CAA8C,GAA9C;EACA,CATC,CAAF;AAUA,CAXO,CAAR"}
1
+ {"version":3,"file":"cache.test.js","names":["Cache","describe","it","cache","value","expect","get","to","be","undefined","put","equal"],"sources":["../source/cache.test.js"],"sourcesContent":["import Cache from './cache.js'\r\n\r\ndescribe('cache', () => {\r\n\tit('should cache', () => {\r\n\t\tconst cache = new Cache()\r\n\r\n\t\tconst value = {}\r\n\t\texpect(cache.get('123', '456')).to.be.undefined\r\n\t\texpect(cache.put('123', '456', value)).to.equal(value)\r\n\t\texpect(cache.get('123', '456')).to.equal(value)\r\n\r\n\t\texpect(cache.put('123', '789', 123)).to.equal(123)\r\n\t})\r\n})\r\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,YAAY;AAE9BC,QAAQ,CAAC,OAAO,EAAE,YAAM;EACvBC,EAAE,CAAC,cAAc,EAAE,YAAM;IACxB,IAAMC,KAAK,GAAG,IAAIH,KAAK,CAAC,CAAC;IAEzB,IAAMI,KAAK,GAAG,CAAC,CAAC;IAChBC,MAAM,CAACF,KAAK,CAACG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAACC,EAAE,CAACC,EAAE,CAACC,SAAS;IAC/CJ,MAAM,CAACF,KAAK,CAACO,GAAG,CAAC,KAAK,EAAE,KAAK,EAAEN,KAAK,CAAC,CAAC,CAACG,EAAE,CAACI,KAAK,CAACP,KAAK,CAAC;IACtDC,MAAM,CAACF,KAAK,CAACG,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAACC,EAAE,CAACI,KAAK,CAACP,KAAK,CAAC;IAE/CC,MAAM,CAACF,KAAK,CAACO,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAACH,EAAE,CAACI,KAAK,CAAC,GAAG,CAAC;EACnD,CAAC,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
@@ -1,14 +1,16 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
-
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
3
2
  export default function isStyleObject(object) {
4
- return isObject(object) && (Array.isArray(object.steps) || // `gradation` property is deprecated: it has been renamed to `steps`.
5
- Array.isArray(object.gradation) || // `flavour` property is deprecated: it has been renamed to `labels`.
6
- Array.isArray(object.flavour) || typeof object.flavour === 'string' || Array.isArray(object.labels) || typeof object.labels === 'string' || // `units` property is deprecated.
7
- Array.isArray(object.units) || // `custom` property is deprecated.
3
+ return isObject(object) && (Array.isArray(object.steps) ||
4
+ // `gradation` property is deprecated: it has been renamed to `steps`.
5
+ Array.isArray(object.gradation) ||
6
+ // `flavour` property is deprecated: it has been renamed to `labels`.
7
+ Array.isArray(object.flavour) || typeof object.flavour === 'string' || Array.isArray(object.labels) || typeof object.labels === 'string' ||
8
+ // `units` property is deprecated.
9
+ Array.isArray(object.units) ||
10
+ // `custom` property is deprecated.
8
11
  typeof object.custom === 'function');
9
12
  }
10
13
  var OBJECT_CONSTRUCTOR = {}.constructor;
11
-
12
14
  function isObject(object) {
13
15
  return _typeof(object) !== undefined && object !== null && object.constructor === OBJECT_CONSTRUCTOR;
14
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"isStyleObject.js","names":["isStyleObject","object","isObject","Array","isArray","steps","gradation","flavour","labels","units","custom","OBJECT_CONSTRUCTOR","constructor","undefined"],"sources":["../source/isStyleObject.js"],"sourcesContent":["export default function isStyleObject(object) {\r\n\treturn isObject(object) && (\r\n\t\tArray.isArray(object.steps) ||\r\n\t\t// `gradation` property is deprecated: it has been renamed to `steps`.\r\n\t\tArray.isArray(object.gradation) ||\r\n\t\t// `flavour` property is deprecated: it has been renamed to `labels`.\r\n\t\tArray.isArray(object.flavour) ||\r\n\t\ttypeof object.flavour === 'string' ||\r\n\t\tArray.isArray(object.labels) ||\r\n\t\ttypeof object.labels === 'string' ||\r\n\t\t// `units` property is deprecated.\r\n\t\tArray.isArray(object.units) ||\r\n\t\t// `custom` property is deprecated.\r\n\t\ttypeof object.custom === 'function'\r\n\t)\r\n}\r\n\r\nconst OBJECT_CONSTRUCTOR = {}.constructor\r\nfunction isObject(object) {\r\n\treturn typeof object !== undefined && object !== null && object.constructor === OBJECT_CONSTRUCTOR\r\n}"],"mappings":";;AAAA,eAAe,SAASA,aAAT,CAAuBC,MAAvB,EAA+B;EAC7C,OAAOC,QAAQ,CAACD,MAAD,CAAR,KACNE,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACI,KAArB,KACA;EACAF,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACK,SAArB,CAFA,IAGA;EACAH,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACM,OAArB,CAJA,IAKA,OAAON,MAAM,CAACM,OAAd,KAA0B,QAL1B,IAMAJ,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACO,MAArB,CANA,IAOA,OAAOP,MAAM,CAACO,MAAd,KAAyB,QAPzB,IAQA;EACAL,KAAK,CAACC,OAAN,CAAcH,MAAM,CAACQ,KAArB,CATA,IAUA;EACA,OAAOR,MAAM,CAACS,MAAd,KAAyB,UAZnB,CAAP;AAcA;AAED,IAAMC,kBAAkB,GAAG,GAAGC,WAA9B;;AACA,SAASV,QAAT,CAAkBD,MAAlB,EAA0B;EACzB,OAAO,QAAOA,MAAP,MAAkBY,SAAlB,IAA+BZ,MAAM,KAAK,IAA1C,IAAkDA,MAAM,CAACW,WAAP,KAAuBD,kBAAhF;AACA"}
1
+ {"version":3,"file":"isStyleObject.js","names":["isStyleObject","object","isObject","Array","isArray","steps","gradation","flavour","labels","units","custom","OBJECT_CONSTRUCTOR","constructor","_typeof","undefined"],"sources":["../source/isStyleObject.js"],"sourcesContent":["export default function isStyleObject(object) {\r\n\treturn isObject(object) && (\r\n\t\tArray.isArray(object.steps) ||\r\n\t\t// `gradation` property is deprecated: it has been renamed to `steps`.\r\n\t\tArray.isArray(object.gradation) ||\r\n\t\t// `flavour` property is deprecated: it has been renamed to `labels`.\r\n\t\tArray.isArray(object.flavour) ||\r\n\t\ttypeof object.flavour === 'string' ||\r\n\t\tArray.isArray(object.labels) ||\r\n\t\ttypeof object.labels === 'string' ||\r\n\t\t// `units` property is deprecated.\r\n\t\tArray.isArray(object.units) ||\r\n\t\t// `custom` property is deprecated.\r\n\t\ttypeof object.custom === 'function'\r\n\t)\r\n}\r\n\r\nconst OBJECT_CONSTRUCTOR = {}.constructor\r\nfunction isObject(object) {\r\n\treturn typeof object !== undefined && object !== null && object.constructor === OBJECT_CONSTRUCTOR\r\n}"],"mappings":";AAAA,eAAe,SAASA,aAAaA,CAACC,MAAM,EAAE;EAC7C,OAAOC,QAAQ,CAACD,MAAM,CAAC,KACtBE,KAAK,CAACC,OAAO,CAACH,MAAM,CAACI,KAAK,CAAC;EAC3B;EACAF,KAAK,CAACC,OAAO,CAACH,MAAM,CAACK,SAAS,CAAC;EAC/B;EACAH,KAAK,CAACC,OAAO,CAACH,MAAM,CAACM,OAAO,CAAC,IAC7B,OAAON,MAAM,CAACM,OAAO,KAAK,QAAQ,IAClCJ,KAAK,CAACC,OAAO,CAACH,MAAM,CAACO,MAAM,CAAC,IAC5B,OAAOP,MAAM,CAACO,MAAM,KAAK,QAAQ;EACjC;EACAL,KAAK,CAACC,OAAO,CAACH,MAAM,CAACQ,KAAK,CAAC;EAC3B;EACA,OAAOR,MAAM,CAACS,MAAM,KAAK,UAAU,CACnC;AACF;AAEA,IAAMC,kBAAkB,GAAG,CAAC,CAAC,CAACC,WAAW;AACzC,SAASV,QAAQA,CAACD,MAAM,EAAE;EACzB,OAAOY,OAAA,CAAOZ,MAAM,MAAKa,SAAS,IAAIb,MAAM,KAAK,IAAI,IAAIA,MAAM,CAACW,WAAW,KAAKD,kBAAkB;AACnG","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"isStyleObject.test.js","names":["isStyleObject","describe","it","gradation","should","equal","steps","flavour","labels","units","future","round","now","getTimeToNextUpdate"],"sources":["../source/isStyleObject.test.js"],"sourcesContent":["import isStyleObject from './isStyleObject.js'\r\n\r\ndescribe('isStyleObject', () => {\r\n\tit('should detect a style object', () => {\r\n\t\tisStyleObject({\r\n\t\t\tgradation: []\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tsteps: []\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tflavour: 'long'\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tflavour: ['long']\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tlabels: 'long'\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tlabels: ['long']\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tunits: ['now']\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor',\r\n\t\t\tnow: 0,\r\n\t\t\tgetTimeToNextUpdate: true\r\n\t\t}).should.equal(false)\r\n\t\tisStyleObject('round').should.equal(false)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,aAAP,MAA0B,oBAA1B;AAEAC,QAAQ,CAAC,eAAD,EAAkB,YAAM;EAC/BC,EAAE,CAAC,8BAAD,EAAiC,YAAM;IACxCF,aAAa,CAAC;MACbG,SAAS,EAAE;IADE,CAAD,CAAb,CAEGC,MAFH,CAEUC,KAFV,CAEgB,IAFhB;IAGAL,aAAa,CAAC;MACbM,KAAK,EAAE;IADM,CAAD,CAAb,CAEGF,MAFH,CAEUC,KAFV,CAEgB,IAFhB;IAGAL,aAAa,CAAC;MACbO,OAAO,EAAE;IADI,CAAD,CAAb,CAEGH,MAFH,CAEUC,KAFV,CAEgB,IAFhB;IAGAL,aAAa,CAAC;MACbO,OAAO,EAAE,CAAC,MAAD;IADI,CAAD,CAAb,CAEGH,MAFH,CAEUC,KAFV,CAEgB,IAFhB;IAGAL,aAAa,CAAC;MACbQ,MAAM,EAAE;IADK,CAAD,CAAb,CAEGJ,MAFH,CAEUC,KAFV,CAEgB,IAFhB;IAGAL,aAAa,CAAC;MACbQ,MAAM,EAAE,CAAC,MAAD;IADK,CAAD,CAAb,CAEGJ,MAFH,CAEUC,KAFV,CAEgB,IAFhB;IAGAL,aAAa,CAAC;MACbS,KAAK,EAAE,CAAC,KAAD;IADM,CAAD,CAAb,CAEGL,MAFH,CAEUC,KAFV,CAEgB,IAFhB;IAGAL,aAAa,CAAC;MACbU,MAAM,EAAE,IADK;MAEbC,KAAK,EAAE,OAFM;MAGbC,GAAG,EAAE,CAHQ;MAIbC,mBAAmB,EAAE;IAJR,CAAD,CAAb,CAKGT,MALH,CAKUC,KALV,CAKgB,KALhB;IAMAL,aAAa,CAAC,OAAD,CAAb,CAAuBI,MAAvB,CAA8BC,KAA9B,CAAoC,KAApC;EACA,CA7BC,CAAF;AA8BA,CA/BO,CAAR"}
1
+ {"version":3,"file":"isStyleObject.test.js","names":["isStyleObject","describe","it","gradation","should","equal","steps","flavour","labels","units","future","round","now","getTimeToNextUpdate"],"sources":["../source/isStyleObject.test.js"],"sourcesContent":["import isStyleObject from './isStyleObject.js'\r\n\r\ndescribe('isStyleObject', () => {\r\n\tit('should detect a style object', () => {\r\n\t\tisStyleObject({\r\n\t\t\tgradation: []\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tsteps: []\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tflavour: 'long'\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tflavour: ['long']\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tlabels: 'long'\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tlabels: ['long']\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tunits: ['now']\r\n\t\t}).should.equal(true)\r\n\t\tisStyleObject({\r\n\t\t\tfuture: true,\r\n\t\t\tround: 'floor',\r\n\t\t\tnow: 0,\r\n\t\t\tgetTimeToNextUpdate: true\r\n\t\t}).should.equal(false)\r\n\t\tisStyleObject('round').should.equal(false)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,aAAa,MAAM,oBAAoB;AAE9CC,QAAQ,CAAC,eAAe,EAAE,YAAM;EAC/BC,EAAE,CAAC,8BAA8B,EAAE,YAAM;IACxCF,aAAa,CAAC;MACbG,SAAS,EAAE;IACZ,CAAC,CAAC,CAACC,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACrBL,aAAa,CAAC;MACbM,KAAK,EAAE;IACR,CAAC,CAAC,CAACF,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACrBL,aAAa,CAAC;MACbO,OAAO,EAAE;IACV,CAAC,CAAC,CAACH,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACrBL,aAAa,CAAC;MACbO,OAAO,EAAE,CAAC,MAAM;IACjB,CAAC,CAAC,CAACH,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACrBL,aAAa,CAAC;MACbQ,MAAM,EAAE;IACT,CAAC,CAAC,CAACJ,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACrBL,aAAa,CAAC;MACbQ,MAAM,EAAE,CAAC,MAAM;IAChB,CAAC,CAAC,CAACJ,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACrBL,aAAa,CAAC;MACbS,KAAK,EAAE,CAAC,KAAK;IACd,CAAC,CAAC,CAACL,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACrBL,aAAa,CAAC;MACbU,MAAM,EAAE,IAAI;MACZC,KAAK,EAAE,OAAO;MACdC,GAAG,EAAE,CAAC;MACNC,mBAAmB,EAAE;IACtB,CAAC,CAAC,CAACT,MAAM,CAACC,KAAK,CAAC,KAAK,CAAC;IACtBL,aAAa,CAAC,OAAO,CAAC,CAACI,MAAM,CAACC,KAAK,CAAC,KAAK,CAAC;EAC3C,CAAC,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
package/modules/locale.js CHANGED
@@ -1,11 +1,7 @@
1
- function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
2
-
3
- function _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
4
-
5
- function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
6
-
7
- function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
8
-
1
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
2
+ function _createForOfIteratorHelperLoose(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (t) return (t = t.call(r)).next.bind(t); if (Array.isArray(r) || (t = _unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var o = 0; return function () { return o >= r.length ? { done: !0 } : { done: !1, value: r[o++] }; }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
3
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
4
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) { n[e] = r[e]; } return n; }
9
5
  /**
10
6
  * Chooses the most appropriate locale
11
7
  * (one of the registered ones)
@@ -26,47 +22,41 @@ export default function chooseLocale(locales, isLocaleDataAvailable) {
26
22
  // `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.
27
23
  for (var _iterator = _createForOfIteratorHelperLoose(locales), _step; !(_step = _iterator()).done;) {
28
24
  var locale = _step.value;
29
-
30
25
  if (isLocaleDataAvailable(locale)) {
31
26
  return locale;
32
27
  }
33
-
34
28
  var parts = locale.split('-');
35
-
36
29
  while (parts.length > 1) {
37
30
  parts.pop();
38
31
  locale = parts.join('-');
39
-
40
32
  if (isLocaleDataAvailable(locale)) {
41
33
  return locale;
42
34
  }
43
35
  }
44
36
  }
45
-
46
37
  throw new Error("No locale data has been registered for any of the locales: ".concat(locales.join(', ')));
47
38
  }
39
+
48
40
  /**
49
41
  * Whether can use `Intl.DateTimeFormat` for these `locales`.
50
42
  * Returns the first suitable one.
51
43
  * @param {(string|string[])} locales
52
44
  * @return {?string} The first locale that can be used.
53
45
  */
54
-
55
46
  export function intlDateTimeFormatSupportedLocale(locales) {
56
47
  /* istanbul ignore else */
57
48
  if (intlDateTimeFormatSupported()) {
58
49
  return Intl.DateTimeFormat.supportedLocalesOf(locales)[0];
59
50
  }
60
51
  }
52
+
61
53
  /**
62
54
  * Whether can use `Intl.DateTimeFormat`.
63
55
  * @return {boolean}
64
56
  */
65
-
66
57
  export function intlDateTimeFormatSupported() {
67
58
  // Babel transforms `typeof` into some "branches"
68
59
  // so istanbul will show this as "branch not covered".
69
-
70
60
  /* istanbul ignore next */
71
61
  var isIntlAvailable = (typeof Intl === "undefined" ? "undefined" : _typeof(Intl)) === 'object';
72
62
  return isIntlAvailable && typeof Intl.DateTimeFormat === 'function';
@@ -1 +1 @@
1
- {"version":3,"file":"locale.js","names":["chooseLocale","locales","isLocaleDataAvailable","locale","parts","split","length","pop","join","Error","intlDateTimeFormatSupportedLocale","intlDateTimeFormatSupported","Intl","DateTimeFormat","supportedLocalesOf","isIntlAvailable"],"sources":["../source/locale.js"],"sourcesContent":["/**\r\n * Chooses the most appropriate locale\r\n * (one of the registered ones)\r\n * based on the list of preferred `locales` supplied by the user.\r\n *\r\n * @param {string[]} locales - the list of preferable locales (in [IETF format](https://en.wikipedia.org/wiki/IETF_language_tag)).\r\n * @param {Function} isLocaleDataAvailable - tests if a locale is available.\r\n *\r\n * @returns {string} The most suitable locale.\r\n *\r\n * @example\r\n * // Returns 'en'\r\n * chooseLocale(['en-US'], undefined, (locale) => locale === 'ru' || locale === 'en')\r\n */\r\nexport default function chooseLocale(locales, isLocaleDataAvailable) {\r\n\t// This is not an intelligent algorithm,\r\n\t// but it will do for this library's case.\r\n\t// `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\r\n\tfor (let locale of locales) {\r\n\t\tif (isLocaleDataAvailable(locale)) {\r\n\t\t\treturn locale\r\n\t\t}\r\n\t\tconst parts = locale.split('-')\r\n\t\twhile (parts.length > 1) {\r\n\t\t\tparts.pop()\r\n\t\t\tlocale = parts.join('-')\r\n\t\t\tif (isLocaleDataAvailable(locale)) {\r\n\t\t\t\treturn locale\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthrow new Error(`No locale data has been registered for any of the locales: ${locales.join(', ')}`)\r\n}\r\n\r\n/**\r\n * Whether can use `Intl.DateTimeFormat` for these `locales`.\r\n * Returns the first suitable one.\r\n * @param {(string|string[])} locales\r\n * @return {?string} The first locale that can be used.\r\n */\r\nexport function intlDateTimeFormatSupportedLocale(locales) {\r\n\t/* istanbul ignore else */\r\n\tif (intlDateTimeFormatSupported()) {\r\n\t\treturn Intl.DateTimeFormat.supportedLocalesOf(locales)[0]\r\n\t}\r\n}\r\n\r\n/**\r\n * Whether can use `Intl.DateTimeFormat`.\r\n * @return {boolean}\r\n */\r\nexport function intlDateTimeFormatSupported() {\r\n\t// Babel transforms `typeof` into some \"branches\"\r\n\t// so istanbul will show this as \"branch not covered\".\r\n\t/* istanbul ignore next */\r\n\tconst isIntlAvailable = typeof Intl === 'object'\r\n\treturn isIntlAvailable && typeof Intl.DateTimeFormat === 'function'\r\n}\r\n"],"mappings":";;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASA,YAAT,CAAsBC,OAAtB,EAA+BC,qBAA/B,EAAsD;EACpE;EACA;EACA;EACA,qDAAmBD,OAAnB,wCAA4B;IAAA,IAAnBE,MAAmB;;IAC3B,IAAID,qBAAqB,CAACC,MAAD,CAAzB,EAAmC;MAClC,OAAOA,MAAP;IACA;;IACD,IAAMC,KAAK,GAAGD,MAAM,CAACE,KAAP,CAAa,GAAb,CAAd;;IACA,OAAOD,KAAK,CAACE,MAAN,GAAe,CAAtB,EAAyB;MACxBF,KAAK,CAACG,GAAN;MACAJ,MAAM,GAAGC,KAAK,CAACI,IAAN,CAAW,GAAX,CAAT;;MACA,IAAIN,qBAAqB,CAACC,MAAD,CAAzB,EAAmC;QAClC,OAAOA,MAAP;MACA;IACD;EACD;;EAED,MAAM,IAAIM,KAAJ,sEAAwER,OAAO,CAACO,IAAR,CAAa,IAAb,CAAxE,EAAN;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;AACA,OAAO,SAASE,iCAAT,CAA2CT,OAA3C,EAAoD;EAC1D;EACA,IAAIU,2BAA2B,EAA/B,EAAmC;IAClC,OAAOC,IAAI,CAACC,cAAL,CAAoBC,kBAApB,CAAuCb,OAAvC,EAAgD,CAAhD,CAAP;EACA;AACD;AAED;AACA;AACA;AACA;;AACA,OAAO,SAASU,2BAAT,GAAuC;EAC7C;EACA;;EACA;EACA,IAAMI,eAAe,GAAG,QAAOH,IAAP,yCAAOA,IAAP,OAAgB,QAAxC;EACA,OAAOG,eAAe,IAAI,OAAOH,IAAI,CAACC,cAAZ,KAA+B,UAAzD;AACA"}
1
+ {"version":3,"file":"locale.js","names":["chooseLocale","locales","isLocaleDataAvailable","_iterator","_createForOfIteratorHelperLoose","_step","done","locale","value","parts","split","length","pop","join","Error","concat","intlDateTimeFormatSupportedLocale","intlDateTimeFormatSupported","Intl","DateTimeFormat","supportedLocalesOf","isIntlAvailable","_typeof"],"sources":["../source/locale.js"],"sourcesContent":["/**\r\n * Chooses the most appropriate locale\r\n * (one of the registered ones)\r\n * based on the list of preferred `locales` supplied by the user.\r\n *\r\n * @param {string[]} locales - the list of preferable locales (in [IETF format](https://en.wikipedia.org/wiki/IETF_language_tag)).\r\n * @param {Function} isLocaleDataAvailable - tests if a locale is available.\r\n *\r\n * @returns {string} The most suitable locale.\r\n *\r\n * @example\r\n * // Returns 'en'\r\n * chooseLocale(['en-US'], undefined, (locale) => locale === 'ru' || locale === 'en')\r\n */\r\nexport default function chooseLocale(locales, isLocaleDataAvailable) {\r\n\t// This is not an intelligent algorithm,\r\n\t// but it will do for this library's case.\r\n\t// `sr-Cyrl-BA` -> `sr-Cyrl` -> `sr`.\r\n\tfor (let locale of locales) {\r\n\t\tif (isLocaleDataAvailable(locale)) {\r\n\t\t\treturn locale\r\n\t\t}\r\n\t\tconst parts = locale.split('-')\r\n\t\twhile (parts.length > 1) {\r\n\t\t\tparts.pop()\r\n\t\t\tlocale = parts.join('-')\r\n\t\t\tif (isLocaleDataAvailable(locale)) {\r\n\t\t\t\treturn locale\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tthrow new Error(`No locale data has been registered for any of the locales: ${locales.join(', ')}`)\r\n}\r\n\r\n/**\r\n * Whether can use `Intl.DateTimeFormat` for these `locales`.\r\n * Returns the first suitable one.\r\n * @param {(string|string[])} locales\r\n * @return {?string} The first locale that can be used.\r\n */\r\nexport function intlDateTimeFormatSupportedLocale(locales) {\r\n\t/* istanbul ignore else */\r\n\tif (intlDateTimeFormatSupported()) {\r\n\t\treturn Intl.DateTimeFormat.supportedLocalesOf(locales)[0]\r\n\t}\r\n}\r\n\r\n/**\r\n * Whether can use `Intl.DateTimeFormat`.\r\n * @return {boolean}\r\n */\r\nexport function intlDateTimeFormatSupported() {\r\n\t// Babel transforms `typeof` into some \"branches\"\r\n\t// so istanbul will show this as \"branch not covered\".\r\n\t/* istanbul ignore next */\r\n\tconst isIntlAvailable = typeof Intl === 'object'\r\n\treturn isIntlAvailable && typeof Intl.DateTimeFormat === 'function'\r\n}\r\n"],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASA,YAAYA,CAACC,OAAO,EAAEC,qBAAqB,EAAE;EACpE;EACA;EACA;EACA,SAAAC,SAAA,GAAAC,+BAAA,CAAmBH,OAAO,GAAAI,KAAA,IAAAA,KAAA,GAAAF,SAAA,IAAAG,IAAA,GAAE;IAAA,IAAnBC,MAAM,GAAAF,KAAA,CAAAG,KAAA;IACd,IAAIN,qBAAqB,CAACK,MAAM,CAAC,EAAE;MAClC,OAAOA,MAAM;IACd;IACA,IAAME,KAAK,GAAGF,MAAM,CAACG,KAAK,CAAC,GAAG,CAAC;IAC/B,OAAOD,KAAK,CAACE,MAAM,GAAG,CAAC,EAAE;MACxBF,KAAK,CAACG,GAAG,CAAC,CAAC;MACXL,MAAM,GAAGE,KAAK,CAACI,IAAI,CAAC,GAAG,CAAC;MACxB,IAAIX,qBAAqB,CAACK,MAAM,CAAC,EAAE;QAClC,OAAOA,MAAM;MACd;IACD;EACD;EAEA,MAAM,IAAIO,KAAK,+DAAAC,MAAA,CAA+Dd,OAAO,CAACY,IAAI,CAAC,IAAI,CAAC,CAAE,CAAC;AACpG;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASG,iCAAiCA,CAACf,OAAO,EAAE;EAC1D;EACA,IAAIgB,2BAA2B,CAAC,CAAC,EAAE;IAClC,OAAOC,IAAI,CAACC,cAAc,CAACC,kBAAkB,CAACnB,OAAO,CAAC,CAAC,CAAC,CAAC;EAC1D;AACD;;AAEA;AACA;AACA;AACA;AACA,OAAO,SAASgB,2BAA2BA,CAAA,EAAG;EAC7C;EACA;EACA;EACA,IAAMI,eAAe,GAAG,QAAOH,IAAI,iCAAAI,OAAA,CAAJJ,IAAI,OAAK,QAAQ;EAChD,OAAOG,eAAe,IAAI,OAAOH,IAAI,CAACC,cAAc,KAAK,UAAU;AACpE","ignoreList":[]}
@@ -12,20 +12,16 @@ describe('locale', function () {
12
12
  return object;
13
13
  }, {});
14
14
  }
15
-
16
15
  function choose(locale, locales) {
17
16
  var defaultLocale = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'en';
18
-
19
17
  if (typeof locale === 'string') {
20
18
  locale = [locale];
21
19
  }
22
-
23
20
  locale = locale.concat(defaultLocale);
24
21
  return chooseLocale(locale, function (_) {
25
22
  return locales.includes(_);
26
23
  });
27
24
  }
28
-
29
25
  choose('ru-RU', ['en', 'ru']).should.equal('ru');
30
26
  choose('en-GB', ['en', 'ru']).should.equal('en');
31
27
  choose('fr-FR', ['en', 'ru']).should.equal('en');
@@ -1 +1 @@
1
- {"version":3,"file":"locale.test.js","names":["chooseLocale","intlDateTimeFormatSupportedLocale","describe","it","should","equal","arrayToObject","array","reduce","object","locale","choose","locales","defaultLocale","concat","_","includes","expect","to"],"sources":["../source/locale.test.js"],"sourcesContent":["import chooseLocale, { intlDateTimeFormatSupportedLocale } from './locale.js'\r\n\r\ndescribe('locale', () => {\r\n\tit(`should tell if can use Intl for date formatting`, () => {\r\n\t\tintlDateTimeFormatSupportedLocale('en').should.equal('en')\r\n\t\tintlDateTimeFormatSupportedLocale('en-XX').should.equal('en-XX')\r\n\t\tintlDateTimeFormatSupportedLocale(['en', 'ru']).should.equal('en')\r\n\t})\r\n\r\n\tit(`should choose the most appropriate locale`, () => {\r\n\t\tfunction arrayToObject(array) {\r\n\t\t\treturn array.reduce((object, locale) => {\r\n\t\t\t\tobject[locale] = true\r\n\t\t\t\treturn object\r\n\t\t\t}, {})\r\n\t\t}\r\n\r\n\t\tfunction choose(locale, locales, defaultLocale = 'en') {\r\n\t\t\tif (typeof locale === 'string') {\r\n\t\t\t\tlocale = [locale]\r\n\t\t\t}\r\n\t\t\tlocale = locale.concat(defaultLocale)\r\n\t\t\treturn chooseLocale(locale, _ => locales.includes(_))\r\n\t\t}\r\n\r\n\t\tchoose('ru-RU', ['en', 'ru']).should.equal('ru')\r\n\t\tchoose('en-GB', ['en', 'ru']).should.equal('en')\r\n\t\tchoose('fr-FR', ['en', 'ru']).should.equal('en')\r\n\t\tchoose(['fr-FR', 'de-DE'], ['en', 'ru']).should.equal('en')\r\n\t\tchoose(['fr-FR', 'de-DE'], ['en', 'de']).should.equal('de')\r\n\t\tchoose(['fr-FR', 'de-DE'], ['en', 'de', 'fr']).should.equal('fr')\r\n\t\tchoose('fr-FR', ['en', 'fr-FR']).should.equal('fr-FR')\r\n\r\n\t\texpect(() => choose('fr-FR', ['de', 'ru'])).to.throw(\r\n\t\t\t'No locale data has been registered for any of the locales: fr-FR'\r\n\t\t)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,YAAP,IAAuBC,iCAAvB,QAAgE,aAAhE;AAEAC,QAAQ,CAAC,QAAD,EAAW,YAAM;EACxBC,EAAE,oDAAoD,YAAM;IAC3DF,iCAAiC,CAAC,IAAD,CAAjC,CAAwCG,MAAxC,CAA+CC,KAA/C,CAAqD,IAArD;IACAJ,iCAAiC,CAAC,OAAD,CAAjC,CAA2CG,MAA3C,CAAkDC,KAAlD,CAAwD,OAAxD;IACAJ,iCAAiC,CAAC,CAAC,IAAD,EAAO,IAAP,CAAD,CAAjC,CAAgDG,MAAhD,CAAuDC,KAAvD,CAA6D,IAA7D;EACA,CAJC,CAAF;EAMAF,EAAE,8CAA8C,YAAM;IACrD,SAASG,aAAT,CAAuBC,KAAvB,EAA8B;MAC7B,OAAOA,KAAK,CAACC,MAAN,CAAa,UAACC,MAAD,EAASC,MAAT,EAAoB;QACvCD,MAAM,CAACC,MAAD,CAAN,GAAiB,IAAjB;QACA,OAAOD,MAAP;MACA,CAHM,EAGJ,EAHI,CAAP;IAIA;;IAED,SAASE,MAAT,CAAgBD,MAAhB,EAAwBE,OAAxB,EAAuD;MAAA,IAAtBC,aAAsB,uEAAN,IAAM;;MACtD,IAAI,OAAOH,MAAP,KAAkB,QAAtB,EAAgC;QAC/BA,MAAM,GAAG,CAACA,MAAD,CAAT;MACA;;MACDA,MAAM,GAAGA,MAAM,CAACI,MAAP,CAAcD,aAAd,CAAT;MACA,OAAOb,YAAY,CAACU,MAAD,EAAS,UAAAK,CAAC;QAAA,OAAIH,OAAO,CAACI,QAAR,CAAiBD,CAAjB,CAAJ;MAAA,CAAV,CAAnB;IACA;;IAEDJ,MAAM,CAAC,OAAD,EAAU,CAAC,IAAD,EAAO,IAAP,CAAV,CAAN,CAA8BP,MAA9B,CAAqCC,KAArC,CAA2C,IAA3C;IACAM,MAAM,CAAC,OAAD,EAAU,CAAC,IAAD,EAAO,IAAP,CAAV,CAAN,CAA8BP,MAA9B,CAAqCC,KAArC,CAA2C,IAA3C;IACAM,MAAM,CAAC,OAAD,EAAU,CAAC,IAAD,EAAO,IAAP,CAAV,CAAN,CAA8BP,MAA9B,CAAqCC,KAArC,CAA2C,IAA3C;IACAM,MAAM,CAAC,CAAC,OAAD,EAAU,OAAV,CAAD,EAAqB,CAAC,IAAD,EAAO,IAAP,CAArB,CAAN,CAAyCP,MAAzC,CAAgDC,KAAhD,CAAsD,IAAtD;IACAM,MAAM,CAAC,CAAC,OAAD,EAAU,OAAV,CAAD,EAAqB,CAAC,IAAD,EAAO,IAAP,CAArB,CAAN,CAAyCP,MAAzC,CAAgDC,KAAhD,CAAsD,IAAtD;IACAM,MAAM,CAAC,CAAC,OAAD,EAAU,OAAV,CAAD,EAAqB,CAAC,IAAD,EAAO,IAAP,EAAa,IAAb,CAArB,CAAN,CAA+CP,MAA/C,CAAsDC,KAAtD,CAA4D,IAA5D;IACAM,MAAM,CAAC,OAAD,EAAU,CAAC,IAAD,EAAO,OAAP,CAAV,CAAN,CAAiCP,MAAjC,CAAwCC,KAAxC,CAA8C,OAA9C;IAEAY,MAAM,CAAC;MAAA,OAAMN,MAAM,CAAC,OAAD,EAAU,CAAC,IAAD,EAAO,IAAP,CAAV,CAAZ;IAAA,CAAD,CAAN,CAA4CO,EAA5C,UACC,kEADD;EAGA,CA3BC,CAAF;AA4BA,CAnCO,CAAR"}
1
+ {"version":3,"file":"locale.test.js","names":["chooseLocale","intlDateTimeFormatSupportedLocale","describe","it","should","equal","arrayToObject","array","reduce","object","locale","choose","locales","defaultLocale","arguments","length","undefined","concat","_","includes","expect","to"],"sources":["../source/locale.test.js"],"sourcesContent":["import chooseLocale, { intlDateTimeFormatSupportedLocale } from './locale.js'\r\n\r\ndescribe('locale', () => {\r\n\tit(`should tell if can use Intl for date formatting`, () => {\r\n\t\tintlDateTimeFormatSupportedLocale('en').should.equal('en')\r\n\t\tintlDateTimeFormatSupportedLocale('en-XX').should.equal('en-XX')\r\n\t\tintlDateTimeFormatSupportedLocale(['en', 'ru']).should.equal('en')\r\n\t})\r\n\r\n\tit(`should choose the most appropriate locale`, () => {\r\n\t\tfunction arrayToObject(array) {\r\n\t\t\treturn array.reduce((object, locale) => {\r\n\t\t\t\tobject[locale] = true\r\n\t\t\t\treturn object\r\n\t\t\t}, {})\r\n\t\t}\r\n\r\n\t\tfunction choose(locale, locales, defaultLocale = 'en') {\r\n\t\t\tif (typeof locale === 'string') {\r\n\t\t\t\tlocale = [locale]\r\n\t\t\t}\r\n\t\t\tlocale = locale.concat(defaultLocale)\r\n\t\t\treturn chooseLocale(locale, _ => locales.includes(_))\r\n\t\t}\r\n\r\n\t\tchoose('ru-RU', ['en', 'ru']).should.equal('ru')\r\n\t\tchoose('en-GB', ['en', 'ru']).should.equal('en')\r\n\t\tchoose('fr-FR', ['en', 'ru']).should.equal('en')\r\n\t\tchoose(['fr-FR', 'de-DE'], ['en', 'ru']).should.equal('en')\r\n\t\tchoose(['fr-FR', 'de-DE'], ['en', 'de']).should.equal('de')\r\n\t\tchoose(['fr-FR', 'de-DE'], ['en', 'de', 'fr']).should.equal('fr')\r\n\t\tchoose('fr-FR', ['en', 'fr-FR']).should.equal('fr-FR')\r\n\r\n\t\texpect(() => choose('fr-FR', ['de', 'ru'])).to.throw(\r\n\t\t\t'No locale data has been registered for any of the locales: fr-FR'\r\n\t\t)\r\n\t})\r\n})"],"mappings":"AAAA,OAAOA,YAAY,IAAIC,iCAAiC,QAAQ,aAAa;AAE7EC,QAAQ,CAAC,QAAQ,EAAE,YAAM;EACxBC,EAAE,oDAAoD,YAAM;IAC3DF,iCAAiC,CAAC,IAAI,CAAC,CAACG,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IAC1DJ,iCAAiC,CAAC,OAAO,CAAC,CAACG,MAAM,CAACC,KAAK,CAAC,OAAO,CAAC;IAChEJ,iCAAiC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACG,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;EACnE,CAAC,CAAC;EAEFF,EAAE,8CAA8C,YAAM;IACrD,SAASG,aAAaA,CAACC,KAAK,EAAE;MAC7B,OAAOA,KAAK,CAACC,MAAM,CAAC,UAACC,MAAM,EAAEC,MAAM,EAAK;QACvCD,MAAM,CAACC,MAAM,CAAC,GAAG,IAAI;QACrB,OAAOD,MAAM;MACd,CAAC,EAAE,CAAC,CAAC,CAAC;IACP;IAEA,SAASE,MAAMA,CAACD,MAAM,EAAEE,OAAO,EAAwB;MAAA,IAAtBC,aAAa,GAAAC,SAAA,CAAAC,MAAA,QAAAD,SAAA,QAAAE,SAAA,GAAAF,SAAA,MAAG,IAAI;MACpD,IAAI,OAAOJ,MAAM,KAAK,QAAQ,EAAE;QAC/BA,MAAM,GAAG,CAACA,MAAM,CAAC;MAClB;MACAA,MAAM,GAAGA,MAAM,CAACO,MAAM,CAACJ,aAAa,CAAC;MACrC,OAAOb,YAAY,CAACU,MAAM,EAAE,UAAAQ,CAAC;QAAA,OAAIN,OAAO,CAACO,QAAQ,CAACD,CAAC,CAAC;MAAA,EAAC;IACtD;IAEAP,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACP,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IAChDM,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACP,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IAChDM,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACP,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IAChDM,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACP,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IAC3DM,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAACP,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IAC3DM,MAAM,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAACP,MAAM,CAACC,KAAK,CAAC,IAAI,CAAC;IACjEM,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAACP,MAAM,CAACC,KAAK,CAAC,OAAO,CAAC;IAEtDe,MAAM,CAAC;MAAA,OAAMT,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IAAA,EAAC,CAACU,EAAE,SAAM,CACnD,kEACD,CAAC;EACF,CAAC,CAAC;AACH,CAAC,CAAC","ignoreList":[]}
package/modules/round.js CHANGED
@@ -2,19 +2,18 @@ export function getRoundFunction(round) {
2
2
  switch (round) {
3
3
  case 'floor':
4
4
  return Math.floor;
5
-
6
5
  default:
7
6
  return Math.round;
8
7
  }
9
- } // For non-negative numbers.
8
+ }
10
9
 
10
+ // For non-negative numbers.
11
11
  export function getDiffRatioToNextRoundedNumber(round) {
12
12
  switch (round) {
13
13
  case 'floor':
14
14
  // Math.floor(x) = x
15
15
  // Math.floor(x + 1) = x + 1
16
16
  return 1;
17
-
18
17
  default:
19
18
  // Math.round(x) = x
20
19
  // Math.round(x + 0.5) = x + 1