n2words 3.1.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 (482) hide show
  1. package/CHANGELOG.md +44 -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/{lib/languages/bn.js → src/bn-BD.js} +110 -6
  157. package/src/cs-CZ.d.ts +49 -0
  158. package/{lib/languages/cs.js → src/cs-CZ.js} +240 -14
  159. package/src/da-DK.d.ts +44 -0
  160. package/{lib/languages/da.js → src/da-DK.js} +131 -11
  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/{lib/languages/en.js → src/en-NZ.js} +164 -31
  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} +228 -18
  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/{lib/languages/fi.js → src/fi-FI.js} +152 -11
  207. package/src/fil-PH.d.ts +37 -0
  208. package/{lib/languages/fil.js → src/fil-PH.js} +144 -8
  209. package/src/fr-BE.d.ts +49 -0
  210. package/{lib/languages → src}/fr-BE.js +175 -13
  211. package/src/fr-FR.d.ts +63 -0
  212. package/{lib/languages/fr.js → src/fr-FR.js} +182 -16
  213. package/src/gu-IN.d.ts +35 -0
  214. package/{lib/languages/gu.js → src/gu-IN.js} +115 -6
  215. package/src/ha-NG.d.ts +37 -0
  216. package/{lib/languages/ha.js → src/ha-NG.js} +107 -8
  217. package/src/hbo-IL.d.ts +39 -0
  218. package/{lib/languages/hbo.js → src/hbo-IL.js} +211 -19
  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/{lib/languages/hi.js → src/hi-IN.js} +116 -6
  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} +99 -8
  229. package/src/it-IT.d.ts +59 -0
  230. package/{lib/languages/it.js → src/it-IT.js} +179 -15
  231. package/src/ja-JP.d.ts +49 -0
  232. package/{lib/languages/ja.js → src/ja-JP.js} +111 -12
  233. package/src/ka-GE.d.ts +44 -0
  234. package/{lib/languages/ka.js → src/ka-GE.js} +113 -11
  235. package/src/kn-IN.d.ts +35 -0
  236. package/{lib/languages/kn.js → src/kn-IN.js} +115 -6
  237. package/src/ko-KR.d.ts +45 -0
  238. package/{lib/languages/ko.js → src/ko-KR.js} +94 -12
  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/{lib/languages/mr.js → src/mr-IN.js} +116 -6
  245. package/src/ms-MY.d.ts +37 -0
  246. package/{lib/languages/ms.js → src/ms-MY.js} +111 -8
  247. package/src/nb-NO.d.ts +44 -0
  248. package/{lib/languages/nb.js → src/nb-NO.js} +153 -11
  249. package/src/nl-NL.d.ts +54 -0
  250. package/{lib/languages/nl.js → src/nl-NL.js} +260 -18
  251. package/src/pa-IN.d.ts +36 -0
  252. package/{lib/languages/pa.js → src/pa-IN.js} +116 -6
  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/{lib/languages/pt.js → src/pt-PT.js} +234 -12
  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} +136 -11
  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} +109 -6
  271. package/src/te-IN.d.ts +35 -0
  272. package/{lib/languages/te.js → src/te-IN.js} +115 -6
  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/{lib/languages/tr.js → src/tr-TR.js} +168 -23
  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/{lib/languages/ur.js → src/ur-PK.js} +116 -6
  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} +102 -11
  291. package/src/yo-NG.d.ts +37 -0
  292. package/{lib/languages/yo.js → src/yo-NG.js} +109 -9
  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/ka.js +0 -3
  350. package/dist/languages/ka.js.map +0 -1
  351. package/dist/languages/kn.js +0 -3
  352. package/dist/languages/kn.js.map +0 -1
  353. package/dist/languages/ko.js +0 -3
  354. package/dist/languages/ko.js.map +0 -1
  355. package/dist/languages/lt.js +0 -3
  356. package/dist/languages/lt.js.map +0 -1
  357. package/dist/languages/lv.js +0 -3
  358. package/dist/languages/lv.js.map +0 -1
  359. package/dist/languages/mr.js +0 -3
  360. package/dist/languages/mr.js.map +0 -1
  361. package/dist/languages/ms.js +0 -3
  362. package/dist/languages/ms.js.map +0 -1
  363. package/dist/languages/nb.js +0 -3
  364. package/dist/languages/nb.js.map +0 -1
  365. package/dist/languages/nl.js +0 -3
  366. package/dist/languages/nl.js.map +0 -1
  367. package/dist/languages/pa.js +0 -3
  368. package/dist/languages/pa.js.map +0 -1
  369. package/dist/languages/pl.js +0 -3
  370. package/dist/languages/pl.js.map +0 -1
  371. package/dist/languages/pt.js +0 -3
  372. package/dist/languages/pt.js.map +0 -1
  373. package/dist/languages/ro.js +0 -3
  374. package/dist/languages/ro.js.map +0 -1
  375. package/dist/languages/ru.js +0 -3
  376. package/dist/languages/ru.js.map +0 -1
  377. package/dist/languages/sr-Cyrl.js +0 -3
  378. package/dist/languages/sr-Cyrl.js.map +0 -1
  379. package/dist/languages/sr-Latn.js +0 -3
  380. package/dist/languages/sr-Latn.js.map +0 -1
  381. package/dist/languages/sv.js +0 -3
  382. package/dist/languages/sv.js.map +0 -1
  383. package/dist/languages/sw.js +0 -3
  384. package/dist/languages/sw.js.map +0 -1
  385. package/dist/languages/ta.js +0 -3
  386. package/dist/languages/ta.js.map +0 -1
  387. package/dist/languages/te.js +0 -3
  388. package/dist/languages/te.js.map +0 -1
  389. package/dist/languages/th.js +0 -3
  390. package/dist/languages/th.js.map +0 -1
  391. package/dist/languages/tr.js +0 -3
  392. package/dist/languages/tr.js.map +0 -1
  393. package/dist/languages/uk.js +0 -3
  394. package/dist/languages/uk.js.map +0 -1
  395. package/dist/languages/ur.js +0 -3
  396. package/dist/languages/ur.js.map +0 -1
  397. package/dist/languages/vi.js +0 -3
  398. package/dist/languages/vi.js.map +0 -1
  399. package/dist/languages/yo.js +0 -3
  400. package/dist/languages/yo.js.map +0 -1
  401. package/dist/languages/zh-Hans.js +0 -3
  402. package/dist/languages/zh-Hans.js.map +0 -1
  403. package/dist/languages/zh-Hant.js +0 -3
  404. package/dist/languages/zh-Hant.js.map +0 -1
  405. package/dist/n2words.js +0 -3
  406. package/dist/n2words.js.map +0 -1
  407. package/lib/languages/am-Latn.d.ts +0 -7
  408. package/lib/languages/am-Latn.js +0 -159
  409. package/lib/languages/am.d.ts +0 -7
  410. package/lib/languages/am.js +0 -159
  411. package/lib/languages/ar.d.ts +0 -17
  412. package/lib/languages/az.d.ts +0 -7
  413. package/lib/languages/az.js +0 -171
  414. package/lib/languages/bn.d.ts +0 -7
  415. package/lib/languages/cs.d.ts +0 -18
  416. package/lib/languages/da.d.ts +0 -14
  417. package/lib/languages/de.d.ts +0 -17
  418. package/lib/languages/de.js +0 -320
  419. package/lib/languages/el.d.ts +0 -14
  420. package/lib/languages/el.js +0 -236
  421. package/lib/languages/en.d.ts +0 -17
  422. package/lib/languages/es.d.ts +0 -21
  423. package/lib/languages/fa.d.ts +0 -7
  424. package/lib/languages/fa.js +0 -134
  425. package/lib/languages/fi.d.ts +0 -14
  426. package/lib/languages/fil.d.ts +0 -7
  427. package/lib/languages/fr-BE.d.ts +0 -11
  428. package/lib/languages/fr.d.ts +0 -21
  429. package/lib/languages/gu.d.ts +0 -7
  430. package/lib/languages/ha.d.ts +0 -7
  431. package/lib/languages/hbo.d.ts +0 -13
  432. package/lib/languages/he.d.ts +0 -13
  433. package/lib/languages/he.js +0 -265
  434. package/lib/languages/hi.d.ts +0 -7
  435. package/lib/languages/hr.d.ts +0 -11
  436. package/lib/languages/hr.js +0 -224
  437. package/lib/languages/hu.d.ts +0 -7
  438. package/lib/languages/id.d.ts +0 -7
  439. package/lib/languages/it.d.ts +0 -19
  440. package/lib/languages/ja.d.ts +0 -17
  441. package/lib/languages/ka.d.ts +0 -17
  442. package/lib/languages/kn.d.ts +0 -7
  443. package/lib/languages/ko.d.ts +0 -14
  444. package/lib/languages/lt.d.ts +0 -18
  445. package/lib/languages/lt.js +0 -301
  446. package/lib/languages/lv.d.ts +0 -18
  447. package/lib/languages/lv.js +0 -312
  448. package/lib/languages/mr.d.ts +0 -7
  449. package/lib/languages/ms.d.ts +0 -7
  450. package/lib/languages/nb.d.ts +0 -14
  451. package/lib/languages/nl.d.ts +0 -26
  452. package/lib/languages/pa.d.ts +0 -7
  453. package/lib/languages/pl.d.ts +0 -22
  454. package/lib/languages/pl.js +0 -317
  455. package/lib/languages/pt.d.ts +0 -17
  456. package/lib/languages/ro.d.ts +0 -18
  457. package/lib/languages/ru.d.ts +0 -11
  458. package/lib/languages/ru.js +0 -245
  459. package/lib/languages/sr-Cyrl.d.ts +0 -11
  460. package/lib/languages/sr-Cyrl.js +0 -221
  461. package/lib/languages/sr-Latn.d.ts +0 -11
  462. package/lib/languages/sr-Latn.js +0 -221
  463. package/lib/languages/sv.d.ts +0 -14
  464. package/lib/languages/sw.d.ts +0 -7
  465. package/lib/languages/ta.d.ts +0 -7
  466. package/lib/languages/te.d.ts +0 -7
  467. package/lib/languages/th.d.ts +0 -7
  468. package/lib/languages/tr.d.ts +0 -18
  469. package/lib/languages/uk.d.ts +0 -11
  470. package/lib/languages/uk.js +0 -224
  471. package/lib/languages/ur.d.ts +0 -7
  472. package/lib/languages/vi.d.ts +0 -17
  473. package/lib/languages/yo.d.ts +0 -7
  474. package/lib/languages/zh-Hans.d.ts +0 -11
  475. package/lib/languages/zh-Hant.d.ts +0 -11
  476. package/lib/n2words.d.ts +0 -55
  477. package/lib/n2words.js +0 -126
  478. package/lib/utils/parse-numeric.d.ts +0 -17
  479. /package/{lib → src}/utils/is-plain-object.d.ts +0 -0
  480. /package/{lib → src}/utils/is-plain-object.js +0 -0
  481. /package/{lib → src}/utils/validate-options.d.ts +0 -0
  482. /package/{lib → src}/utils/validate-options.js +0 -0
package/src/am-ET.js ADDED
@@ -0,0 +1,269 @@
1
+ /**
2
+ * Amharic (Ethiopia) language converter
3
+ *
4
+ * CLDR: am-ET | Amharic as used in Ethiopia (Ge'ez script)
5
+ *
6
+ * Key features:
7
+ * - Ge'ez/Ethiopic script numerals
8
+ * - Teens formed with "አስራ" prefix
9
+ * - Keeps "one" before hundred: "አንድ መቶ" (100)
10
+ * - Short scale naming
11
+ * - Per-digit decimal reading
12
+ */
13
+
14
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
15
+ import { parseCurrencyValue } from './utils/parse-currency.js'
16
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
17
+
18
+ // ============================================================================
19
+ // Vocabulary
20
+ // ============================================================================
21
+
22
+ const ONES = ['', 'አንድ', 'ሁለት', 'ሶስት', 'አራት', 'አምስት', 'ስድስት', 'ሰባት', 'ስምንት', 'ዘጠኝ']
23
+ const TEENS = ['አስር', 'አስራ አንድ', 'አስራ ሁለት', 'አስራ ሶስት', 'አስራ አራት', 'አስራ አምስት', 'አስራ ስድስት', 'አስራ ሰባት', 'አስራ ስምንት', 'አስራ ዘጠኝ']
24
+ const TENS = ['', '', 'ሃያ', 'ሰላሳ', 'አርባ', 'ሃምሳ', 'ስልሳ', 'ሰባ', 'ሰማንያ', 'ዘጠና']
25
+
26
+ const HUNDRED = 'መቶ'
27
+ const THOUSAND = 'ሺ'
28
+
29
+ const ZERO = 'ዜሮ'
30
+ const NEGATIVE = 'አሉታዊ'
31
+ const DECIMAL_SEP = 'ነጥብ'
32
+
33
+ // ============================================================================
34
+ // Ordinal Vocabulary
35
+ // ============================================================================
36
+
37
+ // Ordinal suffix
38
+ const ORDINAL_SUFFIX = 'ኛ'
39
+
40
+ // Special ordinal for first
41
+ const FIRST = 'አንደኛ'
42
+
43
+ // ============================================================================
44
+ // Currency Vocabulary (Ethiopian Birr)
45
+ // ============================================================================
46
+
47
+ // Birr (main unit)
48
+ const BIRR = 'ብር'
49
+
50
+ // Santim (1/100 of birr)
51
+ const SANTIM = 'ሳንቲም'
52
+
53
+ // Short scale
54
+ const SCALE_WORDS = ['', THOUSAND, 'ሚሊዮን', 'ቢሊዮን']
55
+
56
+ // ============================================================================
57
+ // Precomputed Lookup Table
58
+ // ============================================================================
59
+
60
+ function buildSegment (n) {
61
+ if (n === 0) return ''
62
+
63
+ const ones = n % 10
64
+ const tensDigit = Math.trunc(n / 10) % 10
65
+ const hundredsDigit = Math.trunc(n / 100)
66
+
67
+ const parts = []
68
+
69
+ // Amharic keeps "one" before hundred: "አንድ መቶ" (100)
70
+ if (hundredsDigit > 0) {
71
+ parts.push(ONES[hundredsDigit] + ' ' + HUNDRED)
72
+ }
73
+
74
+ if (tensDigit === 1) {
75
+ parts.push(TEENS[ones])
76
+ } else {
77
+ if (tensDigit > 1) {
78
+ parts.push(TENS[tensDigit])
79
+ }
80
+ if (ones > 0) {
81
+ parts.push(ONES[ones])
82
+ }
83
+ }
84
+
85
+ return parts.join(' ')
86
+ }
87
+
88
+ // ============================================================================
89
+ // Conversion Functions
90
+ // ============================================================================
91
+
92
+ function integerToWords (n) {
93
+ if (n === 0n) return ZERO
94
+
95
+ if (n < 1000n) {
96
+ return buildSegment(Number(n))
97
+ }
98
+
99
+ return buildLargeNumberWords(n)
100
+ }
101
+
102
+ function buildLargeNumberWords (n) {
103
+ const numStr = n.toString()
104
+ const len = numStr.length
105
+
106
+ const segments = []
107
+ const segmentSize = 3
108
+
109
+ const remainderLen = len % segmentSize
110
+ let pos = 0
111
+ if (remainderLen > 0) {
112
+ segments.push(Number(numStr.slice(0, remainderLen)))
113
+ pos = remainderLen
114
+ }
115
+ while (pos < len) {
116
+ segments.push(Number(numStr.slice(pos, pos + segmentSize)))
117
+ pos += segmentSize
118
+ }
119
+
120
+ const parts = []
121
+ let scaleIndex = segments.length - 1
122
+
123
+ for (let i = 0; i < segments.length; i++) {
124
+ const segment = segments[i]
125
+
126
+ if (segment !== 0) {
127
+ const scaleWord = SCALE_WORDS[scaleIndex] || ''
128
+
129
+ if (scaleIndex === 0) {
130
+ parts.push(buildSegment(segment))
131
+ } else {
132
+ parts.push(buildSegment(segment) + ' ' + scaleWord)
133
+ }
134
+ }
135
+
136
+ scaleIndex--
137
+ }
138
+
139
+ return parts.join(' ')
140
+ }
141
+
142
+ function decimalPartToWords (decimalPart) {
143
+ // Per-digit decimal reading
144
+ const digits = []
145
+ for (const char of decimalPart) {
146
+ const d = parseInt(char, 10)
147
+ digits.push(d === 0 ? ZERO : ONES[d])
148
+ }
149
+ return digits.join(' ')
150
+ }
151
+
152
+ /**
153
+ * Converts a numeric value to Amharic words.
154
+ *
155
+ * @param {number | string | bigint} value - The numeric value to convert
156
+ * @returns {string} The number in Amharic words
157
+ */
158
+ function toCardinal (value) {
159
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
160
+
161
+ let result = ''
162
+
163
+ if (isNegative) {
164
+ result = NEGATIVE + ' '
165
+ }
166
+
167
+ result += integerToWords(integerPart)
168
+
169
+ if (decimalPart) {
170
+ result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
171
+ }
172
+
173
+ return result
174
+ }
175
+
176
+ // ============================================================================
177
+ // ORDINAL: toOrdinal(value)
178
+ // ============================================================================
179
+
180
+ /**
181
+ * Converts a positive integer to Amharic ordinal words.
182
+ *
183
+ * In Amharic, ordinals are formed by adding -ኛ suffix to the cardinal.
184
+ * Special case: 1 = አንደኛ (not አንድኛ)
185
+ *
186
+ * @param {bigint} n - Positive integer to convert
187
+ * @returns {string} Amharic ordinal words
188
+ */
189
+ function integerToOrdinal (n) {
190
+ // Special case: 1 → አንደኛ
191
+ if (n === 1n) {
192
+ return FIRST
193
+ }
194
+
195
+ // Get cardinal form and add ordinal suffix
196
+ const cardinal = integerToWords(n)
197
+ return cardinal + ORDINAL_SUFFIX
198
+ }
199
+
200
+ /**
201
+ * Converts a numeric value to Amharic ordinal words.
202
+ *
203
+ * Amharic ordinals: add -ኛ suffix to cardinal.
204
+ * Special case: 1 → አንደኛ
205
+ *
206
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
207
+ * @returns {string} The number as ordinal words
208
+ * @throws {TypeError} If value is not a valid numeric type
209
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
210
+ *
211
+ * @example
212
+ * toOrdinal(1) // 'አንደኛ'
213
+ * toOrdinal(2) // 'ሁለትኛ'
214
+ * toOrdinal(10) // 'አስርኛ'
215
+ * toOrdinal(100) // 'አንድ መቶኛ'
216
+ */
217
+ function toOrdinal (value) {
218
+ const integerPart = parseOrdinalValue(value)
219
+ return integerToOrdinal(integerPart)
220
+ }
221
+
222
+ // ============================================================================
223
+ // CURRENCY: toCurrency(value, options?)
224
+ // ============================================================================
225
+
226
+ /**
227
+ * Converts a numeric value to Amharic currency words (Ethiopian Birr).
228
+ *
229
+ * @param {number | string | bigint} value - The currency amount to convert
230
+ * @returns {string} The amount in Amharic currency words
231
+ * @throws {TypeError} If value is not a valid numeric type
232
+ * @throws {Error} If value is not a valid number format
233
+ *
234
+ * @example
235
+ * toCurrency(42.50) // 'አርባ ሁለት ብር ሃምሳ ሳንቲም'
236
+ * toCurrency(1) // 'አንድ ብር'
237
+ * toCurrency(0.99) // 'ዘጠና ዘጠኝ ሳንቲም'
238
+ * toCurrency(0.01) // 'አንድ ሳንቲም'
239
+ */
240
+ function toCurrency (value) {
241
+ const { isNegative, dollars: birr, cents: santim } = parseCurrencyValue(value)
242
+
243
+ // Build result
244
+ let result = ''
245
+ if (isNegative) result = NEGATIVE + ' '
246
+
247
+ // Birr part - show if non-zero, or if no santim
248
+ if (birr > 0n || santim === 0n) {
249
+ result += integerToWords(birr)
250
+ result += ' ' + BIRR
251
+ }
252
+
253
+ // Santim part
254
+ if (santim > 0n) {
255
+ if (birr > 0n) {
256
+ result += ' '
257
+ }
258
+ result += integerToWords(santim)
259
+ result += ' ' + SANTIM
260
+ }
261
+
262
+ return result
263
+ }
264
+
265
+ // ============================================================================
266
+ // Exports
267
+ // ============================================================================
268
+
269
+ export { toCardinal, toOrdinal, toCurrency }
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Converts a numeric value to Amharic (Latin script) words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Amharic Latin words
6
+ */
7
+ export function toCardinal(value: number | string | bigint): string;
8
+ /**
9
+ * Converts a numeric value to Amharic (Latin script) 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) // 'andenya'
18
+ * toOrdinal(2) // 'huletnya'
19
+ * toOrdinal(10) // 'asirnya'
20
+ */
21
+ export function toOrdinal(value: number | string | bigint): string;
22
+ /**
23
+ * Converts a numeric value to Amharic (Latin script) currency words (Ethiopian Birr).
24
+ *
25
+ * @param {number | string | bigint} value - The currency amount to convert
26
+ * @returns {string} The amount in Amharic (Latin) 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) // 'arba hulet birr hamsa santim'
32
+ * toCurrency(1) // 'and birr'
33
+ * toCurrency(0.01) // 'and santim'
34
+ */
35
+ export function toCurrency(value: number | string | bigint): string;
@@ -0,0 +1,264 @@
1
+ /**
2
+ * Amharic (Ethiopia, Latin script) language converter
3
+ *
4
+ * CLDR: am-Latn-ET | Amharic as used in Ethiopia (Latin script romanization)
5
+ *
6
+ * Key features:
7
+ * - Romanized numerals (and, hulet, sost)
8
+ * - Teens formed with "asra" prefix
9
+ * - Keeps "one" before hundred: "and meto" (100)
10
+ * - Short scale naming
11
+ * - Per-digit decimal reading
12
+ */
13
+
14
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
15
+ import { parseCurrencyValue } from './utils/parse-currency.js'
16
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
17
+
18
+ // ============================================================================
19
+ // Vocabulary
20
+ // ============================================================================
21
+
22
+ const ONES = ['', 'and', 'hulet', 'sost', 'arat', 'amist', 'siddist', 'sebat', 'siment', 'zeteny']
23
+ const TEENS = ['asir', 'asra and', 'asra hulet', 'asra sost', 'asra arat', 'asra amist', 'asra siddist', 'asra sebat', 'asra siment', 'asra zeteny']
24
+ const TENS = ['', '', 'haya', 'selasa', 'arba', 'hamsa', 'silsa', 'seba', 'semanya', 'zetena']
25
+
26
+ const HUNDRED = 'meto'
27
+ const THOUSAND = 'shi'
28
+
29
+ const ZERO = 'zero'
30
+ const NEGATIVE = 'asitegna'
31
+ const DECIMAL_SEP = 'netib'
32
+
33
+ // ============================================================================
34
+ // Ordinal Vocabulary
35
+ // ============================================================================
36
+
37
+ // Ordinal suffix (romanized -ኛ)
38
+ const ORDINAL_SUFFIX = 'nya'
39
+
40
+ // Special ordinal for first (romanized አንደኛ)
41
+ const FIRST = 'andenya'
42
+
43
+ // ============================================================================
44
+ // Currency Vocabulary (Ethiopian Birr)
45
+ // ============================================================================
46
+
47
+ // Birr (main unit, romanized ብር)
48
+ const BIRR = 'birr'
49
+
50
+ // Santim (1/100 of birr, romanized ሳንቲም)
51
+ const SANTIM = 'santim'
52
+
53
+ // Short scale
54
+ const SCALE_WORDS = ['', THOUSAND, 'miliyon', 'billiyon']
55
+
56
+ // ============================================================================
57
+ // Precomputed Lookup Table
58
+ // ============================================================================
59
+
60
+ function buildSegment (n) {
61
+ if (n === 0) return ''
62
+
63
+ const ones = n % 10
64
+ const tensDigit = Math.trunc(n / 10) % 10
65
+ const hundredsDigit = Math.trunc(n / 100)
66
+
67
+ const parts = []
68
+
69
+ // Amharic keeps "one" before hundred: "and meto" (100)
70
+ if (hundredsDigit > 0) {
71
+ parts.push(ONES[hundredsDigit] + ' ' + HUNDRED)
72
+ }
73
+
74
+ if (tensDigit === 1) {
75
+ parts.push(TEENS[ones])
76
+ } else {
77
+ if (tensDigit > 1) {
78
+ parts.push(TENS[tensDigit])
79
+ }
80
+ if (ones > 0) {
81
+ parts.push(ONES[ones])
82
+ }
83
+ }
84
+
85
+ return parts.join(' ')
86
+ }
87
+
88
+ // ============================================================================
89
+ // Conversion Functions
90
+ // ============================================================================
91
+
92
+ function integerToWords (n) {
93
+ if (n === 0n) return ZERO
94
+
95
+ if (n < 1000n) {
96
+ return buildSegment(Number(n))
97
+ }
98
+
99
+ return buildLargeNumberWords(n)
100
+ }
101
+
102
+ function buildLargeNumberWords (n) {
103
+ const numStr = n.toString()
104
+ const len = numStr.length
105
+
106
+ const segments = []
107
+ const segmentSize = 3
108
+
109
+ const remainderLen = len % segmentSize
110
+ let pos = 0
111
+ if (remainderLen > 0) {
112
+ segments.push(Number(numStr.slice(0, remainderLen)))
113
+ pos = remainderLen
114
+ }
115
+ while (pos < len) {
116
+ segments.push(Number(numStr.slice(pos, pos + segmentSize)))
117
+ pos += segmentSize
118
+ }
119
+
120
+ const parts = []
121
+ let scaleIndex = segments.length - 1
122
+
123
+ for (let i = 0; i < segments.length; i++) {
124
+ const segment = segments[i]
125
+
126
+ if (segment !== 0) {
127
+ const scaleWord = SCALE_WORDS[scaleIndex] || ''
128
+
129
+ if (scaleIndex === 0) {
130
+ parts.push(buildSegment(segment))
131
+ } else {
132
+ parts.push(buildSegment(segment) + ' ' + scaleWord)
133
+ }
134
+ }
135
+
136
+ scaleIndex--
137
+ }
138
+
139
+ return parts.join(' ')
140
+ }
141
+
142
+ function decimalPartToWords (decimalPart) {
143
+ // Per-digit decimal reading
144
+ const digits = []
145
+ for (const char of decimalPart) {
146
+ const d = parseInt(char, 10)
147
+ digits.push(d === 0 ? ZERO : ONES[d])
148
+ }
149
+ return digits.join(' ')
150
+ }
151
+
152
+ /**
153
+ * Converts a numeric value to Amharic (Latin script) words.
154
+ *
155
+ * @param {number | string | bigint} value - The numeric value to convert
156
+ * @returns {string} The number in Amharic Latin words
157
+ */
158
+ function toCardinal (value) {
159
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
160
+
161
+ let result = ''
162
+
163
+ if (isNegative) {
164
+ result = NEGATIVE + ' '
165
+ }
166
+
167
+ result += integerToWords(integerPart)
168
+
169
+ if (decimalPart) {
170
+ result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
171
+ }
172
+
173
+ return result
174
+ }
175
+
176
+ // ============================================================================
177
+ // ORDINAL: toOrdinal(value)
178
+ // ============================================================================
179
+
180
+ /**
181
+ * Converts a positive integer to Amharic (Latin script) ordinal words.
182
+ *
183
+ * In Amharic, ordinals are formed by adding -nya suffix to the cardinal.
184
+ * Special case: 1 = andenya
185
+ *
186
+ * @param {bigint} n - Positive integer to convert
187
+ * @returns {string} Amharic (Latin) ordinal words
188
+ */
189
+ function integerToOrdinal (n) {
190
+ // Special case: 1 → andenya
191
+ if (n === 1n) {
192
+ return FIRST
193
+ }
194
+
195
+ // Get cardinal form and add ordinal suffix
196
+ const cardinal = integerToWords(n)
197
+ return cardinal + ORDINAL_SUFFIX
198
+ }
199
+
200
+ /**
201
+ * Converts a numeric value to Amharic (Latin script) ordinal words.
202
+ *
203
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
204
+ * @returns {string} The number as ordinal words
205
+ * @throws {TypeError} If value is not a valid numeric type
206
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
207
+ *
208
+ * @example
209
+ * toOrdinal(1) // 'andenya'
210
+ * toOrdinal(2) // 'huletnya'
211
+ * toOrdinal(10) // 'asirnya'
212
+ */
213
+ function toOrdinal (value) {
214
+ const integerPart = parseOrdinalValue(value)
215
+ return integerToOrdinal(integerPart)
216
+ }
217
+
218
+ // ============================================================================
219
+ // CURRENCY: toCurrency(value, options?)
220
+ // ============================================================================
221
+
222
+ /**
223
+ * Converts a numeric value to Amharic (Latin script) currency words (Ethiopian Birr).
224
+ *
225
+ * @param {number | string | bigint} value - The currency amount to convert
226
+ * @returns {string} The amount in Amharic (Latin) currency words
227
+ * @throws {TypeError} If value is not a valid numeric type
228
+ * @throws {Error} If value is not a valid number format
229
+ *
230
+ * @example
231
+ * toCurrency(42.50) // 'arba hulet birr hamsa santim'
232
+ * toCurrency(1) // 'and birr'
233
+ * toCurrency(0.01) // 'and santim'
234
+ */
235
+ function toCurrency (value) {
236
+ const { isNegative, dollars: birr, cents: santim } = parseCurrencyValue(value)
237
+
238
+ // Build result
239
+ let result = ''
240
+ if (isNegative) result = NEGATIVE + ' '
241
+
242
+ // Birr part - show if non-zero, or if no santim
243
+ if (birr > 0n || santim === 0n) {
244
+ result += integerToWords(birr)
245
+ result += ' ' + BIRR
246
+ }
247
+
248
+ // Santim part
249
+ if (santim > 0n) {
250
+ if (birr > 0n) {
251
+ result += ' '
252
+ }
253
+ result += integerToWords(santim)
254
+ result += ' ' + SANTIM
255
+ }
256
+
257
+ return result
258
+ }
259
+
260
+ // ============================================================================
261
+ // Exports
262
+ // ============================================================================
263
+
264
+ export { toCardinal, toOrdinal, toCurrency }
package/src/ar-SA.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Converts a numeric value to Arabic words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @param {Object} [options] - Optional configuration
6
+ * @param {('masculine'|'feminine')} [options.gender='masculine'] - Grammatical gender
7
+ * @param {string} [options.negativeWord] - Custom word for negative numbers
8
+ * @returns {string} The number in Arabic words
9
+ *
10
+ * @example
11
+ * toCardinal(1) // 'واحد'
12
+ * toCardinal(1, {gender: 'feminine'}) // 'واحدة'
13
+ */
14
+ export function toCardinal(value: number | string | bigint, options?: {
15
+ gender?: "masculine" | "feminine" | undefined;
16
+ negativeWord?: string | undefined;
17
+ }): string;
18
+ /**
19
+ * Converts a numeric value to Arabic ordinal words.
20
+ *
21
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
22
+ * @param {Object} [options] - Optional configuration
23
+ * @param {('masculine'|'feminine')} [options.gender='masculine'] - Grammatical gender
24
+ * @returns {string} The number as ordinal words
25
+ * @throws {TypeError} If value is not a valid numeric type
26
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
27
+ *
28
+ * @example
29
+ * toOrdinal(1) // 'الأول'
30
+ * toOrdinal(1, {gender: 'feminine'}) // 'الأولى'
31
+ * toOrdinal(3) // 'الثالث'
32
+ */
33
+ export function toOrdinal(value: number | string | bigint, options?: {
34
+ gender?: "masculine" | "feminine" | undefined;
35
+ }): string;
36
+ /**
37
+ * Converts a numeric value to Arabic currency words (Saudi Riyal).
38
+ *
39
+ * @param {number | string | bigint} value - The currency amount to convert
40
+ * @returns {string} The amount in Arabic currency words
41
+ * @throws {TypeError} If value is not a valid numeric type
42
+ * @throws {Error} If value is not a valid number format
43
+ *
44
+ * @example
45
+ * toCurrency(42.50) // 'اثنان وأربعون ريالاً وخمسون هللة'
46
+ * toCurrency(1) // 'ريال واحد'
47
+ * toCurrency(0.01) // 'هللة واحدة'
48
+ */
49
+ export function toCurrency(value: number | string | bigint): string;