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
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Bangla language converter - Functional Implementation
2
+ * Bangla (Bangladesh) language converter
3
3
  *
4
- * Self-contained module with its own input validation, ready for subpath exports.
4
+ * CLDR: bn-BD | Bengali as used in Bangladesh
5
5
  *
6
6
  * Key features:
7
7
  * - Indian numbering system (হাজার, লাখ, কোটি)
@@ -10,7 +10,9 @@
10
10
  * - Complete word forms for 0-99
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
@@ -21,6 +23,26 @@ const NEGATIVE = 'মাইনাস'
21
23
  const DECIMAL_SEP = 'দশমিক'
22
24
  const HUNDRED = 'শত'
23
25
 
26
+ // ============================================================================
27
+ // Ordinal Vocabulary
28
+ // ============================================================================
29
+
30
+ // Ordinal suffix (adds to cardinal for numbers >= 7)
31
+ const ORDINAL_SUFFIX = 'তম'
32
+
33
+ // Special ordinals for first few numbers (1-6 have irregular forms)
34
+ const ORDINAL_SPECIAL = ['', 'প্রথম', 'দ্বিতীয়', 'তৃতীয়', 'চতুর্থ', 'পঞ্চম', 'ষষ্ঠ']
35
+
36
+ // ============================================================================
37
+ // Currency Vocabulary (Bangladeshi Taka)
38
+ // ============================================================================
39
+
40
+ // Taka: singular/plural (same form used in Bengali)
41
+ const TAKA = 'টাকা'
42
+
43
+ // Paisa: singular/plural (same form used in Bengali)
44
+ const PAISA = 'পয়সা'
45
+
24
46
  const BELOW_HUNDRED = [
25
47
  'শূন্য', 'এক', 'দুই', 'তিন', 'চার', 'পাঁচ', 'ছয়', 'সাত', 'আট', 'নয়',
26
48
  'দশ', 'এগারো', 'বারো', 'তেরো', 'চৌদ্দ', 'পনেরো', 'ষোল', 'সতেরো', 'আঠারো', 'উনিশ',
@@ -141,8 +163,8 @@ function decimalPartToWords (decimalPart) {
141
163
  * @param {number | string | bigint} value - The numeric value to convert
142
164
  * @returns {string} The number in Bengali words
143
165
  */
144
- function toWords (value) {
145
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
166
+ function toCardinal (value) {
167
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
146
168
 
147
169
  let result = ''
148
170
 
@@ -159,8 +181,90 @@ function toWords (value) {
159
181
  return result
160
182
  }
161
183
 
184
+ // ============================================================================
185
+ // ORDINAL: toOrdinal(value)
186
+ // ============================================================================
187
+
188
+ /**
189
+ * Converts a positive integer to Bengali ordinal words.
190
+ *
191
+ * Bengali ordinals: First 6 are irregular, then add -তম suffix.
192
+ *
193
+ * @param {bigint} n - Positive integer to convert
194
+ * @returns {string} Bengali ordinal words
195
+ */
196
+ function integerToOrdinal (n) {
197
+ // Special ordinals for 1-6
198
+ if (n >= 1n && n <= 6n) {
199
+ return ORDINAL_SPECIAL[Number(n)]
200
+ }
201
+
202
+ // For 7 and above, add suffix to cardinal
203
+ const cardinal = integerToWords(n)
204
+ return cardinal + ORDINAL_SUFFIX
205
+ }
206
+
207
+ /**
208
+ * Converts a numeric value to Bengali ordinal words.
209
+ *
210
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
211
+ * @returns {string} The number as ordinal words
212
+ * @throws {TypeError} If value is not a valid numeric type
213
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
214
+ *
215
+ * @example
216
+ * toOrdinal(1) // 'প্রথম'
217
+ * toOrdinal(2) // 'দ্বিতীয়'
218
+ * toOrdinal(3) // 'তৃতীয়'
219
+ * toOrdinal(10) // 'দশতম'
220
+ */
221
+ function toOrdinal (value) {
222
+ const integerPart = parseOrdinalValue(value)
223
+ return integerToOrdinal(integerPart)
224
+ }
225
+
226
+ // ============================================================================
227
+ // CURRENCY: toCurrency(value, options?)
228
+ // ============================================================================
229
+
230
+ /**
231
+ * Converts a numeric value to Bengali currency words (Bangladeshi Taka).
232
+ *
233
+ * @param {number | string | bigint} value - The currency amount to convert
234
+ * @returns {string} The amount in Bengali currency words
235
+ * @throws {TypeError} If value is not a valid numeric type
236
+ * @throws {Error} If value is not a valid number format
237
+ *
238
+ * @example
239
+ * toCurrency(42.50) // 'বেয়াল্লিশ টাকা পঞ্চাশ পয়সা'
240
+ * toCurrency(1) // 'এক টাকা'
241
+ * toCurrency(0.01) // 'এক পয়সা'
242
+ */
243
+ function toCurrency (value) {
244
+ const { isNegative, dollars: taka, cents: paisa } = parseCurrencyValue(value)
245
+
246
+ // Build result
247
+ let result = ''
248
+ if (isNegative) result = NEGATIVE + ' '
249
+
250
+ // Taka part - show if non-zero, or if no paisa
251
+ if (taka > 0n || paisa === 0n) {
252
+ result += integerToWords(taka) + ' ' + TAKA
253
+ }
254
+
255
+ // Paisa part
256
+ if (paisa > 0n) {
257
+ if (taka > 0n) {
258
+ result += ' '
259
+ }
260
+ result += integerToWords(paisa) + ' ' + PAISA
261
+ }
262
+
263
+ return result
264
+ }
265
+
162
266
  // ============================================================================
163
267
  // Exports
164
268
  // ============================================================================
165
269
 
166
- export { toWords }
270
+ export { toCardinal, toOrdinal, toCurrency }
package/src/cs-CZ.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Converts a numeric value to Czech words.
3
+ *
4
+ * This is the main public API. It accepts any valid numeric input
5
+ * (number, string, or bigint) and handles parsing internally.
6
+ *
7
+ * @param {number | string | bigint} value - The numeric value to convert
8
+ * @returns {string} The number in Czech words
9
+ * @throws {TypeError} If value is not a valid numeric type
10
+ * @throws {Error} If value is not a valid number format
11
+ *
12
+ * @example
13
+ * toCardinal(21) // 'dvacet jedna'
14
+ * toCardinal(1000) // 'tisíc'
15
+ * toCardinal(2000) // 'dva tisíce'
16
+ * toCardinal(5000) // 'pět tisíc'
17
+ */
18
+ export function toCardinal(value: number | string | bigint): string;
19
+ /**
20
+ * Converts a numeric value to Czech 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) // 'první'
29
+ * toOrdinal(2) // 'druhý'
30
+ * toOrdinal(21) // 'dvacet první'
31
+ * toOrdinal(100) // 'stý'
32
+ * toOrdinal(1000) // 'tisící'
33
+ */
34
+ export function toOrdinal(value: number | string | bigint): string;
35
+ /**
36
+ * Converts a numeric value to Czech currency words (Koruna).
37
+ *
38
+ * @param {number | string | bigint} value - The currency amount to convert
39
+ * @returns {string} The amount in Czech 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) // 'čtyřicet dva koruny'
45
+ * toCurrency(1) // 'jedna koruna'
46
+ * toCurrency(1.50) // 'jedna koruna padesát haléřů'
47
+ * toCurrency(-5) // 'mínus pět korun'
48
+ */
49
+ export function toCurrency(value: number | string | bigint): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Czech language converter - Functional Implementation
2
+ * Czech (Czechia) language converter
3
3
  *
4
- * Self-contained module with its own input validation, ready for subpath exports.
4
+ * CLDR: cs-CZ | Czech as used in Czechia
5
5
  *
6
6
  * Czech-specific rules:
7
7
  * - Three-form pluralization: 1 = singular, 2-4 = few, 5+ = many
@@ -11,7 +11,9 @@
11
11
  * - Dynamic decimal separator: celá/celé/celých based on integer
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 (module-level constants)
@@ -45,6 +47,34 @@ const PLURAL_FORMS = {
45
47
  const ZERO = 'nula'
46
48
  const NEGATIVE = 'mínus'
47
49
 
50
+ // ============================================================================
51
+ // Ordinal Vocabulary
52
+ // ============================================================================
53
+
54
+ // Czech ordinals (masculine nominative singular)
55
+ const ORDINAL_ONES = ['', 'první', 'druhý', 'třetí', 'čtvrtý', 'pátý', 'šestý', 'sedmý', 'osmý', 'devátý']
56
+
57
+ // Ordinal teens
58
+ const ORDINAL_TEENS = ['desátý', 'jedenáctý', 'dvanáctý', 'třináctý', 'čtrnáctý', 'patnáctý', 'šestnáctý', 'sedmnáctý', 'osmnáctý', 'devatenáctý']
59
+
60
+ // Ordinal tens (for exact tens)
61
+ const ORDINAL_TENS = ['', '', 'dvacátý', 'třicátý', 'čtyřicátý', 'padesátý', 'šedesátý', 'sedmdesátý', 'osmdesátý', 'devadesátý']
62
+
63
+ // Ordinal hundreds (for exact hundreds)
64
+ const ORDINAL_HUNDREDS = ['', 'stý', 'dvoustý', 'třístý', 'čtyřstý', 'pětistý', 'šestistý', 'sedmistý', 'osmistý', 'devítistý']
65
+
66
+ // Scale ordinals
67
+ const ORDINAL_SCALES = ['tisící', 'miliontý', 'miliardtý', 'biliontý']
68
+
69
+ // ============================================================================
70
+ // Currency Vocabulary (Czech Koruna)
71
+ // ============================================================================
72
+
73
+ // Koruna forms: [singular, few (2-4), many (5+)]
74
+ const KORUNA_FORMS = ['koruna', 'koruny', 'korun']
75
+ // Haléř forms: [singular, few (2-4), many (5+)]
76
+ const HALER_FORMS = ['haléř', 'haléře', 'haléřů']
77
+
48
78
  // ============================================================================
49
79
  // Segment Building
50
80
  // ============================================================================
@@ -56,8 +86,8 @@ function buildSegment (n) {
56
86
  if (n === 0) return ''
57
87
 
58
88
  const ones = n % 10
59
- const tens = Math.floor(n / 10) % 10
60
- const hundreds = Math.floor(n / 100)
89
+ const tens = Math.trunc(n / 10) % 10
90
+ const hundreds = Math.trunc(n / 100)
61
91
 
62
92
  const parts = []
63
93
 
@@ -90,8 +120,8 @@ function buildSegmentWithHundreds (n) {
90
120
  if (n === 0) return ''
91
121
 
92
122
  const ones = n % 10
93
- const tens = Math.floor(n / 10) % 10
94
- const hundreds = Math.floor(n / 100)
123
+ const tens = Math.trunc(n / 10) % 10
124
+ const hundreds = Math.trunc(n / 100)
95
125
 
96
126
  const parts = []
97
127
 
@@ -291,13 +321,13 @@ function decimalPartToWords (decimalPart) {
291
321
  * @throws {Error} If value is not a valid number format
292
322
  *
293
323
  * @example
294
- * toWords(21) // 'dvacet jedna'
295
- * toWords(1000) // 'tisíc'
296
- * toWords(2000) // 'dva tisíce'
297
- * toWords(5000) // 'pět tisíc'
324
+ * toCardinal(21) // 'dvacet jedna'
325
+ * toCardinal(1000) // 'tisíc'
326
+ * toCardinal(2000) // 'dva tisíce'
327
+ * toCardinal(5000) // 'pět tisíc'
298
328
  */
299
- function toWords (value) {
300
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
329
+ function toCardinal (value) {
330
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
301
331
 
302
332
  let result = ''
303
333
 
@@ -315,8 +345,204 @@ function toWords (value) {
315
345
  return result
316
346
  }
317
347
 
348
+ // ============================================================================
349
+ // ORDINAL: toOrdinal(value)
350
+ // ============================================================================
351
+
352
+ /**
353
+ * Builds ordinal for a 0-99 segment when it's the final (ordinal) part.
354
+ *
355
+ * @param {number} n - Number 0-99
356
+ * @returns {string} Ordinal words
357
+ */
358
+ function buildOrdinalTensOnes (n) {
359
+ if (n === 0) return ''
360
+
361
+ const onesDigit = n % 10
362
+ const tensDigit = Math.trunc(n / 10)
363
+
364
+ if (tensDigit === 0) {
365
+ return ORDINAL_ONES[onesDigit]
366
+ }
367
+
368
+ if (tensDigit === 1) {
369
+ return ORDINAL_TEENS[onesDigit]
370
+ }
371
+
372
+ if (onesDigit === 0) {
373
+ return ORDINAL_TENS[tensDigit]
374
+ }
375
+
376
+ return TENS[tensDigit] + ' ' + ORDINAL_ONES[onesDigit]
377
+ }
378
+
379
+ /**
380
+ * Converts a positive integer to Czech ordinal words (masculine nominative).
381
+ *
382
+ * @param {bigint} n - Positive integer to convert
383
+ * @returns {string} Ordinal Czech words
384
+ */
385
+ function integerToOrdinal (n) {
386
+ if (n < 100n) {
387
+ return buildOrdinalTensOnes(Number(n))
388
+ }
389
+
390
+ if (n < 1000n) {
391
+ const num = Number(n)
392
+ const hundredsDigit = Math.trunc(num / 100)
393
+ const remainder = num % 100
394
+
395
+ if (remainder === 0) {
396
+ return ORDINAL_HUNDREDS[hundredsDigit]
397
+ }
398
+
399
+ return HUNDREDS[hundredsDigit] + ' ' + buildOrdinalTensOnes(remainder)
400
+ }
401
+
402
+ if (n < 1_000_000n) {
403
+ const thousands = Number(n / 1000n)
404
+ const remainder = Number(n % 1000n)
405
+
406
+ if (remainder === 0) {
407
+ if (thousands === 1) {
408
+ return ORDINAL_SCALES[0]
409
+ }
410
+ return buildSegment(thousands) + ' ' + ORDINAL_SCALES[0]
411
+ }
412
+
413
+ const scaleWord = pluralize(BigInt(thousands), PLURAL_FORMS[1])
414
+ const thousandsWord = thousands === 1 ? '' : buildSegment(thousands) + ' '
415
+ return (thousands === 1 ? 'tisíc' : thousandsWord + scaleWord) + ' ' + integerToOrdinal(BigInt(remainder))
416
+ }
417
+
418
+ return buildLargeOrdinal(n)
419
+ }
420
+
421
+ /**
422
+ * Builds ordinal words for numbers >= 1,000,000.
423
+ *
424
+ * @param {bigint} n - Number >= 1,000,000
425
+ * @returns {string} Ordinal Czech words
426
+ */
427
+ function buildLargeOrdinal (n) {
428
+ const segmentValues = []
429
+ let temp = n
430
+ while (temp > 0n) {
431
+ segmentValues.push(temp % 1000n)
432
+ temp = temp / 1000n
433
+ }
434
+
435
+ let lastNonZeroIdx = 0
436
+ for (let i = 0; i < segmentValues.length; i++) {
437
+ if (segmentValues[i] !== 0n) {
438
+ lastNonZeroIdx = i
439
+ }
440
+ }
441
+
442
+ const parts = []
443
+
444
+ for (let i = segmentValues.length - 1; i >= 0; i--) {
445
+ const segment = segmentValues[i]
446
+ if (segment === 0n) continue
447
+
448
+ const isLastNonZero = (i === lastNonZeroIdx)
449
+
450
+ if (i === 0) {
451
+ if (isLastNonZero) {
452
+ parts.push(integerToOrdinal(segment))
453
+ } else {
454
+ parts.push(buildSegmentWithHundreds(Number(segment)))
455
+ }
456
+ } else {
457
+ if (isLastNonZero) {
458
+ if (segment === 1n) {
459
+ parts.push(ORDINAL_SCALES[i - 1] || PLURAL_FORMS[i][0])
460
+ } else {
461
+ parts.push(buildSegment(Number(segment)) + ' ' + (ORDINAL_SCALES[i - 1] || PLURAL_FORMS[i][0]))
462
+ }
463
+ } else {
464
+ const forms = PLURAL_FORMS[i]
465
+ if (forms) {
466
+ const scaleWord = pluralize(segment, forms)
467
+ if (segment === 1n) {
468
+ parts.push(scaleWord)
469
+ } else {
470
+ parts.push(buildSegment(Number(segment)) + ' ' + scaleWord)
471
+ }
472
+ }
473
+ }
474
+ }
475
+ }
476
+
477
+ return parts.join(' ')
478
+ }
479
+
480
+ /**
481
+ * Converts a numeric value to Czech ordinal words (masculine nominative).
482
+ *
483
+ * @param {number | string | bigint} value - The numeric value to convert (must be a positive integer)
484
+ * @returns {string} The number as ordinal words
485
+ * @throws {TypeError} If value is not a valid numeric type
486
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
487
+ *
488
+ * @example
489
+ * toOrdinal(1) // 'první'
490
+ * toOrdinal(2) // 'druhý'
491
+ * toOrdinal(21) // 'dvacet první'
492
+ * toOrdinal(100) // 'stý'
493
+ * toOrdinal(1000) // 'tisící'
494
+ */
495
+ function toOrdinal (value) {
496
+ const integerPart = parseOrdinalValue(value)
497
+ return integerToOrdinal(integerPart)
498
+ }
499
+
500
+ // ============================================================================
501
+ // CURRENCY: toCurrency(value)
502
+ // ============================================================================
503
+
504
+ /**
505
+ * Converts a numeric value to Czech currency words (Koruna).
506
+ *
507
+ * @param {number | string | bigint} value - The currency amount to convert
508
+ * @returns {string} The amount in Czech currency words
509
+ * @throws {TypeError} If value is not a valid numeric type
510
+ * @throws {Error} If value is not a valid number format
511
+ *
512
+ * @example
513
+ * toCurrency(42) // 'čtyřicet dva koruny'
514
+ * toCurrency(1) // 'jedna koruna'
515
+ * toCurrency(1.50) // 'jedna koruna padesát haléřů'
516
+ * toCurrency(-5) // 'mínus pět korun'
517
+ */
518
+ function toCurrency (value) {
519
+ const { isNegative, dollars: koruny, cents: halere } = parseCurrencyValue(value)
520
+
521
+ let result = ''
522
+ if (isNegative) {
523
+ result = NEGATIVE + ' '
524
+ }
525
+
526
+ // Koruna part
527
+ if (koruny > 0n || halere === 0n) {
528
+ result += integerToWords(koruny)
529
+ result += ' ' + pluralize(koruny, KORUNA_FORMS)
530
+ }
531
+
532
+ // Haléř part
533
+ if (halere > 0n) {
534
+ if (koruny > 0n) {
535
+ result += ' '
536
+ }
537
+ result += integerToWords(halere)
538
+ result += ' ' + pluralize(halere, HALER_FORMS)
539
+ }
540
+
541
+ return result
542
+ }
543
+
318
544
  // ============================================================================
319
545
  // Public API
320
546
  // ============================================================================
321
547
 
322
- export { toWords }
548
+ export { toCardinal, toOrdinal, toCurrency }
package/src/da-DK.d.ts ADDED
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Converts a numeric value to Danish words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Danish 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) // 'enogtyve'
11
+ * toCardinal(1000) // 'ettusind'
12
+ * toCardinal(1000000) // 'en millioner'
13
+ */
14
+ export function toCardinal(value: number | string | bigint): string;
15
+ /**
16
+ * Converts a numeric value to Danish 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) // 'første'
25
+ * toOrdinal(2) // 'anden'
26
+ * toOrdinal(21) // 'enogtyvede'
27
+ */
28
+ export function toOrdinal(value: number | string | bigint): string;
29
+ /**
30
+ * Converts a numeric value to Danish currency words (Danish Krone).
31
+ *
32
+ * Uses krone/kroner and øre (100 øre = 1 krone).
33
+ *
34
+ * @param {number | string | bigint} value - The currency amount to convert
35
+ * @returns {string} The amount in Danish currency words
36
+ * @throws {TypeError} If value is not a valid numeric type
37
+ * @throws {Error} If value is not a valid number format
38
+ *
39
+ * @example
40
+ * toCurrency(1) // 'en krone'
41
+ * toCurrency(42) // 'toogfyrre kroner'
42
+ * toCurrency(1.50) // 'en krone og halvtreds øre'
43
+ */
44
+ export function toCurrency(value: number | string | bigint): string;