@visulima/humanizer 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (399) hide show
  1. package/LICENSE.md +21 -0
  2. package/README.md +982 -0
  3. package/dist/chunk-435FPGI5.cjs +7 -0
  4. package/dist/chunk-435FPGI5.cjs.map +1 -0
  5. package/dist/chunk-6XBKSCXN.cjs +7 -0
  6. package/dist/chunk-6XBKSCXN.cjs.map +1 -0
  7. package/dist/chunk-AVPLJXJK.js +5 -0
  8. package/dist/chunk-AVPLJXJK.js.map +1 -0
  9. package/dist/chunk-BXFSTBLT.js +7 -0
  10. package/dist/chunk-BXFSTBLT.js.map +1 -0
  11. package/dist/chunk-I3ABTD2S.js +5 -0
  12. package/dist/chunk-I3ABTD2S.js.map +1 -0
  13. package/dist/chunk-MJEZHORL.cjs +9 -0
  14. package/dist/chunk-MJEZHORL.cjs.map +1 -0
  15. package/dist/chunk-RO4XQABG.js +5 -0
  16. package/dist/chunk-RO4XQABG.js.map +1 -0
  17. package/dist/chunk-VGHD36UF.cjs +7 -0
  18. package/dist/chunk-VGHD36UF.cjs.map +1 -0
  19. package/dist/index.cjs +12 -0
  20. package/dist/index.cjs.map +1 -0
  21. package/dist/index.d.cts +38 -0
  22. package/dist/index.d.ts +38 -0
  23. package/dist/index.js +8 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/language/af.cjs +9 -0
  26. package/dist/language/af.cjs.map +1 -0
  27. package/dist/language/af.d.cts +5 -0
  28. package/dist/language/af.d.ts +5 -0
  29. package/dist/language/af.js +7 -0
  30. package/dist/language/af.js.map +1 -0
  31. package/dist/language/ar.cjs +9 -0
  32. package/dist/language/ar.cjs.map +1 -0
  33. package/dist/language/ar.d.cts +20 -0
  34. package/dist/language/ar.d.ts +20 -0
  35. package/dist/language/ar.js +7 -0
  36. package/dist/language/ar.js.map +1 -0
  37. package/dist/language/bg.cjs +10 -0
  38. package/dist/language/bg.cjs.map +1 -0
  39. package/dist/language/bg.d.cts +5 -0
  40. package/dist/language/bg.d.ts +5 -0
  41. package/dist/language/bg.js +8 -0
  42. package/dist/language/bg.js.map +1 -0
  43. package/dist/language/bn.cjs +9 -0
  44. package/dist/language/bn.cjs.map +1 -0
  45. package/dist/language/bn.d.cts +5 -0
  46. package/dist/language/bn.d.ts +5 -0
  47. package/dist/language/bn.js +7 -0
  48. package/dist/language/bn.js.map +1 -0
  49. package/dist/language/ca.cjs +9 -0
  50. package/dist/language/ca.cjs.map +1 -0
  51. package/dist/language/ca.d.cts +5 -0
  52. package/dist/language/ca.d.ts +5 -0
  53. package/dist/language/ca.js +7 -0
  54. package/dist/language/ca.js.map +1 -0
  55. package/dist/language/ckb.cjs +9 -0
  56. package/dist/language/ckb.cjs.map +1 -0
  57. package/dist/language/ckb.d.cts +5 -0
  58. package/dist/language/ckb.d.ts +5 -0
  59. package/dist/language/ckb.js +7 -0
  60. package/dist/language/ckb.js.map +1 -0
  61. package/dist/language/cs.cjs +10 -0
  62. package/dist/language/cs.cjs.map +1 -0
  63. package/dist/language/cs.d.cts +5 -0
  64. package/dist/language/cs.d.ts +5 -0
  65. package/dist/language/cs.js +8 -0
  66. package/dist/language/cs.js.map +1 -0
  67. package/dist/language/cy.cjs +9 -0
  68. package/dist/language/cy.cjs.map +1 -0
  69. package/dist/language/cy.d.cts +5 -0
  70. package/dist/language/cy.d.ts +5 -0
  71. package/dist/language/cy.js +7 -0
  72. package/dist/language/cy.js.map +1 -0
  73. package/dist/language/da.cjs +9 -0
  74. package/dist/language/da.cjs.map +1 -0
  75. package/dist/language/da.d.cts +5 -0
  76. package/dist/language/da.d.ts +5 -0
  77. package/dist/language/da.js +7 -0
  78. package/dist/language/da.js.map +1 -0
  79. package/dist/language/de.cjs +9 -0
  80. package/dist/language/de.cjs.map +1 -0
  81. package/dist/language/de.d.cts +5 -0
  82. package/dist/language/de.d.ts +5 -0
  83. package/dist/language/de.js +7 -0
  84. package/dist/language/de.js.map +1 -0
  85. package/dist/language/el.cjs +9 -0
  86. package/dist/language/el.cjs.map +1 -0
  87. package/dist/language/el.d.cts +5 -0
  88. package/dist/language/el.d.ts +5 -0
  89. package/dist/language/el.js +7 -0
  90. package/dist/language/el.js.map +1 -0
  91. package/dist/language/en.cjs +13 -0
  92. package/dist/language/en.cjs.map +1 -0
  93. package/dist/language/en.d.cts +5 -0
  94. package/dist/language/en.d.ts +5 -0
  95. package/dist/language/en.js +4 -0
  96. package/dist/language/en.js.map +1 -0
  97. package/dist/language/eo.cjs +9 -0
  98. package/dist/language/eo.cjs.map +1 -0
  99. package/dist/language/eo.d.cts +5 -0
  100. package/dist/language/eo.d.ts +5 -0
  101. package/dist/language/eo.js +7 -0
  102. package/dist/language/eo.js.map +1 -0
  103. package/dist/language/es.cjs +9 -0
  104. package/dist/language/es.cjs.map +1 -0
  105. package/dist/language/es.d.cts +5 -0
  106. package/dist/language/es.d.ts +5 -0
  107. package/dist/language/es.js +7 -0
  108. package/dist/language/es.js.map +1 -0
  109. package/dist/language/et.cjs +9 -0
  110. package/dist/language/et.cjs.map +1 -0
  111. package/dist/language/et.d.cts +5 -0
  112. package/dist/language/et.d.ts +5 -0
  113. package/dist/language/et.js +7 -0
  114. package/dist/language/et.js.map +1 -0
  115. package/dist/language/eu.cjs +9 -0
  116. package/dist/language/eu.cjs.map +1 -0
  117. package/dist/language/eu.d.cts +5 -0
  118. package/dist/language/eu.d.ts +5 -0
  119. package/dist/language/eu.js +7 -0
  120. package/dist/language/eu.js.map +1 -0
  121. package/dist/language/fa.cjs +9 -0
  122. package/dist/language/fa.cjs.map +1 -0
  123. package/dist/language/fa.d.cts +5 -0
  124. package/dist/language/fa.d.ts +5 -0
  125. package/dist/language/fa.js +7 -0
  126. package/dist/language/fa.js.map +1 -0
  127. package/dist/language/fi.cjs +9 -0
  128. package/dist/language/fi.cjs.map +1 -0
  129. package/dist/language/fi.d.cts +5 -0
  130. package/dist/language/fi.d.ts +5 -0
  131. package/dist/language/fi.js +7 -0
  132. package/dist/language/fi.js.map +1 -0
  133. package/dist/language/fo.cjs +9 -0
  134. package/dist/language/fo.cjs.map +1 -0
  135. package/dist/language/fo.d.cts +5 -0
  136. package/dist/language/fo.d.ts +5 -0
  137. package/dist/language/fo.js +7 -0
  138. package/dist/language/fo.js.map +1 -0
  139. package/dist/language/fr.cjs +9 -0
  140. package/dist/language/fr.cjs.map +1 -0
  141. package/dist/language/fr.d.cts +5 -0
  142. package/dist/language/fr.d.ts +5 -0
  143. package/dist/language/fr.js +7 -0
  144. package/dist/language/fr.js.map +1 -0
  145. package/dist/language/he.cjs +9 -0
  146. package/dist/language/he.cjs.map +1 -0
  147. package/dist/language/he.d.cts +5 -0
  148. package/dist/language/he.d.ts +5 -0
  149. package/dist/language/he.js +7 -0
  150. package/dist/language/he.js.map +1 -0
  151. package/dist/language/hi.cjs +9 -0
  152. package/dist/language/hi.cjs.map +1 -0
  153. package/dist/language/hi.d.cts +5 -0
  154. package/dist/language/hi.d.ts +5 -0
  155. package/dist/language/hi.js +7 -0
  156. package/dist/language/hi.js.map +1 -0
  157. package/dist/language/hr.cjs +9 -0
  158. package/dist/language/hr.cjs.map +1 -0
  159. package/dist/language/hr.d.cts +5 -0
  160. package/dist/language/hr.d.ts +5 -0
  161. package/dist/language/hr.js +7 -0
  162. package/dist/language/hr.js.map +1 -0
  163. package/dist/language/hu.cjs +9 -0
  164. package/dist/language/hu.cjs.map +1 -0
  165. package/dist/language/hu.d.cts +5 -0
  166. package/dist/language/hu.d.ts +5 -0
  167. package/dist/language/hu.js +7 -0
  168. package/dist/language/hu.js.map +1 -0
  169. package/dist/language/id.cjs +9 -0
  170. package/dist/language/id.cjs.map +1 -0
  171. package/dist/language/id.d.cts +5 -0
  172. package/dist/language/id.d.ts +5 -0
  173. package/dist/language/id.js +7 -0
  174. package/dist/language/id.js.map +1 -0
  175. package/dist/language/is.cjs +9 -0
  176. package/dist/language/is.cjs.map +1 -0
  177. package/dist/language/is.d.cts +5 -0
  178. package/dist/language/is.d.ts +5 -0
  179. package/dist/language/is.js +7 -0
  180. package/dist/language/is.js.map +1 -0
  181. package/dist/language/it.cjs +9 -0
  182. package/dist/language/it.cjs.map +1 -0
  183. package/dist/language/it.d.cts +5 -0
  184. package/dist/language/it.d.ts +5 -0
  185. package/dist/language/it.js +7 -0
  186. package/dist/language/it.js.map +1 -0
  187. package/dist/language/ja.cjs +9 -0
  188. package/dist/language/ja.cjs.map +1 -0
  189. package/dist/language/ja.d.cts +5 -0
  190. package/dist/language/ja.d.ts +5 -0
  191. package/dist/language/ja.js +7 -0
  192. package/dist/language/ja.js.map +1 -0
  193. package/dist/language/km.cjs +9 -0
  194. package/dist/language/km.cjs.map +1 -0
  195. package/dist/language/km.d.cts +5 -0
  196. package/dist/language/km.d.ts +5 -0
  197. package/dist/language/km.js +7 -0
  198. package/dist/language/km.js.map +1 -0
  199. package/dist/language/kn.cjs +9 -0
  200. package/dist/language/kn.cjs.map +1 -0
  201. package/dist/language/kn.d.cts +5 -0
  202. package/dist/language/kn.d.ts +5 -0
  203. package/dist/language/kn.js +7 -0
  204. package/dist/language/kn.js.map +1 -0
  205. package/dist/language/ko.cjs +9 -0
  206. package/dist/language/ko.cjs.map +1 -0
  207. package/dist/language/ko.d.cts +5 -0
  208. package/dist/language/ko.d.ts +5 -0
  209. package/dist/language/ko.js +7 -0
  210. package/dist/language/ko.js.map +1 -0
  211. package/dist/language/ku.cjs +9 -0
  212. package/dist/language/ku.cjs.map +1 -0
  213. package/dist/language/ku.d.cts +5 -0
  214. package/dist/language/ku.d.ts +5 -0
  215. package/dist/language/ku.js +7 -0
  216. package/dist/language/ku.js.map +1 -0
  217. package/dist/language/lo.cjs +9 -0
  218. package/dist/language/lo.cjs.map +1 -0
  219. package/dist/language/lo.d.cts +5 -0
  220. package/dist/language/lo.d.ts +5 -0
  221. package/dist/language/lo.js +7 -0
  222. package/dist/language/lo.js.map +1 -0
  223. package/dist/language/lt.cjs +9 -0
  224. package/dist/language/lt.cjs.map +1 -0
  225. package/dist/language/lt.d.cts +5 -0
  226. package/dist/language/lt.d.ts +5 -0
  227. package/dist/language/lt.js +7 -0
  228. package/dist/language/lt.js.map +1 -0
  229. package/dist/language/lv.cjs +9 -0
  230. package/dist/language/lv.cjs.map +1 -0
  231. package/dist/language/lv.d.cts +5 -0
  232. package/dist/language/lv.d.ts +5 -0
  233. package/dist/language/lv.js +7 -0
  234. package/dist/language/lv.js.map +1 -0
  235. package/dist/language/mk.cjs +9 -0
  236. package/dist/language/mk.cjs.map +1 -0
  237. package/dist/language/mk.d.cts +5 -0
  238. package/dist/language/mk.d.ts +5 -0
  239. package/dist/language/mk.js +7 -0
  240. package/dist/language/mk.js.map +1 -0
  241. package/dist/language/mn.cjs +9 -0
  242. package/dist/language/mn.cjs.map +1 -0
  243. package/dist/language/mn.d.cts +5 -0
  244. package/dist/language/mn.d.ts +5 -0
  245. package/dist/language/mn.js +7 -0
  246. package/dist/language/mn.js.map +1 -0
  247. package/dist/language/mr.cjs +9 -0
  248. package/dist/language/mr.cjs.map +1 -0
  249. package/dist/language/mr.d.cts +5 -0
  250. package/dist/language/mr.d.ts +5 -0
  251. package/dist/language/mr.js +7 -0
  252. package/dist/language/mr.js.map +1 -0
  253. package/dist/language/ms.cjs +9 -0
  254. package/dist/language/ms.cjs.map +1 -0
  255. package/dist/language/ms.d.cts +5 -0
  256. package/dist/language/ms.d.ts +5 -0
  257. package/dist/language/ms.js +7 -0
  258. package/dist/language/ms.js.map +1 -0
  259. package/dist/language/nl.cjs +9 -0
  260. package/dist/language/nl.cjs.map +1 -0
  261. package/dist/language/nl.d.cts +5 -0
  262. package/dist/language/nl.d.ts +5 -0
  263. package/dist/language/nl.js +7 -0
  264. package/dist/language/nl.js.map +1 -0
  265. package/dist/language/no.cjs +9 -0
  266. package/dist/language/no.cjs.map +1 -0
  267. package/dist/language/no.d.cts +5 -0
  268. package/dist/language/no.d.ts +5 -0
  269. package/dist/language/no.js +7 -0
  270. package/dist/language/no.js.map +1 -0
  271. package/dist/language/pl.cjs +9 -0
  272. package/dist/language/pl.cjs.map +1 -0
  273. package/dist/language/pl.d.cts +5 -0
  274. package/dist/language/pl.d.ts +5 -0
  275. package/dist/language/pl.js +7 -0
  276. package/dist/language/pl.js.map +1 -0
  277. package/dist/language/pt.cjs +9 -0
  278. package/dist/language/pt.cjs.map +1 -0
  279. package/dist/language/pt.d.cts +5 -0
  280. package/dist/language/pt.d.ts +5 -0
  281. package/dist/language/pt.js +7 -0
  282. package/dist/language/pt.js.map +1 -0
  283. package/dist/language/ro.cjs +9 -0
  284. package/dist/language/ro.cjs.map +1 -0
  285. package/dist/language/ro.d.cts +5 -0
  286. package/dist/language/ro.d.ts +5 -0
  287. package/dist/language/ro.js +7 -0
  288. package/dist/language/ro.js.map +1 -0
  289. package/dist/language/ru.cjs +10 -0
  290. package/dist/language/ru.cjs.map +1 -0
  291. package/dist/language/ru.d.cts +5 -0
  292. package/dist/language/ru.d.ts +5 -0
  293. package/dist/language/ru.js +8 -0
  294. package/dist/language/ru.js.map +1 -0
  295. package/dist/language/sk.cjs +10 -0
  296. package/dist/language/sk.cjs.map +1 -0
  297. package/dist/language/sk.d.cts +5 -0
  298. package/dist/language/sk.d.ts +5 -0
  299. package/dist/language/sk.js +8 -0
  300. package/dist/language/sk.js.map +1 -0
  301. package/dist/language/sl.cjs +9 -0
  302. package/dist/language/sl.cjs.map +1 -0
  303. package/dist/language/sl.d.cts +5 -0
  304. package/dist/language/sl.d.ts +5 -0
  305. package/dist/language/sl.js +7 -0
  306. package/dist/language/sl.js.map +1 -0
  307. package/dist/language/sq.cjs +9 -0
  308. package/dist/language/sq.cjs.map +1 -0
  309. package/dist/language/sq.d.cts +5 -0
  310. package/dist/language/sq.d.ts +5 -0
  311. package/dist/language/sq.js +7 -0
  312. package/dist/language/sq.js.map +1 -0
  313. package/dist/language/sr.cjs +10 -0
  314. package/dist/language/sr.cjs.map +1 -0
  315. package/dist/language/sr.d.cts +5 -0
  316. package/dist/language/sr.d.ts +5 -0
  317. package/dist/language/sr.js +8 -0
  318. package/dist/language/sr.js.map +1 -0
  319. package/dist/language/sv.cjs +9 -0
  320. package/dist/language/sv.cjs.map +1 -0
  321. package/dist/language/sv.d.cts +5 -0
  322. package/dist/language/sv.d.ts +5 -0
  323. package/dist/language/sv.js +7 -0
  324. package/dist/language/sv.js.map +1 -0
  325. package/dist/language/sw.cjs +9 -0
  326. package/dist/language/sw.cjs.map +1 -0
  327. package/dist/language/sw.d.cts +20 -0
  328. package/dist/language/sw.d.ts +20 -0
  329. package/dist/language/sw.js +7 -0
  330. package/dist/language/sw.js.map +1 -0
  331. package/dist/language/ta.cjs +9 -0
  332. package/dist/language/ta.cjs.map +1 -0
  333. package/dist/language/ta.d.cts +5 -0
  334. package/dist/language/ta.d.ts +5 -0
  335. package/dist/language/ta.js +7 -0
  336. package/dist/language/ta.js.map +1 -0
  337. package/dist/language/te.cjs +9 -0
  338. package/dist/language/te.cjs.map +1 -0
  339. package/dist/language/te.d.cts +5 -0
  340. package/dist/language/te.d.ts +5 -0
  341. package/dist/language/te.js +7 -0
  342. package/dist/language/te.js.map +1 -0
  343. package/dist/language/th.cjs +9 -0
  344. package/dist/language/th.cjs.map +1 -0
  345. package/dist/language/th.d.cts +5 -0
  346. package/dist/language/th.d.ts +5 -0
  347. package/dist/language/th.js +7 -0
  348. package/dist/language/th.js.map +1 -0
  349. package/dist/language/tr.cjs +9 -0
  350. package/dist/language/tr.cjs.map +1 -0
  351. package/dist/language/tr.d.cts +5 -0
  352. package/dist/language/tr.d.ts +5 -0
  353. package/dist/language/tr.js +7 -0
  354. package/dist/language/tr.js.map +1 -0
  355. package/dist/language/uk.cjs +10 -0
  356. package/dist/language/uk.cjs.map +1 -0
  357. package/dist/language/uk.d.cts +5 -0
  358. package/dist/language/uk.d.ts +5 -0
  359. package/dist/language/uk.js +8 -0
  360. package/dist/language/uk.js.map +1 -0
  361. package/dist/language/ur.cjs +9 -0
  362. package/dist/language/ur.cjs.map +1 -0
  363. package/dist/language/ur.d.cts +5 -0
  364. package/dist/language/ur.d.ts +5 -0
  365. package/dist/language/ur.js +7 -0
  366. package/dist/language/ur.js.map +1 -0
  367. package/dist/language/uz.cjs +9 -0
  368. package/dist/language/uz.cjs.map +1 -0
  369. package/dist/language/uz.d.cts +5 -0
  370. package/dist/language/uz.d.ts +5 -0
  371. package/dist/language/uz.js +7 -0
  372. package/dist/language/uz.js.map +1 -0
  373. package/dist/language/uz_CYR.cjs +9 -0
  374. package/dist/language/uz_CYR.cjs.map +1 -0
  375. package/dist/language/uz_CYR.d.cts +5 -0
  376. package/dist/language/uz_CYR.d.ts +5 -0
  377. package/dist/language/uz_CYR.js +7 -0
  378. package/dist/language/uz_CYR.js.map +1 -0
  379. package/dist/language/vi.cjs +9 -0
  380. package/dist/language/vi.cjs.map +1 -0
  381. package/dist/language/vi.d.cts +5 -0
  382. package/dist/language/vi.d.ts +5 -0
  383. package/dist/language/vi.js +7 -0
  384. package/dist/language/vi.js.map +1 -0
  385. package/dist/language/zh_CN.cjs +9 -0
  386. package/dist/language/zh_CN.cjs.map +1 -0
  387. package/dist/language/zh_CN.d.cts +5 -0
  388. package/dist/language/zh_CN.d.ts +5 -0
  389. package/dist/language/zh_CN.js +7 -0
  390. package/dist/language/zh_CN.js.map +1 -0
  391. package/dist/language/zh_TW.cjs +9 -0
  392. package/dist/language/zh_TW.cjs.map +1 -0
  393. package/dist/language/zh_TW.d.cts +5 -0
  394. package/dist/language/zh_TW.d.ts +5 -0
  395. package/dist/language/zh_TW.js +7 -0
  396. package/dist/language/zh_TW.js.map +1 -0
  397. package/dist/types-nxmwwJwo.d.cts +63 -0
  398. package/dist/types-nxmwwJwo.d.ts +63 -0
  399. package/package.json +219 -0
package/README.md ADDED
@@ -0,0 +1,982 @@
1
+ <div align="center">
2
+ <h3>Visulima humanizer</h3>
3
+ <p>
4
+ Humanizer is a library for humanizing data in a human-readable form.
5
+ </p>
6
+ </div>
7
+
8
+ <br />
9
+
10
+ <div align="center">
11
+
12
+ [![typescript-image]][typescript-url] [![npm-image]][npm-url] [![license-image]][license-url]
13
+
14
+ </div>
15
+
16
+ ---
17
+
18
+ <div align="center">
19
+ <p>
20
+ <sup>
21
+ Daniel Bannert's open source work is supported by the community on <a href="https://github.com/sponsors/prisis">GitHub Sponsors</a>
22
+ </sup>
23
+ </p>
24
+ </div>
25
+
26
+ ---
27
+
28
+ ## Install
29
+
30
+ ```sh
31
+ npm install @visulima/humanizer
32
+ ```
33
+
34
+ ```sh
35
+ yarn add @visulima/humanizer
36
+ ```
37
+
38
+ ```sh
39
+ pnpm add @visulima/humanizer
40
+ ```
41
+
42
+ ## Usage
43
+
44
+ ### Bytes
45
+
46
+ Convert bytes to human-readable strings and vice versa: 1024 → 1KB and 1KB → 1024
47
+
48
+ ```ts
49
+ import { formatBytes, p } from "@visulima/humanizer";
50
+
51
+ console.log(formatBytes(123412341, { decimals: 2 })); // "117.70 MB"
52
+ console.log(parseBytes("117.70 MB")); // 123417395.2
53
+
54
+ // Localization support in both directions
55
+ console.log(formatBytes(123412341, { decimals: 2, locale: "de" })); // "117,70 MB"
56
+ console.log(parseBytes("117,70 MB", { locale: "de" })); // 123417395.2
57
+
58
+ // Use a specified unit
59
+ console.log(formatBytes(123412341, { decimals: 2, unit: "KB" })); // "120,519.86 KB"
60
+
61
+ // Use a long unit
62
+ console.log(formatBytes(123412341, { decimals: 2, unit: "GB", long: true })); // "0.11 Gigabytes"
63
+
64
+ // Use a differnet base
65
+ console.log(formatBytes(123412341, { decimals: 2, base: 10 })); // "123.41 MB"
66
+ ```
67
+
68
+ #### Supported locales
69
+
70
+ > Default: "en".
71
+
72
+ `formatBytes` and `parseBytes` supports the following locales:
73
+
74
+ <details>
75
+ <summary><strong>Supported locales</strong></summary>
76
+ <ul>
77
+ <li>af-NA"</li>
78
+ <li>af"</li>
79
+ <li>agq"</li>
80
+ <li>ak"</li>
81
+ <li>am"</li>
82
+ <li>ar-AE"</li>
83
+ <li>ar-BH"</li>
84
+ <li>ar-DJ"</li>
85
+ <li>ar-DZ"</li>
86
+ <li>ar-EG"</li>
87
+ <li>ar-EH"</li>
88
+ <li>ar-ER"</li>
89
+ <li>ar-IL"</li>
90
+ <li>ar-IQ"</li>
91
+ <li>ar-JO"</li>
92
+ <li>ar-KM"</li>
93
+ <li>ar-KW"</li>
94
+ <li>ar-LB"</li>
95
+ <li>ar-LY"</li>
96
+ <li>ar-MA"</li>
97
+ <li>ar-MR"</li>
98
+ <li>ar-OM"</li>
99
+ <li>ar-PS"</li>
100
+ <li>ar-QA"</li>
101
+ <li>ar-SA"</li>
102
+ <li>ar-SD"</li>
103
+ <li>ar-SO"</li>
104
+ <li>ar-SS"</li>
105
+ <li>ar-SY"</li>
106
+ <li>ar-TD"</li>
107
+ <li>ar-TN"</li>
108
+ <li>ar-YE"</li>
109
+ <li>ar"</li>
110
+ <li>as"</li>
111
+ <li>asa"</li>
112
+ <li>ast"</li>
113
+ <li>az-Cyrl"</li>
114
+ <li>az-Latn"</li>
115
+ <li>az"</li>
116
+ <li>bas"</li>
117
+ <li>be-tarask"</li>
118
+ <li>be"</li>
119
+ <li>bem"</li>
120
+ <li>bez"</li>
121
+ <li>bg"</li>
122
+ <li>bm"</li>
123
+ <li>bn-IN"</li>
124
+ <li>bn"</li>
125
+ <li>bo-IN"</li>
126
+ <li>bo"</li>
127
+ <li>br"</li>
128
+ <li>brx"</li>
129
+ <li>bs-Cyrl"</li>
130
+ <li>bs-Latn"</li>
131
+ <li>bs"</li>
132
+ <li>ca-AD"</li>
133
+ <li>ca-ES-valencia"</li>
134
+ <li>ca-FR"</li>
135
+ <li>ca-IT"</li>
136
+ <li>ca"</li>
137
+ <li>ccp-IN"</li>
138
+ <li>ccp"</li>
139
+ <li>ce"</li>
140
+ <li>ceb"</li>
141
+ <li>cgg"</li>
142
+ <li>chr"</li>
143
+ <li>ckb-IR"</li>
144
+ <li>ckb"</li>
145
+ <li>cs"</li>
146
+ <li>cy"</li>
147
+ <li>da-GL"</li>
148
+ <li>da"</li>
149
+ <li>dav"</li>
150
+ <li>de-AT"</li>
151
+ <li>de-BE"</li>
152
+ <li>de-CH"</li>
153
+ <li>de-IT"</li>
154
+ <li>de-LI"</li>
155
+ <li>de-LU"</li>
156
+ <li>de"</li>
157
+ <li>dje"</li>
158
+ <li>doi"</li>
159
+ <li>dsb"</li>
160
+ <li>dua"</li>
161
+ <li>dyo"</li>
162
+ <li>dz"</li>
163
+ <li>ebu"</li>
164
+ <li>ee-TG"</li>
165
+ <li>ee"</li>
166
+ <li>el-CY"</li>
167
+ <li>el"</li>
168
+ <li>en-001"</li>
169
+ <li>en-150"</li>
170
+ <li>en-AE"</li>
171
+ <li>en-AG"</li>
172
+ <li>en-AI"</li>
173
+ <li>en-AS"</li>
174
+ <li>en-AT"</li>
175
+ <li>en-AU"</li>
176
+ <li>en-BB"</li>
177
+ <li>en-BE"</li>
178
+ <li>en-BI"</li>
179
+ <li>en-BM"</li>
180
+ <li>en-BS"</li>
181
+ <li>en-BW"</li>
182
+ <li>en-BZ"</li>
183
+ <li>en-CA"</li>
184
+ <li>en-CC"</li>
185
+ <li>en-CH"</li>
186
+ <li>en-CK"</li>
187
+ <li>en-CM"</li>
188
+ <li>en-CX"</li>
189
+ <li>en-CY"</li>
190
+ <li>en-DE"</li>
191
+ <li>en-DG"</li>
192
+ <li>en-DK"</li>
193
+ <li>en-DM"</li>
194
+ <li>en-ER"</li>
195
+ <li>en-FI"</li>
196
+ <li>en-FJ"</li>
197
+ <li>en-FK"</li>
198
+ <li>en-FM"</li>
199
+ <li>en-GB"</li>
200
+ <li>en-GD"</li>
201
+ <li>en-GG"</li>
202
+ <li>en-GH"</li>
203
+ <li>en-GI"</li>
204
+ <li>en-GM"</li>
205
+ <li>en-GU"</li>
206
+ <li>en-GY"</li>
207
+ <li>en-HK"</li>
208
+ <li>en-IE"</li>
209
+ <li>en-IL"</li>
210
+ <li>en-IM"</li>
211
+ <li>en-IN"</li>
212
+ <li>en-IO"</li>
213
+ <li>en-JE"</li>
214
+ <li>en-JM"</li>
215
+ <li>en-KE"</li>
216
+ <li>en-KI"</li>
217
+ <li>en-KN"</li>
218
+ <li>en-KY"</li>
219
+ <li>en-LC"</li>
220
+ <li>en-LR"</li>
221
+ <li>en-LS"</li>
222
+ <li>en-MG"</li>
223
+ <li>en-MH"</li>
224
+ <li>en-MO"</li>
225
+ <li>en-MP"</li>
226
+ <li>en-MS"</li>
227
+ <li>en-MT"</li>
228
+ <li>en-MU"</li>
229
+ <li>en-MW"</li>
230
+ <li>en-MY"</li>
231
+ <li>en-NA"</li>
232
+ <li>en-NF"</li>
233
+ <li>en-NG"</li>
234
+ <li>en-NL"</li>
235
+ <li>en-NR"</li>
236
+ <li>en-NU"</li>
237
+ <li>en-NZ"</li>
238
+ <li>en-PG"</li>
239
+ <li>en-PH"</li>
240
+ <li>en-PK"</li>
241
+ <li>en-PN"</li>
242
+ <li>en-PR"</li>
243
+ <li>en-PW"</li>
244
+ <li>en-RW"</li>
245
+ <li>en-SB"</li>
246
+ <li>en-SC"</li>
247
+ <li>en-SD"</li>
248
+ <li>en-SE"</li>
249
+ <li>en-SG"</li>
250
+ <li>en-SH"</li>
251
+ <li>en-SI"</li>
252
+ <li>en-SL"</li>
253
+ <li>en-SS"</li>
254
+ <li>en-SX"</li>
255
+ <li>en-SZ"</li>
256
+ <li>en-TC"</li>
257
+ <li>en-TK"</li>
258
+ <li>en-TO"</li>
259
+ <li>en-TT"</li>
260
+ <li>en-TV"</li>
261
+ <li>en-TZ"</li>
262
+ <li>en-UG"</li>
263
+ <li>en-UM"</li>
264
+ <li>en-VC"</li>
265
+ <li>en-VG"</li>
266
+ <li>en-VI"</li>
267
+ <li>en-VU"</li>
268
+ <li>en-WS"</li>
269
+ <li>en-ZA"</li>
270
+ <li>en-ZM"</li>
271
+ <li>en-ZW"</li>
272
+ <li>en"</li>
273
+ <li>eo"</li>
274
+ <li>es-419"</li>
275
+ <li>es-AR"</li>
276
+ <li>es-BO"</li>
277
+ <li>es-BR"</li>
278
+ <li>es-BZ"</li>
279
+ <li>es-CL"</li>
280
+ <li>es-CO"</li>
281
+ <li>es-CR"</li>
282
+ <li>es-CU"</li>
283
+ <li>es-DO"</li>
284
+ <li>es-EA"</li>
285
+ <li>es-EC"</li>
286
+ <li>es-GQ"</li>
287
+ <li>es-GT"</li>
288
+ <li>es-HN"</li>
289
+ <li>es-IC"</li>
290
+ <li>es-MX"</li>
291
+ <li>es-NI"</li>
292
+ <li>es-PA"</li>
293
+ <li>es-PE"</li>
294
+ <li>es-PH"</li>
295
+ <li>es-PR"</li>
296
+ <li>es-PY"</li>
297
+ <li>es-SV"</li>
298
+ <li>es-US"</li>
299
+ <li>es-UY"</li>
300
+ <li>es-VE"</li>
301
+ <li>es"</li>
302
+ <li>et"</li>
303
+ <li>eu"</li>
304
+ <li>ewo"</li>
305
+ <li>fa-AF"</li>
306
+ <li>fa"</li>
307
+ <li>ff-Adlm-BF"</li>
308
+ <li>ff-Adlm-CM"</li>
309
+ <li>ff-Adlm-GH"</li>
310
+ <li>ff-Adlm-GM"</li>
311
+ <li>ff-Adlm-GW"</li>
312
+ <li>ff-Adlm-LR"</li>
313
+ <li>ff-Adlm-MR"</li>
314
+ <li>ff-Adlm-NE"</li>
315
+ <li>ff-Adlm-NG"</li>
316
+ <li>ff-Adlm-SL"</li>
317
+ <li>ff-Adlm-SN"</li>
318
+ <li>ff-Adlm"</li>
319
+ <li>ff-Latn-BF"</li>
320
+ <li>ff-Latn-CM"</li>
321
+ <li>ff-Latn-GH"</li>
322
+ <li>ff-Latn-GM"</li>
323
+ <li>ff-Latn-GN"</li>
324
+ <li>ff-Latn-GW"</li>
325
+ <li>ff-Latn-LR"</li>
326
+ <li>ff-Latn-MR"</li>
327
+ <li>ff-Latn-NE"</li>
328
+ <li>ff-Latn-NG"</li>
329
+ <li>ff-Latn-SL"</li>
330
+ <li>ff-Latn"</li>
331
+ <li>ff"</li>
332
+ <li>fi"</li>
333
+ <li>fil"</li>
334
+ <li>fo-DK"</li>
335
+ <li>fo"</li>
336
+ <li>fr-BE"</li>
337
+ <li>fr-BF"</li>
338
+ <li>fr-BI"</li>
339
+ <li>fr-BJ"</li>
340
+ <li>fr-BL"</li>
341
+ <li>fr-CA"</li>
342
+ <li>fr-CD"</li>
343
+ <li>fr-CF"</li>
344
+ <li>fr-CG"</li>
345
+ <li>fr-CH"</li>
346
+ <li>fr-CI"</li>
347
+ <li>fr-CM"</li>
348
+ <li>fr-DJ"</li>
349
+ <li>fr-DZ"</li>
350
+ <li>fr-GA"</li>
351
+ <li>fr-GF"</li>
352
+ <li>fr-GN"</li>
353
+ <li>fr-GP"</li>
354
+ <li>fr-GQ"</li>
355
+ <li>fr-HT"</li>
356
+ <li>fr-KM"</li>
357
+ <li>fr-LU"</li>
358
+ <li>fr-MA"</li>
359
+ <li>fr-MC"</li>
360
+ <li>fr-MF"</li>
361
+ <li>fr-MG"</li>
362
+ <li>fr-ML"</li>
363
+ <li>fr-MQ"</li>
364
+ <li>fr-MR"</li>
365
+ <li>fr-MU"</li>
366
+ <li>fr-NC"</li>
367
+ <li>fr-NE"</li>
368
+ <li>fr-PF"</li>
369
+ <li>fr-PM"</li>
370
+ <li>fr-RE"</li>
371
+ <li>fr-RW"</li>
372
+ <li>fr-SC"</li>
373
+ <li>fr-SN"</li>
374
+ <li>fr-SY"</li>
375
+ <li>fr-TD"</li>
376
+ <li>fr-TG"</li>
377
+ <li>fr-TN"</li>
378
+ <li>fr-VU"</li>
379
+ <li>fr-WF"</li>
380
+ <li>fr-YT"</li>
381
+ <li>fr"</li>
382
+ <li>fur"</li>
383
+ <li>fy"</li>
384
+ <li>ga-GB"</li>
385
+ <li>ga"</li>
386
+ <li>gd"</li>
387
+ <li>gl"</li>
388
+ <li>gsw-FR"</li>
389
+ <li>gsw-LI"</li>
390
+ <li>gsw"</li>
391
+ <li>gu"</li>
392
+ <li>guz"</li>
393
+ <li>gv"</li>
394
+ <li>ha-GH"</li>
395
+ <li>ha-NE"</li>
396
+ <li>ha"</li>
397
+ <li>haw"</li>
398
+ <li>he"</li>
399
+ <li>hi"</li>
400
+ <li>hr-BA"</li>
401
+ <li>hr"</li>
402
+ <li>hsb"</li>
403
+ <li>hu"</li>
404
+ <li>hy"</li>
405
+ <li>ia"</li>
406
+ <li>id"</li>
407
+ <li>ig"</li>
408
+ <li>ii"</li>
409
+ <li>is"</li>
410
+ <li>it-CH"</li>
411
+ <li>it-SM"</li>
412
+ <li>it-VA"</li>
413
+ <li>it"</li>
414
+ <li>ja"</li>
415
+ <li>jgo"</li>
416
+ <li>jmc"</li>
417
+ <li>jv"</li>
418
+ <li>ka"</li>
419
+ <li>kab"</li>
420
+ <li>kam"</li>
421
+ <li>kde"</li>
422
+ <li>kea"</li>
423
+ <li>kgp"</li>
424
+ <li>khq"</li>
425
+ <li>ki"</li>
426
+ <li>kk"</li>
427
+ <li>kkj"</li>
428
+ <li>kl"</li>
429
+ <li>kln"</li>
430
+ <li>km"</li>
431
+ <li>kn"</li>
432
+ <li>ko-KP"</li>
433
+ <li>ko"</li>
434
+ <li>kok"</li>
435
+ <li>ks-Arab"</li>
436
+ <li>ks"</li>
437
+ <li>ksb"</li>
438
+ <li>ksf"</li>
439
+ <li>ksh"</li>
440
+ <li>ku"</li>
441
+ <li>kw"</li>
442
+ <li>ky"</li>
443
+ <li>lag"</li>
444
+ <li>lb"</li>
445
+ <li>lg"</li>
446
+ <li>lkt"</li>
447
+ <li>ln-AO"</li>
448
+ <li>ln-CF"</li>
449
+ <li>ln-CG"</li>
450
+ <li>ln"</li>
451
+ <li>lo"</li>
452
+ <li>lrc-IQ"</li>
453
+ <li>lrc"</li>
454
+ <li>lt"</li>
455
+ <li>lu"</li>
456
+ <li>luo"</li>
457
+ <li>luy"</li>
458
+ <li>lv"</li>
459
+ <li>mai"</li>
460
+ <li>mas-TZ"</li>
461
+ <li>mas"</li>
462
+ <li>mer"</li>
463
+ <li>mfe"</li>
464
+ <li>mg"</li>
465
+ <li>mgh"</li>
466
+ <li>mgo"</li>
467
+ <li>mi"</li>
468
+ <li>mk"</li>
469
+ <li>ml"</li>
470
+ <li>mn"</li>
471
+ <li>mni-Beng"</li>
472
+ <li>mni"</li>
473
+ <li>mr"</li>
474
+ <li>ms-BN"</li>
475
+ <li>ms-ID"</li>
476
+ <li>ms-SG"</li>
477
+ <li>ms"</li>
478
+ <li>mt"</li>
479
+ <li>mua"</li>
480
+ <li>my"</li>
481
+ <li>mzn"</li>
482
+ <li>naq"</li>
483
+ <li>nb-SJ"</li>
484
+ <li>nb"</li>
485
+ <li>nd"</li>
486
+ <li>nds-NL"</li>
487
+ <li>nds"</li>
488
+ <li>ne-IN"</li>
489
+ <li>ne"</li>
490
+ <li>nl-AW"</li>
491
+ <li>nl-BE"</li>
492
+ <li>nl-BQ"</li>
493
+ <li>nl-CW"</li>
494
+ <li>nl-SR"</li>
495
+ <li>nl-SX"</li>
496
+ <li>nl"</li>
497
+ <li>nmg"</li>
498
+ <li>nn"</li>
499
+ <li>nnh"</li>
500
+ <li>no"</li>
501
+ <li>nus"</li>
502
+ <li>nyn"</li>
503
+ <li>om-KE"</li>
504
+ <li>om"</li>
505
+ <li>or"</li>
506
+ <li>os-RU"</li>
507
+ <li>os"</li>
508
+ <li>pa-Arab"</li>
509
+ <li>pa-Guru"</li>
510
+ <li>pa"</li>
511
+ <li>pcm"</li>
512
+ <li>pl"</li>
513
+ <li>ps-PK"</li>
514
+ <li>ps"</li>
515
+ <li>pt-AO"</li>
516
+ <li>pt-CH"</li>
517
+ <li>pt-CV"</li>
518
+ <li>pt-GQ"</li>
519
+ <li>pt-GW"</li>
520
+ <li>pt-LU"</li>
521
+ <li>pt-MO"</li>
522
+ <li>pt-MZ"</li>
523
+ <li>pt-PT"</li>
524
+ <li>pt-ST"</li>
525
+ <li>pt-TL"</li>
526
+ <li>pt"</li>
527
+ <li>qu-BO"</li>
528
+ <li>qu-EC"</li>
529
+ <li>qu"</li>
530
+ <li>rm"</li>
531
+ <li>rn"</li>
532
+ <li>ro-MD"</li>
533
+ <li>ro"</li>
534
+ <li>rof"</li>
535
+ <li>ru-BY"</li>
536
+ <li>ru-KG"</li>
537
+ <li>ru-KZ"</li>
538
+ <li>ru-MD"</li>
539
+ <li>ru-UA"</li>
540
+ <li>ru"</li>
541
+ <li>rw"</li>
542
+ <li>rwk"</li>
543
+ <li>sa"</li>
544
+ <li>sah"</li>
545
+ <li>saq"</li>
546
+ <li>sat-Olck"</li>
547
+ <li>sat"</li>
548
+ <li>sbp"</li>
549
+ <li>sc"</li>
550
+ <li>sd-Arab"</li>
551
+ <li>sd-Deva"</li>
552
+ <li>sd"</li>
553
+ <li>se-FI"</li>
554
+ <li>se-SE"</li>
555
+ <li>se"</li>
556
+ <li>seh"</li>
557
+ <li>ses"</li>
558
+ <li>sg"</li>
559
+ <li>shi-Latn"</li>
560
+ <li>shi-Tfng"</li>
561
+ <li>shi"</li>
562
+ <li>si"</li>
563
+ <li>sk"</li>
564
+ <li>sl"</li>
565
+ <li>smn"</li>
566
+ <li>sn"</li>
567
+ <li>so-DJ"</li>
568
+ <li>so-ET"</li>
569
+ <li>so-KE"</li>
570
+ <li>so"</li>
571
+ <li>sq-MK"</li>
572
+ <li>sq-XK"</li>
573
+ <li>sq"</li>
574
+ <li>sr-Cyrl-BA"</li>
575
+ <li>sr-Cyrl-ME"</li>
576
+ <li>sr-Cyrl-XK"</li>
577
+ <li>sr-Cyrl"</li>
578
+ <li>sr-Latn-BA"</li>
579
+ <li>sr-Latn-ME"</li>
580
+ <li>sr-Latn-XK"</li>
581
+ <li>sr-Latn"</li>
582
+ <li>sr"</li>
583
+ <li>su-Latn"</li>
584
+ <li>su"</li>
585
+ <li>sv-AX"</li>
586
+ <li>sv-FI"</li>
587
+ <li>sv"</li>
588
+ <li>sw-CD"</li>
589
+ <li>sw-KE"</li>
590
+ <li>sw-UG"</li>
591
+ <li>sw"</li>
592
+ <li>ta-LK"</li>
593
+ <li>ta-MY"</li>
594
+ <li>ta-SG"</li>
595
+ <li>ta"</li>
596
+ <li>te"</li>
597
+ <li>teo-KE"</li>
598
+ <li>teo"</li>
599
+ <li>tg"</li>
600
+ <li>th"</li>
601
+ <li>ti-ER"</li>
602
+ <li>ti"</li>
603
+ <li>tk"</li>
604
+ <li>to"</li>
605
+ <li>tr-CY"</li>
606
+ <li>tr"</li>
607
+ <li>tt"</li>
608
+ <li>twq"</li>
609
+ <li>tzm"</li>
610
+ <li>ug"</li>
611
+ <li>uk"</li>
612
+ <li>und"</li>
613
+ <li>ur-IN"</li>
614
+ <li>ur"</li>
615
+ <li>uz-Arab"</li>
616
+ <li>uz-Cyrl"</li>
617
+ <li>uz-Latn"</li>
618
+ <li>uz"</li>
619
+ <li>vai-Latn"</li>
620
+ <li>vai-Vaii"</li>
621
+ <li>vai"</li>
622
+ <li>vi"</li>
623
+ <li>vun"</li>
624
+ <li>wae"</li>
625
+ <li>wo"</li>
626
+ <li>xh"</li>
627
+ <li>xog"</li>
628
+ <li>yav"</li>
629
+ <li>yi"</li>
630
+ <li>yo-BJ"</li>
631
+ <li>yo"</li>
632
+ <li>yrl-CO"</li>
633
+ <li>yrl-VE"</li>
634
+ <li>yrl"</li>
635
+ <li>yue-Hans"</li>
636
+ <li>yue-Hant"</li>
637
+ <li>yue"</li>
638
+ <li>zgh"</li>
639
+ <li>zh-Hans-HK"</li>
640
+ <li>zh-Hans-MO"</li>
641
+ <li>zh-Hans-SG"</li>
642
+ <li>zh-Hans"</li>
643
+ <li>zh-Hant-HK"</li>
644
+ <li>zh-Hant-MO"</li>
645
+ <li>zh-Hant"</li>
646
+ <li>zh"</li>
647
+ <li>zu"</li>
648
+ </ul>
649
+ </details>
650
+
651
+ ### Duration
652
+
653
+ > `duration` use a modified version of [HumanizeDuration](https://github.com/EvanHahn/HumanizeDuration.js).
654
+
655
+ I have the time in milliseconds and I want it to become "30 minutes" or "3 days, 1 hour".
656
+
657
+ ```ts
658
+ import { duration } from "@visulima/humanizer";
659
+
660
+ duration(3000);
661
+ // => "3 seconds"
662
+
663
+ duration(2250);
664
+ // => "2.25 seconds"
665
+
666
+ duration(97320000);
667
+ // => "1 day, 3 hours, 2 minutes"
668
+ ```
669
+
670
+ #### Options
671
+
672
+ You can change the settings by passing options as the second argument.
673
+
674
+ ##### `units`
675
+
676
+ Array of possible units to use. Units are `y`, `mo`, `w`, `d`, `h`, `m`, `s`, and `ms`.
677
+
678
+ Units are skipped if their count is zero. For example, if you pass a duration of `1000` and units `["h", "m", "s"]`, the output will be "1 second".
679
+
680
+ Must be in descending order of unit size. For example, `["h", "m"]` is valid but `["m", "h"]` is not.
681
+
682
+ Default: `["y", "mo", "w", "d", "h", "m", "s"]`
683
+
684
+ ```ts
685
+ duration(69000, { units: ["h", "m", "s", "ms"] });
686
+ // => "1 minute, 9 seconds"
687
+
688
+ duration(3600000, { units: ["h"] });
689
+ // => "1 hour"
690
+
691
+ duration(3600000, { units: ["m"] });
692
+ // => "60 minutes"
693
+
694
+ duration(3600000, { units: ["d", "h"] });
695
+ // => "1 hour"
696
+ ```
697
+
698
+ #### largest
699
+
700
+ Integer representing the maximum number of units to use.
701
+
702
+ Default: `Infinity`
703
+
704
+ ```ts
705
+ duration(1000000000000);
706
+ // => "31 years, 8 months, 1 week, 19 hours, 46 minutes, 40 seconds"
707
+
708
+ duration(1000000000000, { largest: 2 });
709
+ // => "31 years, 8 months"
710
+ ```
711
+
712
+ #### round
713
+
714
+ A boolean that, if `true`, rounds the smallest unit.
715
+
716
+ Default: `false`
717
+
718
+ ```ts
719
+ duration(1200);
720
+ // => "1.2 seconds"
721
+
722
+ duration(1200, { round: true });
723
+ // => "1 second"
724
+
725
+ duration(1600, { round: true });
726
+ // => "2 seconds"
727
+ ```
728
+
729
+ #### delimiter
730
+
731
+ String to display between units.
732
+
733
+ Default: `", "` in most languages, `" ﻭ "` for Arabic
734
+
735
+ ```ts
736
+ duration(22140000);
737
+ // => "6 hours, 9 minutes"
738
+
739
+ duration(22140000, { delimiter: " and " });
740
+ // => "6 hours and 9 minutes"
741
+ ```
742
+
743
+ #### spacer
744
+
745
+ String to display between the count and the word.
746
+
747
+ Default: `" "`
748
+
749
+ ```ts
750
+ duration(260040000);
751
+ // => "3 days, 14 minutes"
752
+
753
+ duration(260040000, { spacer: " whole " });
754
+ // => "3 whole days, 14 whole minutes"
755
+ ```
756
+
757
+ #### decimal
758
+
759
+ String to display between the integer and decimal parts of a count, if relevant.
760
+
761
+ Default depends on the language.
762
+
763
+ ```ts
764
+ duration(1200);
765
+ // => "1.2 seconds"
766
+
767
+ duration(1200, { decimal: " point " });
768
+ // => "1 point 2 seconds"
769
+ ```
770
+
771
+ #### conjunction
772
+
773
+ String to include before the final unit.
774
+
775
+ You can also set `serialComma` to `false` to eliminate the final comma.
776
+
777
+ Default: `""`
778
+
779
+ ```ts
780
+ duration(22140000, { conjunction: " and " });
781
+ // => "6 hours and 9 minutes"
782
+
783
+ duration(22141000, { conjunction: " and " });
784
+ // => "6 hours, 9 minutes, and 1 second"
785
+
786
+ duration(22140000, { conjunction: " and ", serialComma: false });
787
+ // => "6 hours and 9 minutes"
788
+
789
+ duration(22141000, { conjunction: " and ", serialComma: false });
790
+ // => "6 hours, 9 minutes and 1 second"
791
+ ```
792
+
793
+ #### maxDecimalPoints
794
+
795
+ Integer that defines the maximum number of decimal points to show, if relevant. If `undefined`, the count will be converted to a string using [`Number.prototype.toString()`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toString).
796
+
797
+ This does not round any numbers. See [the `round` option](#round).
798
+
799
+ Default: `undefined`
800
+
801
+ ```ts
802
+ duration(8123.456789);
803
+ // => "8.123456789 seconds"
804
+
805
+ duration(8123.456789, { maxDecimalPoints: 3 });
806
+ // => "8.123 seconds"
807
+
808
+ duration(8100, { maxDecimalPoints: 99 });
809
+ // => "8.1 seconds"
810
+
811
+ duration(8000, { maxDecimalPoints: 99 });
812
+ // => "8 seconds"
813
+
814
+ duration(7999, { maxDecimalPoints: 2 });
815
+ // => "7.99 seconds"
816
+ ```
817
+
818
+ #### digitReplacements
819
+
820
+ Array of ten strings to which will replace the numerals 0-9. Useful if a language uses different numerals.
821
+
822
+ Default: `undefined` for most languages, `["۰", "١", "٢", "٣", "٤", "٥", "٦", "٧", "٨", "٩"]` for Arabic
823
+
824
+ ```ts
825
+ duration(1234);
826
+ // => "1.234 seconds"
827
+
828
+ duration(1234, {
829
+ digitReplacements: [
830
+ "Zero",
831
+ "One",
832
+ "Two",
833
+ "Three",
834
+ "Four",
835
+ "Five",
836
+ "Six",
837
+ "Seven",
838
+ "Eight",
839
+ "Nine",
840
+ ],
841
+ });
842
+ // => "One.TwoThreeFour seconds"
843
+ ```
844
+
845
+ #### unitMeasures
846
+
847
+ _Use this option with care. It is an advanced feature._
848
+
849
+ Object used to customize the value used to calculate each unit of time. Most useful when you want to update the length of years or months, which have ambiguous lengths.
850
+
851
+ Default: `{ y: 31557600000, mo: 2629800000, w: 604800000, d: 86400000, h: 3600000, m: 60000, s: 1000, ms: 1 }`
852
+
853
+ ```ts
854
+ duration(2629800000);
855
+ // => "1 month"
856
+
857
+ duration(2629800000, {
858
+ unitMeasures: {
859
+ y: 31557600000,
860
+ mo: 30 * 86400000,
861
+ w: 604800000,
862
+ d: 86400000,
863
+ h: 3600000,
864
+ m: 60000,
865
+ s: 1000,
866
+ ms: 1,
867
+ },
868
+ });
869
+ // => "1 month, 10 hours, 30 minutes"
870
+ ```
871
+
872
+ ##### Supported languages
873
+
874
+ > Language for unit display. Accepts an [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) from one of the supported languages.
875
+ >
876
+ > Default: "en".
877
+
878
+ `duration` supports the following languages:
879
+
880
+ | Language | Code |
881
+ | -------------------- | -------- |
882
+ | Afrikaans | `af` |
883
+ | Albanian | `sq` |
884
+ | Amharic | `am` |
885
+ | Arabic | `ar` |
886
+ | Basque | `eu` |
887
+ | Bengali | `bn` |
888
+ | Bulgarian | `bg` |
889
+ | Catalan | `ca` |
890
+ | Central Kurdish | `ckb` |
891
+ | Chinese, simplified | `zh_CN` |
892
+ | Chinese, traditional | `zh_TW` |
893
+ | Croatian | `hr` |
894
+ | Czech | `cs` |
895
+ | Danish | `da` |
896
+ | Dutch | `nl` |
897
+ | English | `en` |
898
+ | Esperanto | `eo` |
899
+ | Estonian | `et` |
900
+ | Faroese | `fo` |
901
+ | Farsi/Persian | `fa` |
902
+ | Finnish | `fi` |
903
+ | French | `fr` |
904
+ | German | `de` |
905
+ | Greek | `el` |
906
+ | Hebrew | `he` |
907
+ | Hindi | `hi` |
908
+ | Hungarian | `hu` |
909
+ | Icelandic | `is` |
910
+ | Indonesian | `id` |
911
+ | Italian | `it` |
912
+ | Japanese | `ja` |
913
+ | Kannada | `kn` |
914
+ | Khmer | `km` |
915
+ | Korean | `ko` |
916
+ | Kurdish | `ku` |
917
+ | Lao | `lo` |
918
+ | Latvian | `lv` |
919
+ | Lithuanian | `lt` |
920
+ | Macedonian | `mk` |
921
+ | Mongolian | `mn` |
922
+ | Malay | `ms` |
923
+ | Marathi | `mr` |
924
+ | Norwegian | `no` |
925
+ | Polish | `pl` |
926
+ | Portuguese | `pt` |
927
+ | Romanian | `ro` |
928
+ | Russian | `ru` |
929
+ | Serbian | `sr` |
930
+ | Slovak | `sk` |
931
+ | Slovenian | `sl` |
932
+ | Spanish | `es` |
933
+ | Swahili | `sw` |
934
+ | Swedish | `sv` |
935
+ | Tamil | `ta` |
936
+ | Telugu | `te` |
937
+ | Thai | `th` |
938
+ | Turkish | `tr` |
939
+ | Ukrainian | `uk` |
940
+ | Urdu | `ur` |
941
+ | Uzbek | `uz` |
942
+ | Uzbek (Cyrillic) | `uz_CYR` |
943
+ | Vietnamese | `vi` |
944
+ | Welsh | `cy` |
945
+
946
+ ## Related
947
+
948
+ ### Bytes
949
+
950
+ - [pretty-bytes](https://github.com/sindresorhus/pretty-bytes) - Convert bytes to a human readable string: `1337` → `1.34 kB`
951
+
952
+ ### Duration
953
+
954
+ - [HumanizeDuration](https://github.com/EvanHahn/HumanizeDuration.js) - 361000 becomes "6 minutes, 1 second"
955
+ - [pretty-ms](https://github.com/sindresorhus/pretty-ms) - Convert milliseconds to a human readable string: `1337000000` → `15d 11h 23m 20s`
956
+
957
+ ## Supported Node.js Versions
958
+
959
+ Libraries in this ecosystem make the best effort to track [Node.js’ release schedule](https://github.com/nodejs/release#release-schedule).
960
+ Here’s [a post on why we think this is important](https://medium.com/the-node-js-collection/maintainers-should-consider-following-node-js-release-schedule-ab08ed4de71a).
961
+
962
+ ## Contributing
963
+
964
+ If you would like to help take a look at the [list of issues](https://github.com/visulima/visulima/issues) and check our [Contributing](.github/CONTRIBUTING.md) guidelines.
965
+
966
+ > **Note:** please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
967
+
968
+ ## Credits
969
+
970
+ - [Daniel Bannert](https://github.com/prisis)
971
+ - [All Contributors](https://github.com/visulima/visulima/graphs/contributors)
972
+
973
+ ## License
974
+
975
+ The visulima humanizer is open-sourced software licensed under the [MIT][license-url]
976
+
977
+ [typescript-image]: https://img.shields.io/badge/Typescript-294E80.svg?style=for-the-badge&logo=typescript
978
+ [typescript-url]: "typescript"
979
+ [license-image]: https://img.shields.io/npm/l/@visulima/humanizer?color=blueviolet&style=for-the-badge
980
+ [license-url]: LICENSE.md "license"
981
+ [npm-image]: https://img.shields.io/npm/v/@visulima/humanizer/latest.svg?style=for-the-badge&logo=npm
982
+ [npm-url]: https://www.npmjs.com/package/@visulima/humanizer/v/latest "npm"