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/el-GR.js ADDED
@@ -0,0 +1,418 @@
1
+ /**
2
+ * Greek (Greece) language converter
3
+ *
4
+ * CLDR: el-GR | Greek as used in Greece
5
+ *
6
+ * Key features:
7
+ * - Space-separated number composition
8
+ * - Implicit "one" (ένα) omission before scale words
9
+ * - Irregular hundreds (διακόσια, τριακόσια, etc.)
10
+ * - Per-digit decimal reading
11
+ */
12
+
13
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
14
+ import { parseCurrencyValue } from './utils/parse-currency.js'
15
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
16
+
17
+ // ============================================================================
18
+ // Vocabulary (module-level constants)
19
+ // ============================================================================
20
+
21
+ const ONES = ['', 'ένα', 'δύο', 'τρία', 'τέσσερα', 'πέντε', 'έξι', 'επτά', 'οκτώ', 'εννέα']
22
+
23
+ const TEENS = ['δέκα', 'έντεκα', 'δώδεκα', 'δεκατρία', 'δεκατέσσερα', 'δεκαπέντε', 'δεκαέξι', 'δεκαεπτά', 'δεκαοκτώ', 'δεκαεννέα']
24
+
25
+ const TENS = ['', '', 'είκοσι', 'τριάντα', 'σαράντα', 'πενήντα', 'εξήντα', 'εβδομήντα', 'ογδόντα', 'ενενήντα']
26
+
27
+ // Greek has irregular hundreds
28
+ const HUNDREDS = ['', 'εκατό', 'διακόσια', 'τριακόσια', 'τετρακόσια', 'πεντακόσια', 'εξακόσια', 'επτακόσια', 'οκτακόσια', 'εννιακόσια']
29
+
30
+ const THOUSAND = 'χίλια'
31
+
32
+ const ZERO = 'μηδέν'
33
+ const NEGATIVE = 'μείον'
34
+ const DECIMAL_SEP = 'κόμμα'
35
+
36
+ // Short scale
37
+ const SCALES = ['εκατομμύριο', 'δισεκατομμύριο', 'τρισεκατομμύριο']
38
+
39
+ // Ordinal vocabulary
40
+ const ORDINAL_ONES = ['', 'πρώτος', 'δεύτερος', 'τρίτος', 'τέταρτος', 'πέμπτος', 'έκτος', 'έβδομος', 'όγδοος', 'ένατος']
41
+
42
+ const ORDINAL_TEENS = ['δέκατος', 'ενδέκατος', 'δωδέκατος', 'δέκατος τρίτος', 'δέκατος τέταρτος', 'δέκατος πέμπτος', 'δέκατος έκτος', 'δέκατος έβδομος', 'δέκατος όγδοος', 'δέκατος ένατος']
43
+
44
+ const ORDINAL_TENS = ['', '', 'εικοστός', 'τριακοστός', 'τεσσαρακοστός', 'πεντηκοστός', 'εξηκοστός', 'εβδομηκοστός', 'ογδοηκοστός', 'ενενηκοστός']
45
+
46
+ const ORDINAL_HUNDREDS = ['', 'εκατοστός', 'διακοσιοστός', 'τριακοσιοστός', 'τετρακοσιοστός', 'πεντακοσιοστός', 'εξακοσιοστός', 'επτακοσιοστός', 'οκτακοσιοστός', 'εννιακοσιοστός']
47
+
48
+ const ORDINAL_THOUSAND = 'χιλιοστός'
49
+ const ORDINAL_MILLION = 'εκατομμυριοστός'
50
+
51
+ // Currency (Euro)
52
+ const EURO_FORMS = ['ευρώ', 'ευρώ'] // Singular, plural (indeclinable)
53
+ const CENT_FORMS = ['λεπτό', 'λεπτά'] // Singular, plural
54
+
55
+ // ============================================================================
56
+ // Segment Building
57
+ // ============================================================================
58
+
59
+ /**
60
+ * Builds segment word for 0-999.
61
+ */
62
+ function buildSegment (n) {
63
+ if (n === 0) return ''
64
+
65
+ const ones = n % 10
66
+ const tens = Math.trunc(n / 10) % 10
67
+ const hundreds = Math.trunc(n / 100)
68
+
69
+ const parts = []
70
+
71
+ // Hundreds (irregular forms)
72
+ if (hundreds > 0) {
73
+ parts.push(HUNDREDS[hundreds])
74
+ }
75
+
76
+ // Tens and ones
77
+ const tensOnes = n % 100
78
+
79
+ if (tensOnes === 0) {
80
+ // Just hundreds
81
+ } else if (tensOnes < 10) {
82
+ parts.push(ONES[ones])
83
+ } else if (tensOnes < 20) {
84
+ parts.push(TEENS[ones])
85
+ } else if (ones === 0) {
86
+ parts.push(TENS[tens])
87
+ } else {
88
+ parts.push(TENS[tens] + ' ' + ONES[ones])
89
+ }
90
+
91
+ return parts.join(' ')
92
+ }
93
+
94
+ // ============================================================================
95
+ // Conversion Functions
96
+ // ============================================================================
97
+
98
+ /**
99
+ * Converts a non-negative integer to Greek words.
100
+ *
101
+ * @param {bigint} n - Non-negative integer to convert
102
+ * @returns {string} Greek words
103
+ */
104
+ function integerToWords (n) {
105
+ if (n === 0n) return ZERO
106
+
107
+ // Fast path: numbers < 1000 (direct lookup)
108
+ if (n < 1000n) {
109
+ return buildSegment(Number(n))
110
+ }
111
+
112
+ // Fast path: numbers < 1,000,000 (thousands)
113
+ if (n < 1_000_000n) {
114
+ const thousands = Number(n / 1000n)
115
+ const remainder = Number(n % 1000n)
116
+
117
+ // Omit "ένα" before χίλια
118
+ let result
119
+ if (thousands === 1) {
120
+ result = THOUSAND
121
+ } else {
122
+ result = buildSegment(thousands) + ' ' + THOUSAND
123
+ }
124
+
125
+ if (remainder > 0) {
126
+ result += ' ' + buildSegment(remainder)
127
+ }
128
+
129
+ return result
130
+ }
131
+
132
+ // For numbers >= 1,000,000, use scale decomposition
133
+ return buildLargeNumberWords(n)
134
+ }
135
+
136
+ /**
137
+ * Builds words for numbers >= 1,000,000.
138
+ *
139
+ * @param {bigint} n - Number >= 1,000,000
140
+ * @returns {string} Greek words
141
+ */
142
+ function buildLargeNumberWords (n) {
143
+ const numStr = n.toString()
144
+ const len = numStr.length
145
+
146
+ // Build segments of 3 digits from right to left
147
+ const segments = []
148
+ const segmentSize = 3
149
+
150
+ const remainderLen = len % segmentSize
151
+ let pos = 0
152
+ if (remainderLen > 0) {
153
+ segments.push(Number(numStr.slice(0, remainderLen)))
154
+ pos = remainderLen
155
+ }
156
+ while (pos < len) {
157
+ segments.push(Number(numStr.slice(pos, pos + segmentSize)))
158
+ pos += segmentSize
159
+ }
160
+
161
+ // Convert segments to words
162
+ const parts = []
163
+ let scaleIndex = segments.length - 1
164
+
165
+ for (let i = 0; i < segments.length; i++) {
166
+ const segment = segments[i]
167
+
168
+ if (segment !== 0) {
169
+ const segmentWord = buildSegment(segment)
170
+
171
+ if (scaleIndex === 0) {
172
+ // Units segment
173
+ parts.push(segmentWord)
174
+ } else if (scaleIndex === 1) {
175
+ // Thousands - omit "ένα" before χίλια
176
+ if (segment === 1) {
177
+ parts.push(THOUSAND)
178
+ } else {
179
+ parts.push(segmentWord + ' ' + THOUSAND)
180
+ }
181
+ } else {
182
+ // Millions+ - omit "ένα" before scale words
183
+ const scaleWord = SCALES[scaleIndex - 2]
184
+ if (segment === 1) {
185
+ parts.push(scaleWord)
186
+ } else {
187
+ parts.push(segmentWord + ' ' + scaleWord)
188
+ }
189
+ }
190
+ }
191
+
192
+ scaleIndex--
193
+ }
194
+
195
+ return parts.join(' ')
196
+ }
197
+
198
+ /**
199
+ * Converts decimal digits to Greek words (per-digit).
200
+ *
201
+ * @param {string} decimalPart - Decimal digits (without the point)
202
+ * @returns {string} Greek words for decimal part
203
+ */
204
+ function decimalPartToWords (decimalPart) {
205
+ const parts = []
206
+
207
+ for (const digit of decimalPart) {
208
+ const d = parseInt(digit, 10)
209
+ if (d === 0) {
210
+ parts.push(ZERO)
211
+ } else {
212
+ parts.push(ONES[d])
213
+ }
214
+ }
215
+
216
+ return parts.join(' ')
217
+ }
218
+
219
+ /**
220
+ * Converts a numeric value to Greek words.
221
+ *
222
+ * @param {number | string | bigint} value - The numeric value to convert
223
+ * @returns {string} The number in Greek words
224
+ * @throws {TypeError} If value is not a valid numeric type
225
+ * @throws {Error} If value is not a valid number format
226
+ *
227
+ * @example
228
+ * toCardinal(21) // 'είκοσι ένα'
229
+ * toCardinal(1000) // 'χίλια'
230
+ * toCardinal('3.14') // 'τρία κόμμα ένα τέσσερα'
231
+ */
232
+ function toCardinal (value) {
233
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
234
+
235
+ let result = ''
236
+
237
+ if (isNegative) {
238
+ result = NEGATIVE + ' '
239
+ }
240
+
241
+ result += integerToWords(integerPart)
242
+
243
+ if (decimalPart) {
244
+ result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
245
+ }
246
+
247
+ return result
248
+ }
249
+
250
+ // ============================================================================
251
+ // Ordinal Functions
252
+ // ============================================================================
253
+
254
+ /**
255
+ * Builds ordinal for tens and ones (0-99).
256
+ *
257
+ * @param {number} n - Number 0-99
258
+ * @returns {string} Ordinal word
259
+ */
260
+ function buildOrdinalTensOnes (n) {
261
+ if (n === 0) return ''
262
+ if (n < 10) return ORDINAL_ONES[n]
263
+ if (n < 20) return ORDINAL_TEENS[n - 10]
264
+
265
+ const ones = n % 10
266
+ const tens = Math.trunc(n / 10)
267
+
268
+ if (ones === 0) {
269
+ return ORDINAL_TENS[tens]
270
+ }
271
+ return ORDINAL_TENS[tens] + ' ' + ORDINAL_ONES[ones]
272
+ }
273
+
274
+ /**
275
+ * Converts a non-negative integer to Greek ordinal words.
276
+ *
277
+ * @param {bigint} n - Non-negative integer to convert
278
+ * @returns {string} Greek ordinal words
279
+ */
280
+ function integerToOrdinal (n) {
281
+ if (n === 0n) return ''
282
+ if (n === 1n) return ORDINAL_ONES[1]
283
+
284
+ // Numbers < 100
285
+ if (n < 100n) {
286
+ return buildOrdinalTensOnes(Number(n))
287
+ }
288
+
289
+ // Numbers < 1000
290
+ if (n < 1000n) {
291
+ const hundreds = Number(n / 100n)
292
+ const remainder = Number(n % 100n)
293
+
294
+ if (remainder === 0) {
295
+ return ORDINAL_HUNDREDS[hundreds]
296
+ }
297
+ return HUNDREDS[hundreds] + ' ' + buildOrdinalTensOnes(remainder)
298
+ }
299
+
300
+ // Numbers < 1,000,000
301
+ if (n < 1_000_000n) {
302
+ const thousands = Number(n / 1000n)
303
+ const remainder = Number(n % 1000n)
304
+
305
+ if (remainder === 0) {
306
+ if (thousands === 1) {
307
+ return ORDINAL_THOUSAND
308
+ }
309
+ return buildSegment(thousands) + ' ' + ORDINAL_THOUSAND
310
+ }
311
+
312
+ // Cardinal thousands + ordinal remainder
313
+ let result
314
+ if (thousands === 1) {
315
+ result = THOUSAND
316
+ } else {
317
+ result = buildSegment(thousands) + ' ' + THOUSAND
318
+ }
319
+
320
+ if (remainder < 100) {
321
+ return result + ' ' + buildOrdinalTensOnes(remainder)
322
+ }
323
+
324
+ const remHundreds = Math.trunc(remainder / 100)
325
+ const remTensOnes = remainder % 100
326
+
327
+ if (remTensOnes === 0) {
328
+ return result + ' ' + ORDINAL_HUNDREDS[remHundreds]
329
+ }
330
+ return result + ' ' + HUNDREDS[remHundreds] + ' ' + buildOrdinalTensOnes(remTensOnes)
331
+ }
332
+
333
+ // Numbers >= 1,000,000
334
+ const millions = Number(n / 1_000_000n)
335
+ const remainder = n % 1_000_000n
336
+
337
+ if (remainder === 0n) {
338
+ if (millions === 1) {
339
+ return ORDINAL_MILLION
340
+ }
341
+ return buildSegment(millions) + ' ' + ORDINAL_MILLION
342
+ }
343
+
344
+ // Cardinal millions + ordinal remainder
345
+ let result
346
+ if (millions === 1) {
347
+ result = SCALES[0]
348
+ } else {
349
+ result = buildSegment(millions) + ' ' + SCALES[0]
350
+ }
351
+
352
+ return result + ' ' + integerToOrdinal(remainder)
353
+ }
354
+
355
+ /**
356
+ * Converts a numeric value to Greek ordinal words.
357
+ *
358
+ * @param {number | string | bigint} value - The numeric value to convert
359
+ * @returns {string} The ordinal in Greek words
360
+ * @throws {TypeError} If value is not a valid numeric type
361
+ * @throws {Error} If value is not a positive integer
362
+ *
363
+ * @example
364
+ * toOrdinal(1) // 'πρώτος'
365
+ * toOrdinal(21) // 'εικοστός πρώτος'
366
+ */
367
+ function toOrdinal (value) {
368
+ const n = parseOrdinalValue(value)
369
+ return integerToOrdinal(n)
370
+ }
371
+
372
+ // ============================================================================
373
+ // Currency Functions
374
+ // ============================================================================
375
+
376
+ /**
377
+ * Converts a numeric value to Greek Euro currency words.
378
+ *
379
+ * @param {number | string | bigint} value - The numeric value to convert
380
+ * @returns {string} The currency in Greek words
381
+ * @throws {TypeError} If value is not a valid numeric type
382
+ * @throws {Error} If value is not a valid number format
383
+ *
384
+ * @example
385
+ * toCurrency(1) // 'ένα ευρώ'
386
+ * toCurrency(2.50) // 'δύο ευρώ πενήντα λεπτά'
387
+ */
388
+ function toCurrency (value) {
389
+ const { isNegative, dollars, cents } = parseCurrencyValue(value)
390
+
391
+ const parts = []
392
+
393
+ if (isNegative) {
394
+ parts.push(NEGATIVE)
395
+ }
396
+
397
+ // Euros
398
+ if (dollars > 0n || cents === 0n) {
399
+ const euroWord = integerToWords(dollars)
400
+ const euroForm = dollars === 1n ? EURO_FORMS[0] : EURO_FORMS[1]
401
+ parts.push(euroWord + ' ' + euroForm)
402
+ }
403
+
404
+ // Cents (λεπτά)
405
+ if (cents > 0n) {
406
+ const centWord = integerToWords(cents)
407
+ const centForm = cents === 1n ? CENT_FORMS[0] : CENT_FORMS[1]
408
+ parts.push(centWord + ' ' + centForm)
409
+ }
410
+
411
+ return parts.join(' ')
412
+ }
413
+
414
+ // ============================================================================
415
+ // Public API
416
+ // ============================================================================
417
+
418
+ export { toCardinal, toOrdinal, toCurrency }
package/src/en-AU.d.ts ADDED
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Converts a numeric value to Australian English words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in English 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(42) // 'forty-two'
11
+ * toCardinal(101) // 'one hundred and one'
12
+ * toCardinal(1000000) // 'one million'
13
+ */
14
+ export function toCardinal(value: number | string | bigint): string;
15
+ /**
16
+ * Converts a numeric value to Australian English ordinal words.
17
+ *
18
+ * @param {number | string | bigint} value - The numeric value to convert (must be a 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) // 'first'
25
+ * toOrdinal(42) // 'forty-second'
26
+ * toOrdinal(100) // 'one hundredth'
27
+ */
28
+ export function toOrdinal(value: number | string | bigint): string;
29
+ /**
30
+ * Converts a numeric value to Australian English currency words.
31
+ *
32
+ * @param {number | string | bigint} value - The currency amount to convert
33
+ * @param {Object} [options] - Optional configuration
34
+ * @param {boolean} [options.and=true] - Use "and" between dollars and cents
35
+ * @returns {string} The amount in Australian English 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(42.50) // 'forty-two dollars and fifty cents'
41
+ * toCurrency(1) // 'one dollar'
42
+ * toCurrency(0.99) // 'ninety-nine cents'
43
+ * toCurrency(42.50, { and: false }) // 'forty-two dollars fifty cents'
44
+ */
45
+ export function toCurrency(value: number | string | bigint, options?: {
46
+ and?: boolean | undefined;
47
+ }): string;