n2words 3.1.0 → 5.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 (486) hide show
  1. package/CHANGELOG.md +51 -40
  2. package/LICENSE +1 -1
  3. package/README.md +64 -184
  4. package/dist/am-ET.js +2 -0
  5. package/dist/am-ET.umd.js +2 -0
  6. package/dist/am-Latn-ET.js +2 -0
  7. package/dist/am-Latn-ET.umd.js +2 -0
  8. package/dist/ar-SA.js +2 -0
  9. package/dist/ar-SA.umd.js +2 -0
  10. package/dist/az-AZ.js +2 -0
  11. package/dist/az-AZ.umd.js +2 -0
  12. package/dist/bn-BD.js +2 -0
  13. package/dist/bn-BD.umd.js +2 -0
  14. package/dist/cs-CZ.js +2 -0
  15. package/dist/cs-CZ.umd.js +2 -0
  16. package/dist/da-DK.js +2 -0
  17. package/dist/da-DK.umd.js +2 -0
  18. package/dist/de-DE.js +2 -0
  19. package/dist/de-DE.umd.js +2 -0
  20. package/dist/el-GR.js +2 -0
  21. package/dist/el-GR.umd.js +2 -0
  22. package/dist/en-AU.js +2 -0
  23. package/dist/en-AU.umd.js +2 -0
  24. package/dist/en-BD.js +2 -0
  25. package/dist/en-BD.umd.js +2 -0
  26. package/dist/en-CA.js +2 -0
  27. package/dist/en-CA.umd.js +2 -0
  28. package/dist/en-GB.js +2 -0
  29. package/dist/en-GB.umd.js +2 -0
  30. package/dist/en-GH.js +2 -0
  31. package/dist/en-GH.umd.js +2 -0
  32. package/dist/en-IE.js +2 -0
  33. package/dist/en-IE.umd.js +2 -0
  34. package/dist/en-IN.js +2 -0
  35. package/dist/en-IN.umd.js +2 -0
  36. package/dist/en-KE.js +2 -0
  37. package/dist/en-KE.umd.js +2 -0
  38. package/dist/en-MY.js +2 -0
  39. package/dist/en-MY.umd.js +2 -0
  40. package/dist/en-NG.js +2 -0
  41. package/dist/en-NG.umd.js +2 -0
  42. package/dist/en-NZ.js +2 -0
  43. package/dist/en-NZ.umd.js +2 -0
  44. package/dist/en-PH.js +2 -0
  45. package/dist/en-PH.umd.js +2 -0
  46. package/dist/en-PK.js +2 -0
  47. package/dist/en-PK.umd.js +2 -0
  48. package/dist/en-SG.js +2 -0
  49. package/dist/en-SG.umd.js +2 -0
  50. package/dist/en-US.js +2 -0
  51. package/dist/en-US.umd.js +2 -0
  52. package/dist/en-ZA.js +2 -0
  53. package/dist/en-ZA.umd.js +2 -0
  54. package/dist/es-ES.js +2 -0
  55. package/dist/es-ES.umd.js +2 -0
  56. package/dist/es-MX.js +2 -0
  57. package/dist/es-MX.umd.js +2 -0
  58. package/dist/es-US.js +2 -0
  59. package/dist/es-US.umd.js +2 -0
  60. package/dist/fa-IR.js +2 -0
  61. package/dist/fa-IR.umd.js +2 -0
  62. package/dist/fi-FI.js +2 -0
  63. package/dist/fi-FI.umd.js +2 -0
  64. package/dist/fil-PH.js +2 -0
  65. package/dist/fil-PH.umd.js +2 -0
  66. package/dist/fr-BE.js +2 -0
  67. package/dist/fr-BE.umd.js +2 -0
  68. package/dist/fr-FR.js +2 -0
  69. package/dist/fr-FR.umd.js +2 -0
  70. package/dist/gu-IN.js +2 -0
  71. package/dist/gu-IN.umd.js +2 -0
  72. package/dist/ha-NG.js +2 -0
  73. package/dist/ha-NG.umd.js +2 -0
  74. package/dist/hbo-IL.js +2 -0
  75. package/dist/hbo-IL.umd.js +2 -0
  76. package/dist/he-IL.js +2 -0
  77. package/dist/he-IL.umd.js +2 -0
  78. package/dist/hi-IN.js +2 -0
  79. package/dist/hi-IN.umd.js +2 -0
  80. package/dist/hr-HR.js +2 -0
  81. package/dist/hr-HR.umd.js +2 -0
  82. package/dist/hu-HU.js +2 -0
  83. package/dist/hu-HU.umd.js +2 -0
  84. package/dist/id-ID.js +2 -0
  85. package/dist/id-ID.umd.js +2 -0
  86. package/dist/it-IT.js +2 -0
  87. package/dist/it-IT.umd.js +2 -0
  88. package/dist/ja-JP.js +2 -0
  89. package/dist/ja-JP.umd.js +2 -0
  90. package/dist/ka-GE.js +2 -0
  91. package/dist/ka-GE.umd.js +2 -0
  92. package/dist/kn-IN.js +2 -0
  93. package/dist/kn-IN.umd.js +2 -0
  94. package/dist/ko-KR.js +2 -0
  95. package/dist/ko-KR.umd.js +2 -0
  96. package/dist/lt-LT.js +2 -0
  97. package/dist/lt-LT.umd.js +2 -0
  98. package/dist/lv-LV.js +2 -0
  99. package/dist/lv-LV.umd.js +2 -0
  100. package/dist/mr-IN.js +2 -0
  101. package/dist/mr-IN.umd.js +2 -0
  102. package/dist/ms-MY.js +2 -0
  103. package/dist/ms-MY.umd.js +2 -0
  104. package/dist/nb-NO.js +2 -0
  105. package/dist/nb-NO.umd.js +2 -0
  106. package/dist/nl-NL.js +2 -0
  107. package/dist/nl-NL.umd.js +2 -0
  108. package/dist/pa-IN.js +2 -0
  109. package/dist/pa-IN.umd.js +2 -0
  110. package/dist/pl-PL.js +2 -0
  111. package/dist/pl-PL.umd.js +2 -0
  112. package/dist/pt-BR.js +2 -0
  113. package/dist/pt-BR.umd.js +2 -0
  114. package/dist/pt-PT.js +2 -0
  115. package/dist/pt-PT.umd.js +2 -0
  116. package/dist/ro-RO.js +2 -0
  117. package/dist/ro-RO.umd.js +2 -0
  118. package/dist/ru-RU.js +2 -0
  119. package/dist/ru-RU.umd.js +2 -0
  120. package/dist/sr-Cyrl-RS.js +2 -0
  121. package/dist/sr-Cyrl-RS.umd.js +2 -0
  122. package/dist/sr-Latn-RS.js +2 -0
  123. package/dist/sr-Latn-RS.umd.js +2 -0
  124. package/dist/sv-SE.js +2 -0
  125. package/dist/sv-SE.umd.js +2 -0
  126. package/dist/sw-KE.js +2 -0
  127. package/dist/sw-KE.umd.js +2 -0
  128. package/dist/ta-IN.js +2 -0
  129. package/dist/ta-IN.umd.js +2 -0
  130. package/dist/te-IN.js +2 -0
  131. package/dist/te-IN.umd.js +2 -0
  132. package/dist/th-TH.js +2 -0
  133. package/dist/th-TH.umd.js +2 -0
  134. package/dist/tr-TR.js +2 -0
  135. package/dist/tr-TR.umd.js +2 -0
  136. package/dist/uk-UA.js +2 -0
  137. package/dist/uk-UA.umd.js +2 -0
  138. package/dist/ur-PK.js +2 -0
  139. package/dist/ur-PK.umd.js +2 -0
  140. package/dist/vi-VN.js +2 -0
  141. package/dist/vi-VN.umd.js +2 -0
  142. package/dist/yo-NG.js +2 -0
  143. package/dist/yo-NG.umd.js +2 -0
  144. package/dist/zh-Hans-CN.js +2 -0
  145. package/dist/zh-Hans-CN.umd.js +2 -0
  146. package/dist/zh-Hant-TW.js +2 -0
  147. package/dist/zh-Hant-TW.umd.js +2 -0
  148. package/package.json +61 -88
  149. package/src/am-ET.d.ts +40 -0
  150. package/src/am-ET.js +269 -0
  151. package/src/am-Latn-ET.d.ts +35 -0
  152. package/src/am-Latn-ET.js +264 -0
  153. package/src/ar-SA.d.ts +49 -0
  154. package/{lib/languages/ar.js → src/ar-SA.js} +177 -15
  155. package/src/az-AZ.d.ts +37 -0
  156. package/src/az-AZ.js +312 -0
  157. package/src/bn-BD.d.ts +36 -0
  158. package/{lib/languages/bn.js → src/bn-BD.js} +110 -6
  159. package/src/cs-CZ.d.ts +49 -0
  160. package/{lib/languages/cs.js → src/cs-CZ.js} +240 -14
  161. package/src/da-DK.d.ts +44 -0
  162. package/{lib/languages/da.js → src/da-DK.js} +131 -11
  163. package/src/de-DE.d.ts +57 -0
  164. package/src/de-DE.js +603 -0
  165. package/src/el-GR.d.ts +40 -0
  166. package/src/el-GR.js +418 -0
  167. package/src/en-AU.d.ts +47 -0
  168. package/src/en-AU.js +423 -0
  169. package/src/en-BD.d.ts +49 -0
  170. package/src/en-BD.js +415 -0
  171. package/src/en-CA.d.ts +63 -0
  172. package/src/en-CA.js +518 -0
  173. package/src/en-GB.d.ts +56 -0
  174. package/src/en-GB.js +469 -0
  175. package/src/en-GH.d.ts +11 -0
  176. package/src/en-GH.js +345 -0
  177. package/src/en-IE.d.ts +56 -0
  178. package/src/en-IE.js +479 -0
  179. package/src/en-IN.d.ts +49 -0
  180. package/src/en-IN.js +415 -0
  181. package/src/en-KE.d.ts +11 -0
  182. package/src/en-KE.js +345 -0
  183. package/src/en-MY.d.ts +11 -0
  184. package/src/en-MY.js +347 -0
  185. package/src/en-NG.d.ts +56 -0
  186. package/src/en-NG.js +479 -0
  187. package/src/en-NZ.d.ts +11 -0
  188. package/{lib/languages/en.js → src/en-NZ.js} +164 -31
  189. package/src/en-PH.d.ts +11 -0
  190. package/src/en-PH.js +345 -0
  191. package/src/en-PK.d.ts +49 -0
  192. package/src/en-PK.js +415 -0
  193. package/src/en-SG.d.ts +11 -0
  194. package/src/en-SG.js +345 -0
  195. package/src/en-US.d.ts +63 -0
  196. package/src/en-US.js +516 -0
  197. package/src/en-ZA.d.ts +56 -0
  198. package/src/en-ZA.js +478 -0
  199. package/src/es-ES.d.ts +65 -0
  200. package/src/es-ES.js +541 -0
  201. package/src/es-MX.d.ts +58 -0
  202. package/{lib/languages/es.js → src/es-MX.js} +228 -18
  203. package/src/es-US.d.ts +58 -0
  204. package/src/es-US.js +446 -0
  205. package/src/fa-IR.d.ts +38 -0
  206. package/src/fa-IR.js +246 -0
  207. package/src/fi-FI.d.ts +46 -0
  208. package/{lib/languages/fi.js → src/fi-FI.js} +152 -11
  209. package/src/fil-PH.d.ts +37 -0
  210. package/{lib/languages/fil.js → src/fil-PH.js} +144 -8
  211. package/src/fr-BE.d.ts +49 -0
  212. package/{lib/languages → src}/fr-BE.js +175 -13
  213. package/src/fr-FR.d.ts +63 -0
  214. package/{lib/languages/fr.js → src/fr-FR.js} +182 -16
  215. package/src/gu-IN.d.ts +35 -0
  216. package/{lib/languages/gu.js → src/gu-IN.js} +115 -6
  217. package/src/ha-NG.d.ts +37 -0
  218. package/{lib/languages/ha.js → src/ha-NG.js} +107 -8
  219. package/src/hbo-IL.d.ts +39 -0
  220. package/{lib/languages/hbo.js → src/hbo-IL.js} +211 -19
  221. package/src/he-IL.d.ts +37 -0
  222. package/src/he-IL.js +537 -0
  223. package/src/hi-IN.d.ts +36 -0
  224. package/{lib/languages/hi.js → src/hi-IN.js} +116 -6
  225. package/src/hr-HR.d.ts +42 -0
  226. package/src/hr-HR.js +463 -0
  227. package/src/hu-HU.d.ts +38 -0
  228. package/{lib/languages/hu.js → src/hu-HU.js} +164 -6
  229. package/src/id-ID.d.ts +38 -0
  230. package/{lib/languages/id.js → src/id-ID.js} +99 -8
  231. package/src/it-IT.d.ts +59 -0
  232. package/{lib/languages/it.js → src/it-IT.js} +179 -15
  233. package/src/ja-JP.d.ts +49 -0
  234. package/{lib/languages/ja.js → src/ja-JP.js} +111 -12
  235. package/src/ka-GE.d.ts +44 -0
  236. package/{lib/languages/ka.js → src/ka-GE.js} +113 -11
  237. package/src/kn-IN.d.ts +35 -0
  238. package/{lib/languages/kn.js → src/kn-IN.js} +115 -6
  239. package/src/ko-KR.d.ts +45 -0
  240. package/{lib/languages/ko.js → src/ko-KR.js} +94 -12
  241. package/src/lt-LT.d.ts +49 -0
  242. package/src/lt-LT.js +543 -0
  243. package/src/lv-LV.d.ts +49 -0
  244. package/src/lv-LV.js +595 -0
  245. package/src/mr-IN.d.ts +36 -0
  246. package/{lib/languages/mr.js → src/mr-IN.js} +116 -6
  247. package/src/ms-MY.d.ts +37 -0
  248. package/{lib/languages/ms.js → src/ms-MY.js} +111 -8
  249. package/src/nb-NO.d.ts +44 -0
  250. package/{lib/languages/nb.js → src/nb-NO.js} +153 -11
  251. package/src/nl-NL.d.ts +54 -0
  252. package/{lib/languages/nl.js → src/nl-NL.js} +260 -18
  253. package/src/pa-IN.d.ts +36 -0
  254. package/{lib/languages/pa.js → src/pa-IN.js} +116 -6
  255. package/src/pl-PL.d.ts +55 -0
  256. package/src/pl-PL.js +585 -0
  257. package/src/pt-BR.d.ts +31 -0
  258. package/src/pt-BR.js +534 -0
  259. package/src/pt-PT.d.ts +45 -0
  260. package/{lib/languages/pt.js → src/pt-PT.js} +234 -12
  261. package/src/ro-RO.d.ts +44 -0
  262. package/{lib/languages/ro.js → src/ro-RO.js} +212 -18
  263. package/src/ru-RU.d.ts +50 -0
  264. package/src/ru-RU.js +535 -0
  265. package/src/sr-Cyrl-RS.d.ts +49 -0
  266. package/src/sr-Cyrl-RS.js +503 -0
  267. package/src/sr-Latn-RS.d.ts +49 -0
  268. package/src/sr-Latn-RS.js +503 -0
  269. package/src/sv-SE.d.ts +44 -0
  270. package/{lib/languages/sv.js → src/sv-SE.js} +136 -11
  271. package/src/sw-KE.d.ts +37 -0
  272. package/{lib/languages/sw.js → src/sw-KE.js} +117 -6
  273. package/src/ta-IN.d.ts +35 -0
  274. package/{lib/languages/ta.js → src/ta-IN.js} +109 -6
  275. package/src/te-IN.d.ts +35 -0
  276. package/{lib/languages/te.js → src/te-IN.js} +115 -6
  277. package/src/th-TH.d.ts +38 -0
  278. package/{lib/languages/th.js → src/th-TH.js} +99 -6
  279. package/src/tr-TR.d.ts +48 -0
  280. package/{lib/languages/tr.js → src/tr-TR.js} +168 -23
  281. package/src/uk-UA.d.ts +42 -0
  282. package/src/uk-UA.js +463 -0
  283. package/src/ur-PK.d.ts +36 -0
  284. package/{lib/languages/ur.js → src/ur-PK.js} +116 -6
  285. package/src/utils/expand-scientific.d.ts +32 -0
  286. package/src/utils/expand-scientific.js +65 -0
  287. package/src/utils/parse-cardinal.d.ts +14 -0
  288. package/{lib/utils/parse-numeric.js → src/utils/parse-cardinal.js} +14 -44
  289. package/src/utils/parse-currency.d.ts +14 -0
  290. package/src/utils/parse-currency.js +91 -0
  291. package/src/utils/parse-ordinal.d.ts +10 -0
  292. package/src/utils/parse-ordinal.js +103 -0
  293. package/src/vi-VN.d.ts +48 -0
  294. package/{lib/languages/vi.js → src/vi-VN.js} +102 -11
  295. package/src/yo-NG.d.ts +37 -0
  296. package/{lib/languages/yo.js → src/yo-NG.js} +109 -9
  297. package/src/zh-Hans-CN.d.ts +48 -0
  298. package/{lib/languages/zh-Hans.js → src/zh-Hans-CN.js} +140 -8
  299. package/src/zh-Hant-TW.d.ts +50 -0
  300. package/{lib/languages/zh-Hant.js → src/zh-Hant-TW.js} +139 -8
  301. package/dist/languages/am-Latn.js +0 -3
  302. package/dist/languages/am-Latn.js.map +0 -1
  303. package/dist/languages/am.js +0 -3
  304. package/dist/languages/am.js.map +0 -1
  305. package/dist/languages/ar.js +0 -3
  306. package/dist/languages/ar.js.map +0 -1
  307. package/dist/languages/az.js +0 -3
  308. package/dist/languages/az.js.map +0 -1
  309. package/dist/languages/bn.js +0 -3
  310. package/dist/languages/bn.js.map +0 -1
  311. package/dist/languages/cs.js +0 -3
  312. package/dist/languages/cs.js.map +0 -1
  313. package/dist/languages/da.js +0 -3
  314. package/dist/languages/da.js.map +0 -1
  315. package/dist/languages/de.js +0 -3
  316. package/dist/languages/de.js.map +0 -1
  317. package/dist/languages/el.js +0 -3
  318. package/dist/languages/el.js.map +0 -1
  319. package/dist/languages/en.js +0 -3
  320. package/dist/languages/en.js.map +0 -1
  321. package/dist/languages/es.js +0 -3
  322. package/dist/languages/es.js.map +0 -1
  323. package/dist/languages/fa.js +0 -3
  324. package/dist/languages/fa.js.map +0 -1
  325. package/dist/languages/fi.js +0 -3
  326. package/dist/languages/fi.js.map +0 -1
  327. package/dist/languages/fil.js +0 -3
  328. package/dist/languages/fil.js.map +0 -1
  329. package/dist/languages/fr-BE.js +0 -3
  330. package/dist/languages/fr-BE.js.map +0 -1
  331. package/dist/languages/fr.js +0 -3
  332. package/dist/languages/fr.js.map +0 -1
  333. package/dist/languages/gu.js +0 -3
  334. package/dist/languages/gu.js.map +0 -1
  335. package/dist/languages/ha.js +0 -3
  336. package/dist/languages/ha.js.map +0 -1
  337. package/dist/languages/hbo.js +0 -3
  338. package/dist/languages/hbo.js.map +0 -1
  339. package/dist/languages/he.js +0 -3
  340. package/dist/languages/he.js.map +0 -1
  341. package/dist/languages/hi.js +0 -3
  342. package/dist/languages/hi.js.map +0 -1
  343. package/dist/languages/hr.js +0 -3
  344. package/dist/languages/hr.js.map +0 -1
  345. package/dist/languages/hu.js +0 -3
  346. package/dist/languages/hu.js.map +0 -1
  347. package/dist/languages/id.js +0 -3
  348. package/dist/languages/id.js.map +0 -1
  349. package/dist/languages/it.js +0 -3
  350. package/dist/languages/it.js.map +0 -1
  351. package/dist/languages/ja.js +0 -3
  352. package/dist/languages/ja.js.map +0 -1
  353. package/dist/languages/ka.js +0 -3
  354. package/dist/languages/ka.js.map +0 -1
  355. package/dist/languages/kn.js +0 -3
  356. package/dist/languages/kn.js.map +0 -1
  357. package/dist/languages/ko.js +0 -3
  358. package/dist/languages/ko.js.map +0 -1
  359. package/dist/languages/lt.js +0 -3
  360. package/dist/languages/lt.js.map +0 -1
  361. package/dist/languages/lv.js +0 -3
  362. package/dist/languages/lv.js.map +0 -1
  363. package/dist/languages/mr.js +0 -3
  364. package/dist/languages/mr.js.map +0 -1
  365. package/dist/languages/ms.js +0 -3
  366. package/dist/languages/ms.js.map +0 -1
  367. package/dist/languages/nb.js +0 -3
  368. package/dist/languages/nb.js.map +0 -1
  369. package/dist/languages/nl.js +0 -3
  370. package/dist/languages/nl.js.map +0 -1
  371. package/dist/languages/pa.js +0 -3
  372. package/dist/languages/pa.js.map +0 -1
  373. package/dist/languages/pl.js +0 -3
  374. package/dist/languages/pl.js.map +0 -1
  375. package/dist/languages/pt.js +0 -3
  376. package/dist/languages/pt.js.map +0 -1
  377. package/dist/languages/ro.js +0 -3
  378. package/dist/languages/ro.js.map +0 -1
  379. package/dist/languages/ru.js +0 -3
  380. package/dist/languages/ru.js.map +0 -1
  381. package/dist/languages/sr-Cyrl.js +0 -3
  382. package/dist/languages/sr-Cyrl.js.map +0 -1
  383. package/dist/languages/sr-Latn.js +0 -3
  384. package/dist/languages/sr-Latn.js.map +0 -1
  385. package/dist/languages/sv.js +0 -3
  386. package/dist/languages/sv.js.map +0 -1
  387. package/dist/languages/sw.js +0 -3
  388. package/dist/languages/sw.js.map +0 -1
  389. package/dist/languages/ta.js +0 -3
  390. package/dist/languages/ta.js.map +0 -1
  391. package/dist/languages/te.js +0 -3
  392. package/dist/languages/te.js.map +0 -1
  393. package/dist/languages/th.js +0 -3
  394. package/dist/languages/th.js.map +0 -1
  395. package/dist/languages/tr.js +0 -3
  396. package/dist/languages/tr.js.map +0 -1
  397. package/dist/languages/uk.js +0 -3
  398. package/dist/languages/uk.js.map +0 -1
  399. package/dist/languages/ur.js +0 -3
  400. package/dist/languages/ur.js.map +0 -1
  401. package/dist/languages/vi.js +0 -3
  402. package/dist/languages/vi.js.map +0 -1
  403. package/dist/languages/yo.js +0 -3
  404. package/dist/languages/yo.js.map +0 -1
  405. package/dist/languages/zh-Hans.js +0 -3
  406. package/dist/languages/zh-Hans.js.map +0 -1
  407. package/dist/languages/zh-Hant.js +0 -3
  408. package/dist/languages/zh-Hant.js.map +0 -1
  409. package/dist/n2words.js +0 -3
  410. package/dist/n2words.js.map +0 -1
  411. package/lib/languages/am-Latn.d.ts +0 -7
  412. package/lib/languages/am-Latn.js +0 -159
  413. package/lib/languages/am.d.ts +0 -7
  414. package/lib/languages/am.js +0 -159
  415. package/lib/languages/ar.d.ts +0 -17
  416. package/lib/languages/az.d.ts +0 -7
  417. package/lib/languages/az.js +0 -171
  418. package/lib/languages/bn.d.ts +0 -7
  419. package/lib/languages/cs.d.ts +0 -18
  420. package/lib/languages/da.d.ts +0 -14
  421. package/lib/languages/de.d.ts +0 -17
  422. package/lib/languages/de.js +0 -320
  423. package/lib/languages/el.d.ts +0 -14
  424. package/lib/languages/el.js +0 -236
  425. package/lib/languages/en.d.ts +0 -17
  426. package/lib/languages/es.d.ts +0 -21
  427. package/lib/languages/fa.d.ts +0 -7
  428. package/lib/languages/fa.js +0 -134
  429. package/lib/languages/fi.d.ts +0 -14
  430. package/lib/languages/fil.d.ts +0 -7
  431. package/lib/languages/fr-BE.d.ts +0 -11
  432. package/lib/languages/fr.d.ts +0 -21
  433. package/lib/languages/gu.d.ts +0 -7
  434. package/lib/languages/ha.d.ts +0 -7
  435. package/lib/languages/hbo.d.ts +0 -13
  436. package/lib/languages/he.d.ts +0 -13
  437. package/lib/languages/he.js +0 -265
  438. package/lib/languages/hi.d.ts +0 -7
  439. package/lib/languages/hr.d.ts +0 -11
  440. package/lib/languages/hr.js +0 -224
  441. package/lib/languages/hu.d.ts +0 -7
  442. package/lib/languages/id.d.ts +0 -7
  443. package/lib/languages/it.d.ts +0 -19
  444. package/lib/languages/ja.d.ts +0 -17
  445. package/lib/languages/ka.d.ts +0 -17
  446. package/lib/languages/kn.d.ts +0 -7
  447. package/lib/languages/ko.d.ts +0 -14
  448. package/lib/languages/lt.d.ts +0 -18
  449. package/lib/languages/lt.js +0 -301
  450. package/lib/languages/lv.d.ts +0 -18
  451. package/lib/languages/lv.js +0 -312
  452. package/lib/languages/mr.d.ts +0 -7
  453. package/lib/languages/ms.d.ts +0 -7
  454. package/lib/languages/nb.d.ts +0 -14
  455. package/lib/languages/nl.d.ts +0 -26
  456. package/lib/languages/pa.d.ts +0 -7
  457. package/lib/languages/pl.d.ts +0 -22
  458. package/lib/languages/pl.js +0 -317
  459. package/lib/languages/pt.d.ts +0 -17
  460. package/lib/languages/ro.d.ts +0 -18
  461. package/lib/languages/ru.d.ts +0 -11
  462. package/lib/languages/ru.js +0 -245
  463. package/lib/languages/sr-Cyrl.d.ts +0 -11
  464. package/lib/languages/sr-Cyrl.js +0 -221
  465. package/lib/languages/sr-Latn.d.ts +0 -11
  466. package/lib/languages/sr-Latn.js +0 -221
  467. package/lib/languages/sv.d.ts +0 -14
  468. package/lib/languages/sw.d.ts +0 -7
  469. package/lib/languages/ta.d.ts +0 -7
  470. package/lib/languages/te.d.ts +0 -7
  471. package/lib/languages/th.d.ts +0 -7
  472. package/lib/languages/tr.d.ts +0 -18
  473. package/lib/languages/uk.d.ts +0 -11
  474. package/lib/languages/uk.js +0 -224
  475. package/lib/languages/ur.d.ts +0 -7
  476. package/lib/languages/vi.d.ts +0 -17
  477. package/lib/languages/yo.d.ts +0 -7
  478. package/lib/languages/zh-Hans.d.ts +0 -11
  479. package/lib/languages/zh-Hant.d.ts +0 -11
  480. package/lib/n2words.d.ts +0 -55
  481. package/lib/n2words.js +0 -126
  482. package/lib/utils/parse-numeric.d.ts +0 -17
  483. /package/{lib → src}/utils/is-plain-object.d.ts +0 -0
  484. /package/{lib → src}/utils/is-plain-object.js +0 -0
  485. /package/{lib → src}/utils/validate-options.d.ts +0 -0
  486. /package/{lib → src}/utils/validate-options.js +0 -0
package/src/lt-LT.js ADDED
@@ -0,0 +1,543 @@
1
+ /**
2
+ * Lithuanian (Lithuania) language converter
3
+ *
4
+ * CLDR: lt-LT | Lithuanian as used in Lithuania
5
+ *
6
+ * Key features:
7
+ * - Three-form pluralization (singular/plural/genitive)
8
+ * - Gender agreement (masculine/feminine for numbers < 1000)
9
+ * - Two-form hundreds (šimtas/šimtai)
10
+ * - Long scale naming
11
+ */
12
+
13
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
14
+ import { parseCurrencyValue } from './utils/parse-currency.js'
15
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
16
+ import { validateOptions } from './utils/validate-options.js'
17
+
18
+ // ============================================================================
19
+ // Vocabulary (module-level constants)
20
+ // ============================================================================
21
+
22
+ const ONES_MASC = ['', 'vienas', 'du', 'trys', 'keturi', 'penki', 'šeši', 'septyni', 'aštuoni', 'devyni']
23
+ const ONES_FEM = ['', 'viena', 'dvi', 'trys', 'keturios', 'penkios', 'šešios', 'septynios', 'aštuonios', 'devynios']
24
+
25
+ const TEENS = ['dešimt', 'vienuolika', 'dvylika', 'trylika', 'keturiolika', 'penkiolika', 'šešiolika', 'septyniolika', 'aštuoniolika', 'devyniolika']
26
+ const TENS = ['', '', 'dvidešimt', 'trisdešimt', 'keturiasdešimt', 'penkiasdešimt', 'šešiasdešimt', 'septyniasdešimt', 'aštuoniasdešimt', 'devyniasdešimt']
27
+
28
+ // Hundreds: šimtas (singular), šimtai (plural)
29
+ const HUNDRED_SINGULAR = 'šimtas'
30
+ const HUNDRED_PLURAL = 'šimtai'
31
+
32
+ const ZERO = 'nulis'
33
+ const NEGATIVE = 'minus'
34
+ const DECIMAL_SEP = 'kablelis'
35
+
36
+ // ============================================================================
37
+ // Ordinal Vocabulary
38
+ // ============================================================================
39
+
40
+ // Lithuanian ordinals (masculine nominative singular)
41
+ const ORDINAL_ONES = ['', 'pirmas', 'antras', 'trečias', 'ketvirtas', 'penktas', 'šeštas', 'septintas', 'aštuntas', 'devintas']
42
+
43
+ // Ordinal teens
44
+ const ORDINAL_TEENS = ['dešimtas', 'vienuoliktas', 'dvyliktas', 'tryliktas', 'keturioliktas', 'penkioliktas', 'šešioliktas', 'septynioliktas', 'aštuonioliktas', 'devynioliktas']
45
+
46
+ // Ordinal tens
47
+ const ORDINAL_TENS = ['', '', 'dvidešimtas', 'trisdešimtas', 'keturiasdešimtas', 'penkiasdešimtas', 'šešiasdešimtas', 'septyniasdešimtas', 'aštuoniasdešimtas', 'devyniasdešimtas']
48
+
49
+ // Ordinal hundreds
50
+ const ORDINAL_HUNDREDS = ['', 'šimtasis', 'dviejų šimtasis', 'trijų šimtasis', 'keturių šimtasis', 'penkių šimtasis', 'šešių šimtasis', 'septynių šimtasis', 'aštuonių šimtasis', 'devynių šimtasis']
51
+
52
+ // Scale ordinals
53
+ const ORDINAL_SCALES = ['tūkstantasis', 'milijonasis', 'milijardasis', 'trilijonasis']
54
+
55
+ // ============================================================================
56
+ // Currency Vocabulary (Euro - Lithuania uses Euro since 2015)
57
+ // ============================================================================
58
+
59
+ // Euro forms: [singular, plural, genitive]
60
+ const EURO_FORMS = ['euras', 'eurai', 'eurų']
61
+ // Cent forms: [singular, plural, genitive]
62
+ const CENT_FORMS = ['centas', 'centai', 'centų']
63
+
64
+ // Scale words: [singular, plural, genitive]
65
+ const SCALE_FORMS = [
66
+ ['tūkstantis', 'tūkstančiai', 'tūkstančių'],
67
+ ['milijonas', 'milijonai', 'milijonų'],
68
+ ['milijardas', 'milijardai', 'milijardų'],
69
+ ['trilijonas', 'trilijonai', 'trilijonų'],
70
+ ['kvadrilijonas', 'kvadrilijonai', 'kvadrilijonų'],
71
+ ['kvintilijonas', 'kvintilijonai', 'kvintilijonų'],
72
+ ['sikstilijonas', 'sikstilijonai', 'sikstilijonų'],
73
+ ['septilijonas', 'septilijonai', 'septilijonų'],
74
+ ['oktilijonas', 'oktilijonai', 'oktilijonų']
75
+ ]
76
+
77
+ // ============================================================================
78
+ // Segment Building
79
+ // ============================================================================
80
+
81
+ /**
82
+ * Builds segment word for 0-999 (masculine form).
83
+ */
84
+ function buildSegment (n) {
85
+ if (n === 0) return ''
86
+
87
+ const ones = n % 10
88
+ const tens = Math.trunc(n / 10) % 10
89
+ const hundreds = Math.trunc(n / 100)
90
+
91
+ const parts = []
92
+
93
+ // Hundreds - Lithuanian always includes the numeral
94
+ if (hundreds > 0) {
95
+ parts.push(ONES_MASC[hundreds])
96
+ parts.push(hundreds === 1 ? HUNDRED_SINGULAR : HUNDRED_PLURAL)
97
+ }
98
+
99
+ // Tens
100
+ if (tens > 1) {
101
+ parts.push(TENS[tens])
102
+ }
103
+
104
+ // Teens or ones
105
+ if (tens === 1) {
106
+ parts.push(TEENS[ones])
107
+ } else if (ones > 0) {
108
+ parts.push(ONES_MASC[ones])
109
+ }
110
+
111
+ return parts.join(' ')
112
+ }
113
+
114
+ /**
115
+ * Builds segment word for 0-999 (feminine form - only differs in ones).
116
+ */
117
+ function buildSegmentFeminine (n) {
118
+ if (n === 0) return ''
119
+
120
+ const ones = n % 10
121
+ const tens = Math.trunc(n / 10) % 10
122
+ const hundreds = Math.trunc(n / 100)
123
+
124
+ const parts = []
125
+
126
+ // Hundreds - always masculine
127
+ if (hundreds > 0) {
128
+ parts.push(ONES_MASC[hundreds])
129
+ parts.push(hundreds === 1 ? HUNDRED_SINGULAR : HUNDRED_PLURAL)
130
+ }
131
+
132
+ // Tens
133
+ if (tens > 1) {
134
+ parts.push(TENS[tens])
135
+ }
136
+
137
+ // Teens or ones - feminine for ones only
138
+ if (tens === 1) {
139
+ parts.push(TEENS[ones])
140
+ } else if (ones > 0) {
141
+ parts.push(ONES_FEM[ones])
142
+ }
143
+
144
+ return parts.join(' ')
145
+ }
146
+
147
+ // ============================================================================
148
+ // Pluralization
149
+ // ============================================================================
150
+
151
+ /**
152
+ * Lithuanian pluralization rules.
153
+ * - Singular: ends in 1 (except 11)
154
+ * - Plural: ends in 2-9 (except 12-19)
155
+ * - Genitive: 0, 10-19, or ends in 0
156
+ *
157
+ * @param {number} n - The segment value
158
+ * @param {string[]} forms - [singular, plural, genitive]
159
+ * @returns {string} The appropriate form
160
+ */
161
+ function pluralize (n, forms) {
162
+ if (n === 0) return forms[2]
163
+
164
+ const lastDigit = n % 10
165
+ const lastTwoDigits = n % 100
166
+
167
+ // 10-19 always use genitive
168
+ if (lastTwoDigits >= 10 && lastTwoDigits <= 19) {
169
+ return forms[2]
170
+ }
171
+
172
+ // Ends in 0 → genitive
173
+ if (lastDigit === 0) {
174
+ return forms[2]
175
+ }
176
+
177
+ // Ends in 1 → singular
178
+ if (lastDigit === 1) {
179
+ return forms[0]
180
+ }
181
+
182
+ // Ends in 2-9 → plural
183
+ return forms[1]
184
+ }
185
+
186
+ // ============================================================================
187
+ // Conversion Functions
188
+ // ============================================================================
189
+
190
+ /**
191
+ * Converts a non-negative integer to Lithuanian words.
192
+ *
193
+ * @param {bigint} n - Non-negative integer to convert
194
+ * @param {Object} options - Conversion options
195
+ * @returns {string} Lithuanian words
196
+ */
197
+ function integerToWords (n, gender) {
198
+ if (n === 0n) return ZERO
199
+
200
+ // Fast path: numbers < 1000
201
+ if (n < 1000n) {
202
+ const num = Number(n)
203
+ return gender === 'feminine' ? buildSegmentFeminine(num) : buildSegment(num)
204
+ }
205
+
206
+ // For numbers >= 1000, feminine only applies to final segment if < 1000
207
+ // But the fixture shows feminine NOT applying for n >= 1000
208
+ // So we use masculine for all segments when n >= 1000
209
+ return buildLargeNumberWords(n, gender)
210
+ }
211
+
212
+ /**
213
+ * Builds words for numbers >= 1000.
214
+ *
215
+ * @param {bigint} n - Number >= 1000
216
+ * @param {Object} options - Conversion options
217
+ * @returns {string} Lithuanian words
218
+ */
219
+ function buildLargeNumberWords (n, gender) {
220
+ const numStr = n.toString()
221
+ const len = numStr.length
222
+
223
+ // Build segments of 3 digits from right to left
224
+ const segments = []
225
+ const segmentSize = 3
226
+
227
+ const remainderLen = len % segmentSize
228
+ let pos = 0
229
+ if (remainderLen > 0) {
230
+ segments.push(Number(numStr.slice(0, remainderLen)))
231
+ pos = remainderLen
232
+ }
233
+ while (pos < len) {
234
+ segments.push(Number(numStr.slice(pos, pos + segmentSize)))
235
+ pos += segmentSize
236
+ }
237
+
238
+ // Convert segments to words
239
+ const parts = []
240
+ let scaleIndex = segments.length - 1
241
+
242
+ for (let i = 0; i < segments.length; i++) {
243
+ const segment = segments[i]
244
+
245
+ if (segment !== 0) {
246
+ const segmentWord = buildSegment(segment)
247
+
248
+ if (scaleIndex === 0) {
249
+ // Units segment - use masculine (feminine doesn't apply when n >= 1000)
250
+ parts.push(segmentWord)
251
+ } else {
252
+ // Segment with scale word
253
+ const scaleForms = SCALE_FORMS[scaleIndex - 1]
254
+ const scaleWord = pluralize(segment, scaleForms)
255
+ parts.push(segmentWord + ' ' + scaleWord)
256
+ }
257
+ }
258
+
259
+ scaleIndex--
260
+ }
261
+
262
+ return parts.join(' ')
263
+ }
264
+
265
+ /**
266
+ * Converts decimal digits to Lithuanian words.
267
+ *
268
+ * @param {string} decimalPart - Decimal digits (without the point)
269
+ * @param {Object} options - Conversion options
270
+ * @returns {string} Lithuanian words for decimal part
271
+ */
272
+ function decimalPartToWords (decimalPart, gender) {
273
+ let result = ''
274
+
275
+ // Handle leading zeros
276
+ let i = 0
277
+ while (i < decimalPart.length && decimalPart[i] === '0') {
278
+ if (result) result += ' '
279
+ result += ZERO
280
+ i++
281
+ }
282
+
283
+ // Convert remainder as a single number
284
+ const remainder = decimalPart.slice(i)
285
+ if (remainder) {
286
+ if (result) result += ' '
287
+ result += integerToWords(BigInt(remainder), gender)
288
+ }
289
+
290
+ return result
291
+ }
292
+
293
+ /**
294
+ * Converts a numeric value to Lithuanian words.
295
+ *
296
+ * @param {number | string | bigint} value - The numeric value to convert
297
+ * @param {Object} [options] - Conversion options
298
+ * @param {string} [options.gender='masculine'] - Gender for numbers < 1000
299
+ * @returns {string} The number in Lithuanian words
300
+ * @throws {TypeError} If value is not a valid numeric type
301
+ * @throws {Error} If value is not a valid number format
302
+ *
303
+ * @example
304
+ * toCardinal(42) // 'keturiasdešimt du'
305
+ * toCardinal(1, { gender: 'feminine' }) // 'viena'
306
+ * toCardinal(1000000) // 'vienas milijonas'
307
+ */
308
+ function toCardinal (value, options) {
309
+ options = validateOptions(options)
310
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
311
+
312
+ // Apply option defaults
313
+ const { gender = 'masculine' } = options
314
+
315
+ let result = ''
316
+
317
+ if (isNegative) {
318
+ result = NEGATIVE + ' '
319
+ }
320
+
321
+ result += integerToWords(integerPart, gender)
322
+
323
+ if (decimalPart) {
324
+ result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart, gender)
325
+ }
326
+
327
+ return result
328
+ }
329
+
330
+ // ============================================================================
331
+ // ORDINAL: toOrdinal(value)
332
+ // ============================================================================
333
+
334
+ /**
335
+ * Builds ordinal for a 0-99 segment when it's the final (ordinal) part.
336
+ *
337
+ * @param {number} n - Number 0-99
338
+ * @returns {string} Ordinal words
339
+ */
340
+ function buildOrdinalTensOnes (n) {
341
+ if (n === 0) return ''
342
+
343
+ const onesDigit = n % 10
344
+ const tensDigit = Math.trunc(n / 10)
345
+
346
+ if (tensDigit === 0) {
347
+ return ORDINAL_ONES[onesDigit]
348
+ }
349
+
350
+ if (tensDigit === 1) {
351
+ return ORDINAL_TEENS[onesDigit]
352
+ }
353
+
354
+ if (onesDigit === 0) {
355
+ return ORDINAL_TENS[tensDigit]
356
+ }
357
+
358
+ return TENS[tensDigit] + ' ' + ORDINAL_ONES[onesDigit]
359
+ }
360
+
361
+ /**
362
+ * Converts a positive integer to Lithuanian ordinal words (masculine nominative).
363
+ *
364
+ * @param {bigint} n - Positive integer to convert
365
+ * @returns {string} Ordinal Lithuanian words
366
+ */
367
+ function integerToOrdinal (n) {
368
+ if (n < 100n) {
369
+ return buildOrdinalTensOnes(Number(n))
370
+ }
371
+
372
+ if (n < 1000n) {
373
+ const num = Number(n)
374
+ const hundredsDigit = Math.trunc(num / 100)
375
+ const remainder = num % 100
376
+
377
+ if (remainder === 0) {
378
+ return ORDINAL_HUNDREDS[hundredsDigit]
379
+ }
380
+
381
+ // Cardinal hundreds + ordinal remainder
382
+ const hundredWord = ONES_MASC[hundredsDigit] + ' ' + (hundredsDigit === 1 ? HUNDRED_SINGULAR : HUNDRED_PLURAL)
383
+ return hundredWord + ' ' + buildOrdinalTensOnes(remainder)
384
+ }
385
+
386
+ if (n < 1_000_000n) {
387
+ const thousands = Number(n / 1000n)
388
+ const remainder = Number(n % 1000n)
389
+
390
+ if (remainder === 0) {
391
+ if (thousands === 1) {
392
+ return ORDINAL_SCALES[0]
393
+ }
394
+ // For 2000+, include cardinal scale word before ordinal
395
+ const scaleWord = pluralize(thousands, SCALE_FORMS[0])
396
+ return buildSegment(thousands) + ' ' + scaleWord + ' ' + ORDINAL_SCALES[0]
397
+ }
398
+
399
+ const scaleWord = pluralize(thousands, SCALE_FORMS[0])
400
+ const thousandsWord = buildSegment(thousands)
401
+ return thousandsWord + ' ' + scaleWord + ' ' + integerToOrdinal(BigInt(remainder))
402
+ }
403
+
404
+ return buildLargeOrdinal(n)
405
+ }
406
+
407
+ /**
408
+ * Builds ordinal words for numbers >= 1,000,000.
409
+ *
410
+ * @param {bigint} n - Number >= 1,000,000
411
+ * @returns {string} Ordinal Lithuanian words
412
+ */
413
+ function buildLargeOrdinal (n) {
414
+ const numStr = n.toString()
415
+ const len = numStr.length
416
+
417
+ const segments = []
418
+ const segmentSize = 3
419
+
420
+ const remainderLen = len % segmentSize
421
+ let pos = 0
422
+ if (remainderLen > 0) {
423
+ segments.push(Number(numStr.slice(0, remainderLen)))
424
+ pos = remainderLen
425
+ }
426
+ while (pos < len) {
427
+ segments.push(Number(numStr.slice(pos, pos + segmentSize)))
428
+ pos += segmentSize
429
+ }
430
+
431
+ let lastNonZeroIdx = segments.length - 1
432
+ while (lastNonZeroIdx >= 0 && segments[lastNonZeroIdx] === 0) {
433
+ lastNonZeroIdx--
434
+ }
435
+
436
+ const parts = []
437
+ let scaleIndex = segments.length - 1
438
+
439
+ for (let i = 0; i < segments.length; i++) {
440
+ const segment = segments[i]
441
+
442
+ if (segment !== 0) {
443
+ const isLastNonZero = (i === lastNonZeroIdx)
444
+
445
+ if (scaleIndex === 0) {
446
+ if (isLastNonZero) {
447
+ parts.push(integerToOrdinal(BigInt(segment)))
448
+ } else {
449
+ parts.push(buildSegment(segment))
450
+ }
451
+ } else {
452
+ if (isLastNonZero) {
453
+ if (segment === 1) {
454
+ parts.push(ORDINAL_SCALES[scaleIndex - 1])
455
+ } else {
456
+ // For 2+, include cardinal scale word before ordinal
457
+ const scaleForms = SCALE_FORMS[scaleIndex - 1]
458
+ const cardinalScaleWord = pluralize(segment, scaleForms)
459
+ parts.push(buildSegment(segment) + ' ' + cardinalScaleWord + ' ' + ORDINAL_SCALES[scaleIndex - 1])
460
+ }
461
+ } else {
462
+ const scaleForms = SCALE_FORMS[scaleIndex - 1]
463
+ const scaleWord = pluralize(segment, scaleForms)
464
+ parts.push(buildSegment(segment) + ' ' + scaleWord)
465
+ }
466
+ }
467
+ }
468
+
469
+ scaleIndex--
470
+ }
471
+
472
+ return parts.join(' ')
473
+ }
474
+
475
+ /**
476
+ * Converts a numeric value to Lithuanian ordinal words (masculine nominative).
477
+ *
478
+ * @param {number | string | bigint} value - The numeric value to convert (must be a positive integer)
479
+ * @returns {string} The number as ordinal words
480
+ * @throws {TypeError} If value is not a valid numeric type
481
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
482
+ *
483
+ * @example
484
+ * toOrdinal(1) // 'pirmas'
485
+ * toOrdinal(2) // 'antras'
486
+ * toOrdinal(21) // 'dvidešimt pirmas'
487
+ * toOrdinal(100) // 'šimtasis'
488
+ * toOrdinal(1000) // 'tūkstantasis'
489
+ */
490
+ function toOrdinal (value) {
491
+ const integerPart = parseOrdinalValue(value)
492
+ return integerToOrdinal(integerPart)
493
+ }
494
+
495
+ // ============================================================================
496
+ // CURRENCY: toCurrency(value)
497
+ // ============================================================================
498
+
499
+ /**
500
+ * Converts a numeric value to Lithuanian currency words (Euro).
501
+ *
502
+ * @param {number | string | bigint} value - The currency amount to convert
503
+ * @returns {string} The amount in Lithuanian currency words
504
+ * @throws {TypeError} If value is not a valid numeric type
505
+ * @throws {Error} If value is not a valid number format
506
+ *
507
+ * @example
508
+ * toCurrency(42) // 'keturiasdešimt du eurai'
509
+ * toCurrency(1) // 'vienas euras'
510
+ * toCurrency(1.50) // 'vienas euras penkiasdešimt centų'
511
+ * toCurrency(-5) // 'minus penki eurai'
512
+ */
513
+ function toCurrency (value) {
514
+ const { isNegative, dollars: euros, cents } = parseCurrencyValue(value)
515
+
516
+ let result = ''
517
+ if (isNegative) {
518
+ result = NEGATIVE + ' '
519
+ }
520
+
521
+ // Euro part (masculine)
522
+ if (euros > 0n || cents === 0n) {
523
+ result += integerToWords(euros, 'masculine')
524
+ result += ' ' + pluralize(Number(euros), EURO_FORMS)
525
+ }
526
+
527
+ // Cent part (masculine)
528
+ if (cents > 0n) {
529
+ if (euros > 0n) {
530
+ result += ' '
531
+ }
532
+ result += integerToWords(cents, 'masculine')
533
+ result += ' ' + pluralize(Number(cents), CENT_FORMS)
534
+ }
535
+
536
+ return result
537
+ }
538
+
539
+ // ============================================================================
540
+ // Public API
541
+ // ============================================================================
542
+
543
+ export { toCardinal, toOrdinal, toCurrency }
package/src/lv-LV.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Converts a numeric value to Latvian words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @param {Object} [options] - Conversion options
6
+ * @param {string} [options.gender='masculine'] - Gender for numbers < 1000
7
+ * @returns {string} The number in Latvian words
8
+ * @throws {TypeError} If value is not a valid numeric type
9
+ * @throws {Error} If value is not a valid number format
10
+ *
11
+ * @example
12
+ * toCardinal(42) // 'četrdesmit divi'
13
+ * toCardinal(1, { gender: 'feminine' }) // 'viena'
14
+ * toCardinal(1000) // 'tūkstotis'
15
+ */
16
+ export function toCardinal(value: number | string | bigint, options?: {
17
+ gender?: string | undefined;
18
+ }): string;
19
+ /**
20
+ * Converts a numeric value to Latvian ordinal words (masculine nominative).
21
+ *
22
+ * @param {number | string | bigint} value - The numeric value to convert (must be a positive integer)
23
+ * @returns {string} The number as ordinal words
24
+ * @throws {TypeError} If value is not a valid numeric type
25
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
26
+ *
27
+ * @example
28
+ * toOrdinal(1) // 'pirmais'
29
+ * toOrdinal(2) // 'otrais'
30
+ * toOrdinal(21) // 'divdesmit pirmais'
31
+ * toOrdinal(100) // 'simtais'
32
+ * toOrdinal(1000) // 'tūkstošais'
33
+ */
34
+ export function toOrdinal(value: number | string | bigint): string;
35
+ /**
36
+ * Converts a numeric value to Latvian currency words (Euro).
37
+ *
38
+ * @param {number | string | bigint} value - The currency amount to convert
39
+ * @returns {string} The amount in Latvian currency words
40
+ * @throws {TypeError} If value is not a valid numeric type
41
+ * @throws {Error} If value is not a valid number format
42
+ *
43
+ * @example
44
+ * toCurrency(42) // 'četrdesmit divi eiro'
45
+ * toCurrency(1) // 'viens eiro'
46
+ * toCurrency(1.50) // 'viens eiro piecdesmit centu'
47
+ * toCurrency(-5) // 'mīnus pieci eiro'
48
+ */
49
+ export function toCurrency(value: number | string | bigint): string;