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
@@ -1,300 +0,0 @@
1
- /**
2
- * French (Belgium) language converter - Functional Implementation
3
- *
4
- * Self-contained converter with precomputed lookup tables.
5
- *
6
- * Belgian French differences from standard French:
7
- * - septante (70) instead of soixante-dix
8
- * - nonante (90) instead of quatre-vingt-dix
9
- * - Keeps quatre-vingts (80) like standard French
10
- * - Uses "septante et un" (71), "nonante et un" (91)
11
- */
12
-
13
- import { parseNumericValue } from '../utils/parse-numeric.js'
14
- import { validateOptions } from '../utils/validate-options.js'
15
-
16
- // ============================================================================
17
- // Vocabulary
18
- // ============================================================================
19
-
20
- const ONES = ['', 'un', 'deux', 'trois', 'quatre', 'cinq', 'six', 'sept', 'huit', 'neuf']
21
- const TEENS = ['dix', 'onze', 'douze', 'treize', 'quatorze', 'quinze', 'seize', 'dix-sept', 'dix-huit', 'dix-neuf']
22
- const TENS = ['', '', 'vingt', 'trente', 'quarante', 'cinquante', 'soixante', 'septante', 'quatre-vingt', 'nonante']
23
-
24
- // Scale words (long scale with -ard forms)
25
- const SCALES = ['million', 'billion', 'trillion', 'quadrillion']
26
- const SCALES_ARD = ['milliard', 'billiard', 'trilliard', 'quadrilliard']
27
-
28
- const THOUSAND = 'mille'
29
- const HUNDRED = 'cent'
30
- const ZERO = 'zéro'
31
- const NEGATIVE = 'moins'
32
- const DECIMAL_SEP = 'virgule'
33
-
34
- // ============================================================================
35
- // Precomputed Lookup Tables
36
- // ============================================================================
37
-
38
- function buildSegment (n) {
39
- if (n === 0) return { word: '', endsWithCents: false, endsWithVingts: false }
40
-
41
- const tensOnes = n % 100
42
- const hundreds = Math.floor(n / 100)
43
-
44
- const parts = []
45
- let endsWithCents = false
46
- let endsWithVingts = false
47
-
48
- // Hundreds
49
- if (hundreds > 0) {
50
- if (hundreds === 1) {
51
- parts.push(HUNDRED)
52
- } else {
53
- if (tensOnes === 0) {
54
- parts.push(ONES[hundreds] + ' ' + HUNDRED + 's')
55
- endsWithCents = true
56
- } else {
57
- parts.push(ONES[hundreds] + ' ' + HUNDRED)
58
- }
59
- }
60
- }
61
-
62
- // Tens and ones - Belgian pattern
63
- if (tensOnes === 0) {
64
- // Just hundreds
65
- } else if (tensOnes < 10) {
66
- parts.push(ONES[tensOnes])
67
- } else if (tensOnes < 17) {
68
- parts.push(TEENS[tensOnes - 10])
69
- } else if (tensOnes < 20) {
70
- parts.push(TEENS[tensOnes - 10])
71
- } else if (tensOnes < 70) {
72
- // 20-69: standard pattern
73
- const t = Math.floor(tensOnes / 10)
74
- const o = tensOnes % 10
75
- if (o === 0) {
76
- parts.push(TENS[t])
77
- } else if (o === 1) {
78
- parts.push(TENS[t] + ' et ' + ONES[1])
79
- } else {
80
- parts.push(TENS[t] + '-' + ONES[o])
81
- }
82
- } else if (tensOnes < 80) {
83
- // 70-79: septante pattern (Belgian)
84
- const o = tensOnes % 10
85
- if (o === 0) {
86
- parts.push('septante')
87
- } else if (o === 1) {
88
- parts.push('septante et ' + ONES[1])
89
- } else {
90
- parts.push('septante-' + ONES[o])
91
- }
92
- } else if (tensOnes === 80) {
93
- // 80: quatre-vingts (same as standard)
94
- parts.push('quatre-vingts')
95
- endsWithVingts = true
96
- } else if (tensOnes < 90) {
97
- // 81-89: quatre-vingt-X (same as standard)
98
- const remainder = tensOnes - 80
99
- parts.push('quatre-vingt-' + ONES[remainder])
100
- } else {
101
- // 90-99: nonante pattern (Belgian)
102
- const o = tensOnes % 10
103
- if (o === 0) {
104
- parts.push('nonante')
105
- } else if (o === 1) {
106
- parts.push('nonante et ' + ONES[1])
107
- } else {
108
- parts.push('nonante-' + ONES[o])
109
- }
110
- }
111
-
112
- return { word: parts.join(' '), endsWithCents, endsWithVingts }
113
- }
114
-
115
- // Precompute all 1000 segment words
116
- const SEGMENTS = new Array(1000)
117
- const SEGMENTS_ENDS_CENTS = new Array(1000)
118
- const SEGMENTS_ENDS_VINGTS = new Array(1000)
119
-
120
- for (let i = 0; i < 1000; i++) {
121
- const result = buildSegment(i)
122
- SEGMENTS[i] = result.word
123
- SEGMENTS_ENDS_CENTS[i] = result.endsWithCents
124
- SEGMENTS_ENDS_VINGTS[i] = result.endsWithVingts
125
- }
126
-
127
- // ============================================================================
128
- // Helper Functions
129
- // ============================================================================
130
-
131
- function getScaleWord (scaleIndex, segment) {
132
- if (scaleIndex === 1) return THOUSAND
133
-
134
- if (scaleIndex % 2 === 0) {
135
- const arrayIndex = (scaleIndex / 2) - 1
136
- const baseWord = SCALES[arrayIndex]
137
- if (!baseWord) return ''
138
- return segment > 1n ? baseWord + 's' : baseWord
139
- } else {
140
- const arrayIndex = ((scaleIndex - 1) / 2) - 1
141
- const ardWord = SCALES_ARD[arrayIndex]
142
- if (!ardWord) return THOUSAND
143
- return segment > 1n ? ardWord + 's' : ardWord
144
- }
145
- }
146
-
147
- // ============================================================================
148
- // Conversion Functions
149
- // ============================================================================
150
-
151
- function integerToWords (n, withHyphen = false) {
152
- if (n === 0n) return ZERO
153
-
154
- if (n < 1000n) {
155
- const word = SEGMENTS[Number(n)]
156
- return withHyphen ? word.replace(/ /g, '-') : word
157
- }
158
-
159
- if (n < 1_000_000n) {
160
- const thousands = Number(n / 1000n)
161
- const remainder = Number(n % 1000n)
162
-
163
- let result
164
- if (thousands === 1) {
165
- result = THOUSAND
166
- } else {
167
- let thousandsWord = SEGMENTS[thousands]
168
- if (SEGMENTS_ENDS_CENTS[thousands] || SEGMENTS_ENDS_VINGTS[thousands]) {
169
- thousandsWord = thousandsWord.slice(0, -1)
170
- }
171
- result = thousandsWord + (withHyphen ? '-' : ' ') + THOUSAND
172
- }
173
-
174
- if (remainder > 0) {
175
- result += (withHyphen ? '-' : ' ') + SEGMENTS[remainder]
176
- }
177
-
178
- if (withHyphen) {
179
- result = result.replace(/ /g, '-')
180
- }
181
-
182
- return result
183
- }
184
-
185
- return buildLargeNumberWords(n, withHyphen)
186
- }
187
-
188
- function buildLargeNumberWords (n, withHyphen) {
189
- const numStr = n.toString()
190
- const len = numStr.length
191
-
192
- const segments = []
193
- const segmentSize = 3
194
-
195
- const remainderLen = len % segmentSize
196
- let pos = 0
197
- if (remainderLen > 0) {
198
- segments.push(Number(numStr.slice(0, remainderLen)))
199
- pos = remainderLen
200
- }
201
- while (pos < len) {
202
- segments.push(Number(numStr.slice(pos, pos + segmentSize)))
203
- pos += segmentSize
204
- }
205
-
206
- const parts = []
207
- let scaleIndex = segments.length - 1
208
-
209
- for (let i = 0; i < segments.length; i++) {
210
- const segment = segments[i]
211
-
212
- if (segment !== 0) {
213
- const scaleWord = scaleIndex > 0 ? getScaleWord(scaleIndex, BigInt(segment)) : ''
214
-
215
- if (scaleIndex === 0) {
216
- parts.push(SEGMENTS[segment])
217
- } else if (scaleIndex === 1) {
218
- if (segment === 1) {
219
- parts.push(THOUSAND)
220
- } else {
221
- let segWords = SEGMENTS[segment]
222
- if (SEGMENTS_ENDS_CENTS[segment] || SEGMENTS_ENDS_VINGTS[segment]) {
223
- segWords = segWords.slice(0, -1)
224
- }
225
- parts.push(segWords)
226
- parts.push(scaleWord)
227
- }
228
- } else {
229
- parts.push(SEGMENTS[segment])
230
- parts.push(scaleWord)
231
- }
232
- }
233
-
234
- scaleIndex--
235
- }
236
-
237
- const sep = withHyphen ? '-' : ' '
238
- let result = parts.join(sep)
239
-
240
- if (withHyphen) {
241
- result = result.replace(/ /g, '-')
242
- }
243
-
244
- return result
245
- }
246
-
247
- function decimalPartToWords (decimalPart, withHyphen) {
248
- let result = ''
249
- const sep = withHyphen ? '-' : ' '
250
-
251
- let i = 0
252
- while (i < decimalPart.length && decimalPart[i] === '0') {
253
- if (result) result += sep
254
- result += ZERO
255
- i++
256
- }
257
-
258
- const remainder = decimalPart.slice(i)
259
- if (remainder) {
260
- if (result) result += sep
261
- result += integerToWords(BigInt(remainder), withHyphen)
262
- }
263
-
264
- return result
265
- }
266
-
267
- /**
268
- * Converts a numeric value to Belgian French words.
269
- *
270
- * @param {number | string | bigint} value - The numeric value to convert
271
- * @param {Object} [options] - Optional configuration
272
- * @param {boolean} [options.withHyphenSeparator=false] - Use hyphens between words
273
- * @returns {string} The number in Belgian French words
274
- */
275
- function toWords (value, options) {
276
- options = validateOptions(options)
277
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
278
- const withHyphen = options.withHyphenSeparator || false
279
-
280
- let result = ''
281
- const sep = withHyphen ? '-' : ' '
282
-
283
- if (isNegative) {
284
- result = NEGATIVE + sep
285
- }
286
-
287
- result += integerToWords(integerPart, withHyphen)
288
-
289
- if (decimalPart) {
290
- result += sep + DECIMAL_SEP + sep + decimalPartToWords(decimalPart, withHyphen)
291
- }
292
-
293
- return result
294
- }
295
-
296
- // ============================================================================
297
- // Exports
298
- // ============================================================================
299
-
300
- export { toWords }
@@ -1,21 +0,0 @@
1
- /**
2
- * Converts a numeric value to French 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
- * @param {Object} [options] - Optional configuration
9
- * @param {boolean} [options.withHyphenSeparator=false] - Use hyphens between all words
10
- * @returns {string} The number in French words
11
- * @throws {TypeError} If value is not a valid numeric type
12
- * @throws {Error} If value is not a valid number format
13
- *
14
- * @example
15
- * toWords(21) // 'vingt et un'
16
- * toWords(80) // 'quatre-vingts'
17
- * toWords(1000000) // 'un million'
18
- */
19
- export function toWords(value: number | string | bigint, options?: {
20
- withHyphenSeparator?: boolean | undefined;
21
- }): string;
@@ -1,7 +0,0 @@
1
- /**
2
- * Converts a numeric value to Gujarati words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Gujarati words
6
- */
7
- export function toWords(value: number | string | bigint): string;
@@ -1,137 +0,0 @@
1
- /**
2
- * Gujarati language converter - Functional Implementation
3
- *
4
- * Self-contained converter for South Asian numbering.
5
- *
6
- * Key features:
7
- * - Indian numbering system (હજાર, લાખ, કરોડ)
8
- * - Gujarati script
9
- * - 3-2-2 grouping pattern (last 3 digits, then groups of 2)
10
- * - Complete word forms for 0-99
11
- * - Per-digit decimal reading
12
- */
13
-
14
- import { parseNumericValue } from '../utils/parse-numeric.js'
15
-
16
- // ============================================================================
17
- // Vocabulary
18
- // ============================================================================
19
-
20
- const ZERO = 'શૂન્ય'
21
- const NEGATIVE = 'ઋણ'
22
- const DECIMAL_SEP = 'દશાંશ'
23
- const HUNDRED = 'સો'
24
-
25
- const BELOW_HUNDRED = [
26
- 'શૂન્ય', 'એક', 'બે', 'ત્રણ', 'ચાર', 'પાંચ', 'છ', 'સાત', 'આઠ', 'નવ',
27
- 'દસ', 'અગિયાર', 'બાર', 'તેર', 'ચૌદ', 'પંદર', 'સોળ', 'સત્તર', 'અઢાર', 'ઓગણીસ',
28
- 'વીસ', 'એકવીસ', 'બાવીસ', 'ત્રેવીસ', 'ચોવીસ', 'પચીસ', 'છવ્વીસ', 'સત્તાવીસ', 'અઠ્ઠાવીસ', 'ઓગણત્રીસ',
29
- 'ત્રીસ', 'એકત્રીસ', 'બત્રીસ', 'તેત્રીસ', 'ચોત્રીસ', 'પાંત્રીસ', 'છત્રીસ', 'સાડત્રીસ', 'અડત્રીસ', 'ઓગણચાલીસ',
30
- 'ચાલીસ', 'એકતાલીસ', 'બેતાળીસ', 'ત્રેતાળીસ', 'ચુંમાલીસ', 'પિસ્તાલીસ', 'છેતાળીસ', 'સુડતાળીસ', 'અડતાળીસ', 'ઓગણપચાસ',
31
- 'પચાસ', 'એકાવન', 'બાવન', 'ત્રેપન', 'ચોપન', 'પંચાવન', 'છપ્પન', 'સત્તાવન', 'અઠ્ઠાવન', 'ઓગણસાઠ',
32
- 'સાઠ', 'એકસઠ', 'બાસઠ', 'ત્રેસઠ', 'ચોસઠ', 'પાંસઠ', 'છાસઠ', 'સડસઠ', 'અડસઠ', 'અગણોસિત્તેર',
33
- 'સિત્તેર', 'એકોતેર', 'બોતેર', 'તોતેર', 'ચુમોતેર', 'પંચોતેર', 'છોતેર', 'સિત્યોતેર', 'ઇઠ્યોતેર', 'ઓગણાએંસી',
34
- 'એંસી', 'એક્યાસી', 'બ્યાસી', 'ત્યાસી', 'ચોર્યાસી', 'પંચાસી', 'છ્યાસી', 'સિત્યાસી', 'અઠ્યાસી', 'નેવ્યાસી',
35
- 'નેવું', 'એકાણું', 'બાણું', 'ત્રાણું', 'ચોરાણું', 'પંચાણું', 'છન્નું', 'સત્તાણું', 'અઠ્ઠાણું', 'નવ્વાણું'
36
- ]
37
-
38
- // Scale words: index 0 = units (empty), 1 = thousand, 2 = lakh, 3 = crore, etc.
39
- const SCALE_WORDS = ['', 'હજાર', 'લાખ', 'કરોડ', 'અબજ', 'ખરબ', 'નીલ', 'પદ્મ', 'શંખ']
40
-
41
- // ============================================================================
42
- // Segment Splitting (inlined for performance)
43
- // ============================================================================
44
-
45
- function groupByThreeThenTwos (n) {
46
- const numStr = n.toString()
47
- if (numStr.length <= 3) return [Number(numStr)]
48
-
49
- const segments = []
50
- segments.unshift(Number(numStr.slice(-3)))
51
-
52
- let remaining = numStr.slice(0, -3)
53
- while (remaining.length > 0) {
54
- segments.unshift(Number(remaining.slice(-2)))
55
- remaining = remaining.slice(0, -2)
56
- }
57
-
58
- return segments
59
- }
60
-
61
- function segmentToWords (n) {
62
- if (n === 0) return ''
63
- if (n < 100) return BELOW_HUNDRED[n]
64
-
65
- const hundreds = Math.trunc(n / 100)
66
- const remainder = n % 100
67
-
68
- if (remainder === 0) {
69
- return BELOW_HUNDRED[hundreds] + ' ' + HUNDRED
70
- }
71
- return BELOW_HUNDRED[hundreds] + ' ' + HUNDRED + ' ' + BELOW_HUNDRED[remainder]
72
- }
73
-
74
- // ============================================================================
75
- // Conversion Functions
76
- // ============================================================================
77
-
78
- function integerToWords (n) {
79
- if (n === 0n) return ZERO
80
-
81
- const segments = groupByThreeThenTwos(n)
82
- const segmentCount = segments.length
83
- const words = []
84
-
85
- for (let i = 0; i < segmentCount; i++) {
86
- const segmentValue = segments[i]
87
- if (segmentValue === 0) continue
88
-
89
- const scaleIndex = segmentCount - i - 1
90
- words.push(segmentToWords(segmentValue))
91
- if (scaleIndex > 0 && SCALE_WORDS[scaleIndex]) {
92
- words.push(SCALE_WORDS[scaleIndex])
93
- }
94
- }
95
-
96
- return words.join(' ').trim()
97
- }
98
-
99
- function decimalPartToWords (decimalPart) {
100
- // Per-digit decimal reading
101
- const digits = []
102
- for (const char of decimalPart) {
103
- const d = parseInt(char, 10)
104
- digits.push(d === 0 ? ZERO : BELOW_HUNDRED[d])
105
- }
106
- return digits.join(' ')
107
- }
108
-
109
- /**
110
- * Converts a numeric value to Gujarati words.
111
- *
112
- * @param {number | string | bigint} value - The numeric value to convert
113
- * @returns {string} The number in Gujarati words
114
- */
115
- function toWords (value) {
116
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
117
-
118
- let result = ''
119
-
120
- if (isNegative) {
121
- result = NEGATIVE + ' '
122
- }
123
-
124
- result += integerToWords(integerPart)
125
-
126
- if (decimalPart) {
127
- result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
128
- }
129
-
130
- return result
131
- }
132
-
133
- // ============================================================================
134
- // Exports
135
- // ============================================================================
136
-
137
- export { toWords }
@@ -1,7 +0,0 @@
1
- /**
2
- * Converts a numeric value to Hausa words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Hausa words
6
- */
7
- export function toWords(value: number | string | bigint): string;
@@ -1,13 +0,0 @@
1
- /**
2
- * Converts a numeric value to Biblical Hebrew 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.andWord] - Custom conjunction word
8
- * @returns {string} The number in Biblical Hebrew words
9
- */
10
- export function toWords(value: number | string | bigint, options?: {
11
- gender?: "masculine" | "feminine" | undefined;
12
- andWord?: string | undefined;
13
- }): string;
@@ -1,13 +0,0 @@
1
- /**
2
- * Converts a numeric value to Modern Hebrew 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.andWord] - Custom conjunction word
8
- * @returns {string} The number in Modern Hebrew words
9
- */
10
- export function toWords(value: number | string | bigint, options?: {
11
- gender?: "masculine" | "feminine" | undefined;
12
- andWord?: string | undefined;
13
- }): string;