n2words 3.0.0 → 4.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 (488) hide show
  1. package/CHANGELOG.md +59 -0
  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-PT.js +2 -0
  113. package/dist/pt-PT.umd.js +2 -0
  114. package/dist/ro-RO.js +2 -0
  115. package/dist/ro-RO.umd.js +2 -0
  116. package/dist/ru-RU.js +2 -0
  117. package/dist/ru-RU.umd.js +2 -0
  118. package/dist/sr-Cyrl-RS.js +2 -0
  119. package/dist/sr-Cyrl-RS.umd.js +2 -0
  120. package/dist/sr-Latn-RS.js +2 -0
  121. package/dist/sr-Latn-RS.umd.js +2 -0
  122. package/dist/sv-SE.js +2 -0
  123. package/dist/sv-SE.umd.js +2 -0
  124. package/dist/sw-KE.js +2 -0
  125. package/dist/sw-KE.umd.js +2 -0
  126. package/dist/ta-IN.js +2 -0
  127. package/dist/ta-IN.umd.js +2 -0
  128. package/dist/te-IN.js +2 -0
  129. package/dist/te-IN.umd.js +2 -0
  130. package/dist/th-TH.js +2 -0
  131. package/dist/th-TH.umd.js +2 -0
  132. package/dist/tr-TR.js +2 -0
  133. package/dist/tr-TR.umd.js +2 -0
  134. package/dist/uk-UA.js +2 -0
  135. package/dist/uk-UA.umd.js +2 -0
  136. package/dist/ur-PK.js +2 -0
  137. package/dist/ur-PK.umd.js +2 -0
  138. package/dist/vi-VN.js +2 -0
  139. package/dist/vi-VN.umd.js +2 -0
  140. package/dist/yo-NG.js +2 -0
  141. package/dist/yo-NG.umd.js +2 -0
  142. package/dist/zh-Hans-CN.js +2 -0
  143. package/dist/zh-Hans-CN.umd.js +2 -0
  144. package/dist/zh-Hant-TW.js +2 -0
  145. package/dist/zh-Hant-TW.umd.js +2 -0
  146. package/package.json +47 -82
  147. package/src/am-ET.d.ts +40 -0
  148. package/src/am-ET.js +269 -0
  149. package/src/am-Latn-ET.d.ts +35 -0
  150. package/src/am-Latn-ET.js +264 -0
  151. package/src/ar-SA.d.ts +49 -0
  152. package/{lib/languages/ar.js → src/ar-SA.js} +177 -15
  153. package/src/az-AZ.d.ts +37 -0
  154. package/src/az-AZ.js +312 -0
  155. package/src/bn-BD.d.ts +36 -0
  156. package/src/bn-BD.js +270 -0
  157. package/src/cs-CZ.d.ts +49 -0
  158. package/{lib/languages/cs.js → src/cs-CZ.js} +249 -40
  159. package/src/da-DK.d.ts +44 -0
  160. package/{lib/languages/da.js → src/da-DK.js} +136 -23
  161. package/src/de-DE.d.ts +57 -0
  162. package/src/de-DE.js +603 -0
  163. package/src/el-GR.d.ts +40 -0
  164. package/src/el-GR.js +418 -0
  165. package/src/en-AU.d.ts +47 -0
  166. package/src/en-AU.js +423 -0
  167. package/src/en-BD.d.ts +49 -0
  168. package/src/en-BD.js +415 -0
  169. package/src/en-CA.d.ts +63 -0
  170. package/src/en-CA.js +518 -0
  171. package/src/en-GB.d.ts +56 -0
  172. package/src/en-GB.js +469 -0
  173. package/src/en-GH.d.ts +11 -0
  174. package/src/en-GH.js +345 -0
  175. package/src/en-IE.d.ts +56 -0
  176. package/src/en-IE.js +479 -0
  177. package/src/en-IN.d.ts +49 -0
  178. package/src/en-IN.js +415 -0
  179. package/src/en-KE.d.ts +11 -0
  180. package/src/en-KE.js +345 -0
  181. package/src/en-MY.d.ts +11 -0
  182. package/src/en-MY.js +347 -0
  183. package/src/en-NG.d.ts +56 -0
  184. package/src/en-NG.js +479 -0
  185. package/src/en-NZ.d.ts +11 -0
  186. package/src/en-NZ.js +375 -0
  187. package/src/en-PH.d.ts +11 -0
  188. package/src/en-PH.js +345 -0
  189. package/src/en-PK.d.ts +49 -0
  190. package/src/en-PK.js +415 -0
  191. package/src/en-SG.d.ts +11 -0
  192. package/src/en-SG.js +345 -0
  193. package/src/en-US.d.ts +63 -0
  194. package/src/en-US.js +516 -0
  195. package/src/en-ZA.d.ts +56 -0
  196. package/src/en-ZA.js +478 -0
  197. package/src/es-ES.d.ts +65 -0
  198. package/src/es-ES.js +541 -0
  199. package/src/es-MX.d.ts +58 -0
  200. package/{lib/languages/es.js → src/es-MX.js} +237 -47
  201. package/src/es-US.d.ts +58 -0
  202. package/src/es-US.js +446 -0
  203. package/src/fa-IR.d.ts +38 -0
  204. package/src/fa-IR.js +246 -0
  205. package/src/fi-FI.d.ts +46 -0
  206. package/src/fi-FI.js +379 -0
  207. package/src/fil-PH.d.ts +37 -0
  208. package/{lib/languages/fil.js → src/fil-PH.js} +149 -24
  209. package/src/fr-BE.d.ts +49 -0
  210. package/src/fr-BE.js +453 -0
  211. package/src/fr-FR.d.ts +63 -0
  212. package/{lib/languages/fr.js → src/fr-FR.js} +200 -47
  213. package/src/gu-IN.d.ts +35 -0
  214. package/src/gu-IN.js +259 -0
  215. package/src/ha-NG.d.ts +37 -0
  216. package/{lib/languages/ha.js → src/ha-NG.js} +110 -16
  217. package/src/hbo-IL.d.ts +39 -0
  218. package/{lib/languages/hbo.js → src/hbo-IL.js} +217 -43
  219. package/src/he-IL.d.ts +37 -0
  220. package/src/he-IL.js +537 -0
  221. package/src/hi-IN.d.ts +36 -0
  222. package/src/hi-IN.js +280 -0
  223. package/src/hr-HR.d.ts +42 -0
  224. package/src/hr-HR.js +463 -0
  225. package/src/hu-HU.d.ts +38 -0
  226. package/{lib/languages/hu.js → src/hu-HU.js} +164 -6
  227. package/src/id-ID.d.ts +38 -0
  228. package/{lib/languages/id.js → src/id-ID.js} +106 -20
  229. package/src/it-IT.d.ts +59 -0
  230. package/src/it-IT.js +506 -0
  231. package/src/ja-JP.d.ts +49 -0
  232. package/{lib/languages/ja.js → src/ja-JP.js} +119 -32
  233. package/src/ka-GE.d.ts +44 -0
  234. package/src/ka-GE.js +393 -0
  235. package/src/kn-IN.d.ts +35 -0
  236. package/{lib/languages/kn.js → src/kn-IN.js} +156 -34
  237. package/src/ko-KR.d.ts +45 -0
  238. package/{lib/languages/ko.js → src/ko-KR.js} +99 -24
  239. package/src/lt-LT.d.ts +49 -0
  240. package/src/lt-LT.js +543 -0
  241. package/src/lv-LV.d.ts +49 -0
  242. package/src/lv-LV.js +595 -0
  243. package/src/mr-IN.d.ts +36 -0
  244. package/src/mr-IN.js +260 -0
  245. package/src/ms-MY.d.ts +37 -0
  246. package/{lib/languages/ms.js → src/ms-MY.js} +118 -20
  247. package/src/nb-NO.d.ts +44 -0
  248. package/{lib/languages/nb.js → src/nb-NO.js} +165 -33
  249. package/src/nl-NL.d.ts +54 -0
  250. package/{lib/languages/nl.js → src/nl-NL.js} +271 -47
  251. package/src/pa-IN.d.ts +36 -0
  252. package/src/pa-IN.js +268 -0
  253. package/src/pl-PL.d.ts +55 -0
  254. package/src/pl-PL.js +585 -0
  255. package/src/pt-PT.d.ts +45 -0
  256. package/src/pt-PT.js +514 -0
  257. package/src/ro-RO.d.ts +44 -0
  258. package/{lib/languages/ro.js → src/ro-RO.js} +212 -18
  259. package/src/ru-RU.d.ts +50 -0
  260. package/src/ru-RU.js +535 -0
  261. package/src/sr-Cyrl-RS.d.ts +49 -0
  262. package/src/sr-Cyrl-RS.js +503 -0
  263. package/src/sr-Latn-RS.d.ts +49 -0
  264. package/src/sr-Latn-RS.js +503 -0
  265. package/src/sv-SE.d.ts +44 -0
  266. package/{lib/languages/sv.js → src/sv-SE.js} +149 -34
  267. package/src/sw-KE.d.ts +37 -0
  268. package/{lib/languages/sw.js → src/sw-KE.js} +117 -6
  269. package/src/ta-IN.d.ts +35 -0
  270. package/{lib/languages/ta.js → src/ta-IN.js} +163 -47
  271. package/src/te-IN.d.ts +35 -0
  272. package/{lib/languages/te.js → src/te-IN.js} +147 -46
  273. package/src/th-TH.d.ts +38 -0
  274. package/{lib/languages/th.js → src/th-TH.js} +99 -6
  275. package/src/tr-TR.d.ts +48 -0
  276. package/src/tr-TR.js +397 -0
  277. package/src/uk-UA.d.ts +42 -0
  278. package/src/uk-UA.js +463 -0
  279. package/src/ur-PK.d.ts +36 -0
  280. package/src/ur-PK.js +268 -0
  281. package/src/utils/expand-scientific.d.ts +32 -0
  282. package/src/utils/expand-scientific.js +65 -0
  283. package/src/utils/parse-cardinal.d.ts +14 -0
  284. package/{lib/utils/parse-numeric.js → src/utils/parse-cardinal.js} +14 -44
  285. package/src/utils/parse-currency.d.ts +14 -0
  286. package/src/utils/parse-currency.js +91 -0
  287. package/src/utils/parse-ordinal.d.ts +10 -0
  288. package/src/utils/parse-ordinal.js +103 -0
  289. package/src/vi-VN.d.ts +48 -0
  290. package/{lib/languages/vi.js → src/vi-VN.js} +124 -53
  291. package/src/yo-NG.d.ts +37 -0
  292. package/src/yo-NG.js +403 -0
  293. package/src/zh-Hans-CN.d.ts +48 -0
  294. package/{lib/languages/zh-Hans.js → src/zh-Hans-CN.js} +140 -8
  295. package/src/zh-Hant-TW.d.ts +50 -0
  296. package/{lib/languages/zh-Hant.js → src/zh-Hant-TW.js} +139 -8
  297. package/dist/languages/am-Latn.js +0 -3
  298. package/dist/languages/am-Latn.js.map +0 -1
  299. package/dist/languages/am.js +0 -3
  300. package/dist/languages/am.js.map +0 -1
  301. package/dist/languages/ar.js +0 -3
  302. package/dist/languages/ar.js.map +0 -1
  303. package/dist/languages/az.js +0 -3
  304. package/dist/languages/az.js.map +0 -1
  305. package/dist/languages/bn.js +0 -3
  306. package/dist/languages/bn.js.map +0 -1
  307. package/dist/languages/cs.js +0 -3
  308. package/dist/languages/cs.js.map +0 -1
  309. package/dist/languages/da.js +0 -3
  310. package/dist/languages/da.js.map +0 -1
  311. package/dist/languages/de.js +0 -3
  312. package/dist/languages/de.js.map +0 -1
  313. package/dist/languages/el.js +0 -3
  314. package/dist/languages/el.js.map +0 -1
  315. package/dist/languages/en.js +0 -3
  316. package/dist/languages/en.js.map +0 -1
  317. package/dist/languages/es.js +0 -3
  318. package/dist/languages/es.js.map +0 -1
  319. package/dist/languages/fa.js +0 -3
  320. package/dist/languages/fa.js.map +0 -1
  321. package/dist/languages/fi.js +0 -3
  322. package/dist/languages/fi.js.map +0 -1
  323. package/dist/languages/fil.js +0 -3
  324. package/dist/languages/fil.js.map +0 -1
  325. package/dist/languages/fr-BE.js +0 -3
  326. package/dist/languages/fr-BE.js.map +0 -1
  327. package/dist/languages/fr.js +0 -3
  328. package/dist/languages/fr.js.map +0 -1
  329. package/dist/languages/gu.js +0 -3
  330. package/dist/languages/gu.js.map +0 -1
  331. package/dist/languages/ha.js +0 -3
  332. package/dist/languages/ha.js.map +0 -1
  333. package/dist/languages/hbo.js +0 -3
  334. package/dist/languages/hbo.js.map +0 -1
  335. package/dist/languages/he.js +0 -3
  336. package/dist/languages/he.js.map +0 -1
  337. package/dist/languages/hi.js +0 -3
  338. package/dist/languages/hi.js.map +0 -1
  339. package/dist/languages/hr.js +0 -3
  340. package/dist/languages/hr.js.map +0 -1
  341. package/dist/languages/hu.js +0 -3
  342. package/dist/languages/hu.js.map +0 -1
  343. package/dist/languages/id.js +0 -3
  344. package/dist/languages/id.js.map +0 -1
  345. package/dist/languages/it.js +0 -3
  346. package/dist/languages/it.js.map +0 -1
  347. package/dist/languages/ja.js +0 -3
  348. package/dist/languages/ja.js.map +0 -1
  349. package/dist/languages/kn.js +0 -3
  350. package/dist/languages/kn.js.map +0 -1
  351. package/dist/languages/ko.js +0 -3
  352. package/dist/languages/ko.js.map +0 -1
  353. package/dist/languages/lt.js +0 -3
  354. package/dist/languages/lt.js.map +0 -1
  355. package/dist/languages/lv.js +0 -3
  356. package/dist/languages/lv.js.map +0 -1
  357. package/dist/languages/mr.js +0 -3
  358. package/dist/languages/mr.js.map +0 -1
  359. package/dist/languages/ms.js +0 -3
  360. package/dist/languages/ms.js.map +0 -1
  361. package/dist/languages/nb.js +0 -3
  362. package/dist/languages/nb.js.map +0 -1
  363. package/dist/languages/nl.js +0 -3
  364. package/dist/languages/nl.js.map +0 -1
  365. package/dist/languages/pa.js +0 -3
  366. package/dist/languages/pa.js.map +0 -1
  367. package/dist/languages/pl.js +0 -3
  368. package/dist/languages/pl.js.map +0 -1
  369. package/dist/languages/pt.js +0 -3
  370. package/dist/languages/pt.js.map +0 -1
  371. package/dist/languages/ro.js +0 -3
  372. package/dist/languages/ro.js.map +0 -1
  373. package/dist/languages/ru.js +0 -3
  374. package/dist/languages/ru.js.map +0 -1
  375. package/dist/languages/sr-Cyrl.js +0 -3
  376. package/dist/languages/sr-Cyrl.js.map +0 -1
  377. package/dist/languages/sr-Latn.js +0 -3
  378. package/dist/languages/sr-Latn.js.map +0 -1
  379. package/dist/languages/sv.js +0 -3
  380. package/dist/languages/sv.js.map +0 -1
  381. package/dist/languages/sw.js +0 -3
  382. package/dist/languages/sw.js.map +0 -1
  383. package/dist/languages/ta.js +0 -3
  384. package/dist/languages/ta.js.map +0 -1
  385. package/dist/languages/te.js +0 -3
  386. package/dist/languages/te.js.map +0 -1
  387. package/dist/languages/th.js +0 -3
  388. package/dist/languages/th.js.map +0 -1
  389. package/dist/languages/tr.js +0 -3
  390. package/dist/languages/tr.js.map +0 -1
  391. package/dist/languages/uk.js +0 -3
  392. package/dist/languages/uk.js.map +0 -1
  393. package/dist/languages/ur.js +0 -3
  394. package/dist/languages/ur.js.map +0 -1
  395. package/dist/languages/vi.js +0 -3
  396. package/dist/languages/vi.js.map +0 -1
  397. package/dist/languages/zh-Hans.js +0 -3
  398. package/dist/languages/zh-Hans.js.map +0 -1
  399. package/dist/languages/zh-Hant.js +0 -3
  400. package/dist/languages/zh-Hant.js.map +0 -1
  401. package/dist/n2words.js +0 -3
  402. package/dist/n2words.js.map +0 -1
  403. package/lib/languages/am-Latn.d.ts +0 -7
  404. package/lib/languages/am-Latn.js +0 -164
  405. package/lib/languages/am.d.ts +0 -7
  406. package/lib/languages/am.js +0 -164
  407. package/lib/languages/ar.d.ts +0 -17
  408. package/lib/languages/az.d.ts +0 -7
  409. package/lib/languages/az.js +0 -176
  410. package/lib/languages/bn.d.ts +0 -7
  411. package/lib/languages/bn.js +0 -145
  412. package/lib/languages/cs.d.ts +0 -18
  413. package/lib/languages/da.d.ts +0 -14
  414. package/lib/languages/de.d.ts +0 -17
  415. package/lib/languages/de.js +0 -332
  416. package/lib/languages/el.d.ts +0 -14
  417. package/lib/languages/el.js +0 -243
  418. package/lib/languages/en.d.ts +0 -17
  419. package/lib/languages/en.js +0 -256
  420. package/lib/languages/es.d.ts +0 -21
  421. package/lib/languages/fa.d.ts +0 -7
  422. package/lib/languages/fa.js +0 -134
  423. package/lib/languages/fi.d.ts +0 -14
  424. package/lib/languages/fi.js +0 -245
  425. package/lib/languages/fil.d.ts +0 -7
  426. package/lib/languages/fr-BE.d.ts +0 -11
  427. package/lib/languages/fr-BE.js +0 -300
  428. package/lib/languages/fr.d.ts +0 -21
  429. package/lib/languages/gu.d.ts +0 -7
  430. package/lib/languages/gu.js +0 -137
  431. package/lib/languages/ha.d.ts +0 -7
  432. package/lib/languages/hbo.d.ts +0 -13
  433. package/lib/languages/he.d.ts +0 -13
  434. package/lib/languages/he.js +0 -276
  435. package/lib/languages/hi.d.ts +0 -7
  436. package/lib/languages/hi.js +0 -145
  437. package/lib/languages/hr.d.ts +0 -11
  438. package/lib/languages/hr.js +0 -218
  439. package/lib/languages/hu.d.ts +0 -7
  440. package/lib/languages/id.d.ts +0 -7
  441. package/lib/languages/it.d.ts +0 -19
  442. package/lib/languages/it.js +0 -377
  443. package/lib/languages/ja.d.ts +0 -17
  444. package/lib/languages/kn.d.ts +0 -7
  445. package/lib/languages/ko.d.ts +0 -14
  446. package/lib/languages/lt.d.ts +0 -18
  447. package/lib/languages/lt.js +0 -310
  448. package/lib/languages/lv.d.ts +0 -18
  449. package/lib/languages/lv.js +0 -321
  450. package/lib/languages/mr.d.ts +0 -7
  451. package/lib/languages/mr.js +0 -137
  452. package/lib/languages/ms.d.ts +0 -7
  453. package/lib/languages/nb.d.ts +0 -14
  454. package/lib/languages/nl.d.ts +0 -26
  455. package/lib/languages/pa.d.ts +0 -7
  456. package/lib/languages/pa.js +0 -163
  457. package/lib/languages/pl.d.ts +0 -22
  458. package/lib/languages/pl.js +0 -330
  459. package/lib/languages/pt.d.ts +0 -17
  460. package/lib/languages/pt.js +0 -306
  461. package/lib/languages/ro.d.ts +0 -18
  462. package/lib/languages/ru.d.ts +0 -11
  463. package/lib/languages/ru.js +0 -240
  464. package/lib/languages/sr-Cyrl.d.ts +0 -11
  465. package/lib/languages/sr-Cyrl.js +0 -215
  466. package/lib/languages/sr-Latn.d.ts +0 -11
  467. package/lib/languages/sr-Latn.js +0 -215
  468. package/lib/languages/sv.d.ts +0 -14
  469. package/lib/languages/sw.d.ts +0 -7
  470. package/lib/languages/ta.d.ts +0 -7
  471. package/lib/languages/te.d.ts +0 -7
  472. package/lib/languages/th.d.ts +0 -7
  473. package/lib/languages/tr.d.ts +0 -18
  474. package/lib/languages/tr.js +0 -263
  475. package/lib/languages/uk.d.ts +0 -11
  476. package/lib/languages/uk.js +0 -218
  477. package/lib/languages/ur.d.ts +0 -7
  478. package/lib/languages/ur.js +0 -163
  479. package/lib/languages/vi.d.ts +0 -17
  480. package/lib/languages/zh-Hans.d.ts +0 -11
  481. package/lib/languages/zh-Hant.d.ts +0 -11
  482. package/lib/n2words.d.ts +0 -53
  483. package/lib/n2words.js +0 -122
  484. package/lib/utils/parse-numeric.d.ts +0 -17
  485. /package/{lib → src}/utils/is-plain-object.d.ts +0 -0
  486. /package/{lib → src}/utils/is-plain-object.js +0 -0
  487. /package/{lib → src}/utils/validate-options.d.ts +0 -0
  488. /package/{lib → src}/utils/validate-options.js +0 -0
package/src/kn-IN.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Converts a numeric value to Kannada words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Kannada words
6
+ */
7
+ export function toCardinal(value: number | string | bigint): string;
8
+ /**
9
+ * Converts a numeric value to Kannada ordinal words.
10
+ *
11
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
12
+ * @returns {string} The number as ordinal words
13
+ * @throws {TypeError} If value is not a valid numeric type
14
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
15
+ *
16
+ * @example
17
+ * toOrdinal(1) // 'ಮೊದಲನೇ'
18
+ * toOrdinal(2) // 'ಎರಡನೇ'
19
+ * toOrdinal(10) // 'ಹತ್ತುನೇ'
20
+ */
21
+ export function toOrdinal(value: number | string | bigint): string;
22
+ /**
23
+ * Converts a numeric value to Kannada currency words (Indian Rupee).
24
+ *
25
+ * @param {number | string | bigint} value - The currency amount to convert
26
+ * @returns {string} The amount in Kannada currency words
27
+ * @throws {TypeError} If value is not a valid numeric type
28
+ * @throws {Error} If value is not a valid number format
29
+ *
30
+ * @example
31
+ * toCurrency(42.50) // 'ನಲವತ್ತೆರಡು ರೂಪಾಯಿಗಳು ಐವತ್ತು ಪೈಸೆಗಳು'
32
+ * toCurrency(1) // 'ಒಂದು ರೂಪಾಯಿ'
33
+ * toCurrency(0.01) // 'ಒಂದು ಪೈಸೆ'
34
+ */
35
+ export function toCurrency(value: number | string | bigint): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Kannada language converter - Functional Implementation
2
+ * Kannada (India) language converter
3
3
  *
4
- * Self-contained converter for South Asian numbering.
4
+ * CLDR: kn-IN | Kannada as used in India
5
5
  *
6
6
  * Key features:
7
7
  * - Indian numbering system (ಸಾವಿರ, ಲಕ್ಷ, ಕೋಟಿ)
@@ -11,7 +11,9 @@
11
11
  * - Per-digit decimal reading
12
12
  */
13
13
 
14
- import { parseNumericValue } from '../utils/parse-numeric.js'
14
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
15
+ import { parseCurrencyValue } from './utils/parse-currency.js'
16
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
15
17
 
16
18
  // ============================================================================
17
19
  // Vocabulary
@@ -22,6 +24,28 @@ const NEGATIVE = 'ಋಣಾತ್ಮಕ'
22
24
  const DECIMAL_SEP = 'ದಶಮಾಂಶ'
23
25
  const HUNDRED = 'ನೂರು'
24
26
 
27
+ // ============================================================================
28
+ // Ordinal Vocabulary
29
+ // ============================================================================
30
+
31
+ // Ordinal suffix
32
+ const ORDINAL_SUFFIX = 'ನೇ'
33
+
34
+ // Special ordinals for first few numbers
35
+ const ORDINAL_SPECIAL = ['', 'ಮೊದಲನೇ', 'ಎರಡನೇ', 'ಮೂರನೇ', 'ನಾಲ್ಕನೇ', 'ಐದನೇ', 'ಆರನೇ']
36
+
37
+ // ============================================================================
38
+ // Currency Vocabulary (Indian Rupee)
39
+ // ============================================================================
40
+
41
+ // Rupee (singular/plural same in Kannada)
42
+ const RUPEE = 'ರೂಪಾಯಿ'
43
+ const RUPEES = 'ರೂಪಾಯಿಗಳು'
44
+
45
+ // Paisa (singular/plural same in Kannada)
46
+ const PAISA = 'ಪೈಸೆ'
47
+ const PAISE = 'ಪೈಸೆಗಳು'
48
+
25
49
  const BELOW_HUNDRED = [
26
50
  'ಸೊನ್ನೆ', 'ಒಂದು', 'ಎರಡು', 'ಮೂರು', 'ನಾಲ್ಕು', 'ಐದು', 'ಆರು', 'ಏಳು', 'ಎಂಟು', 'ಒಂಬತ್ತು',
27
51
  'ಹತ್ತು', 'ಹನ್ನೊಂದು', 'ಹನ್ನೆರಡು', 'ಹದಿಮೂರು', 'ಹದಿನಾಲ್ಕು', 'ಹದಿನೈದು', 'ಹದಿನಾರು', 'ಹದಿನೇಳು', 'ಹದಿನೆಂಟು', 'ಹತ್ತೊಂಬತ್ತು',
@@ -39,26 +63,13 @@ const BELOW_HUNDRED = [
39
63
  const SCALE_WORDS = ['', 'ಸಾವಿರ', 'ಲಕ್ಷ', 'ಕೋಟಿ', 'ಅಬ್ಜ', 'ಖರ್ವ', 'ನೀಲ', 'ಪದ್ಮ', 'ಶಂಖ']
40
64
 
41
65
  // ============================================================================
42
- // Segment Splitting (inlined for performance)
66
+ // Segment Building
43
67
  // ============================================================================
44
68
 
45
- function groupByThreeThenTwos (n) {
46
- const numStr = n.toString()
47
- if (numStr.length <= 3) return [Number(numStr)]
48
-
49
- const segments = []
50
- segments.unshift(Number(numStr.slice(-3)))
51
-
52
- let remaining = numStr.slice(0, -3)
53
- while (remaining.length > 0) {
54
- segments.unshift(Number(remaining.slice(-2)))
55
- remaining = remaining.slice(0, -2)
56
- }
57
-
58
- return segments
59
- }
60
-
61
- function segmentToWords (n) {
69
+ /**
70
+ * Builds words for a 0-999 segment.
71
+ */
72
+ function buildSegment (n) {
62
73
  if (n === 0) return ''
63
74
  if (n < 100) return BELOW_HUNDRED[n]
64
75
 
@@ -75,25 +86,51 @@ function segmentToWords (n) {
75
86
  // Conversion Functions
76
87
  // ============================================================================
77
88
 
89
+ /**
90
+ * Converts a non-negative integer to Kannada words.
91
+ *
92
+ * Uses BigInt modulo for segment extraction (faster than string slicing).
93
+ * South Asian 3-2-2 grouping: first 3 digits, then groups of 2.
94
+ *
95
+ * @param {bigint} n - Non-negative integer to convert
96
+ * @returns {string} Kannada words
97
+ */
78
98
  function integerToWords (n) {
79
99
  if (n === 0n) return ZERO
80
100
 
81
- const segments = groupByThreeThenTwos(n)
82
- const segmentCount = segments.length
101
+ // Fast path: numbers < 1000 (direct lookup)
102
+ if (n < 1000n) {
103
+ return buildSegment(Number(n))
104
+ }
105
+
106
+ // Extract segments using BigInt modulo
107
+ const segments = []
108
+ segments.push(Number(n % 1000n))
109
+ let temp = n / 1000n
110
+
111
+ while (temp > 0n) {
112
+ segments.push(Number(temp % 100n))
113
+ temp = temp / 100n
114
+ }
115
+
116
+ // Build result string (process from most-significant to least)
83
117
  const words = []
118
+ for (let i = segments.length - 1; i >= 0; i--) {
119
+ const segment = segments[i]
120
+ if (segment === 0) continue
84
121
 
85
- for (let i = 0; i < segmentCount; i++) {
86
- const segmentValue = segments[i]
87
- if (segmentValue === 0) continue
122
+ if (i === 0) {
123
+ words.push(buildSegment(segment))
124
+ } else {
125
+ words.push(BELOW_HUNDRED[segment])
126
+ }
88
127
 
89
- const scaleIndex = segmentCount - i - 1
90
- words.push(segmentToWords(segmentValue))
91
- if (scaleIndex > 0 && SCALE_WORDS[scaleIndex]) {
92
- words.push(SCALE_WORDS[scaleIndex])
128
+ if (i > 0 && SCALE_WORDS[i]) {
129
+ words.push(SCALE_WORDS[i])
93
130
  }
94
131
  }
95
132
 
96
- return words.join(' ').trim()
133
+ return words.join(' ')
97
134
  }
98
135
 
99
136
  function decimalPartToWords (decimalPart) {
@@ -112,8 +149,8 @@ function decimalPartToWords (decimalPart) {
112
149
  * @param {number | string | bigint} value - The numeric value to convert
113
150
  * @returns {string} The number in Kannada words
114
151
  */
115
- function toWords (value) {
116
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
152
+ function toCardinal (value) {
153
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
117
154
 
118
155
  let result = ''
119
156
 
@@ -130,8 +167,93 @@ function toWords (value) {
130
167
  return result
131
168
  }
132
169
 
170
+ // ============================================================================
171
+ // ORDINAL: toOrdinal(value)
172
+ // ============================================================================
173
+
174
+ /**
175
+ * Converts a positive integer to Kannada ordinal words.
176
+ *
177
+ * Kannada ordinals: First 6 are special, then add -ನೇ suffix.
178
+ *
179
+ * @param {bigint} n - Positive integer to convert
180
+ * @returns {string} Kannada ordinal words
181
+ */
182
+ function integerToOrdinal (n) {
183
+ // Special ordinals for 1-6
184
+ if (n >= 1n && n <= 6n) {
185
+ return ORDINAL_SPECIAL[Number(n)]
186
+ }
187
+
188
+ // For 7 and above, add suffix to cardinal
189
+ const cardinal = integerToWords(n)
190
+ return cardinal + ORDINAL_SUFFIX
191
+ }
192
+
193
+ /**
194
+ * Converts a numeric value to Kannada ordinal words.
195
+ *
196
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
197
+ * @returns {string} The number as ordinal words
198
+ * @throws {TypeError} If value is not a valid numeric type
199
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
200
+ *
201
+ * @example
202
+ * toOrdinal(1) // 'ಮೊದಲನೇ'
203
+ * toOrdinal(2) // 'ಎರಡನೇ'
204
+ * toOrdinal(10) // 'ಹತ್ತುನೇ'
205
+ */
206
+ function toOrdinal (value) {
207
+ const integerPart = parseOrdinalValue(value)
208
+ return integerToOrdinal(integerPart)
209
+ }
210
+
211
+ // ============================================================================
212
+ // CURRENCY: toCurrency(value, options?)
213
+ // ============================================================================
214
+
215
+ /**
216
+ * Converts a numeric value to Kannada currency words (Indian Rupee).
217
+ *
218
+ * @param {number | string | bigint} value - The currency amount to convert
219
+ * @returns {string} The amount in Kannada currency words
220
+ * @throws {TypeError} If value is not a valid numeric type
221
+ * @throws {Error} If value is not a valid number format
222
+ *
223
+ * @example
224
+ * toCurrency(42.50) // 'ನಲವತ್ತೆರಡು ರೂಪಾಯಿಗಳು ಐವತ್ತು ಪೈಸೆಗಳು'
225
+ * toCurrency(1) // 'ಒಂದು ರೂಪಾಯಿ'
226
+ * toCurrency(0.01) // 'ಒಂದು ಪೈಸೆ'
227
+ */
228
+ function toCurrency (value) {
229
+ const { isNegative, dollars: rupees, cents: paise } = parseCurrencyValue(value)
230
+
231
+ // Build result
232
+ let result = ''
233
+ if (isNegative) result = NEGATIVE + ' '
234
+
235
+ // Rupees part - show if non-zero, or if no paise
236
+ if (rupees > 0n || paise === 0n) {
237
+ result += integerToWords(rupees)
238
+ // Singular for 1 rupee, plural otherwise
239
+ result += ' ' + (rupees === 1n ? RUPEE : RUPEES)
240
+ }
241
+
242
+ // Paise part
243
+ if (paise > 0n) {
244
+ if (rupees > 0n) {
245
+ result += ' '
246
+ }
247
+ result += integerToWords(paise)
248
+ // Singular for 1 paisa, plural otherwise
249
+ result += ' ' + (paise === 1n ? PAISA : PAISE)
250
+ }
251
+
252
+ return result
253
+ }
254
+
133
255
  // ============================================================================
134
256
  // Exports
135
257
  // ============================================================================
136
258
 
137
- export { toWords }
259
+ export { toCardinal, toOrdinal, toCurrency }
package/src/ko-KR.d.ts ADDED
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Converts a numeric value to Korean words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Korean words
6
+ * @throws {TypeError} If value is not a valid numeric type
7
+ * @throws {Error} If value is not a valid number format
8
+ *
9
+ * @example
10
+ * toCardinal(21) // '이십일'
11
+ * toCardinal(10000) // '만'
12
+ * toCardinal(1000000) // '백만'
13
+ */
14
+ export function toCardinal(value: number | string | bigint): string;
15
+ /**
16
+ * Converts a numeric value to Korean ordinal words.
17
+ *
18
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
19
+ * @returns {string} The number as ordinal words
20
+ * @throws {TypeError} If value is not a valid numeric type
21
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
22
+ *
23
+ * @example
24
+ * toOrdinal(1) // '제일'
25
+ * toOrdinal(2) // '제이'
26
+ * toOrdinal(10) // '제십'
27
+ */
28
+ export function toOrdinal(value: number | string | bigint): string;
29
+ /**
30
+ * Converts a numeric value to Korean currency words (Won).
31
+ *
32
+ * Korean Won has no subunit (jeon are historical).
33
+ * Amounts are rounded to whole won.
34
+ *
35
+ * @param {number | string | bigint} value - The currency amount to convert
36
+ * @returns {string} The amount in Korean currency words
37
+ * @throws {TypeError} If value is not a valid numeric type
38
+ * @throws {Error} If value is not a valid number format
39
+ *
40
+ * @example
41
+ * toCurrency(42) // '사십이원'
42
+ * toCurrency(1000) // '천원'
43
+ * toCurrency(-5) // '마이너스 오원'
44
+ */
45
+ export function toCurrency(value: number | string | bigint): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Korean language converter - Functional Implementation
2
+ * Korean (South Korea) language converter
3
3
  *
4
- * A performance-optimized number-to-words converter using precomputed lookup tables.
4
+ * CLDR: ko-KR | Korean as used in South Korea
5
5
  *
6
6
  * Key features:
7
7
  * - Myriad-based (만) grouping - 4 digits
@@ -10,7 +10,9 @@
10
10
  * - Hangul numerals
11
11
  */
12
12
 
13
- import { parseNumericValue } from '../utils/parse-numeric.js'
13
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
14
+ import { parseCurrencyValue } from './utils/parse-currency.js'
15
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
14
16
 
15
17
  // ============================================================================
16
18
  // Vocabulary (module-level constants)
@@ -31,7 +33,19 @@ const DECIMAL_SEP = '점'
31
33
  const SCALES = ['만', '억', '조', '경', '해', '자', '양']
32
34
 
33
35
  // ============================================================================
34
- // Precomputed Lookup Tables (built once at module load)
36
+ // Ordinal Vocabulary
37
+ // ============================================================================
38
+
39
+ const ORDINAL_PREFIX = '제'
40
+
41
+ // ============================================================================
42
+ // Currency Vocabulary (Korean Won)
43
+ // ============================================================================
44
+
45
+ const WON = '원'
46
+
47
+ // ============================================================================
48
+ // Segment Building
35
49
  // ============================================================================
36
50
 
37
51
  /**
@@ -42,9 +56,9 @@ function buildSegment (n) {
42
56
  if (n === 0) return ''
43
57
 
44
58
  const ones = n % 10
45
- const tens = Math.floor(n / 10) % 10
46
- const hundreds = Math.floor(n / 100) % 10
47
- const thousands = Math.floor(n / 1000)
59
+ const tens = Math.trunc(n / 10) % 10
60
+ const hundreds = Math.trunc(n / 100) % 10
61
+ const thousands = Math.trunc(n / 1000)
48
62
 
49
63
  let result = ''
50
64
 
@@ -83,13 +97,6 @@ function buildSegment (n) {
83
97
  return result
84
98
  }
85
99
 
86
- // Precompute all 10000 segment words (0-9999) for myriad grouping
87
- const SEGMENTS = new Array(10000)
88
-
89
- for (let i = 0; i < 10000; i++) {
90
- SEGMENTS[i] = buildSegment(i)
91
- }
92
-
93
100
  // ============================================================================
94
101
  // Conversion Functions
95
102
  // ============================================================================
@@ -103,9 +110,9 @@ for (let i = 0; i < 10000; i++) {
103
110
  function integerToWords (n) {
104
111
  if (n === 0n) return ZERO
105
112
 
106
- // Fast path: numbers < 10000 (direct lookup)
113
+ // Fast path: numbers < 10000
107
114
  if (n < 10000n) {
108
- return SEGMENTS[Number(n)]
115
+ return buildSegment(Number(n))
109
116
  }
110
117
 
111
118
  // For numbers >= 10000, use myriad decomposition
@@ -148,7 +155,7 @@ function buildLargeNumberWords (n) {
148
155
  if (segment !== 0) {
149
156
  if (scaleIndex === 0) {
150
157
  // Units segment (no scale word)
151
- parts.push({ word: SEGMENTS[segment], isScale: false })
158
+ parts.push({ word: buildSegment(segment), isScale: false })
152
159
  } else {
153
160
  // Segment with scale word
154
161
  const scaleWord = SCALES[scaleIndex - 1]
@@ -157,7 +164,7 @@ function buildLargeNumberWords (n) {
157
164
  if (segment === 1) {
158
165
  parts.push({ word: scaleWord, isScale: true })
159
166
  } else {
160
- parts.push({ word: SEGMENTS[segment], isScale: false })
167
+ parts.push({ word: buildSegment(segment), isScale: false })
161
168
  parts.push({ word: scaleWord, isScale: true })
162
169
  }
163
170
  }
@@ -233,12 +240,12 @@ function decimalPartToWords (decimalPart) {
233
240
  * @throws {Error} If value is not a valid number format
234
241
  *
235
242
  * @example
236
- * toWords(21) // '이십일'
237
- * toWords(10000) // '만'
238
- * toWords(1000000) // '백만'
243
+ * toCardinal(21) // '이십일'
244
+ * toCardinal(10000) // '만'
245
+ * toCardinal(1000000) // '백만'
239
246
  */
240
- function toWords (value) {
241
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
247
+ function toCardinal (value) {
248
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
242
249
 
243
250
  const parts = []
244
251
 
@@ -256,8 +263,76 @@ function toWords (value) {
256
263
  return parts.join(' ')
257
264
  }
258
265
 
266
+ // ============================================================================
267
+ // ORDINAL: toOrdinal(value)
268
+ // ============================================================================
269
+
270
+ /**
271
+ * Converts a non-negative integer to Korean ordinal words.
272
+ *
273
+ * Korean ordinals use "제" prefix + Sino-Korean numeral.
274
+ *
275
+ * @param {bigint} n - Positive integer to convert
276
+ * @returns {string} Korean ordinal words
277
+ */
278
+ function integerToOrdinal (n) {
279
+ return ORDINAL_PREFIX + integerToWords(n)
280
+ }
281
+
282
+ /**
283
+ * Converts a numeric value to Korean ordinal words.
284
+ *
285
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
286
+ * @returns {string} The number as ordinal words
287
+ * @throws {TypeError} If value is not a valid numeric type
288
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
289
+ *
290
+ * @example
291
+ * toOrdinal(1) // '제일'
292
+ * toOrdinal(2) // '제이'
293
+ * toOrdinal(10) // '제십'
294
+ */
295
+ function toOrdinal (value) {
296
+ const integerPart = parseOrdinalValue(value)
297
+ return integerToOrdinal(integerPart)
298
+ }
299
+
300
+ // ============================================================================
301
+ // CURRENCY: toCurrency(value)
302
+ // ============================================================================
303
+
304
+ /**
305
+ * Converts a numeric value to Korean currency words (Won).
306
+ *
307
+ * Korean Won has no subunit (jeon are historical).
308
+ * Amounts are rounded to whole won.
309
+ *
310
+ * @param {number | string | bigint} value - The currency amount to convert
311
+ * @returns {string} The amount in Korean currency words
312
+ * @throws {TypeError} If value is not a valid numeric type
313
+ * @throws {Error} If value is not a valid number format
314
+ *
315
+ * @example
316
+ * toCurrency(42) // '사십이원'
317
+ * toCurrency(1000) // '천원'
318
+ * toCurrency(-5) // '마이너스 오원'
319
+ */
320
+ function toCurrency (value) {
321
+ const { isNegative, dollars: won } = parseCurrencyValue(value)
322
+
323
+ let result = ''
324
+ if (isNegative) {
325
+ result = NEGATIVE + ' '
326
+ }
327
+
328
+ result += integerToWords(won)
329
+ result += WON
330
+
331
+ return result
332
+ }
333
+
259
334
  // ============================================================================
260
335
  // Public API
261
336
  // ============================================================================
262
337
 
263
- export { toWords }
338
+ export { toCardinal, toOrdinal, toCurrency }
package/src/lt-LT.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Converts a numeric value to Lithuanian 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 Lithuanian 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) // 'keturiasdešimt du'
13
+ * toCardinal(1, { gender: 'feminine' }) // 'viena'
14
+ * toCardinal(1000000) // 'vienas milijonas'
15
+ */
16
+ export function toCardinal(value: number | string | bigint, options?: {
17
+ gender?: string | undefined;
18
+ }): string;
19
+ /**
20
+ * Converts a numeric value to Lithuanian 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) // 'pirmas'
29
+ * toOrdinal(2) // 'antras'
30
+ * toOrdinal(21) // 'dvidešimt pirmas'
31
+ * toOrdinal(100) // 'šimtasis'
32
+ * toOrdinal(1000) // 'tūkstantasis'
33
+ */
34
+ export function toOrdinal(value: number | string | bigint): string;
35
+ /**
36
+ * Converts a numeric value to Lithuanian currency words (Euro).
37
+ *
38
+ * @param {number | string | bigint} value - The currency amount to convert
39
+ * @returns {string} The amount in Lithuanian 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) // 'keturiasdešimt du eurai'
45
+ * toCurrency(1) // 'vienas euras'
46
+ * toCurrency(1.50) // 'vienas euras penkiasdešimt centų'
47
+ * toCurrency(-5) // 'minus penki eurai'
48
+ */
49
+ export function toCurrency(value: number | string | bigint): string;