n2words 3.1.0 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (486) hide show
  1. package/CHANGELOG.md +51 -40
  2. package/LICENSE +1 -1
  3. package/README.md +64 -184
  4. package/dist/am-ET.js +2 -0
  5. package/dist/am-ET.umd.js +2 -0
  6. package/dist/am-Latn-ET.js +2 -0
  7. package/dist/am-Latn-ET.umd.js +2 -0
  8. package/dist/ar-SA.js +2 -0
  9. package/dist/ar-SA.umd.js +2 -0
  10. package/dist/az-AZ.js +2 -0
  11. package/dist/az-AZ.umd.js +2 -0
  12. package/dist/bn-BD.js +2 -0
  13. package/dist/bn-BD.umd.js +2 -0
  14. package/dist/cs-CZ.js +2 -0
  15. package/dist/cs-CZ.umd.js +2 -0
  16. package/dist/da-DK.js +2 -0
  17. package/dist/da-DK.umd.js +2 -0
  18. package/dist/de-DE.js +2 -0
  19. package/dist/de-DE.umd.js +2 -0
  20. package/dist/el-GR.js +2 -0
  21. package/dist/el-GR.umd.js +2 -0
  22. package/dist/en-AU.js +2 -0
  23. package/dist/en-AU.umd.js +2 -0
  24. package/dist/en-BD.js +2 -0
  25. package/dist/en-BD.umd.js +2 -0
  26. package/dist/en-CA.js +2 -0
  27. package/dist/en-CA.umd.js +2 -0
  28. package/dist/en-GB.js +2 -0
  29. package/dist/en-GB.umd.js +2 -0
  30. package/dist/en-GH.js +2 -0
  31. package/dist/en-GH.umd.js +2 -0
  32. package/dist/en-IE.js +2 -0
  33. package/dist/en-IE.umd.js +2 -0
  34. package/dist/en-IN.js +2 -0
  35. package/dist/en-IN.umd.js +2 -0
  36. package/dist/en-KE.js +2 -0
  37. package/dist/en-KE.umd.js +2 -0
  38. package/dist/en-MY.js +2 -0
  39. package/dist/en-MY.umd.js +2 -0
  40. package/dist/en-NG.js +2 -0
  41. package/dist/en-NG.umd.js +2 -0
  42. package/dist/en-NZ.js +2 -0
  43. package/dist/en-NZ.umd.js +2 -0
  44. package/dist/en-PH.js +2 -0
  45. package/dist/en-PH.umd.js +2 -0
  46. package/dist/en-PK.js +2 -0
  47. package/dist/en-PK.umd.js +2 -0
  48. package/dist/en-SG.js +2 -0
  49. package/dist/en-SG.umd.js +2 -0
  50. package/dist/en-US.js +2 -0
  51. package/dist/en-US.umd.js +2 -0
  52. package/dist/en-ZA.js +2 -0
  53. package/dist/en-ZA.umd.js +2 -0
  54. package/dist/es-ES.js +2 -0
  55. package/dist/es-ES.umd.js +2 -0
  56. package/dist/es-MX.js +2 -0
  57. package/dist/es-MX.umd.js +2 -0
  58. package/dist/es-US.js +2 -0
  59. package/dist/es-US.umd.js +2 -0
  60. package/dist/fa-IR.js +2 -0
  61. package/dist/fa-IR.umd.js +2 -0
  62. package/dist/fi-FI.js +2 -0
  63. package/dist/fi-FI.umd.js +2 -0
  64. package/dist/fil-PH.js +2 -0
  65. package/dist/fil-PH.umd.js +2 -0
  66. package/dist/fr-BE.js +2 -0
  67. package/dist/fr-BE.umd.js +2 -0
  68. package/dist/fr-FR.js +2 -0
  69. package/dist/fr-FR.umd.js +2 -0
  70. package/dist/gu-IN.js +2 -0
  71. package/dist/gu-IN.umd.js +2 -0
  72. package/dist/ha-NG.js +2 -0
  73. package/dist/ha-NG.umd.js +2 -0
  74. package/dist/hbo-IL.js +2 -0
  75. package/dist/hbo-IL.umd.js +2 -0
  76. package/dist/he-IL.js +2 -0
  77. package/dist/he-IL.umd.js +2 -0
  78. package/dist/hi-IN.js +2 -0
  79. package/dist/hi-IN.umd.js +2 -0
  80. package/dist/hr-HR.js +2 -0
  81. package/dist/hr-HR.umd.js +2 -0
  82. package/dist/hu-HU.js +2 -0
  83. package/dist/hu-HU.umd.js +2 -0
  84. package/dist/id-ID.js +2 -0
  85. package/dist/id-ID.umd.js +2 -0
  86. package/dist/it-IT.js +2 -0
  87. package/dist/it-IT.umd.js +2 -0
  88. package/dist/ja-JP.js +2 -0
  89. package/dist/ja-JP.umd.js +2 -0
  90. package/dist/ka-GE.js +2 -0
  91. package/dist/ka-GE.umd.js +2 -0
  92. package/dist/kn-IN.js +2 -0
  93. package/dist/kn-IN.umd.js +2 -0
  94. package/dist/ko-KR.js +2 -0
  95. package/dist/ko-KR.umd.js +2 -0
  96. package/dist/lt-LT.js +2 -0
  97. package/dist/lt-LT.umd.js +2 -0
  98. package/dist/lv-LV.js +2 -0
  99. package/dist/lv-LV.umd.js +2 -0
  100. package/dist/mr-IN.js +2 -0
  101. package/dist/mr-IN.umd.js +2 -0
  102. package/dist/ms-MY.js +2 -0
  103. package/dist/ms-MY.umd.js +2 -0
  104. package/dist/nb-NO.js +2 -0
  105. package/dist/nb-NO.umd.js +2 -0
  106. package/dist/nl-NL.js +2 -0
  107. package/dist/nl-NL.umd.js +2 -0
  108. package/dist/pa-IN.js +2 -0
  109. package/dist/pa-IN.umd.js +2 -0
  110. package/dist/pl-PL.js +2 -0
  111. package/dist/pl-PL.umd.js +2 -0
  112. package/dist/pt-BR.js +2 -0
  113. package/dist/pt-BR.umd.js +2 -0
  114. package/dist/pt-PT.js +2 -0
  115. package/dist/pt-PT.umd.js +2 -0
  116. package/dist/ro-RO.js +2 -0
  117. package/dist/ro-RO.umd.js +2 -0
  118. package/dist/ru-RU.js +2 -0
  119. package/dist/ru-RU.umd.js +2 -0
  120. package/dist/sr-Cyrl-RS.js +2 -0
  121. package/dist/sr-Cyrl-RS.umd.js +2 -0
  122. package/dist/sr-Latn-RS.js +2 -0
  123. package/dist/sr-Latn-RS.umd.js +2 -0
  124. package/dist/sv-SE.js +2 -0
  125. package/dist/sv-SE.umd.js +2 -0
  126. package/dist/sw-KE.js +2 -0
  127. package/dist/sw-KE.umd.js +2 -0
  128. package/dist/ta-IN.js +2 -0
  129. package/dist/ta-IN.umd.js +2 -0
  130. package/dist/te-IN.js +2 -0
  131. package/dist/te-IN.umd.js +2 -0
  132. package/dist/th-TH.js +2 -0
  133. package/dist/th-TH.umd.js +2 -0
  134. package/dist/tr-TR.js +2 -0
  135. package/dist/tr-TR.umd.js +2 -0
  136. package/dist/uk-UA.js +2 -0
  137. package/dist/uk-UA.umd.js +2 -0
  138. package/dist/ur-PK.js +2 -0
  139. package/dist/ur-PK.umd.js +2 -0
  140. package/dist/vi-VN.js +2 -0
  141. package/dist/vi-VN.umd.js +2 -0
  142. package/dist/yo-NG.js +2 -0
  143. package/dist/yo-NG.umd.js +2 -0
  144. package/dist/zh-Hans-CN.js +2 -0
  145. package/dist/zh-Hans-CN.umd.js +2 -0
  146. package/dist/zh-Hant-TW.js +2 -0
  147. package/dist/zh-Hant-TW.umd.js +2 -0
  148. package/package.json +61 -88
  149. package/src/am-ET.d.ts +40 -0
  150. package/src/am-ET.js +269 -0
  151. package/src/am-Latn-ET.d.ts +35 -0
  152. package/src/am-Latn-ET.js +264 -0
  153. package/src/ar-SA.d.ts +49 -0
  154. package/{lib/languages/ar.js → src/ar-SA.js} +177 -15
  155. package/src/az-AZ.d.ts +37 -0
  156. package/src/az-AZ.js +312 -0
  157. package/src/bn-BD.d.ts +36 -0
  158. package/{lib/languages/bn.js → src/bn-BD.js} +110 -6
  159. package/src/cs-CZ.d.ts +49 -0
  160. package/{lib/languages/cs.js → src/cs-CZ.js} +240 -14
  161. package/src/da-DK.d.ts +44 -0
  162. package/{lib/languages/da.js → src/da-DK.js} +131 -11
  163. package/src/de-DE.d.ts +57 -0
  164. package/src/de-DE.js +603 -0
  165. package/src/el-GR.d.ts +40 -0
  166. package/src/el-GR.js +418 -0
  167. package/src/en-AU.d.ts +47 -0
  168. package/src/en-AU.js +423 -0
  169. package/src/en-BD.d.ts +49 -0
  170. package/src/en-BD.js +415 -0
  171. package/src/en-CA.d.ts +63 -0
  172. package/src/en-CA.js +518 -0
  173. package/src/en-GB.d.ts +56 -0
  174. package/src/en-GB.js +469 -0
  175. package/src/en-GH.d.ts +11 -0
  176. package/src/en-GH.js +345 -0
  177. package/src/en-IE.d.ts +56 -0
  178. package/src/en-IE.js +479 -0
  179. package/src/en-IN.d.ts +49 -0
  180. package/src/en-IN.js +415 -0
  181. package/src/en-KE.d.ts +11 -0
  182. package/src/en-KE.js +345 -0
  183. package/src/en-MY.d.ts +11 -0
  184. package/src/en-MY.js +347 -0
  185. package/src/en-NG.d.ts +56 -0
  186. package/src/en-NG.js +479 -0
  187. package/src/en-NZ.d.ts +11 -0
  188. package/{lib/languages/en.js → src/en-NZ.js} +164 -31
  189. package/src/en-PH.d.ts +11 -0
  190. package/src/en-PH.js +345 -0
  191. package/src/en-PK.d.ts +49 -0
  192. package/src/en-PK.js +415 -0
  193. package/src/en-SG.d.ts +11 -0
  194. package/src/en-SG.js +345 -0
  195. package/src/en-US.d.ts +63 -0
  196. package/src/en-US.js +516 -0
  197. package/src/en-ZA.d.ts +56 -0
  198. package/src/en-ZA.js +478 -0
  199. package/src/es-ES.d.ts +65 -0
  200. package/src/es-ES.js +541 -0
  201. package/src/es-MX.d.ts +58 -0
  202. package/{lib/languages/es.js → src/es-MX.js} +228 -18
  203. package/src/es-US.d.ts +58 -0
  204. package/src/es-US.js +446 -0
  205. package/src/fa-IR.d.ts +38 -0
  206. package/src/fa-IR.js +246 -0
  207. package/src/fi-FI.d.ts +46 -0
  208. package/{lib/languages/fi.js → src/fi-FI.js} +152 -11
  209. package/src/fil-PH.d.ts +37 -0
  210. package/{lib/languages/fil.js → src/fil-PH.js} +144 -8
  211. package/src/fr-BE.d.ts +49 -0
  212. package/{lib/languages → src}/fr-BE.js +175 -13
  213. package/src/fr-FR.d.ts +63 -0
  214. package/{lib/languages/fr.js → src/fr-FR.js} +182 -16
  215. package/src/gu-IN.d.ts +35 -0
  216. package/{lib/languages/gu.js → src/gu-IN.js} +115 -6
  217. package/src/ha-NG.d.ts +37 -0
  218. package/{lib/languages/ha.js → src/ha-NG.js} +107 -8
  219. package/src/hbo-IL.d.ts +39 -0
  220. package/{lib/languages/hbo.js → src/hbo-IL.js} +211 -19
  221. package/src/he-IL.d.ts +37 -0
  222. package/src/he-IL.js +537 -0
  223. package/src/hi-IN.d.ts +36 -0
  224. package/{lib/languages/hi.js → src/hi-IN.js} +116 -6
  225. package/src/hr-HR.d.ts +42 -0
  226. package/src/hr-HR.js +463 -0
  227. package/src/hu-HU.d.ts +38 -0
  228. package/{lib/languages/hu.js → src/hu-HU.js} +164 -6
  229. package/src/id-ID.d.ts +38 -0
  230. package/{lib/languages/id.js → src/id-ID.js} +99 -8
  231. package/src/it-IT.d.ts +59 -0
  232. package/{lib/languages/it.js → src/it-IT.js} +179 -15
  233. package/src/ja-JP.d.ts +49 -0
  234. package/{lib/languages/ja.js → src/ja-JP.js} +111 -12
  235. package/src/ka-GE.d.ts +44 -0
  236. package/{lib/languages/ka.js → src/ka-GE.js} +113 -11
  237. package/src/kn-IN.d.ts +35 -0
  238. package/{lib/languages/kn.js → src/kn-IN.js} +115 -6
  239. package/src/ko-KR.d.ts +45 -0
  240. package/{lib/languages/ko.js → src/ko-KR.js} +94 -12
  241. package/src/lt-LT.d.ts +49 -0
  242. package/src/lt-LT.js +543 -0
  243. package/src/lv-LV.d.ts +49 -0
  244. package/src/lv-LV.js +595 -0
  245. package/src/mr-IN.d.ts +36 -0
  246. package/{lib/languages/mr.js → src/mr-IN.js} +116 -6
  247. package/src/ms-MY.d.ts +37 -0
  248. package/{lib/languages/ms.js → src/ms-MY.js} +111 -8
  249. package/src/nb-NO.d.ts +44 -0
  250. package/{lib/languages/nb.js → src/nb-NO.js} +153 -11
  251. package/src/nl-NL.d.ts +54 -0
  252. package/{lib/languages/nl.js → src/nl-NL.js} +260 -18
  253. package/src/pa-IN.d.ts +36 -0
  254. package/{lib/languages/pa.js → src/pa-IN.js} +116 -6
  255. package/src/pl-PL.d.ts +55 -0
  256. package/src/pl-PL.js +585 -0
  257. package/src/pt-BR.d.ts +31 -0
  258. package/src/pt-BR.js +534 -0
  259. package/src/pt-PT.d.ts +45 -0
  260. package/{lib/languages/pt.js → src/pt-PT.js} +234 -12
  261. package/src/ro-RO.d.ts +44 -0
  262. package/{lib/languages/ro.js → src/ro-RO.js} +212 -18
  263. package/src/ru-RU.d.ts +50 -0
  264. package/src/ru-RU.js +535 -0
  265. package/src/sr-Cyrl-RS.d.ts +49 -0
  266. package/src/sr-Cyrl-RS.js +503 -0
  267. package/src/sr-Latn-RS.d.ts +49 -0
  268. package/src/sr-Latn-RS.js +503 -0
  269. package/src/sv-SE.d.ts +44 -0
  270. package/{lib/languages/sv.js → src/sv-SE.js} +136 -11
  271. package/src/sw-KE.d.ts +37 -0
  272. package/{lib/languages/sw.js → src/sw-KE.js} +117 -6
  273. package/src/ta-IN.d.ts +35 -0
  274. package/{lib/languages/ta.js → src/ta-IN.js} +109 -6
  275. package/src/te-IN.d.ts +35 -0
  276. package/{lib/languages/te.js → src/te-IN.js} +115 -6
  277. package/src/th-TH.d.ts +38 -0
  278. package/{lib/languages/th.js → src/th-TH.js} +99 -6
  279. package/src/tr-TR.d.ts +48 -0
  280. package/{lib/languages/tr.js → src/tr-TR.js} +168 -23
  281. package/src/uk-UA.d.ts +42 -0
  282. package/src/uk-UA.js +463 -0
  283. package/src/ur-PK.d.ts +36 -0
  284. package/{lib/languages/ur.js → src/ur-PK.js} +116 -6
  285. package/src/utils/expand-scientific.d.ts +32 -0
  286. package/src/utils/expand-scientific.js +65 -0
  287. package/src/utils/parse-cardinal.d.ts +14 -0
  288. package/{lib/utils/parse-numeric.js → src/utils/parse-cardinal.js} +14 -44
  289. package/src/utils/parse-currency.d.ts +14 -0
  290. package/src/utils/parse-currency.js +91 -0
  291. package/src/utils/parse-ordinal.d.ts +10 -0
  292. package/src/utils/parse-ordinal.js +103 -0
  293. package/src/vi-VN.d.ts +48 -0
  294. package/{lib/languages/vi.js → src/vi-VN.js} +102 -11
  295. package/src/yo-NG.d.ts +37 -0
  296. package/{lib/languages/yo.js → src/yo-NG.js} +109 -9
  297. package/src/zh-Hans-CN.d.ts +48 -0
  298. package/{lib/languages/zh-Hans.js → src/zh-Hans-CN.js} +140 -8
  299. package/src/zh-Hant-TW.d.ts +50 -0
  300. package/{lib/languages/zh-Hant.js → src/zh-Hant-TW.js} +139 -8
  301. package/dist/languages/am-Latn.js +0 -3
  302. package/dist/languages/am-Latn.js.map +0 -1
  303. package/dist/languages/am.js +0 -3
  304. package/dist/languages/am.js.map +0 -1
  305. package/dist/languages/ar.js +0 -3
  306. package/dist/languages/ar.js.map +0 -1
  307. package/dist/languages/az.js +0 -3
  308. package/dist/languages/az.js.map +0 -1
  309. package/dist/languages/bn.js +0 -3
  310. package/dist/languages/bn.js.map +0 -1
  311. package/dist/languages/cs.js +0 -3
  312. package/dist/languages/cs.js.map +0 -1
  313. package/dist/languages/da.js +0 -3
  314. package/dist/languages/da.js.map +0 -1
  315. package/dist/languages/de.js +0 -3
  316. package/dist/languages/de.js.map +0 -1
  317. package/dist/languages/el.js +0 -3
  318. package/dist/languages/el.js.map +0 -1
  319. package/dist/languages/en.js +0 -3
  320. package/dist/languages/en.js.map +0 -1
  321. package/dist/languages/es.js +0 -3
  322. package/dist/languages/es.js.map +0 -1
  323. package/dist/languages/fa.js +0 -3
  324. package/dist/languages/fa.js.map +0 -1
  325. package/dist/languages/fi.js +0 -3
  326. package/dist/languages/fi.js.map +0 -1
  327. package/dist/languages/fil.js +0 -3
  328. package/dist/languages/fil.js.map +0 -1
  329. package/dist/languages/fr-BE.js +0 -3
  330. package/dist/languages/fr-BE.js.map +0 -1
  331. package/dist/languages/fr.js +0 -3
  332. package/dist/languages/fr.js.map +0 -1
  333. package/dist/languages/gu.js +0 -3
  334. package/dist/languages/gu.js.map +0 -1
  335. package/dist/languages/ha.js +0 -3
  336. package/dist/languages/ha.js.map +0 -1
  337. package/dist/languages/hbo.js +0 -3
  338. package/dist/languages/hbo.js.map +0 -1
  339. package/dist/languages/he.js +0 -3
  340. package/dist/languages/he.js.map +0 -1
  341. package/dist/languages/hi.js +0 -3
  342. package/dist/languages/hi.js.map +0 -1
  343. package/dist/languages/hr.js +0 -3
  344. package/dist/languages/hr.js.map +0 -1
  345. package/dist/languages/hu.js +0 -3
  346. package/dist/languages/hu.js.map +0 -1
  347. package/dist/languages/id.js +0 -3
  348. package/dist/languages/id.js.map +0 -1
  349. package/dist/languages/it.js +0 -3
  350. package/dist/languages/it.js.map +0 -1
  351. package/dist/languages/ja.js +0 -3
  352. package/dist/languages/ja.js.map +0 -1
  353. package/dist/languages/ka.js +0 -3
  354. package/dist/languages/ka.js.map +0 -1
  355. package/dist/languages/kn.js +0 -3
  356. package/dist/languages/kn.js.map +0 -1
  357. package/dist/languages/ko.js +0 -3
  358. package/dist/languages/ko.js.map +0 -1
  359. package/dist/languages/lt.js +0 -3
  360. package/dist/languages/lt.js.map +0 -1
  361. package/dist/languages/lv.js +0 -3
  362. package/dist/languages/lv.js.map +0 -1
  363. package/dist/languages/mr.js +0 -3
  364. package/dist/languages/mr.js.map +0 -1
  365. package/dist/languages/ms.js +0 -3
  366. package/dist/languages/ms.js.map +0 -1
  367. package/dist/languages/nb.js +0 -3
  368. package/dist/languages/nb.js.map +0 -1
  369. package/dist/languages/nl.js +0 -3
  370. package/dist/languages/nl.js.map +0 -1
  371. package/dist/languages/pa.js +0 -3
  372. package/dist/languages/pa.js.map +0 -1
  373. package/dist/languages/pl.js +0 -3
  374. package/dist/languages/pl.js.map +0 -1
  375. package/dist/languages/pt.js +0 -3
  376. package/dist/languages/pt.js.map +0 -1
  377. package/dist/languages/ro.js +0 -3
  378. package/dist/languages/ro.js.map +0 -1
  379. package/dist/languages/ru.js +0 -3
  380. package/dist/languages/ru.js.map +0 -1
  381. package/dist/languages/sr-Cyrl.js +0 -3
  382. package/dist/languages/sr-Cyrl.js.map +0 -1
  383. package/dist/languages/sr-Latn.js +0 -3
  384. package/dist/languages/sr-Latn.js.map +0 -1
  385. package/dist/languages/sv.js +0 -3
  386. package/dist/languages/sv.js.map +0 -1
  387. package/dist/languages/sw.js +0 -3
  388. package/dist/languages/sw.js.map +0 -1
  389. package/dist/languages/ta.js +0 -3
  390. package/dist/languages/ta.js.map +0 -1
  391. package/dist/languages/te.js +0 -3
  392. package/dist/languages/te.js.map +0 -1
  393. package/dist/languages/th.js +0 -3
  394. package/dist/languages/th.js.map +0 -1
  395. package/dist/languages/tr.js +0 -3
  396. package/dist/languages/tr.js.map +0 -1
  397. package/dist/languages/uk.js +0 -3
  398. package/dist/languages/uk.js.map +0 -1
  399. package/dist/languages/ur.js +0 -3
  400. package/dist/languages/ur.js.map +0 -1
  401. package/dist/languages/vi.js +0 -3
  402. package/dist/languages/vi.js.map +0 -1
  403. package/dist/languages/yo.js +0 -3
  404. package/dist/languages/yo.js.map +0 -1
  405. package/dist/languages/zh-Hans.js +0 -3
  406. package/dist/languages/zh-Hans.js.map +0 -1
  407. package/dist/languages/zh-Hant.js +0 -3
  408. package/dist/languages/zh-Hant.js.map +0 -1
  409. package/dist/n2words.js +0 -3
  410. package/dist/n2words.js.map +0 -1
  411. package/lib/languages/am-Latn.d.ts +0 -7
  412. package/lib/languages/am-Latn.js +0 -159
  413. package/lib/languages/am.d.ts +0 -7
  414. package/lib/languages/am.js +0 -159
  415. package/lib/languages/ar.d.ts +0 -17
  416. package/lib/languages/az.d.ts +0 -7
  417. package/lib/languages/az.js +0 -171
  418. package/lib/languages/bn.d.ts +0 -7
  419. package/lib/languages/cs.d.ts +0 -18
  420. package/lib/languages/da.d.ts +0 -14
  421. package/lib/languages/de.d.ts +0 -17
  422. package/lib/languages/de.js +0 -320
  423. package/lib/languages/el.d.ts +0 -14
  424. package/lib/languages/el.js +0 -236
  425. package/lib/languages/en.d.ts +0 -17
  426. package/lib/languages/es.d.ts +0 -21
  427. package/lib/languages/fa.d.ts +0 -7
  428. package/lib/languages/fa.js +0 -134
  429. package/lib/languages/fi.d.ts +0 -14
  430. package/lib/languages/fil.d.ts +0 -7
  431. package/lib/languages/fr-BE.d.ts +0 -11
  432. package/lib/languages/fr.d.ts +0 -21
  433. package/lib/languages/gu.d.ts +0 -7
  434. package/lib/languages/ha.d.ts +0 -7
  435. package/lib/languages/hbo.d.ts +0 -13
  436. package/lib/languages/he.d.ts +0 -13
  437. package/lib/languages/he.js +0 -265
  438. package/lib/languages/hi.d.ts +0 -7
  439. package/lib/languages/hr.d.ts +0 -11
  440. package/lib/languages/hr.js +0 -224
  441. package/lib/languages/hu.d.ts +0 -7
  442. package/lib/languages/id.d.ts +0 -7
  443. package/lib/languages/it.d.ts +0 -19
  444. package/lib/languages/ja.d.ts +0 -17
  445. package/lib/languages/ka.d.ts +0 -17
  446. package/lib/languages/kn.d.ts +0 -7
  447. package/lib/languages/ko.d.ts +0 -14
  448. package/lib/languages/lt.d.ts +0 -18
  449. package/lib/languages/lt.js +0 -301
  450. package/lib/languages/lv.d.ts +0 -18
  451. package/lib/languages/lv.js +0 -312
  452. package/lib/languages/mr.d.ts +0 -7
  453. package/lib/languages/ms.d.ts +0 -7
  454. package/lib/languages/nb.d.ts +0 -14
  455. package/lib/languages/nl.d.ts +0 -26
  456. package/lib/languages/pa.d.ts +0 -7
  457. package/lib/languages/pl.d.ts +0 -22
  458. package/lib/languages/pl.js +0 -317
  459. package/lib/languages/pt.d.ts +0 -17
  460. package/lib/languages/ro.d.ts +0 -18
  461. package/lib/languages/ru.d.ts +0 -11
  462. package/lib/languages/ru.js +0 -245
  463. package/lib/languages/sr-Cyrl.d.ts +0 -11
  464. package/lib/languages/sr-Cyrl.js +0 -221
  465. package/lib/languages/sr-Latn.d.ts +0 -11
  466. package/lib/languages/sr-Latn.js +0 -221
  467. package/lib/languages/sv.d.ts +0 -14
  468. package/lib/languages/sw.d.ts +0 -7
  469. package/lib/languages/ta.d.ts +0 -7
  470. package/lib/languages/te.d.ts +0 -7
  471. package/lib/languages/th.d.ts +0 -7
  472. package/lib/languages/tr.d.ts +0 -18
  473. package/lib/languages/uk.d.ts +0 -11
  474. package/lib/languages/uk.js +0 -224
  475. package/lib/languages/ur.d.ts +0 -7
  476. package/lib/languages/vi.d.ts +0 -17
  477. package/lib/languages/yo.d.ts +0 -7
  478. package/lib/languages/zh-Hans.d.ts +0 -11
  479. package/lib/languages/zh-Hant.d.ts +0 -11
  480. package/lib/n2words.d.ts +0 -55
  481. package/lib/n2words.js +0 -126
  482. package/lib/utils/parse-numeric.d.ts +0 -17
  483. /package/{lib → src}/utils/is-plain-object.d.ts +0 -0
  484. /package/{lib → src}/utils/is-plain-object.js +0 -0
  485. /package/{lib → src}/utils/validate-options.d.ts +0 -0
  486. /package/{lib → src}/utils/validate-options.js +0 -0
@@ -1,7 +0,0 @@
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 toWords(value: number | string | bigint): string;
@@ -1,159 +0,0 @@
1
- /**
2
- * Amharic Latin language converter - Functional Implementation
3
- *
4
- * Self-contained module with its own input validation, ready for subpath exports.
5
- * Latin/ASCII romanization of Amharic numerals.
6
- *
7
- * Key features:
8
- * - Romanized numerals (and, hulet, sost)
9
- * - Teens formed with "asra" prefix
10
- * - Keeps "one" before hundred: "and meto" (100)
11
- * - Short scale naming
12
- * - Per-digit decimal reading
13
- */
14
-
15
- import { parseNumericValue } from '../utils/parse-numeric.js'
16
-
17
- // ============================================================================
18
- // Vocabulary
19
- // ============================================================================
20
-
21
- const ONES = ['', 'and', 'hulet', 'sost', 'arat', 'amist', 'siddist', 'sebat', 'siment', 'zeteny']
22
- const TEENS = ['asir', 'asra and', 'asra hulet', 'asra sost', 'asra arat', 'asra amist', 'asra siddist', 'asra sebat', 'asra siment', 'asra zeteny']
23
- const TENS = ['', '', 'haya', 'selasa', 'arba', 'hamsa', 'silsa', 'seba', 'semanya', 'zetena']
24
-
25
- const HUNDRED = 'meto'
26
- const THOUSAND = 'shi'
27
-
28
- const ZERO = 'zero'
29
- const NEGATIVE = 'asitegna'
30
- const DECIMAL_SEP = 'netib'
31
-
32
- // Short scale
33
- const SCALE_WORDS = ['', THOUSAND, 'miliyon', 'billiyon']
34
-
35
- // ============================================================================
36
- // Precomputed Lookup Table
37
- // ============================================================================
38
-
39
- function buildSegment (n) {
40
- if (n === 0) return ''
41
-
42
- const ones = n % 10
43
- const tensDigit = Math.floor(n / 10) % 10
44
- const hundredsDigit = Math.floor(n / 100)
45
-
46
- const parts = []
47
-
48
- // Amharic keeps "one" before hundred: "and meto" (100)
49
- if (hundredsDigit > 0) {
50
- parts.push(ONES[hundredsDigit] + ' ' + HUNDRED)
51
- }
52
-
53
- if (tensDigit === 1) {
54
- parts.push(TEENS[ones])
55
- } else {
56
- if (tensDigit > 1) {
57
- parts.push(TENS[tensDigit])
58
- }
59
- if (ones > 0) {
60
- parts.push(ONES[ones])
61
- }
62
- }
63
-
64
- return parts.join(' ')
65
- }
66
-
67
- // ============================================================================
68
- // Conversion Functions
69
- // ============================================================================
70
-
71
- function integerToWords (n) {
72
- if (n === 0n) return ZERO
73
-
74
- if (n < 1000n) {
75
- return buildSegment(Number(n))
76
- }
77
-
78
- return buildLargeNumberWords(n)
79
- }
80
-
81
- function buildLargeNumberWords (n) {
82
- const numStr = n.toString()
83
- const len = numStr.length
84
-
85
- const segments = []
86
- const segmentSize = 3
87
-
88
- const remainderLen = len % segmentSize
89
- let pos = 0
90
- if (remainderLen > 0) {
91
- segments.push(Number(numStr.slice(0, remainderLen)))
92
- pos = remainderLen
93
- }
94
- while (pos < len) {
95
- segments.push(Number(numStr.slice(pos, pos + segmentSize)))
96
- pos += segmentSize
97
- }
98
-
99
- const parts = []
100
- let scaleIndex = segments.length - 1
101
-
102
- for (let i = 0; i < segments.length; i++) {
103
- const segment = segments[i]
104
-
105
- if (segment !== 0) {
106
- const scaleWord = SCALE_WORDS[scaleIndex] || ''
107
-
108
- if (scaleIndex === 0) {
109
- parts.push(buildSegment(segment))
110
- } else {
111
- parts.push(buildSegment(segment) + ' ' + scaleWord)
112
- }
113
- }
114
-
115
- scaleIndex--
116
- }
117
-
118
- return parts.join(' ')
119
- }
120
-
121
- function decimalPartToWords (decimalPart) {
122
- // Per-digit decimal reading
123
- const digits = []
124
- for (const char of decimalPart) {
125
- const d = parseInt(char, 10)
126
- digits.push(d === 0 ? ZERO : ONES[d])
127
- }
128
- return digits.join(' ')
129
- }
130
-
131
- /**
132
- * Converts a numeric value to Amharic (Latin script) words.
133
- *
134
- * @param {number | string | bigint} value - The numeric value to convert
135
- * @returns {string} The number in Amharic Latin words
136
- */
137
- function toWords (value) {
138
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
139
-
140
- let result = ''
141
-
142
- if (isNegative) {
143
- result = NEGATIVE + ' '
144
- }
145
-
146
- result += integerToWords(integerPart)
147
-
148
- if (decimalPart) {
149
- result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
150
- }
151
-
152
- return result
153
- }
154
-
155
- // ============================================================================
156
- // Exports
157
- // ============================================================================
158
-
159
- export { toWords }
@@ -1,7 +0,0 @@
1
- /**
2
- * Converts a numeric value to Amharic words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Amharic words
6
- */
7
- export function toWords(value: number | string | bigint): string;
@@ -1,159 +0,0 @@
1
- /**
2
- * Amharic language converter - Functional Implementation
3
- *
4
- * Self-contained module with its own input validation, ready for subpath exports.
5
- * Native Ge'ez script (ግዕዝ) output.
6
- *
7
- * Key features:
8
- * - Ge'ez/Ethiopic script numerals
9
- * - Teens formed with "አስራ" prefix
10
- * - Keeps "one" before hundred: "አንድ መቶ" (100)
11
- * - Short scale naming
12
- * - Per-digit decimal reading
13
- */
14
-
15
- import { parseNumericValue } from '../utils/parse-numeric.js'
16
-
17
- // ============================================================================
18
- // Vocabulary
19
- // ============================================================================
20
-
21
- const ONES = ['', 'አንድ', 'ሁለት', 'ሶስት', 'አራት', 'አምስት', 'ስድስት', 'ሰባት', 'ስምንት', 'ዘጠኝ']
22
- const TEENS = ['አስር', 'አስራ አንድ', 'አስራ ሁለት', 'አስራ ሶስት', 'አስራ አራት', 'አስራ አምስት', 'አስራ ስድስት', 'አስራ ሰባት', 'አስራ ስምንት', 'አስራ ዘጠኝ']
23
- const TENS = ['', '', 'ሃያ', 'ሰላሳ', 'አርባ', 'ሃምሳ', 'ስልሳ', 'ሰባ', 'ሰማንያ', 'ዘጠና']
24
-
25
- const HUNDRED = 'መቶ'
26
- const THOUSAND = 'ሺ'
27
-
28
- const ZERO = 'ዜሮ'
29
- const NEGATIVE = 'አሉታዊ'
30
- const DECIMAL_SEP = 'ነጥብ'
31
-
32
- // Short scale
33
- const SCALE_WORDS = ['', THOUSAND, 'ሚሊዮን', 'ቢሊዮን']
34
-
35
- // ============================================================================
36
- // Precomputed Lookup Table
37
- // ============================================================================
38
-
39
- function buildSegment (n) {
40
- if (n === 0) return ''
41
-
42
- const ones = n % 10
43
- const tensDigit = Math.floor(n / 10) % 10
44
- const hundredsDigit = Math.floor(n / 100)
45
-
46
- const parts = []
47
-
48
- // Amharic keeps "one" before hundred: "አንድ መቶ" (100)
49
- if (hundredsDigit > 0) {
50
- parts.push(ONES[hundredsDigit] + ' ' + HUNDRED)
51
- }
52
-
53
- if (tensDigit === 1) {
54
- parts.push(TEENS[ones])
55
- } else {
56
- if (tensDigit > 1) {
57
- parts.push(TENS[tensDigit])
58
- }
59
- if (ones > 0) {
60
- parts.push(ONES[ones])
61
- }
62
- }
63
-
64
- return parts.join(' ')
65
- }
66
-
67
- // ============================================================================
68
- // Conversion Functions
69
- // ============================================================================
70
-
71
- function integerToWords (n) {
72
- if (n === 0n) return ZERO
73
-
74
- if (n < 1000n) {
75
- return buildSegment(Number(n))
76
- }
77
-
78
- return buildLargeNumberWords(n)
79
- }
80
-
81
- function buildLargeNumberWords (n) {
82
- const numStr = n.toString()
83
- const len = numStr.length
84
-
85
- const segments = []
86
- const segmentSize = 3
87
-
88
- const remainderLen = len % segmentSize
89
- let pos = 0
90
- if (remainderLen > 0) {
91
- segments.push(Number(numStr.slice(0, remainderLen)))
92
- pos = remainderLen
93
- }
94
- while (pos < len) {
95
- segments.push(Number(numStr.slice(pos, pos + segmentSize)))
96
- pos += segmentSize
97
- }
98
-
99
- const parts = []
100
- let scaleIndex = segments.length - 1
101
-
102
- for (let i = 0; i < segments.length; i++) {
103
- const segment = segments[i]
104
-
105
- if (segment !== 0) {
106
- const scaleWord = SCALE_WORDS[scaleIndex] || ''
107
-
108
- if (scaleIndex === 0) {
109
- parts.push(buildSegment(segment))
110
- } else {
111
- parts.push(buildSegment(segment) + ' ' + scaleWord)
112
- }
113
- }
114
-
115
- scaleIndex--
116
- }
117
-
118
- return parts.join(' ')
119
- }
120
-
121
- function decimalPartToWords (decimalPart) {
122
- // Per-digit decimal reading
123
- const digits = []
124
- for (const char of decimalPart) {
125
- const d = parseInt(char, 10)
126
- digits.push(d === 0 ? ZERO : ONES[d])
127
- }
128
- return digits.join(' ')
129
- }
130
-
131
- /**
132
- * Converts a numeric value to Amharic words.
133
- *
134
- * @param {number | string | bigint} value - The numeric value to convert
135
- * @returns {string} The number in Amharic words
136
- */
137
- function toWords (value) {
138
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
139
-
140
- let result = ''
141
-
142
- if (isNegative) {
143
- result = NEGATIVE + ' '
144
- }
145
-
146
- result += integerToWords(integerPart)
147
-
148
- if (decimalPart) {
149
- result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
150
- }
151
-
152
- return result
153
- }
154
-
155
- // ============================================================================
156
- // Exports
157
- // ============================================================================
158
-
159
- export { toWords }
@@ -1,17 +0,0 @@
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
- * toWords(1) // 'واحد'
12
- * toWords(1, {gender: 'feminine'}) // 'واحدة'
13
- */
14
- export function toWords(value: number | string | bigint, options?: {
15
- gender?: "masculine" | "feminine" | undefined;
16
- negativeWord?: string | undefined;
17
- }): string;
@@ -1,7 +0,0 @@
1
- /**
2
- * Converts a numeric value to Azerbaijani words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Azerbaijani words
6
- */
7
- export function toWords(value: number | string | bigint): string;
@@ -1,171 +0,0 @@
1
- /**
2
- * Azerbaijani language converter - Functional Implementation
3
- *
4
- * Self-contained module with its own input validation, ready for subpath exports.
5
- *
6
- * Key features:
7
- * - Turkic language patterns
8
- * - Implicit "bir" (one) omission before hundreds and thousands
9
- * - Short scale naming
10
- */
11
-
12
- import { parseNumericValue } from '../utils/parse-numeric.js'
13
-
14
- // ============================================================================
15
- // Vocabulary
16
- // ============================================================================
17
-
18
- const ONES = ['', 'bir', 'iki', 'üç', 'dörd', 'beş', 'altı', 'yeddi', 'səkkiz', 'doqquz']
19
- const TEENS = ['on', 'on bir', 'on iki', 'on üç', 'on dörd', 'on beş', 'on altı', 'on yeddi', 'on səkkiz', 'on doqquz']
20
- const TENS = ['', '', 'iyirmi', 'otuz', 'qırx', 'əlli', 'altmış', 'yetmiş', 'səksən', 'doxsan']
21
-
22
- const HUNDRED = 'yüz'
23
- const THOUSAND = 'min'
24
-
25
- const ZERO = 'sıfır'
26
- const NEGATIVE = 'mənfi'
27
- const DECIMAL_SEP = 'nöqtə'
28
-
29
- // Short scale
30
- const SCALE_WORDS = ['', THOUSAND, 'milyon', 'milyar', 'trilyon', 'katrilyon', 'kentilyon']
31
-
32
- // ============================================================================
33
- // Precomputed Lookup Table
34
- // ============================================================================
35
-
36
- function buildSegment (n) {
37
- if (n === 0) return ''
38
-
39
- const ones = n % 10
40
- const tensDigit = Math.floor(n / 10) % 10
41
- const hundredsDigit = Math.floor(n / 100)
42
-
43
- const parts = []
44
-
45
- if (hundredsDigit > 0) {
46
- if (hundredsDigit === 1) {
47
- parts.push(HUNDRED)
48
- } else {
49
- parts.push(ONES[hundredsDigit] + ' ' + HUNDRED)
50
- }
51
- }
52
-
53
- if (tensDigit === 1) {
54
- parts.push(TEENS[ones])
55
- } else {
56
- if (tensDigit > 1) {
57
- parts.push(TENS[tensDigit])
58
- }
59
- if (ones > 0) {
60
- parts.push(ONES[ones])
61
- }
62
- }
63
-
64
- return parts.join(' ')
65
- }
66
-
67
- // ============================================================================
68
- // Conversion Functions
69
- // ============================================================================
70
-
71
- function integerToWords (n) {
72
- if (n === 0n) return ZERO
73
-
74
- if (n < 1000n) {
75
- return buildSegment(Number(n))
76
- }
77
-
78
- return buildLargeNumberWords(n)
79
- }
80
-
81
- function buildLargeNumberWords (n) {
82
- const numStr = n.toString()
83
- const len = numStr.length
84
-
85
- const segments = []
86
- const segmentSize = 3
87
-
88
- const remainderLen = len % segmentSize
89
- let pos = 0
90
- if (remainderLen > 0) {
91
- segments.push(Number(numStr.slice(0, remainderLen)))
92
- pos = remainderLen
93
- }
94
- while (pos < len) {
95
- segments.push(Number(numStr.slice(pos, pos + segmentSize)))
96
- pos += segmentSize
97
- }
98
-
99
- const parts = []
100
- let scaleIndex = segments.length - 1
101
-
102
- for (let i = 0; i < segments.length; i++) {
103
- const segment = segments[i]
104
-
105
- if (segment !== 0) {
106
- const scaleWord = SCALE_WORDS[scaleIndex] || ''
107
-
108
- if (scaleIndex === 0) {
109
- parts.push(buildSegment(segment))
110
- } else if (scaleIndex === 1 && segment === 1) {
111
- // Omit "bir" before thousand
112
- parts.push(scaleWord)
113
- } else {
114
- parts.push(buildSegment(segment) + ' ' + scaleWord)
115
- }
116
- }
117
-
118
- scaleIndex--
119
- }
120
-
121
- return parts.join(' ')
122
- }
123
-
124
- function decimalPartToWords (decimalPart) {
125
- let result = ''
126
- let i = 0
127
-
128
- while (i < decimalPart.length && decimalPart[i] === '0') {
129
- if (result) result += ' '
130
- result += ZERO
131
- i++
132
- }
133
-
134
- const remainder = decimalPart.slice(i)
135
- if (remainder) {
136
- if (result) result += ' '
137
- result += integerToWords(BigInt(remainder))
138
- }
139
-
140
- return result
141
- }
142
-
143
- /**
144
- * Converts a numeric value to Azerbaijani words.
145
- *
146
- * @param {number | string | bigint} value - The numeric value to convert
147
- * @returns {string} The number in Azerbaijani words
148
- */
149
- function toWords (value) {
150
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
151
-
152
- let result = ''
153
-
154
- if (isNegative) {
155
- result = NEGATIVE + ' '
156
- }
157
-
158
- result += integerToWords(integerPart)
159
-
160
- if (decimalPart) {
161
- result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
162
- }
163
-
164
- return result
165
- }
166
-
167
- // ============================================================================
168
- // Exports
169
- // ============================================================================
170
-
171
- export { toWords }
@@ -1,7 +0,0 @@
1
- /**
2
- * Converts a numeric value to Bengali words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Bengali words
6
- */
7
- export function toWords(value: number | string | bigint): string;
@@ -1,18 +0,0 @@
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
- * toWords(21) // 'dvacet jedna'
14
- * toWords(1000) // 'tisíc'
15
- * toWords(2000) // 'dva tisíce'
16
- * toWords(5000) // 'pět tisíc'
17
- */
18
- export function toWords(value: number | string | bigint): string;
@@ -1,14 +0,0 @@
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
- * toWords(21) // 'enogtyve'
11
- * toWords(1000) // 'ettusind'
12
- * toWords(1000000) // 'en millioner'
13
- */
14
- export function toWords(value: number | string | bigint): string;
@@ -1,17 +0,0 @@
1
- /**
2
- * Converts a numeric value to German 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 German 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
- * toWords(21) // 'einundzwanzig'
14
- * toWords(1000) // 'eintausend'
15
- * toWords(1000000) // 'eine Million'
16
- */
17
- export function toWords(value: number | string | bigint): string;