@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
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var e=r=>r===1?0:Math.floor(r)!==r?1:r%10>=2&&r%10<=4&&r%100<10?2:3,t=e;
4
+
5
+ exports.a = t;
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=chunk-435FPGI5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/util/duration/get-czech-or-slovak-form.ts"],"names":["getCzechOrSlovakForm","counter","get_czech_or_slovak_form_default"],"mappings":"AAAA,IAAMA,EAAwBC,GACtBA,IAAY,EACL,EAGP,KAAK,MAAMA,CAAO,IAAMA,EACjB,EAGPA,EAAU,IAAM,GAAKA,EAAU,IAAM,GAAKA,EAAU,IAAM,GACnD,EAGJ,EAGJC,EAAQF","sourcesContent":["const getCzechOrSlovakForm = (counter: number): number => {\n if (counter === 1) {\n return 0;\n }\n\n if (Math.floor(counter) !== counter) {\n return 1;\n }\n\n if (counter % 10 >= 2 && counter % 10 <= 4 && counter % 100 < 10) {\n return 2;\n }\n\n return 3;\n};\n\nexport default getCzechOrSlovakForm;\n"]}
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var f=r=>Math.floor(r)!==r?2:r%100>=5&&r%100<=20||r%10>=5&&r%10<=9||r%10===0?0:r%10===1?1:r>1?2:0,a=f;
4
+
5
+ exports.a = a;
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=chunk-6XBKSCXN.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/util/duration/get-slavic-form.ts"],"names":["getSlavicForm","counter","get_slavic_form_default"],"mappings":"AAAA,IAAMA,EAAiBC,GACf,KAAK,MAAMA,CAAO,IAAMA,EACjB,EAGNA,EAAU,KAAO,GAAKA,EAAU,KAAO,IAAQA,EAAU,IAAM,GAAKA,EAAU,IAAM,GAAMA,EAAU,KAAO,EACrG,EAGPA,EAAU,KAAO,EACV,EAGPA,EAAU,EACH,EAGJ,EAGJC,EAAQF","sourcesContent":["const getSlavicForm = (counter: number): number => {\n if (Math.floor(counter) !== counter) {\n return 2;\n }\n\n if ((counter % 100 >= 5 && counter % 100 <= 20) || (counter % 10 >= 5 && counter % 10 <= 9) || counter % 10 === 0) {\n return 0;\n }\n\n if (counter % 10 === 1) {\n return 1;\n }\n\n if (counter > 1) {\n return 2;\n }\n\n return 0;\n};\n\nexport default getSlavicForm;\n"]}
@@ -0,0 +1,5 @@
1
+ var f=r=>Math.floor(r)!==r?2:r%100>=5&&r%100<=20||r%10>=5&&r%10<=9||r%10===0?0:r%10===1?1:r>1?2:0,l=f;
2
+
3
+ export { l as a };
4
+ //# sourceMappingURL=out.js.map
5
+ //# sourceMappingURL=chunk-AVPLJXJK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/util/duration/get-slavic-form.ts"],"names":["getSlavicForm","counter","get_slavic_form_default"],"mappings":"AAAA,IAAMA,EAAiBC,GACf,KAAK,MAAMA,CAAO,IAAMA,EACjB,EAGNA,EAAU,KAAO,GAAKA,EAAU,KAAO,IAAQA,EAAU,IAAM,GAAKA,EAAU,IAAM,GAAMA,EAAU,KAAO,EACrG,EAGPA,EAAU,KAAO,EACV,EAGPA,EAAU,EACH,EAGJ,EAGJC,EAAQF","sourcesContent":["const getSlavicForm = (counter: number): number => {\n if (Math.floor(counter) !== counter) {\n return 2;\n }\n\n if ((counter % 100 >= 5 && counter % 100 <= 20) || (counter % 10 >= 5 && counter % 10 <= 9) || counter % 10 === 0) {\n return 0;\n }\n\n if (counter % 10 === 1) {\n return 1;\n }\n\n if (counter > 1) {\n return 2;\n }\n\n return 0;\n};\n\nexport default getSlavicForm;\n"]}
@@ -0,0 +1,7 @@
1
+ import { a } from './chunk-RO4XQABG.js';
2
+
3
+ var r=a(s=>`year${s===1?"":"s"}`,s=>`month${s===1?"":"s"}`,s=>`week${s===1?"":"s"}`,s=>`day${s===1?"":"s"}`,s=>`hour${s===1?"":"s"}`,s=>`minute${s===1?"":"s"}`,s=>`second${s===1?"":"s"}`,s=>`millisecond${s===1?"":"s"}`,"in %s","%s ago");
4
+
5
+ export { r as a };
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=chunk-BXFSTBLT.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/en.ts"],"names":["durationLanguage","create_duration_language_default","counter"],"mappings":"wCAEO,IAAMA,EAAmBC,EAC3BC,GAAY,OAAOA,IAAY,EAAI,GAAK,GAAG,GAC3CA,GAAY,QAAQA,IAAY,EAAI,GAAK,GAAG,GAC5CA,GAAY,OAAOA,IAAY,EAAI,GAAK,GAAG,GAC3CA,GAAY,MAAMA,IAAY,EAAI,GAAK,GAAG,GAC1CA,GAAY,OAAOA,IAAY,EAAI,GAAK,GAAG,GAC3CA,GAAY,SAASA,IAAY,EAAI,GAAK,GAAG,GAC7CA,GAAY,SAASA,IAAY,EAAI,GAAK,GAAG,GAC7CA,GAAY,cAAcA,IAAY,EAAI,GAAK,GAAG,GACnD,QACA,QACJ","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\n\nexport const durationLanguage = createDurationLanguage(\n (counter) => `year${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `month${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `week${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `day${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `hour${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `minute${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `second${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `millisecond${counter === 1 ? \"\" : \"s\"}`,\n \"in %s\",\n \"%s ago\",\n);\n"]}
@@ -0,0 +1,5 @@
1
+ var e=r=>r===1?0:Math.floor(r)!==r?1:r%10>=2&&r%10<=4&&r%100<10?2:3,a=e;
2
+
3
+ export { a };
4
+ //# sourceMappingURL=out.js.map
5
+ //# sourceMappingURL=chunk-I3ABTD2S.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/util/duration/get-czech-or-slovak-form.ts"],"names":["getCzechOrSlovakForm","counter","get_czech_or_slovak_form_default"],"mappings":"AAAA,IAAMA,EAAwBC,GACtBA,IAAY,EACL,EAGP,KAAK,MAAMA,CAAO,IAAMA,EACjB,EAGPA,EAAU,IAAM,GAAKA,EAAU,IAAM,GAAKA,EAAU,IAAM,GACnD,EAGJ,EAGJC,EAAQF","sourcesContent":["const getCzechOrSlovakForm = (counter: number): number => {\n if (counter === 1) {\n return 0;\n }\n\n if (Math.floor(counter) !== counter) {\n return 1;\n }\n\n if (counter % 10 >= 2 && counter % 10 <= 4 && counter % 100 < 10) {\n return 2;\n }\n\n return 3;\n};\n\nexport default getCzechOrSlovakForm;\n"]}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var chunkVGHD36UF_cjs = require('./chunk-VGHD36UF.cjs');
4
+
5
+ var n=chunkVGHD36UF_cjs.a(s=>`year${s===1?"":"s"}`,s=>`month${s===1?"":"s"}`,s=>`week${s===1?"":"s"}`,s=>`day${s===1?"":"s"}`,s=>`hour${s===1?"":"s"}`,s=>`minute${s===1?"":"s"}`,s=>`second${s===1?"":"s"}`,s=>`millisecond${s===1?"":"s"}`,"in %s","%s ago");
6
+
7
+ exports.a = n;
8
+ //# sourceMappingURL=out.js.map
9
+ //# sourceMappingURL=chunk-MJEZHORL.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/en.ts"],"names":["durationLanguage","create_duration_language_default","counter"],"mappings":"yCAEO,IAAMA,EAAmBC,EAC3BC,GAAY,OAAOA,IAAY,EAAI,GAAK,GAAG,GAC3CA,GAAY,QAAQA,IAAY,EAAI,GAAK,GAAG,GAC5CA,GAAY,OAAOA,IAAY,EAAI,GAAK,GAAG,GAC3CA,GAAY,MAAMA,IAAY,EAAI,GAAK,GAAG,GAC1CA,GAAY,OAAOA,IAAY,EAAI,GAAK,GAAG,GAC3CA,GAAY,SAASA,IAAY,EAAI,GAAK,GAAG,GAC7CA,GAAY,SAASA,IAAY,EAAI,GAAK,GAAG,GAC7CA,GAAY,cAAcA,IAAY,EAAI,GAAK,GAAG,GACnD,QACA,QACJ","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\n\nexport const durationLanguage = createDurationLanguage(\n (counter) => `year${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `month${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `week${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `day${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `hour${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `minute${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `second${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `millisecond${counter === 1 ? \"\" : \"s\"}`,\n \"in %s\",\n \"%s ago\",\n);\n"]}
@@ -0,0 +1,5 @@
1
+ var d=(r,u,e,o,D,g,U,f,t,i,a)=>{let n={d:o,h:D,m:g,mo:u,ms:f,s:U,w:e,y:r};return t!==void 0&&(n.future=t),i!==void 0&&(n.past=i),a!==void 0&&(n.decimal=a),n},L=d;
2
+
3
+ export { L as a };
4
+ //# sourceMappingURL=out.js.map
5
+ //# sourceMappingURL=chunk-RO4XQABG.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/util/create-duration-language.ts"],"names":["createDurationLanguage","y","mo","w","d","h","m","s","ms","future","past","decimal","result","create_duration_language_default"],"mappings":"AAEA,IAAMA,EAAyB,CAC3BC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACmB,CACnB,IAAMC,EAA2B,CAC7B,EAAAR,EACA,EAAAC,EACA,EAAAC,EACA,GAAAJ,EACA,GAAAM,EACA,EAAAD,EACA,EAAAJ,EACA,EAAAF,CACJ,EAEA,OAAIQ,IAAW,SACXG,EAAO,OAASH,GAGhBC,IAAS,SACTE,EAAO,KAAOF,GAGdC,IAAY,SACZC,EAAO,QAAUD,GAGdC,CACX,EAEOC,EAAQb","sourcesContent":["import type { DurationLanguage,DurationUnit } from \"../../types\";\n\nconst createDurationLanguage = (\n y: DurationUnit,\n mo: DurationUnit,\n w: DurationUnit,\n d: DurationUnit,\n h: DurationUnit,\n m: DurationUnit,\n s: DurationUnit,\n ms: DurationUnit,\n future?: string,\n past?: string,\n decimal?: string,\n): DurationLanguage => {\n const result: DurationLanguage = {\n d,\n h,\n m,\n mo,\n ms,\n s,\n w,\n y,\n };\n\n if (future !== undefined) {\n result.future = future;\n }\n\n if (past !== undefined) {\n result.past = past;\n }\n\n if (decimal !== undefined) {\n result.decimal = decimal;\n }\n\n return result;\n};\n\nexport default createDurationLanguage;\n"]}
@@ -0,0 +1,7 @@
1
+ 'use strict';
2
+
3
+ var d=(r,u,e,o,D,g,U,f,t,i,a)=>{let n={d:o,h:D,m:g,mo:u,ms:f,s:U,w:e,y:r};return t!==void 0&&(n.future=t),i!==void 0&&(n.past=i),a!==void 0&&(n.decimal=a),n},p=d;
4
+
5
+ exports.a = p;
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=chunk-VGHD36UF.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/language/util/create-duration-language.ts"],"names":["createDurationLanguage","y","mo","w","d","h","m","s","ms","future","past","decimal","result","create_duration_language_default"],"mappings":"AAEA,IAAMA,EAAyB,CAC3BC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,IACmB,CACnB,IAAMC,EAA2B,CAC7B,EAAAR,EACA,EAAAC,EACA,EAAAC,EACA,GAAAJ,EACA,GAAAM,EACA,EAAAD,EACA,EAAAJ,EACA,EAAAF,CACJ,EAEA,OAAIQ,IAAW,SACXG,EAAO,OAASH,GAGhBC,IAAS,SACTE,EAAO,KAAOF,GAGdC,IAAY,SACZC,EAAO,QAAUD,GAGdC,CACX,EAEOC,EAAQb","sourcesContent":["import type { DurationLanguage,DurationUnit } from \"../../types\";\n\nconst createDurationLanguage = (\n y: DurationUnit,\n mo: DurationUnit,\n w: DurationUnit,\n d: DurationUnit,\n h: DurationUnit,\n m: DurationUnit,\n s: DurationUnit,\n ms: DurationUnit,\n future?: string,\n past?: string,\n decimal?: string,\n): DurationLanguage => {\n const result: DurationLanguage = {\n d,\n h,\n m,\n mo,\n ms,\n s,\n w,\n y,\n };\n\n if (future !== undefined) {\n result.future = future;\n }\n\n if (past !== undefined) {\n result.past = past;\n }\n\n if (decimal !== undefined) {\n result.decimal = decimal;\n }\n\n return result;\n};\n\nexport default createDurationLanguage;\n"]}
package/dist/index.cjs ADDED
@@ -0,0 +1,12 @@
1
+ 'use strict';
2
+
3
+ var chunkMJEZHORL_cjs = require('./chunk-MJEZHORL.cjs');
4
+ require('./chunk-VGHD36UF.cjs');
5
+
6
+ var g=[{long:"Bytes",short:"Bytes"},{long:"Kilobytes",short:"KB"},{long:"Megabytes",short:"MB"},{long:"Gigabytes",short:"GB"},{long:"Terabytes",short:"TB"},{long:"Petabytes",short:"PB"},{long:"Exabytes",short:"EB"},{long:"Zettabytes",short:"ZB"},{long:"Yottabytes",short:"YB"}],U=(e,r)=>{let t=new Intl.NumberFormat(r).format(11111).replaceAll(new RegExp("\\p{Number}","gu"),""),a=new Intl.NumberFormat(r).format(1.1).replaceAll(new RegExp("\\p{Number}","gu"),"");return Number.parseFloat(e.replaceAll(new RegExp(`\\${t}`,"g"),"").replace(new RegExp(`\\${a}`),"."))},B=e=>{if(e===2)return 1024;if(e===10)return 1e3;throw new TypeError("Unsupported base.")},I=(e,r)=>{let t={base:2,locale:"en-US",...r};if(typeof e!="string"||e.length===0)throw new TypeError("Value is not a string or is empty.");if(e.length>100)throw new TypeError("Value exceeds the maximum length of 100 characters.");let c=/^(?<value>-?(?:\d+(([.,])\d+)*)?[.,]?\d+) *(?<type>bytes?|b|kb|kib|mb|mib|gb|gib|tb|tib|pb|pib|eb|eib|zb|zib|yb|yib|(kilo|kibi|mega|mebi|giga|gibi|tera|tebi|peta|pebi|exa|exbi|zetta|zebi|yotta|yobi)?bytes)?$/i.exec(e)?.groups;if(!c)return Number.NaN;let s=U(c.value,t.locale),o=(c.type??"Bytes").toUpperCase().replace(/^KIBI/,"KILO").replace(/^MIBI/,"MEGA").replace(/^GIBI/,"GIGA").replace(/^TEBI/,"TERA").replace(/^PEBI/,"PETA").replace(/^EXBI/,"EXA").replace(/^ZEBI/,"ZETTA").replace(/^YIBI/,"YOTTA").replace(/^(.)IB$/,"$1B"),n=g.findIndex(p=>p.short[0].toUpperCase()===o[0]),i=B(t.base);return s*i**n},P=(e,r)=>{if(typeof e!="number"||!Number.isFinite(e))throw new TypeError("Bytesize is not a number.");let{base:t,decimals:a,locale:c,long:s,unit:o,...n}={base:2,decimals:0,locale:"en-US",long:!1,...r},i=B(t),p=Math.abs(e),l=r?.space??!0?" ":"",u=g.findIndex(y=>y.short===o);if(e===0){let y=Math.min(0,Math.max(u,g.length-1));return "0"+l+g[y][s?"long":"short"]}let m=u>=0?u:Math.min(Math.floor(Math.log(p)/Math.log(i)),g.length-1),f=g[m][s?"long":"short"],d=e/i**m,b=a<0?void 0:a;return new Intl.NumberFormat(c,{maximumFractionDigits:b,minimumFractionDigits:b,...n}).format(d)+l+f};var x=e=>{let r=["y","mo","w","d","h","m","s","ms","future","past"];for(let t of r)if(!Object.prototype.hasOwnProperty.call(e,t))throw new TypeError(`Missing required property: ${t}`);if(typeof e.future!="string"||typeof e.past!="string")throw new TypeError("Properties future and past must be of type string");for(let t of ["y","mo","w","d","h","m","s","ms"])if(typeof e[t]!="string"&&typeof e[t]!="function")throw new TypeError(`Property ${t} must be of type string or function`);if(e.decimal&&typeof e.decimal!="string")throw new TypeError("Property decimal must be of type string");if(e.delimiter&&typeof e.delimiter!="string")throw new TypeError("Property delimiter must be of type string");if(e._digitReplacements&&!Array.isArray(e._digitReplacements))throw new TypeError("Property _digitReplacements must be an array");if(e._numberFirst&&typeof e._numberFirst!="boolean")throw new TypeError("Property _numberFirst must be of type boolean")},N=x;var E=(e,r)=>{r=r||-1;let t=new RegExp(`^-?\\d+(?:.\\d{0,${r}})?`).exec(e.toString());return t===null?e:Number.parseFloat(t[0])},w=({unitCount:e,unitName:r},t,a)=>{let{maxDecimalPoints:c,spacer:s}=a,o=".";a.decimal!==void 0?o=a.decimal:t.decimal!==void 0&&(o=t.decimal);let n;"digitReplacements"in a?n=a.digitReplacements:"_digitReplacements"in t&&(n=t._digitReplacements);let i,p=e;c!==void 0&&(p=E(e,c));let l=p.toString();if(n){i="";for(let f of l)i+=f==="."?o:n[f];}else i=l.replace(".",o);let u=t[r],m=u;return typeof u=="function"&&(m=u(e)),t._numberFirst?m+s+i:i+s+m},_=(e,r)=>{let{units:t}=r;if(t.length===0)return [];let{unitMeasures:a}=r,c=r.largest??Number.POSITIVE_INFINITY,s={},o,n,i,p=e;for(n=0;n<t.length;n++){o=t[n];let u=a[o];i=n===t.length-1?p/u:Math.floor(p/u),s[o]=i,p-=i*u;}if(r.round){let u=c;for(n=0;n<t.length;n++)if(o=t[n],i=s[o],i!==0&&(u--,u===0)){for(let m=n+1;m<t.length;m++){let f=t[m],d=s[f];s[o]+=d*a[f]/a[o],s[f]=0;}break}for(n=t.length-1;n>=0;n--){if(o=t[n],i=s[o],i===0)continue;let m=Math.round(i);if(s[o]=m,n===0)break;let f=t[n-1],d=a[f],b=Math.floor(m*a[o]/d);if(b)s[f]+=b,s[o]=0;else break}}let l=[];for(n=0;n<t.length&&l.length<c;n++){if(o=t[n],i=s[o],i&&!r.round&&l.length===c-1){let u,m=0;for(u=n+1,t.length;u<t.length;u++){let f=t[u];m+=s[f]*(r.unitMeasures[f]/r.unitMeasures[o]);}i+=m,r.maxDecimalPoints!==void 0&&(i=E(i,r.maxDecimalPoints));}i&&l.push({unitCount:i,unitName:o});}return l},T=(e,r,t)=>{let{language:a,units:c}=r;if(e.length===0){let u=c.at(-1);return w({unitCount:0,unitName:u},a,r)}let{conjunction:s,serialComma:o}=r,n=", ";r.delimiter!==void 0?n=r.delimiter:a.delimiter!==void 0&&(n=a.delimiter);let i="";r.timeAdverb&&t!==0&&(i=a.future??"",t<0&&(i=a.past??""));let p=[];for(let u of e){let m=u;p.push(w(m,a,r));}let l;return !s||e.length===1?l=p.join(n):e.length===2?l=p.join(s):l=p.slice(0,-1).join(n)+(o?",":"")+s+p.at(-1),i&&(l=i.replace("%s",l)),l},M=(e,r)=>{if(Number.isNaN(e))throw new TypeError("Expected a valid number");if(typeof e!="number")throw new TypeError("Expected a number");let t={conjunction:"",language:chunkMJEZHORL_cjs.a,round:!1,serialComma:!0,spacer:" ",timeAdverb:!1,unitMeasures:{d:864e5,h:36e5,m:6e4,mo:2629746e3,ms:1,s:1e3,w:6048e5,y:31556952e3},units:["w","d","h","m","s"],...r};N(t.language);let a=Math.abs(e),c=_(a,t);return T(c,t,e)},O=M;
7
+
8
+ exports.duration = O;
9
+ exports.formatBytes = P;
10
+ exports.parseBytes = I;
11
+ //# sourceMappingURL=out.js.map
12
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bytes.ts","../src/language/util/validate-duration-language.ts","../src/duration.ts"],"names":["BYTE_SIZES","parseLocalizedNumber","stringNumber","locale","thousandSeparator","decimalSeparator","fromBase","base","parseBytes","value","options","config","groups","localizedNumber","type","level","unit","formatBytes","bytes","givenBase","decimals","long","requestedUnit","l10nOptions","absoluteBytes","space","requestedUnitIndex","fractionDigits","validateDurationLanguage","language","requiredProperties","property","validate_duration_language_default","toFixed","number_","fixed","matches","renderPiece","unitCount","unitName","maxDecimalPoints","spacer","decimal","digitReplacements","formattedCount","normalizedUnitCount","countString","char","languageWord","word","getPieces","ms","units","unitMeasures","largest","unitCounts","index","msRemaining","unitMs","unitsRemainingBeforeRound","index_","smallerUnitName","smallerUnitCount","rounded","previousUnitName","previousUnitMs","amountOfPreviousUnit","result","remainder","remainderUnitName","formatPieces","pieces","smallestUnitName","conjunction","serialComma","delimiter","adverb","renderedPieces","piece_","piece","duration","milliseconds","durationLanguage","absTime","duration_default"],"mappings":"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","sourcesContent":["import type { FormateByteOptions, ParseByteOptions } from \"./types\";\n\nconst BYTE_SIZES = [\n {\n long: \"Bytes\",\n short: \"Bytes\",\n },\n {\n long: \"Kilobytes\",\n short: \"KB\",\n },\n {\n long: \"Megabytes\",\n short: \"MB\",\n },\n {\n long: \"Gigabytes\",\n short: \"GB\",\n },\n {\n long: \"Terabytes\",\n short: \"TB\",\n },\n {\n long: \"Petabytes\",\n short: \"PB\",\n },\n {\n long: \"Exabytes\",\n short: \"EB\",\n },\n {\n long: \"Zettabytes\",\n short: \"ZB\",\n },\n {\n long: \"Yottabytes\",\n short: \"YB\",\n },\n] as const;\n\ntype ByteSize = (typeof BYTE_SIZES)[number][\"short\"];\ntype LongByteSize = (typeof BYTE_SIZES)[number][\"long\"];\n\ntype Unit = ByteSize | LongByteSize;\n\n/**\n * Parse a localized number to a float.\n * @param stringNumber - the localized number\n * @param locale - [optional] the locale that the number is represented in. Omit this parameter to use the current locale.\n */\nconst parseLocalizedNumber = (stringNumber: string, locale: string): number => {\n const thousandSeparator = new Intl.NumberFormat(locale).format(11_111).replaceAll(/\\p{Number}/gu, \"\");\n const decimalSeparator = new Intl.NumberFormat(locale).format(1.1).replaceAll(/\\p{Number}/gu, \"\");\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n return Number.parseFloat(stringNumber.replaceAll(new RegExp(`\\\\${thousandSeparator}`, \"g\"), \"\").replace(new RegExp(`\\\\${decimalSeparator}`), \".\"));\n};\n\nconst fromBase = (base: 2 | 10) => {\n if (base === 2) {\n return 1024;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (base === 10) {\n return 1000;\n }\n\n throw new TypeError(`Unsupported base.`);\n};\n\n/**\n * Parse the given bytesize string and return bytes.\n *\n * @param value - The string to parse\n * @param options - Options for the conversion from string to bytes\n * @throws Error if `value` is not a non-empty string or a number\n */\nexport const parseBytes = (value: string, options?: ParseByteOptions): number => {\n const config = {\n base: 2,\n locale: \"en-US\",\n ...options,\n } as Required<ParseByteOptions>;\n\n if (typeof value !== \"string\" || value.length === 0) {\n throw new TypeError(\"Value is not a string or is empty.\");\n }\n\n if (value.length > 100) {\n throw new TypeError(\"Value exceeds the maximum length of 100 characters.\");\n }\n\n const match =\n // eslint-disable-next-line regexp/no-super-linear-backtracking,regexp/no-unused-capturing-group,regexp/no-misleading-capturing-group,security/detect-unsafe-regex\n /^(?<value>-?(?:\\d+(([.,])\\d+)*)?[.,]?\\d+) *(?<type>bytes?|b|kb|kib|mb|mib|gb|gib|tb|tib|pb|pib|eb|eib|zb|zib|yb|yib|(kilo|kibi|mega|mebi|giga|gibi|tera|tebi|peta|pebi|exa|exbi|zetta|zebi|yotta|yobi)?bytes)?$/i.exec(\n value,\n );\n // Named capture groups need to be manually typed today.\n // https://github.com/microsoft/TypeScript/issues/32098\n const groups = match?.groups as { type?: string; value: string } | undefined;\n\n if (!groups) {\n return Number.NaN;\n }\n\n const localizedNumber = parseLocalizedNumber(groups.value, config.locale);\n const type = (groups.type ?? \"Bytes\")\n .toUpperCase()\n .replace(/^KIBI/, \"KILO\")\n .replace(/^MIBI/, \"MEGA\")\n .replace(/^GIBI/, \"GIGA\")\n .replace(/^TEBI/, \"TERA\")\n .replace(/^PEBI/, \"PETA\")\n .replace(/^EXBI/, \"EXA\")\n .replace(/^ZEBI/, \"ZETTA\")\n .replace(/^YIBI/, \"YOTTA\")\n .replace(/^(.)IB$/, \"$1B\") as Uppercase<Unit> | \"B\";\n const level = BYTE_SIZES.findIndex((unit) => (unit.short[0] as string).toUpperCase() === type[0]);\n const base = fromBase(config.base);\n\n return localizedNumber * base ** level;\n};\n\n/**\n * Formats the given bytes into a human-readable string.\n * Per default, it will use the closest unit to the given value.\n *\n * @param bytes - The bytes to format\n * @param options - Options for the conversion from bytes to string\n */\nexport const formatBytes = (bytes: number, options?: FormateByteOptions<ByteSize>): string => {\n if (typeof bytes !== \"number\" || !Number.isFinite(bytes)) {\n throw new TypeError(\"Bytesize is not a number.\");\n }\n\n const {\n base: givenBase,\n decimals,\n locale,\n long,\n unit: requestedUnit,\n ...l10nOptions\n } = {\n base: 2,\n decimals: 0,\n locale: \"en-US\",\n long: false,\n ...options,\n } as FormateByteOptions<ByteSize>;\n const base = fromBase(givenBase as 2 | 10);\n\n const absoluteBytes = Math.abs(bytes);\n const space = options?.space ?? true ? \" \" : \"\";\n\n const requestedUnitIndex = BYTE_SIZES.findIndex((unit) => unit.short === requestedUnit);\n\n if (bytes === 0) {\n const level = Math.min(0, Math.max(requestedUnitIndex, BYTE_SIZES.length - 1));\n\n // eslint-disable-next-line security/detect-object-injection,prefer-template\n return \"0\" + space + (BYTE_SIZES[level] as { long: string; short: string })[long ? \"long\" : \"short\"];\n }\n\n const level = requestedUnitIndex >= 0 ? requestedUnitIndex : Math.min(Math.floor(Math.log(absoluteBytes) / Math.log(base)), BYTE_SIZES.length - 1);\n // eslint-disable-next-line security/detect-object-injection\n const unit = (BYTE_SIZES[level] as { long: string; short: string })[long ? \"long\" : \"short\"];\n\n const value = bytes / base ** level;\n const fractionDigits = (decimals as number) < 0 ? undefined : decimals;\n const formattedValue = new Intl.NumberFormat(locale, {\n maximumFractionDigits: fractionDigits,\n minimumFractionDigits: fractionDigits,\n ...l10nOptions,\n }).format(value);\n\n return formattedValue + space + unit;\n};\n","import type { DurationLanguage } from \"../../types\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst validateDurationLanguage = (language: DurationLanguage): void => {\n const requiredProperties = [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\", \"ms\", \"future\", \"past\"];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of requiredProperties) {\n if (!Object.prototype.hasOwnProperty.call(language, property)) {\n throw new TypeError(`Missing required property: ${property}`);\n }\n }\n\n if (typeof language.future !== \"string\" || typeof language.past !== \"string\") {\n throw new TypeError(\"Properties future and past must be of type string\");\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\", \"ms\"]) {\n if (typeof language[property as keyof typeof language] !== \"string\" && typeof language[property as keyof typeof language] !== \"function\") {\n throw new TypeError(`Property ${property} must be of type string or function`);\n }\n }\n\n if (language.decimal && typeof language.decimal !== \"string\") {\n throw new TypeError(\"Property decimal must be of type string\");\n }\n\n if (language.delimiter && typeof language.delimiter !== \"string\") {\n throw new TypeError(\"Property delimiter must be of type string\");\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (language._digitReplacements && !Array.isArray(language._digitReplacements)) {\n throw new TypeError(\"Property _digitReplacements must be an array\");\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (language._numberFirst && typeof language._numberFirst !== \"boolean\") {\n throw new TypeError(\"Property _numberFirst must be of type boolean\");\n }\n};\n\nexport default validateDurationLanguage;\n","import { durationLanguage } from \"./language/en\";\nimport validateDurationLanguage from \"./language/util/validate-duration-language\";\nimport type {\n DurationDigitReplacements,\n DurationLanguage,\n DurationOptions,\n DurationPiece,\n DurationUnitMeasures,\n DurationUnitName\n} from \"./types\";\n\ninterface InternalOptions {\n conjunction: string;\n decimal?: string;\n delimiter?: string;\n digitReplacements?: DurationDigitReplacements;\n fallbacks?: string[];\n language: DurationLanguage;\n largest?: number;\n maxDecimalPoints?: number;\n round: boolean;\n serialComma: boolean;\n spacer: string;\n timeAdverb: boolean;\n unitMeasures: DurationUnitMeasures;\n units: DurationUnitName[];\n}\n\nconst toFixed = (number_: number, fixed: number): number => {\n // eslint-disable-next-line no-param-reassign\n fixed = fixed || -1;\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n const matches = new RegExp(`^-?\\\\d+(?:.\\\\d{0,${fixed}})?`).exec(number_.toString());\n\n if (matches === null) {\n return number_; // can be undefined when num is Number.POSITIVE_INFINITY\n }\n\n return Number.parseFloat(matches[0]);\n};\n\nconst renderPiece = ({ unitCount, unitName }: DurationPiece, language: DurationLanguage, options: InternalOptions): string => {\n const { maxDecimalPoints, spacer } = options;\n\n let decimal = \".\";\n\n if (options.decimal !== undefined) {\n decimal = options.decimal;\n } else if (language.decimal !== undefined) {\n decimal = language.decimal;\n }\n\n let digitReplacements: DurationDigitReplacements | undefined;\n\n if (\"digitReplacements\" in options) {\n digitReplacements = options.digitReplacements;\n } else if (\"_digitReplacements\" in language) {\n // eslint-disable-next-line no-underscore-dangle\n digitReplacements = language._digitReplacements;\n }\n\n let formattedCount: string;\n\n let normalizedUnitCount = unitCount;\n\n if (maxDecimalPoints !== undefined) {\n // normalizedUnitCount = Math.floor(unitCount * 10 ** maxDecimalPoints) / 10 ** maxDecimalPoints;\n normalizedUnitCount = toFixed(unitCount, maxDecimalPoints);\n }\n\n const countString = normalizedUnitCount.toString();\n\n if (digitReplacements) {\n formattedCount = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const char of countString) {\n // @ts-expect-error because `char` should always be 0-9 at this point.\n // eslint-disable-next-line security/detect-object-injection\n formattedCount += char === \".\" ? decimal : digitReplacements[char];\n }\n } else {\n formattedCount = countString.replace(\".\", decimal);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const languageWord = language[unitName];\n let word = languageWord as string;\n\n if (typeof languageWord === \"function\") {\n word = languageWord(unitCount) as string;\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (language._numberFirst) {\n return (word as string) + spacer + formattedCount;\n }\n\n return formattedCount + spacer + (word as string);\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst getPieces = (ms: number, options: InternalOptions): DurationPiece[] => {\n const { units } = options;\n\n if (units.length === 0) {\n return [];\n }\n\n const { unitMeasures } = options;\n const largest = options.largest ?? Number.POSITIVE_INFINITY;\n\n // Get the counts for each unit. Doesn't round or truncate anything.\n // For example, might create an object like `{ y: 7, m: 6, w: 0, d: 5, h: 23.99 }`.\n const unitCounts: Partial<Record<DurationUnitName, number>> = {};\n\n let unitName: DurationUnitName;\n let index: number;\n let unitCount: number;\n let msRemaining: number = ms;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (index = 0; index < units.length; index++) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n\n // eslint-disable-next-line security/detect-object-injection\n const unitMs = unitMeasures[unitName];\n const isLast = index === units.length - 1;\n\n unitCount = isLast ? msRemaining / unitMs : Math.floor(msRemaining / unitMs);\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] = unitCount;\n\n msRemaining -= unitCount * unitMs;\n }\n\n if (options.round) {\n // Update counts based on the `largest` option.\n // For example, if `largest === 2` and `unitCount` is `{ y: 7, m: 6, w: 0, d: 5, h: 23.99 }`,\n // updates to something like `{ y: 7, m: 6.2 }`.\n let unitsRemainingBeforeRound = largest;\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (index = 0; index < units.length; index++) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n unitCount = unitCounts[unitName] as number;\n\n if (unitCount === 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // eslint-disable-next-line no-plusplus\n unitsRemainingBeforeRound--;\n\n // \"Take\" the rest of the units into this one.\n if (unitsRemainingBeforeRound === 0) {\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-loops/no-loops,no-underscore-dangle,no-plusplus\n for (let index_ = index + 1; index_ < units.length; index_++) {\n // eslint-disable-next-line no-underscore-dangle,security/detect-object-injection\n const smallerUnitName = units[index_] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n const smallerUnitCount = unitCounts[smallerUnitName] as number;\n\n // @ts-expect-error unitCounts[unitName] is defined\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] += (smallerUnitCount * unitMeasures[smallerUnitName]) / unitMeasures[unitName];\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[smallerUnitName] = 0;\n }\n\n break;\n }\n }\n\n // Round the last piece (which should be the only non-integer).\n //\n // This can be a little tricky if the last piece \"bubbles up\" to a larger\n // unit. For example, \"3 days, 23.99 hours\" should be rounded to \"4 days\".\n // It can also require multiple passes. For example, \"6 days, 23.99 hours\"\n // should become \"1 week\".\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (index = units.length - 1; index >= 0; index--) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n unitCount = unitCounts[unitName] as number;\n\n if (unitCount === 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const rounded = Math.round(unitCount);\n\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] = rounded;\n\n if (index === 0) {\n break;\n }\n\n const previousUnitName: DurationUnitName = units[index - 1] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n const previousUnitMs = unitMeasures[previousUnitName];\n // eslint-disable-next-line security/detect-object-injection\n const amountOfPreviousUnit = Math.floor((rounded * unitMeasures[unitName]) / previousUnitMs);\n\n if (amountOfPreviousUnit) {\n // @ts-expect-error unitCounts[previousUnitName] is defined\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[previousUnitName] += amountOfPreviousUnit;\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] = 0;\n } else {\n break;\n }\n }\n }\n\n const result: DurationPiece[] = [];\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (index = 0; index < units.length && result.length < largest; index++) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n unitCount = unitCounts[unitName] as number;\n\n // If the result is not rounded, and `largest` option has been set, aggregate the rest and apply the\n // `maxDecimalPoints` to truncate the decimals\n if (unitCount && !options.round && result.length === largest - 1) {\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle\n let index_;\n let remainder = 0;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (index_ = index + 1, units.length; index_ < units.length; index_++) {\n // eslint-disable-next-line no-underscore-dangle,security/detect-object-injection\n const remainderUnitName = units[index_] as DurationUnitName;\n\n // eslint-disable-next-line security/detect-object-injection\n remainder += (unitCounts[remainderUnitName] as number) * (options.unitMeasures[remainderUnitName] / options.unitMeasures[unitName]);\n }\n\n unitCount += remainder;\n\n if (options.maxDecimalPoints !== undefined) {\n unitCount = toFixed(unitCount, options.maxDecimalPoints);\n }\n }\n\n if (unitCount) {\n result.push({ unitCount, unitName });\n }\n }\n\n return result;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst formatPieces = (pieces: DurationPiece[], options: InternalOptions, ms: number): string => {\n const { language, units } = options;\n\n if (pieces.length === 0) {\n const smallestUnitName = units.at(-1) as DurationUnitName;\n\n return renderPiece({ unitCount: 0, unitName: smallestUnitName }, language, options);\n }\n\n const { conjunction, serialComma } = options;\n\n let delimiter = \", \";\n\n if (options.delimiter !== undefined) {\n delimiter = options.delimiter;\n } else if (language.delimiter !== undefined) {\n delimiter = language.delimiter;\n }\n\n // timeAdverb part\n let adverb = \"\";\n\n if (options.timeAdverb && ms !== 0) {\n adverb = language.future ?? \"\";\n\n if (ms < 0) {\n adverb = language.past ?? \"\";\n }\n }\n\n const renderedPieces: string[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,@typescript-eslint/naming-convention,no-restricted-syntax,no-underscore-dangle\n for (const piece_ of pieces) {\n const piece = piece_ as DurationPiece;\n\n renderedPieces.push(renderPiece(piece, language, options));\n }\n\n let result: string;\n\n if (!conjunction || pieces.length === 1) {\n result = renderedPieces.join(delimiter);\n } else if (pieces.length === 2) {\n result = renderedPieces.join(conjunction);\n } else {\n result = renderedPieces.slice(0, -1).join(delimiter) + (serialComma ? \",\" : \"\") + conjunction + (renderedPieces.at(-1));\n }\n\n if (adverb) {\n result = adverb.replace(\"%s\", result);\n }\n\n return result;\n};\n\nconst duration = (milliseconds: number, options?: DurationOptions): string => {\n if (Number.isNaN(milliseconds)) {\n throw new TypeError(\"Expected a valid number\");\n }\n\n if (typeof milliseconds !== \"number\") {\n throw new TypeError(\"Expected a number\");\n }\n\n const config = {\n conjunction: \"\",\n language: durationLanguage,\n round: false,\n serialComma: true,\n spacer: \" \",\n timeAdverb: false,\n unitMeasures: {\n d: 86_400_000,\n h: 3_600_000,\n m: 60_000,\n mo: 2_629_746_000, // 365.2425 / 12 = 30.436875 days\n ms: 1,\n s: 1000,\n w: 604_800_000,\n y: 31_556_952_000, // 365 + 1/4 - 1/100 + 1/400 (actual leap day rules) = 365.2425 days\n },\n units: [\"w\", \"d\", \"h\", \"m\", \"s\"],\n ...options,\n } as InternalOptions;\n\n validateDurationLanguage(config.language);\n\n // Has the nice side-effect of converting things to numbers. For example,\n // converts `\"123\"` and `Number(123)` to `123`.\n const absTime = Math.abs(milliseconds as number);\n\n const pieces = getPieces(absTime, config);\n\n return formatPieces(pieces, config, milliseconds as number);\n};\n\nexport default duration;\n"]}
@@ -0,0 +1,38 @@
1
+ import { P as ParseByteOptions, F as FormateByteOptions, D as DurationOptions } from './types-nxmwwJwo.cjs';
2
+ export { a as DurationDigitReplacements, b as DurationLanguage, c as DurationPiece, d as DurationUnit, e as DurationUnitMeasures, f as DurationUnitName, I as IntlLocale } from './types-nxmwwJwo.cjs';
3
+
4
+ declare const BYTE_SIZES: readonly [{
5
+ readonly long: "Bytes";
6
+ readonly short: "Bytes";
7
+ }, {
8
+ readonly long: "Kilobytes";
9
+ readonly short: "KB";
10
+ }, {
11
+ readonly long: "Megabytes";
12
+ readonly short: "MB";
13
+ }, {
14
+ readonly long: "Gigabytes";
15
+ readonly short: "GB";
16
+ }, {
17
+ readonly long: "Terabytes";
18
+ readonly short: "TB";
19
+ }, {
20
+ readonly long: "Petabytes";
21
+ readonly short: "PB";
22
+ }, {
23
+ readonly long: "Exabytes";
24
+ readonly short: "EB";
25
+ }, {
26
+ readonly long: "Zettabytes";
27
+ readonly short: "ZB";
28
+ }, {
29
+ readonly long: "Yottabytes";
30
+ readonly short: "YB";
31
+ }];
32
+ type ByteSize = (typeof BYTE_SIZES)[number]["short"];
33
+ declare const parseBytes: (value: string, options?: ParseByteOptions) => number;
34
+ declare const formatBytes: (bytes: number, options?: FormateByteOptions<ByteSize>) => string;
35
+
36
+ declare const duration: (milliseconds: number, options?: DurationOptions) => string;
37
+
38
+ export { DurationOptions, FormateByteOptions, ParseByteOptions, duration, formatBytes, parseBytes };
@@ -0,0 +1,38 @@
1
+ import { P as ParseByteOptions, F as FormateByteOptions, D as DurationOptions } from './types-nxmwwJwo.js';
2
+ export { a as DurationDigitReplacements, b as DurationLanguage, c as DurationPiece, d as DurationUnit, e as DurationUnitMeasures, f as DurationUnitName, I as IntlLocale } from './types-nxmwwJwo.js';
3
+
4
+ declare const BYTE_SIZES: readonly [{
5
+ readonly long: "Bytes";
6
+ readonly short: "Bytes";
7
+ }, {
8
+ readonly long: "Kilobytes";
9
+ readonly short: "KB";
10
+ }, {
11
+ readonly long: "Megabytes";
12
+ readonly short: "MB";
13
+ }, {
14
+ readonly long: "Gigabytes";
15
+ readonly short: "GB";
16
+ }, {
17
+ readonly long: "Terabytes";
18
+ readonly short: "TB";
19
+ }, {
20
+ readonly long: "Petabytes";
21
+ readonly short: "PB";
22
+ }, {
23
+ readonly long: "Exabytes";
24
+ readonly short: "EB";
25
+ }, {
26
+ readonly long: "Zettabytes";
27
+ readonly short: "ZB";
28
+ }, {
29
+ readonly long: "Yottabytes";
30
+ readonly short: "YB";
31
+ }];
32
+ type ByteSize = (typeof BYTE_SIZES)[number]["short"];
33
+ declare const parseBytes: (value: string, options?: ParseByteOptions) => number;
34
+ declare const formatBytes: (bytes: number, options?: FormateByteOptions<ByteSize>) => string;
35
+
36
+ declare const duration: (milliseconds: number, options?: DurationOptions) => string;
37
+
38
+ export { DurationOptions, FormateByteOptions, ParseByteOptions, duration, formatBytes, parseBytes };
package/dist/index.js ADDED
@@ -0,0 +1,8 @@
1
+ import { a } from './chunk-BXFSTBLT.js';
2
+ import './chunk-RO4XQABG.js';
3
+
4
+ var g=[{long:"Bytes",short:"Bytes"},{long:"Kilobytes",short:"KB"},{long:"Megabytes",short:"MB"},{long:"Gigabytes",short:"GB"},{long:"Terabytes",short:"TB"},{long:"Petabytes",short:"PB"},{long:"Exabytes",short:"EB"},{long:"Zettabytes",short:"ZB"},{long:"Yottabytes",short:"YB"}],I=(e,r)=>{let t=new Intl.NumberFormat(r).format(11111).replaceAll(new RegExp("\\p{Number}","gu"),""),a=new Intl.NumberFormat(r).format(1.1).replaceAll(new RegExp("\\p{Number}","gu"),"");return Number.parseFloat(e.replaceAll(new RegExp(`\\${t}`,"g"),"").replace(new RegExp(`\\${a}`),"."))},N=e=>{if(e===2)return 1024;if(e===10)return 1e3;throw new TypeError("Unsupported base.")},P=(e,r)=>{let t={base:2,locale:"en-US",...r};if(typeof e!="string"||e.length===0)throw new TypeError("Value is not a string or is empty.");if(e.length>100)throw new TypeError("Value exceeds the maximum length of 100 characters.");let c=/^(?<value>-?(?:\d+(([.,])\d+)*)?[.,]?\d+) *(?<type>bytes?|b|kb|kib|mb|mib|gb|gib|tb|tib|pb|pib|eb|eib|zb|zib|yb|yib|(kilo|kibi|mega|mebi|giga|gibi|tera|tebi|peta|pebi|exa|exbi|zetta|zebi|yotta|yobi)?bytes)?$/i.exec(e)?.groups;if(!c)return Number.NaN;let s=I(c.value,t.locale),o=(c.type??"Bytes").toUpperCase().replace(/^KIBI/,"KILO").replace(/^MIBI/,"MEGA").replace(/^GIBI/,"GIGA").replace(/^TEBI/,"TERA").replace(/^PEBI/,"PETA").replace(/^EXBI/,"EXA").replace(/^ZEBI/,"ZETTA").replace(/^YIBI/,"YOTTA").replace(/^(.)IB$/,"$1B"),n=g.findIndex(p=>p.short[0].toUpperCase()===o[0]),i=N(t.base);return s*i**n},x=(e,r)=>{if(typeof e!="number"||!Number.isFinite(e))throw new TypeError("Bytesize is not a number.");let{base:t,decimals:a,locale:c,long:s,unit:o,...n}={base:2,decimals:0,locale:"en-US",long:!1,...r},i=N(t),p=Math.abs(e),l=r?.space??!0?" ":"",u=g.findIndex(y=>y.short===o);if(e===0){let y=Math.min(0,Math.max(u,g.length-1));return "0"+l+g[y][s?"long":"short"]}let m=u>=0?u:Math.min(Math.floor(Math.log(p)/Math.log(i)),g.length-1),f=g[m][s?"long":"short"],d=e/i**m,b=a<0?void 0:a;return new Intl.NumberFormat(c,{maximumFractionDigits:b,minimumFractionDigits:b,...n}).format(d)+l+f};var _=e=>{let r=["y","mo","w","d","h","m","s","ms","future","past"];for(let t of r)if(!Object.prototype.hasOwnProperty.call(e,t))throw new TypeError(`Missing required property: ${t}`);if(typeof e.future!="string"||typeof e.past!="string")throw new TypeError("Properties future and past must be of type string");for(let t of ["y","mo","w","d","h","m","s","ms"])if(typeof e[t]!="string"&&typeof e[t]!="function")throw new TypeError(`Property ${t} must be of type string or function`);if(e.decimal&&typeof e.decimal!="string")throw new TypeError("Property decimal must be of type string");if(e.delimiter&&typeof e.delimiter!="string")throw new TypeError("Property delimiter must be of type string");if(e._digitReplacements&&!Array.isArray(e._digitReplacements))throw new TypeError("Property _digitReplacements must be an array");if(e._numberFirst&&typeof e._numberFirst!="boolean")throw new TypeError("Property _numberFirst must be of type boolean")},w=_;var U=(e,r)=>{r=r||-1;let t=new RegExp(`^-?\\d+(?:.\\d{0,${r}})?`).exec(e.toString());return t===null?e:Number.parseFloat(t[0])},E=({unitCount:e,unitName:r},t,a)=>{let{maxDecimalPoints:c,spacer:s}=a,o=".";a.decimal!==void 0?o=a.decimal:t.decimal!==void 0&&(o=t.decimal);let n;"digitReplacements"in a?n=a.digitReplacements:"_digitReplacements"in t&&(n=t._digitReplacements);let i,p=e;c!==void 0&&(p=U(e,c));let l=p.toString();if(n){i="";for(let f of l)i+=f==="."?o:n[f];}else i=l.replace(".",o);let u=t[r],m=u;return typeof u=="function"&&(m=u(e)),t._numberFirst?m+s+i:i+s+m},T=(e,r)=>{let{units:t}=r;if(t.length===0)return [];let{unitMeasures:a}=r,c=r.largest??Number.POSITIVE_INFINITY,s={},o,n,i,p=e;for(n=0;n<t.length;n++){o=t[n];let u=a[o];i=n===t.length-1?p/u:Math.floor(p/u),s[o]=i,p-=i*u;}if(r.round){let u=c;for(n=0;n<t.length;n++)if(o=t[n],i=s[o],i!==0&&(u--,u===0)){for(let m=n+1;m<t.length;m++){let f=t[m],d=s[f];s[o]+=d*a[f]/a[o],s[f]=0;}break}for(n=t.length-1;n>=0;n--){if(o=t[n],i=s[o],i===0)continue;let m=Math.round(i);if(s[o]=m,n===0)break;let f=t[n-1],d=a[f],b=Math.floor(m*a[o]/d);if(b)s[f]+=b,s[o]=0;else break}}let l=[];for(n=0;n<t.length&&l.length<c;n++){if(o=t[n],i=s[o],i&&!r.round&&l.length===c-1){let u,m=0;for(u=n+1,t.length;u<t.length;u++){let f=t[u];m+=s[f]*(r.unitMeasures[f]/r.unitMeasures[o]);}i+=m,r.maxDecimalPoints!==void 0&&(i=U(i,r.maxDecimalPoints));}i&&l.push({unitCount:i,unitName:o});}return l},M=(e,r,t)=>{let{language:a,units:c}=r;if(e.length===0){let u=c.at(-1);return E({unitCount:0,unitName:u},a,r)}let{conjunction:s,serialComma:o}=r,n=", ";r.delimiter!==void 0?n=r.delimiter:a.delimiter!==void 0&&(n=a.delimiter);let i="";r.timeAdverb&&t!==0&&(i=a.future??"",t<0&&(i=a.past??""));let p=[];for(let u of e){let m=u;p.push(E(m,a,r));}let l;return !s||e.length===1?l=p.join(n):e.length===2?l=p.join(s):l=p.slice(0,-1).join(n)+(o?",":"")+s+p.at(-1),i&&(l=i.replace("%s",l)),l},O=(e,r)=>{if(Number.isNaN(e))throw new TypeError("Expected a valid number");if(typeof e!="number")throw new TypeError("Expected a number");let t={conjunction:"",language:a,round:!1,serialComma:!0,spacer:" ",timeAdverb:!1,unitMeasures:{d:864e5,h:36e5,m:6e4,mo:2629746e3,ms:1,s:1e3,w:6048e5,y:31556952e3},units:["w","d","h","m","s"],...r};w(t.language);let a$1=Math.abs(e),c=T(a$1,t);return M(c,t,e)},R=O;
5
+
6
+ export { R as duration, x as formatBytes, P as parseBytes };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/bytes.ts","../src/language/util/validate-duration-language.ts","../src/duration.ts"],"names":["BYTE_SIZES","parseLocalizedNumber","stringNumber","locale","thousandSeparator","decimalSeparator","fromBase","base","parseBytes","value","options","config","groups","localizedNumber","type","level","unit","formatBytes","bytes","givenBase","decimals","long","requestedUnit","l10nOptions","absoluteBytes","space","requestedUnitIndex","fractionDigits","validateDurationLanguage","language","requiredProperties","property","validate_duration_language_default","toFixed","number_","fixed","matches","renderPiece","unitCount","unitName","maxDecimalPoints","spacer","decimal","digitReplacements","formattedCount","normalizedUnitCount","countString","char","languageWord","word","getPieces","ms","units","unitMeasures","largest","unitCounts","index","msRemaining","unitMs","unitsRemainingBeforeRound","index_","smallerUnitName","smallerUnitCount","rounded","previousUnitName","previousUnitMs","amountOfPreviousUnit","result","remainder","remainderUnitName","formatPieces","pieces","smallestUnitName","conjunction","serialComma","delimiter","adverb","renderedPieces","piece_","piece","duration","milliseconds","durationLanguage","absTime","duration_default"],"mappings":"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","sourcesContent":["import type { FormateByteOptions, ParseByteOptions } from \"./types\";\n\nconst BYTE_SIZES = [\n {\n long: \"Bytes\",\n short: \"Bytes\",\n },\n {\n long: \"Kilobytes\",\n short: \"KB\",\n },\n {\n long: \"Megabytes\",\n short: \"MB\",\n },\n {\n long: \"Gigabytes\",\n short: \"GB\",\n },\n {\n long: \"Terabytes\",\n short: \"TB\",\n },\n {\n long: \"Petabytes\",\n short: \"PB\",\n },\n {\n long: \"Exabytes\",\n short: \"EB\",\n },\n {\n long: \"Zettabytes\",\n short: \"ZB\",\n },\n {\n long: \"Yottabytes\",\n short: \"YB\",\n },\n] as const;\n\ntype ByteSize = (typeof BYTE_SIZES)[number][\"short\"];\ntype LongByteSize = (typeof BYTE_SIZES)[number][\"long\"];\n\ntype Unit = ByteSize | LongByteSize;\n\n/**\n * Parse a localized number to a float.\n * @param stringNumber - the localized number\n * @param locale - [optional] the locale that the number is represented in. Omit this parameter to use the current locale.\n */\nconst parseLocalizedNumber = (stringNumber: string, locale: string): number => {\n const thousandSeparator = new Intl.NumberFormat(locale).format(11_111).replaceAll(/\\p{Number}/gu, \"\");\n const decimalSeparator = new Intl.NumberFormat(locale).format(1.1).replaceAll(/\\p{Number}/gu, \"\");\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n return Number.parseFloat(stringNumber.replaceAll(new RegExp(`\\\\${thousandSeparator}`, \"g\"), \"\").replace(new RegExp(`\\\\${decimalSeparator}`), \".\"));\n};\n\nconst fromBase = (base: 2 | 10) => {\n if (base === 2) {\n return 1024;\n }\n\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (base === 10) {\n return 1000;\n }\n\n throw new TypeError(`Unsupported base.`);\n};\n\n/**\n * Parse the given bytesize string and return bytes.\n *\n * @param value - The string to parse\n * @param options - Options for the conversion from string to bytes\n * @throws Error if `value` is not a non-empty string or a number\n */\nexport const parseBytes = (value: string, options?: ParseByteOptions): number => {\n const config = {\n base: 2,\n locale: \"en-US\",\n ...options,\n } as Required<ParseByteOptions>;\n\n if (typeof value !== \"string\" || value.length === 0) {\n throw new TypeError(\"Value is not a string or is empty.\");\n }\n\n if (value.length > 100) {\n throw new TypeError(\"Value exceeds the maximum length of 100 characters.\");\n }\n\n const match =\n // eslint-disable-next-line regexp/no-super-linear-backtracking,regexp/no-unused-capturing-group,regexp/no-misleading-capturing-group,security/detect-unsafe-regex\n /^(?<value>-?(?:\\d+(([.,])\\d+)*)?[.,]?\\d+) *(?<type>bytes?|b|kb|kib|mb|mib|gb|gib|tb|tib|pb|pib|eb|eib|zb|zib|yb|yib|(kilo|kibi|mega|mebi|giga|gibi|tera|tebi|peta|pebi|exa|exbi|zetta|zebi|yotta|yobi)?bytes)?$/i.exec(\n value,\n );\n // Named capture groups need to be manually typed today.\n // https://github.com/microsoft/TypeScript/issues/32098\n const groups = match?.groups as { type?: string; value: string } | undefined;\n\n if (!groups) {\n return Number.NaN;\n }\n\n const localizedNumber = parseLocalizedNumber(groups.value, config.locale);\n const type = (groups.type ?? \"Bytes\")\n .toUpperCase()\n .replace(/^KIBI/, \"KILO\")\n .replace(/^MIBI/, \"MEGA\")\n .replace(/^GIBI/, \"GIGA\")\n .replace(/^TEBI/, \"TERA\")\n .replace(/^PEBI/, \"PETA\")\n .replace(/^EXBI/, \"EXA\")\n .replace(/^ZEBI/, \"ZETTA\")\n .replace(/^YIBI/, \"YOTTA\")\n .replace(/^(.)IB$/, \"$1B\") as Uppercase<Unit> | \"B\";\n const level = BYTE_SIZES.findIndex((unit) => (unit.short[0] as string).toUpperCase() === type[0]);\n const base = fromBase(config.base);\n\n return localizedNumber * base ** level;\n};\n\n/**\n * Formats the given bytes into a human-readable string.\n * Per default, it will use the closest unit to the given value.\n *\n * @param bytes - The bytes to format\n * @param options - Options for the conversion from bytes to string\n */\nexport const formatBytes = (bytes: number, options?: FormateByteOptions<ByteSize>): string => {\n if (typeof bytes !== \"number\" || !Number.isFinite(bytes)) {\n throw new TypeError(\"Bytesize is not a number.\");\n }\n\n const {\n base: givenBase,\n decimals,\n locale,\n long,\n unit: requestedUnit,\n ...l10nOptions\n } = {\n base: 2,\n decimals: 0,\n locale: \"en-US\",\n long: false,\n ...options,\n } as FormateByteOptions<ByteSize>;\n const base = fromBase(givenBase as 2 | 10);\n\n const absoluteBytes = Math.abs(bytes);\n const space = options?.space ?? true ? \" \" : \"\";\n\n const requestedUnitIndex = BYTE_SIZES.findIndex((unit) => unit.short === requestedUnit);\n\n if (bytes === 0) {\n const level = Math.min(0, Math.max(requestedUnitIndex, BYTE_SIZES.length - 1));\n\n // eslint-disable-next-line security/detect-object-injection,prefer-template\n return \"0\" + space + (BYTE_SIZES[level] as { long: string; short: string })[long ? \"long\" : \"short\"];\n }\n\n const level = requestedUnitIndex >= 0 ? requestedUnitIndex : Math.min(Math.floor(Math.log(absoluteBytes) / Math.log(base)), BYTE_SIZES.length - 1);\n // eslint-disable-next-line security/detect-object-injection\n const unit = (BYTE_SIZES[level] as { long: string; short: string })[long ? \"long\" : \"short\"];\n\n const value = bytes / base ** level;\n const fractionDigits = (decimals as number) < 0 ? undefined : decimals;\n const formattedValue = new Intl.NumberFormat(locale, {\n maximumFractionDigits: fractionDigits,\n minimumFractionDigits: fractionDigits,\n ...l10nOptions,\n }).format(value);\n\n return formattedValue + space + unit;\n};\n","import type { DurationLanguage } from \"../../types\";\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst validateDurationLanguage = (language: DurationLanguage): void => {\n const requiredProperties = [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\", \"ms\", \"future\", \"past\"];\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of requiredProperties) {\n if (!Object.prototype.hasOwnProperty.call(language, property)) {\n throw new TypeError(`Missing required property: ${property}`);\n }\n }\n\n if (typeof language.future !== \"string\" || typeof language.past !== \"string\") {\n throw new TypeError(\"Properties future and past must be of type string\");\n }\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const property of [\"y\", \"mo\", \"w\", \"d\", \"h\", \"m\", \"s\", \"ms\"]) {\n if (typeof language[property as keyof typeof language] !== \"string\" && typeof language[property as keyof typeof language] !== \"function\") {\n throw new TypeError(`Property ${property} must be of type string or function`);\n }\n }\n\n if (language.decimal && typeof language.decimal !== \"string\") {\n throw new TypeError(\"Property decimal must be of type string\");\n }\n\n if (language.delimiter && typeof language.delimiter !== \"string\") {\n throw new TypeError(\"Property delimiter must be of type string\");\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (language._digitReplacements && !Array.isArray(language._digitReplacements)) {\n throw new TypeError(\"Property _digitReplacements must be an array\");\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (language._numberFirst && typeof language._numberFirst !== \"boolean\") {\n throw new TypeError(\"Property _numberFirst must be of type boolean\");\n }\n};\n\nexport default validateDurationLanguage;\n","import { durationLanguage } from \"./language/en\";\nimport validateDurationLanguage from \"./language/util/validate-duration-language\";\nimport type {\n DurationDigitReplacements,\n DurationLanguage,\n DurationOptions,\n DurationPiece,\n DurationUnitMeasures,\n DurationUnitName\n} from \"./types\";\n\ninterface InternalOptions {\n conjunction: string;\n decimal?: string;\n delimiter?: string;\n digitReplacements?: DurationDigitReplacements;\n fallbacks?: string[];\n language: DurationLanguage;\n largest?: number;\n maxDecimalPoints?: number;\n round: boolean;\n serialComma: boolean;\n spacer: string;\n timeAdverb: boolean;\n unitMeasures: DurationUnitMeasures;\n units: DurationUnitName[];\n}\n\nconst toFixed = (number_: number, fixed: number): number => {\n // eslint-disable-next-line no-param-reassign\n fixed = fixed || -1;\n\n // eslint-disable-next-line @rushstack/security/no-unsafe-regexp,security/detect-non-literal-regexp\n const matches = new RegExp(`^-?\\\\d+(?:.\\\\d{0,${fixed}})?`).exec(number_.toString());\n\n if (matches === null) {\n return number_; // can be undefined when num is Number.POSITIVE_INFINITY\n }\n\n return Number.parseFloat(matches[0]);\n};\n\nconst renderPiece = ({ unitCount, unitName }: DurationPiece, language: DurationLanguage, options: InternalOptions): string => {\n const { maxDecimalPoints, spacer } = options;\n\n let decimal = \".\";\n\n if (options.decimal !== undefined) {\n decimal = options.decimal;\n } else if (language.decimal !== undefined) {\n decimal = language.decimal;\n }\n\n let digitReplacements: DurationDigitReplacements | undefined;\n\n if (\"digitReplacements\" in options) {\n digitReplacements = options.digitReplacements;\n } else if (\"_digitReplacements\" in language) {\n // eslint-disable-next-line no-underscore-dangle\n digitReplacements = language._digitReplacements;\n }\n\n let formattedCount: string;\n\n let normalizedUnitCount = unitCount;\n\n if (maxDecimalPoints !== undefined) {\n // normalizedUnitCount = Math.floor(unitCount * 10 ** maxDecimalPoints) / 10 ** maxDecimalPoints;\n normalizedUnitCount = toFixed(unitCount, maxDecimalPoints);\n }\n\n const countString = normalizedUnitCount.toString();\n\n if (digitReplacements) {\n formattedCount = \"\";\n\n // eslint-disable-next-line no-loops/no-loops,no-restricted-syntax\n for (const char of countString) {\n // @ts-expect-error because `char` should always be 0-9 at this point.\n // eslint-disable-next-line security/detect-object-injection\n formattedCount += char === \".\" ? decimal : digitReplacements[char];\n }\n } else {\n formattedCount = countString.replace(\".\", decimal);\n }\n\n // eslint-disable-next-line security/detect-object-injection\n const languageWord = language[unitName];\n let word = languageWord as string;\n\n if (typeof languageWord === \"function\") {\n word = languageWord(unitCount) as string;\n }\n\n // eslint-disable-next-line no-underscore-dangle\n if (language._numberFirst) {\n return (word as string) + spacer + formattedCount;\n }\n\n return formattedCount + spacer + (word as string);\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst getPieces = (ms: number, options: InternalOptions): DurationPiece[] => {\n const { units } = options;\n\n if (units.length === 0) {\n return [];\n }\n\n const { unitMeasures } = options;\n const largest = options.largest ?? Number.POSITIVE_INFINITY;\n\n // Get the counts for each unit. Doesn't round or truncate anything.\n // For example, might create an object like `{ y: 7, m: 6, w: 0, d: 5, h: 23.99 }`.\n const unitCounts: Partial<Record<DurationUnitName, number>> = {};\n\n let unitName: DurationUnitName;\n let index: number;\n let unitCount: number;\n let msRemaining: number = ms;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (index = 0; index < units.length; index++) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n\n // eslint-disable-next-line security/detect-object-injection\n const unitMs = unitMeasures[unitName];\n const isLast = index === units.length - 1;\n\n unitCount = isLast ? msRemaining / unitMs : Math.floor(msRemaining / unitMs);\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] = unitCount;\n\n msRemaining -= unitCount * unitMs;\n }\n\n if (options.round) {\n // Update counts based on the `largest` option.\n // For example, if `largest === 2` and `unitCount` is `{ y: 7, m: 6, w: 0, d: 5, h: 23.99 }`,\n // updates to something like `{ y: 7, m: 6.2 }`.\n let unitsRemainingBeforeRound = largest;\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (index = 0; index < units.length; index++) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n unitCount = unitCounts[unitName] as number;\n\n if (unitCount === 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n // eslint-disable-next-line no-plusplus\n unitsRemainingBeforeRound--;\n\n // \"Take\" the rest of the units into this one.\n if (unitsRemainingBeforeRound === 0) {\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-loops/no-loops,no-underscore-dangle,no-plusplus\n for (let index_ = index + 1; index_ < units.length; index_++) {\n // eslint-disable-next-line no-underscore-dangle,security/detect-object-injection\n const smallerUnitName = units[index_] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n const smallerUnitCount = unitCounts[smallerUnitName] as number;\n\n // @ts-expect-error unitCounts[unitName] is defined\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] += (smallerUnitCount * unitMeasures[smallerUnitName]) / unitMeasures[unitName];\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[smallerUnitName] = 0;\n }\n\n break;\n }\n }\n\n // Round the last piece (which should be the only non-integer).\n //\n // This can be a little tricky if the last piece \"bubbles up\" to a larger\n // unit. For example, \"3 days, 23.99 hours\" should be rounded to \"4 days\".\n // It can also require multiple passes. For example, \"6 days, 23.99 hours\"\n // should become \"1 week\".\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (index = units.length - 1; index >= 0; index--) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n unitCount = unitCounts[unitName] as number;\n\n if (unitCount === 0) {\n // eslint-disable-next-line no-continue\n continue;\n }\n\n const rounded = Math.round(unitCount);\n\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] = rounded;\n\n if (index === 0) {\n break;\n }\n\n const previousUnitName: DurationUnitName = units[index - 1] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n const previousUnitMs = unitMeasures[previousUnitName];\n // eslint-disable-next-line security/detect-object-injection\n const amountOfPreviousUnit = Math.floor((rounded * unitMeasures[unitName]) / previousUnitMs);\n\n if (amountOfPreviousUnit) {\n // @ts-expect-error unitCounts[previousUnitName] is defined\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[previousUnitName] += amountOfPreviousUnit;\n // eslint-disable-next-line security/detect-object-injection\n unitCounts[unitName] = 0;\n } else {\n break;\n }\n }\n }\n\n const result: DurationPiece[] = [];\n\n // eslint-disable-next-line no-plusplus,no-loops/no-loops\n for (index = 0; index < units.length && result.length < largest; index++) {\n // eslint-disable-next-line security/detect-object-injection\n unitName = units[index] as DurationUnitName;\n // eslint-disable-next-line security/detect-object-injection\n unitCount = unitCounts[unitName] as number;\n\n // If the result is not rounded, and `largest` option has been set, aggregate the rest and apply the\n // `maxDecimalPoints` to truncate the decimals\n if (unitCount && !options.round && result.length === largest - 1) {\n // eslint-disable-next-line @typescript-eslint/naming-convention,no-underscore-dangle\n let index_;\n let remainder = 0;\n\n // eslint-disable-next-line no-loops/no-loops,no-plusplus\n for (index_ = index + 1, units.length; index_ < units.length; index_++) {\n // eslint-disable-next-line no-underscore-dangle,security/detect-object-injection\n const remainderUnitName = units[index_] as DurationUnitName;\n\n // eslint-disable-next-line security/detect-object-injection\n remainder += (unitCounts[remainderUnitName] as number) * (options.unitMeasures[remainderUnitName] / options.unitMeasures[unitName]);\n }\n\n unitCount += remainder;\n\n if (options.maxDecimalPoints !== undefined) {\n unitCount = toFixed(unitCount, options.maxDecimalPoints);\n }\n }\n\n if (unitCount) {\n result.push({ unitCount, unitName });\n }\n }\n\n return result;\n};\n\n// eslint-disable-next-line sonarjs/cognitive-complexity\nconst formatPieces = (pieces: DurationPiece[], options: InternalOptions, ms: number): string => {\n const { language, units } = options;\n\n if (pieces.length === 0) {\n const smallestUnitName = units.at(-1) as DurationUnitName;\n\n return renderPiece({ unitCount: 0, unitName: smallestUnitName }, language, options);\n }\n\n const { conjunction, serialComma } = options;\n\n let delimiter = \", \";\n\n if (options.delimiter !== undefined) {\n delimiter = options.delimiter;\n } else if (language.delimiter !== undefined) {\n delimiter = language.delimiter;\n }\n\n // timeAdverb part\n let adverb = \"\";\n\n if (options.timeAdverb && ms !== 0) {\n adverb = language.future ?? \"\";\n\n if (ms < 0) {\n adverb = language.past ?? \"\";\n }\n }\n\n const renderedPieces: string[] = [];\n\n // eslint-disable-next-line no-loops/no-loops,@typescript-eslint/naming-convention,no-restricted-syntax,no-underscore-dangle\n for (const piece_ of pieces) {\n const piece = piece_ as DurationPiece;\n\n renderedPieces.push(renderPiece(piece, language, options));\n }\n\n let result: string;\n\n if (!conjunction || pieces.length === 1) {\n result = renderedPieces.join(delimiter);\n } else if (pieces.length === 2) {\n result = renderedPieces.join(conjunction);\n } else {\n result = renderedPieces.slice(0, -1).join(delimiter) + (serialComma ? \",\" : \"\") + conjunction + (renderedPieces.at(-1));\n }\n\n if (adverb) {\n result = adverb.replace(\"%s\", result);\n }\n\n return result;\n};\n\nconst duration = (milliseconds: number, options?: DurationOptions): string => {\n if (Number.isNaN(milliseconds)) {\n throw new TypeError(\"Expected a valid number\");\n }\n\n if (typeof milliseconds !== \"number\") {\n throw new TypeError(\"Expected a number\");\n }\n\n const config = {\n conjunction: \"\",\n language: durationLanguage,\n round: false,\n serialComma: true,\n spacer: \" \",\n timeAdverb: false,\n unitMeasures: {\n d: 86_400_000,\n h: 3_600_000,\n m: 60_000,\n mo: 2_629_746_000, // 365.2425 / 12 = 30.436875 days\n ms: 1,\n s: 1000,\n w: 604_800_000,\n y: 31_556_952_000, // 365 + 1/4 - 1/100 + 1/400 (actual leap day rules) = 365.2425 days\n },\n units: [\"w\", \"d\", \"h\", \"m\", \"s\"],\n ...options,\n } as InternalOptions;\n\n validateDurationLanguage(config.language);\n\n // Has the nice side-effect of converting things to numbers. For example,\n // converts `\"123\"` and `Number(123)` to `123`.\n const absTime = Math.abs(milliseconds as number);\n\n const pieces = getPieces(absTime, config);\n\n return formatPieces(pieces, config, milliseconds as number);\n};\n\nexport default duration;\n"]}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var chunkVGHD36UF_cjs = require('../chunk-VGHD36UF.cjs');
4
+
5
+ var r=chunkVGHD36UF_cjs.a("jaar",e=>`maand${e===1?"":"e"}`,e=>e===1?"week":"weke",e=>e===1?"dag":"dae",e=>e===1?"uur":"ure",e=>e===1?"minuut":"minute",e=>`sekonde${e===1?"":"s"}`,e=>`millisekonde${e===1?"":"s"}`,"oor %s","%s gelede",",");
6
+
7
+ exports.durationLanguage = r;
8
+ //# sourceMappingURL=out.js.map
9
+ //# sourceMappingURL=af.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/language/af.ts"],"names":["durationLanguage","create_duration_language_default","counter"],"mappings":"qCAEO,IAAMA,EAAmBC,EAC5B,OACCC,GAAY,QAAQA,IAAY,EAAI,GAAK,GAAG,GAC5CA,GAAaA,IAAY,EAAI,OAAS,OACtCA,GAAaA,IAAY,EAAI,MAAQ,MACrCA,GAAaA,IAAY,EAAI,MAAQ,MACrCA,GAAaA,IAAY,EAAI,SAAW,SACxCA,GAAY,UAAUA,IAAY,EAAI,GAAK,GAAG,GAC9CA,GAAY,eAAeA,IAAY,EAAI,GAAK,GAAG,GACpD,SACA,YACA,GACJ","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\n\nexport const durationLanguage = createDurationLanguage(\n \"jaar\",\n (counter) => `maand${counter === 1 ? \"\" : \"e\"}`,\n (counter) => (counter === 1 ? \"week\" : \"weke\"),\n (counter) => (counter === 1 ? \"dag\" : \"dae\"),\n (counter) => (counter === 1 ? \"uur\" : \"ure\"),\n (counter) => (counter === 1 ? \"minuut\" : \"minute\"),\n (counter) => `sekonde${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `millisekonde${counter === 1 ? \"\" : \"s\"}`,\n \"oor %s\",\n \"%s gelede\",\n \",\",\n);\n"]}
@@ -0,0 +1,5 @@
1
+ import { b as DurationLanguage } from '../types-nxmwwJwo.cjs';
2
+
3
+ declare const durationLanguage: DurationLanguage;
4
+
5
+ export { durationLanguage };
@@ -0,0 +1,5 @@
1
+ import { b as DurationLanguage } from '../types-nxmwwJwo.js';
2
+
3
+ declare const durationLanguage: DurationLanguage;
4
+
5
+ export { durationLanguage };
@@ -0,0 +1,7 @@
1
+ import { a } from '../chunk-RO4XQABG.js';
2
+
3
+ var u=a("jaar",e=>`maand${e===1?"":"e"}`,e=>e===1?"week":"weke",e=>e===1?"dag":"dae",e=>e===1?"uur":"ure",e=>e===1?"minuut":"minute",e=>`sekonde${e===1?"":"s"}`,e=>`millisekonde${e===1?"":"s"}`,"oor %s","%s gelede",",");
4
+
5
+ export { u as durationLanguage };
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=af.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/language/af.ts"],"names":["durationLanguage","create_duration_language_default","counter"],"mappings":"oCAEO,IAAMA,EAAmBC,EAC5B,OACCC,GAAY,QAAQA,IAAY,EAAI,GAAK,GAAG,GAC5CA,GAAaA,IAAY,EAAI,OAAS,OACtCA,GAAaA,IAAY,EAAI,MAAQ,MACrCA,GAAaA,IAAY,EAAI,MAAQ,MACrCA,GAAaA,IAAY,EAAI,SAAW,SACxCA,GAAY,UAAUA,IAAY,EAAI,GAAK,GAAG,GAC9CA,GAAY,eAAeA,IAAY,EAAI,GAAK,GAAG,GACpD,SACA,YACA,GACJ","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\n\nexport const durationLanguage = createDurationLanguage(\n \"jaar\",\n (counter) => `maand${counter === 1 ? \"\" : \"e\"}`,\n (counter) => (counter === 1 ? \"week\" : \"weke\"),\n (counter) => (counter === 1 ? \"dag\" : \"dae\"),\n (counter) => (counter === 1 ? \"uur\" : \"ure\"),\n (counter) => (counter === 1 ? \"minuut\" : \"minute\"),\n (counter) => `sekonde${counter === 1 ? \"\" : \"s\"}`,\n (counter) => `millisekonde${counter === 1 ? \"\" : \"s\"}`,\n \"oor %s\",\n \"%s gelede\",\n \",\",\n);\n"]}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var chunkVGHD36UF_cjs = require('../chunk-VGHD36UF.cjs');
4
+
5
+ var s=r=>r===2?1:r>2&&r<11?2:0,a={...chunkVGHD36UF_cjs.a(r=>["\u0633\u0646\u0629","\u0633\u0646\u062A\u0627\u0646","\u0633\u0646\u0648\u0627\u062A"][s(r)],r=>["\u0634\u0647\u0631","\u0634\u0647\u0631\u0627\u0646","\u0623\u0634\u0647\u0631"][s(r)],r=>["\u0623\u0633\u0628\u0648\u0639","\u0623\u0633\u0628\u0648\u0639\u064A\u0646","\u0623\u0633\u0627\u0628\u064A\u0639"][s(r)],r=>["\u064A\u0648\u0645","\u064A\u0648\u0645\u064A\u0646","\u0623\u064A\u0627\u0645"][s(r)],r=>["\u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u062A\u064A\u0646","\u0633\u0627\u0639\u0627\u062A"][s(r)],r=>["\u062F\u0642\u064A\u0642\u0629","\u062F\u0642\u064A\u0642\u062A\u0627\u0646","\u062F\u0642\u0627\u0626\u0642"][s(r)],r=>["\u062B\u0627\u0646\u064A\u0629","\u062B\u0627\u0646\u064A\u062A\u0627\u0646","\u062B\u0648\u0627\u0646\u064A"][s(r)],r=>["\u062C\u0632\u0621 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629","\u062C\u0632\u0622\u0646 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629","\u0623\u062C\u0632\u0627\u0621 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629"][s(r)],"\u0628\u0639\u062F %s","\u0645\u0646\u0630 %s",","),_digitReplacements:["\u06F0","\u0661","\u0662","\u0663","\u0664","\u0665","\u0666","\u0667","\u0668","\u0669"],delimiter:" \uFEED "};
6
+
7
+ exports.durationLanguage = a;
8
+ //# sourceMappingURL=out.js.map
9
+ //# sourceMappingURL=ar.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/language/ar.ts"],"names":["getArabicForm","counter","durationLanguage","create_duration_language_default"],"mappings":"0CAEA,IAAMA,EAAiBC,GACfA,IAAY,EACL,EAGPA,EAAU,GAAKA,EAAU,GAClB,EAGJ,EAGEC,EAAmB,CAC5B,GAAGC,EACEF,GAAY,CAAC,qBAAO,iCAAS,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAC5DA,GAAY,CAAC,qBAAO,iCAAS,0BAAM,EAAED,EAAcC,CAAO,CAAC,EAC3DA,GAAY,CAAC,iCAAS,6CAAW,sCAAQ,EAAED,EAAcC,CAAO,CAAC,EACjEA,GAAY,CAAC,qBAAO,iCAAS,0BAAM,EAAED,EAAcC,CAAO,CAAC,EAC3DA,GAAY,CAAC,2BAAQ,uCAAU,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAC9DA,GAAY,CAAC,iCAAS,6CAAW,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAChEA,GAAY,CAAC,iCAAS,6CAAW,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAChEA,GAAY,CAAC,6EAAkB,mFAAmB,wFAAkB,EAAED,EAAcC,CAAO,CAAC,EAC7F,wBACA,wBACA,GACJ,EACA,mBAAoB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,QAAG,EACrE,UAAW,UACf","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\n\nconst getArabicForm = (counter: number): number => {\n if (counter === 2) {\n return 1;\n }\n\n if (counter > 2 && counter < 11) {\n return 2;\n }\n\n return 0;\n};\n\nexport const durationLanguage = {\n ...createDurationLanguage(\n (counter) => [\"سنة\", \"سنتان\", \"سنوات\"][getArabicForm(counter)] as string,\n (counter) => [\"شهر\", \"شهران\", \"أشهر\"][getArabicForm(counter)] as string,\n (counter) => [\"أسبوع\", \"أسبوعين\", \"أسابيع\"][getArabicForm(counter)] as string,\n (counter) => [\"يوم\", \"يومين\", \"أيام\"][getArabicForm(counter)] as string,\n (counter) => [\"ساعة\", \"ساعتين\", \"ساعات\"][getArabicForm(counter)] as string,\n (counter) => [\"دقيقة\", \"دقيقتان\", \"دقائق\"][getArabicForm(counter)] as string,\n (counter) => [\"ثانية\", \"ثانيتان\", \"ثواني\"][getArabicForm(counter)] as string,\n (counter) => [\"جزء من الثانية\", \"جزآن من الثانية\", \"أجزاء من الثانية\"][getArabicForm(counter)] as string,\n \"بعد %s\",\n \"منذ %s\",\n \",\",\n ),\n _digitReplacements: [\"۰\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"],\n delimiter: \" ﻭ \",\n};\n"]}
@@ -0,0 +1,20 @@
1
+ import { d as DurationUnit } from '../types-nxmwwJwo.cjs';
2
+
3
+ declare const durationLanguage: {
4
+ _digitReplacements: string[];
5
+ delimiter: string;
6
+ _numberFirst?: boolean | undefined;
7
+ d: DurationUnit;
8
+ decimal?: string | undefined;
9
+ future?: string | undefined;
10
+ h: DurationUnit;
11
+ m: DurationUnit;
12
+ mo: DurationUnit;
13
+ ms: DurationUnit;
14
+ past?: string | undefined;
15
+ s: DurationUnit;
16
+ w: DurationUnit;
17
+ y: DurationUnit;
18
+ };
19
+
20
+ export { durationLanguage };
@@ -0,0 +1,20 @@
1
+ import { d as DurationUnit } from '../types-nxmwwJwo.js';
2
+
3
+ declare const durationLanguage: {
4
+ _digitReplacements: string[];
5
+ delimiter: string;
6
+ _numberFirst?: boolean | undefined;
7
+ d: DurationUnit;
8
+ decimal?: string | undefined;
9
+ future?: string | undefined;
10
+ h: DurationUnit;
11
+ m: DurationUnit;
12
+ mo: DurationUnit;
13
+ ms: DurationUnit;
14
+ past?: string | undefined;
15
+ s: DurationUnit;
16
+ w: DurationUnit;
17
+ y: DurationUnit;
18
+ };
19
+
20
+ export { durationLanguage };
@@ -0,0 +1,7 @@
1
+ import { a } from '../chunk-RO4XQABG.js';
2
+
3
+ var s=r=>r===2?1:r>2&&r<11?2:0,e={...a(r=>["\u0633\u0646\u0629","\u0633\u0646\u062A\u0627\u0646","\u0633\u0646\u0648\u0627\u062A"][s(r)],r=>["\u0634\u0647\u0631","\u0634\u0647\u0631\u0627\u0646","\u0623\u0634\u0647\u0631"][s(r)],r=>["\u0623\u0633\u0628\u0648\u0639","\u0623\u0633\u0628\u0648\u0639\u064A\u0646","\u0623\u0633\u0627\u0628\u064A\u0639"][s(r)],r=>["\u064A\u0648\u0645","\u064A\u0648\u0645\u064A\u0646","\u0623\u064A\u0627\u0645"][s(r)],r=>["\u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u062A\u064A\u0646","\u0633\u0627\u0639\u0627\u062A"][s(r)],r=>["\u062F\u0642\u064A\u0642\u0629","\u062F\u0642\u064A\u0642\u062A\u0627\u0646","\u062F\u0642\u0627\u0626\u0642"][s(r)],r=>["\u062B\u0627\u0646\u064A\u0629","\u062B\u0627\u0646\u064A\u062A\u0627\u0646","\u062B\u0648\u0627\u0646\u064A"][s(r)],r=>["\u062C\u0632\u0621 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629","\u062C\u0632\u0622\u0646 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629","\u0623\u062C\u0632\u0627\u0621 \u0645\u0646 \u0627\u0644\u062B\u0627\u0646\u064A\u0629"][s(r)],"\u0628\u0639\u062F %s","\u0645\u0646\u0630 %s",","),_digitReplacements:["\u06F0","\u0661","\u0662","\u0663","\u0664","\u0665","\u0666","\u0667","\u0668","\u0669"],delimiter:" \uFEED "};
4
+
5
+ export { e as durationLanguage };
6
+ //# sourceMappingURL=out.js.map
7
+ //# sourceMappingURL=ar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/language/ar.ts"],"names":["getArabicForm","counter","durationLanguage","create_duration_language_default"],"mappings":"yCAEA,IAAMA,EAAiBC,GACfA,IAAY,EACL,EAGPA,EAAU,GAAKA,EAAU,GAClB,EAGJ,EAGEC,EAAmB,CAC5B,GAAGC,EACEF,GAAY,CAAC,qBAAO,iCAAS,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAC5DA,GAAY,CAAC,qBAAO,iCAAS,0BAAM,EAAED,EAAcC,CAAO,CAAC,EAC3DA,GAAY,CAAC,iCAAS,6CAAW,sCAAQ,EAAED,EAAcC,CAAO,CAAC,EACjEA,GAAY,CAAC,qBAAO,iCAAS,0BAAM,EAAED,EAAcC,CAAO,CAAC,EAC3DA,GAAY,CAAC,2BAAQ,uCAAU,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAC9DA,GAAY,CAAC,iCAAS,6CAAW,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAChEA,GAAY,CAAC,iCAAS,6CAAW,gCAAO,EAAED,EAAcC,CAAO,CAAC,EAChEA,GAAY,CAAC,6EAAkB,mFAAmB,wFAAkB,EAAED,EAAcC,CAAO,CAAC,EAC7F,wBACA,wBACA,GACJ,EACA,mBAAoB,CAAC,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,SAAK,QAAG,EACrE,UAAW,UACf","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\n\nconst getArabicForm = (counter: number): number => {\n if (counter === 2) {\n return 1;\n }\n\n if (counter > 2 && counter < 11) {\n return 2;\n }\n\n return 0;\n};\n\nexport const durationLanguage = {\n ...createDurationLanguage(\n (counter) => [\"سنة\", \"سنتان\", \"سنوات\"][getArabicForm(counter)] as string,\n (counter) => [\"شهر\", \"شهران\", \"أشهر\"][getArabicForm(counter)] as string,\n (counter) => [\"أسبوع\", \"أسبوعين\", \"أسابيع\"][getArabicForm(counter)] as string,\n (counter) => [\"يوم\", \"يومين\", \"أيام\"][getArabicForm(counter)] as string,\n (counter) => [\"ساعة\", \"ساعتين\", \"ساعات\"][getArabicForm(counter)] as string,\n (counter) => [\"دقيقة\", \"دقيقتان\", \"دقائق\"][getArabicForm(counter)] as string,\n (counter) => [\"ثانية\", \"ثانيتان\", \"ثواني\"][getArabicForm(counter)] as string,\n (counter) => [\"جزء من الثانية\", \"جزآن من الثانية\", \"أجزاء من الثانية\"][getArabicForm(counter)] as string,\n \"بعد %s\",\n \"منذ %s\",\n \",\",\n ),\n _digitReplacements: [\"۰\", \"١\", \"٢\", \"٣\", \"٤\", \"٥\", \"٦\", \"٧\", \"٨\", \"٩\"],\n delimiter: \" ﻭ \",\n};\n"]}
@@ -0,0 +1,10 @@
1
+ 'use strict';
2
+
3
+ var chunk6XBKSCXN_cjs = require('../chunk-6XBKSCXN.cjs');
4
+ var chunkVGHD36UF_cjs = require('../chunk-VGHD36UF.cjs');
5
+
6
+ var n=chunkVGHD36UF_cjs.a(s=>["\u0433\u043E\u0434\u0438\u043D\u0438","\u0433\u043E\u0434\u0438\u043D\u0430","\u0433\u043E\u0434\u0438\u043D\u0438"][chunk6XBKSCXN_cjs.a(s)],s=>["\u043C\u0435\u0441\u0435\u0446\u0430","\u043C\u0435\u0441\u0435\u0446","\u043C\u0435\u0441\u0435\u0446\u0430"][chunk6XBKSCXN_cjs.a(s)],s=>["\u0441\u0435\u0434\u043C\u0438\u0446\u0438","\u0441\u0435\u0434\u043C\u0438\u0446\u0430","\u0441\u0435\u0434\u043C\u0438\u0446\u0438"][chunk6XBKSCXN_cjs.a(s)],s=>["\u0434\u043D\u0438","\u0434\u0435\u043D","\u0434\u043D\u0438"][chunk6XBKSCXN_cjs.a(s)],s=>["\u0447\u0430\u0441\u0430","\u0447\u0430\u0441","\u0447\u0430\u0441\u0430"][chunk6XBKSCXN_cjs.a(s)],s=>["\u043C\u0438\u043D\u0443\u0442\u0438","\u043C\u0438\u043D\u0443\u0442\u0430","\u043C\u0438\u043D\u0443\u0442\u0438"][chunk6XBKSCXN_cjs.a(s)],s=>["\u0441\u0435\u043A\u0443\u043D\u0434\u0438","\u0441\u0435\u043A\u0443\u043D\u0434\u0430","\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][chunk6XBKSCXN_cjs.a(s)],s=>["\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438","\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430","\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][chunk6XBKSCXN_cjs.a(s)],"\u0441\u043B\u0435\u0434 %s","\u043F\u0440\u0435\u0434\u0438 %s",",");
7
+
8
+ exports.durationLanguage = n;
9
+ //# sourceMappingURL=out.js.map
10
+ //# sourceMappingURL=bg.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/language/bg.ts"],"names":["durationLanguage","create_duration_language_default","counter","get_slavic_form_default"],"mappings":"+EAGO,IAAMA,EAAmBC,EAC3BC,GAAY,CAAC,uCAAU,uCAAU,sCAAQ,EAAEC,EAAcD,CAAO,CAAC,EACjEA,GAAY,CAAC,uCAAU,iCAAS,sCAAQ,EAAEC,EAAcD,CAAO,CAAC,EAChEA,GAAY,CAAC,6CAAW,6CAAW,4CAAS,EAAEC,EAAcD,CAAO,CAAC,EACpEA,GAAY,CAAC,qBAAO,qBAAO,oBAAK,EAAEC,EAAcD,CAAO,CAAC,EACxDA,GAAY,CAAC,2BAAQ,qBAAO,0BAAM,EAAEC,EAAcD,CAAO,CAAC,EAC1DA,GAAY,CAAC,uCAAU,uCAAU,sCAAQ,EAAEC,EAAcD,CAAO,CAAC,EACjEA,GAAY,CAAC,6CAAW,6CAAW,4CAAS,EAAEC,EAAcD,CAAO,CAAC,EACpEA,GAAY,CAAC,qEAAe,qEAAe,oEAAa,EAAEC,EAAcD,CAAO,CAAC,EACjF,8BACA,oCACA,GACJ","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\nimport getSlavicForm from \"./util/duration/get-slavic-form\";\n\nexport const durationLanguage = createDurationLanguage(\n (counter) => [\"години\", \"година\", \"години\"][getSlavicForm(counter)] as string,\n (counter) => [\"месеца\", \"месец\", \"месеца\"][getSlavicForm(counter)] as string,\n (counter) => [\"седмици\", \"седмица\", \"седмици\"][getSlavicForm(counter)] as string,\n (counter) => [\"дни\", \"ден\", \"дни\"][getSlavicForm(counter)] as string,\n (counter) => [\"часа\", \"час\", \"часа\"][getSlavicForm(counter)] as string,\n (counter) => [\"минути\", \"минута\", \"минути\"][getSlavicForm(counter)] as string,\n (counter) => [\"секунди\", \"секунда\", \"секунди\"][getSlavicForm(counter)] as string,\n (counter) => [\"милисекунди\", \"милисекунда\", \"милисекунди\"][getSlavicForm(counter)] as string,\n \"след %s\",\n \"преди %s\",\n \",\",\n);\n"]}
@@ -0,0 +1,5 @@
1
+ import { b as DurationLanguage } from '../types-nxmwwJwo.cjs';
2
+
3
+ declare const durationLanguage: DurationLanguage;
4
+
5
+ export { durationLanguage };
@@ -0,0 +1,5 @@
1
+ import { b as DurationLanguage } from '../types-nxmwwJwo.js';
2
+
3
+ declare const durationLanguage: DurationLanguage;
4
+
5
+ export { durationLanguage };
@@ -0,0 +1,8 @@
1
+ import { a as a$1 } from '../chunk-AVPLJXJK.js';
2
+ import { a } from '../chunk-RO4XQABG.js';
3
+
4
+ var o=a(s=>["\u0433\u043E\u0434\u0438\u043D\u0438","\u0433\u043E\u0434\u0438\u043D\u0430","\u0433\u043E\u0434\u0438\u043D\u0438"][a$1(s)],s=>["\u043C\u0435\u0441\u0435\u0446\u0430","\u043C\u0435\u0441\u0435\u0446","\u043C\u0435\u0441\u0435\u0446\u0430"][a$1(s)],s=>["\u0441\u0435\u0434\u043C\u0438\u0446\u0438","\u0441\u0435\u0434\u043C\u0438\u0446\u0430","\u0441\u0435\u0434\u043C\u0438\u0446\u0438"][a$1(s)],s=>["\u0434\u043D\u0438","\u0434\u0435\u043D","\u0434\u043D\u0438"][a$1(s)],s=>["\u0447\u0430\u0441\u0430","\u0447\u0430\u0441","\u0447\u0430\u0441\u0430"][a$1(s)],s=>["\u043C\u0438\u043D\u0443\u0442\u0438","\u043C\u0438\u043D\u0443\u0442\u0430","\u043C\u0438\u043D\u0443\u0442\u0438"][a$1(s)],s=>["\u0441\u0435\u043A\u0443\u043D\u0434\u0438","\u0441\u0435\u043A\u0443\u043D\u0434\u0430","\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][a$1(s)],s=>["\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438","\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0430","\u043C\u0438\u043B\u0438\u0441\u0435\u043A\u0443\u043D\u0434\u0438"][a$1(s)],"\u0441\u043B\u0435\u0434 %s","\u043F\u0440\u0435\u0434\u0438 %s",",");
5
+
6
+ export { o as durationLanguage };
7
+ //# sourceMappingURL=out.js.map
8
+ //# sourceMappingURL=bg.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/language/bg.ts"],"names":["durationLanguage","create_duration_language_default","counter","get_slavic_form_default"],"mappings":"6EAGO,IAAMA,EAAmBC,EAC3BC,GAAY,CAAC,uCAAU,uCAAU,sCAAQ,EAAEC,EAAcD,CAAO,CAAC,EACjEA,GAAY,CAAC,uCAAU,iCAAS,sCAAQ,EAAEC,EAAcD,CAAO,CAAC,EAChEA,GAAY,CAAC,6CAAW,6CAAW,4CAAS,EAAEC,EAAcD,CAAO,CAAC,EACpEA,GAAY,CAAC,qBAAO,qBAAO,oBAAK,EAAEC,EAAcD,CAAO,CAAC,EACxDA,GAAY,CAAC,2BAAQ,qBAAO,0BAAM,EAAEC,EAAcD,CAAO,CAAC,EAC1DA,GAAY,CAAC,uCAAU,uCAAU,sCAAQ,EAAEC,EAAcD,CAAO,CAAC,EACjEA,GAAY,CAAC,6CAAW,6CAAW,4CAAS,EAAEC,EAAcD,CAAO,CAAC,EACpEA,GAAY,CAAC,qEAAe,qEAAe,oEAAa,EAAEC,EAAcD,CAAO,CAAC,EACjF,8BACA,oCACA,GACJ","sourcesContent":["import createDurationLanguage from \"./util/create-duration-language\";\nimport getSlavicForm from \"./util/duration/get-slavic-form\";\n\nexport const durationLanguage = createDurationLanguage(\n (counter) => [\"години\", \"година\", \"години\"][getSlavicForm(counter)] as string,\n (counter) => [\"месеца\", \"месец\", \"месеца\"][getSlavicForm(counter)] as string,\n (counter) => [\"седмици\", \"седмица\", \"седмици\"][getSlavicForm(counter)] as string,\n (counter) => [\"дни\", \"ден\", \"дни\"][getSlavicForm(counter)] as string,\n (counter) => [\"часа\", \"час\", \"часа\"][getSlavicForm(counter)] as string,\n (counter) => [\"минути\", \"минута\", \"минути\"][getSlavicForm(counter)] as string,\n (counter) => [\"секунди\", \"секунда\", \"секунди\"][getSlavicForm(counter)] as string,\n (counter) => [\"милисекунди\", \"милисекунда\", \"милисекунди\"][getSlavicForm(counter)] as string,\n \"след %s\",\n \"преди %s\",\n \",\",\n);\n"]}
@@ -0,0 +1,9 @@
1
+ 'use strict';
2
+
3
+ var chunkVGHD36UF_cjs = require('../chunk-VGHD36UF.cjs');
4
+
5
+ var t=chunkVGHD36UF_cjs.a("\u09AC\u099B\u09B0","\u09AE\u09BE\u09B8","\u09B8\u09AA\u09CD\u09A4\u09BE\u09B9","\u09A6\u09BF\u09A8","\u0998\u09A8\u09CD\u099F\u09BE","\u09AE\u09BF\u09A8\u09BF\u099F","\u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1","\u09AE\u09BF\u09B2\u09BF\u09B8\u09C7\u0995\u09C7\u09A8\u09CD\u09A1","%s \u09AA\u09B0\u09C7","%s \u0986\u0997\u09C7");
6
+
7
+ exports.durationLanguage = t;
8
+ //# sourceMappingURL=out.js.map
9
+ //# sourceMappingURL=bn.cjs.map