n2words 3.1.0 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (482) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/LICENSE +1 -1
  3. package/README.md +64 -184
  4. package/dist/am-ET.js +2 -0
  5. package/dist/am-ET.umd.js +2 -0
  6. package/dist/am-Latn-ET.js +2 -0
  7. package/dist/am-Latn-ET.umd.js +2 -0
  8. package/dist/ar-SA.js +2 -0
  9. package/dist/ar-SA.umd.js +2 -0
  10. package/dist/az-AZ.js +2 -0
  11. package/dist/az-AZ.umd.js +2 -0
  12. package/dist/bn-BD.js +2 -0
  13. package/dist/bn-BD.umd.js +2 -0
  14. package/dist/cs-CZ.js +2 -0
  15. package/dist/cs-CZ.umd.js +2 -0
  16. package/dist/da-DK.js +2 -0
  17. package/dist/da-DK.umd.js +2 -0
  18. package/dist/de-DE.js +2 -0
  19. package/dist/de-DE.umd.js +2 -0
  20. package/dist/el-GR.js +2 -0
  21. package/dist/el-GR.umd.js +2 -0
  22. package/dist/en-AU.js +2 -0
  23. package/dist/en-AU.umd.js +2 -0
  24. package/dist/en-BD.js +2 -0
  25. package/dist/en-BD.umd.js +2 -0
  26. package/dist/en-CA.js +2 -0
  27. package/dist/en-CA.umd.js +2 -0
  28. package/dist/en-GB.js +2 -0
  29. package/dist/en-GB.umd.js +2 -0
  30. package/dist/en-GH.js +2 -0
  31. package/dist/en-GH.umd.js +2 -0
  32. package/dist/en-IE.js +2 -0
  33. package/dist/en-IE.umd.js +2 -0
  34. package/dist/en-IN.js +2 -0
  35. package/dist/en-IN.umd.js +2 -0
  36. package/dist/en-KE.js +2 -0
  37. package/dist/en-KE.umd.js +2 -0
  38. package/dist/en-MY.js +2 -0
  39. package/dist/en-MY.umd.js +2 -0
  40. package/dist/en-NG.js +2 -0
  41. package/dist/en-NG.umd.js +2 -0
  42. package/dist/en-NZ.js +2 -0
  43. package/dist/en-NZ.umd.js +2 -0
  44. package/dist/en-PH.js +2 -0
  45. package/dist/en-PH.umd.js +2 -0
  46. package/dist/en-PK.js +2 -0
  47. package/dist/en-PK.umd.js +2 -0
  48. package/dist/en-SG.js +2 -0
  49. package/dist/en-SG.umd.js +2 -0
  50. package/dist/en-US.js +2 -0
  51. package/dist/en-US.umd.js +2 -0
  52. package/dist/en-ZA.js +2 -0
  53. package/dist/en-ZA.umd.js +2 -0
  54. package/dist/es-ES.js +2 -0
  55. package/dist/es-ES.umd.js +2 -0
  56. package/dist/es-MX.js +2 -0
  57. package/dist/es-MX.umd.js +2 -0
  58. package/dist/es-US.js +2 -0
  59. package/dist/es-US.umd.js +2 -0
  60. package/dist/fa-IR.js +2 -0
  61. package/dist/fa-IR.umd.js +2 -0
  62. package/dist/fi-FI.js +2 -0
  63. package/dist/fi-FI.umd.js +2 -0
  64. package/dist/fil-PH.js +2 -0
  65. package/dist/fil-PH.umd.js +2 -0
  66. package/dist/fr-BE.js +2 -0
  67. package/dist/fr-BE.umd.js +2 -0
  68. package/dist/fr-FR.js +2 -0
  69. package/dist/fr-FR.umd.js +2 -0
  70. package/dist/gu-IN.js +2 -0
  71. package/dist/gu-IN.umd.js +2 -0
  72. package/dist/ha-NG.js +2 -0
  73. package/dist/ha-NG.umd.js +2 -0
  74. package/dist/hbo-IL.js +2 -0
  75. package/dist/hbo-IL.umd.js +2 -0
  76. package/dist/he-IL.js +2 -0
  77. package/dist/he-IL.umd.js +2 -0
  78. package/dist/hi-IN.js +2 -0
  79. package/dist/hi-IN.umd.js +2 -0
  80. package/dist/hr-HR.js +2 -0
  81. package/dist/hr-HR.umd.js +2 -0
  82. package/dist/hu-HU.js +2 -0
  83. package/dist/hu-HU.umd.js +2 -0
  84. package/dist/id-ID.js +2 -0
  85. package/dist/id-ID.umd.js +2 -0
  86. package/dist/it-IT.js +2 -0
  87. package/dist/it-IT.umd.js +2 -0
  88. package/dist/ja-JP.js +2 -0
  89. package/dist/ja-JP.umd.js +2 -0
  90. package/dist/ka-GE.js +2 -0
  91. package/dist/ka-GE.umd.js +2 -0
  92. package/dist/kn-IN.js +2 -0
  93. package/dist/kn-IN.umd.js +2 -0
  94. package/dist/ko-KR.js +2 -0
  95. package/dist/ko-KR.umd.js +2 -0
  96. package/dist/lt-LT.js +2 -0
  97. package/dist/lt-LT.umd.js +2 -0
  98. package/dist/lv-LV.js +2 -0
  99. package/dist/lv-LV.umd.js +2 -0
  100. package/dist/mr-IN.js +2 -0
  101. package/dist/mr-IN.umd.js +2 -0
  102. package/dist/ms-MY.js +2 -0
  103. package/dist/ms-MY.umd.js +2 -0
  104. package/dist/nb-NO.js +2 -0
  105. package/dist/nb-NO.umd.js +2 -0
  106. package/dist/nl-NL.js +2 -0
  107. package/dist/nl-NL.umd.js +2 -0
  108. package/dist/pa-IN.js +2 -0
  109. package/dist/pa-IN.umd.js +2 -0
  110. package/dist/pl-PL.js +2 -0
  111. package/dist/pl-PL.umd.js +2 -0
  112. package/dist/pt-PT.js +2 -0
  113. package/dist/pt-PT.umd.js +2 -0
  114. package/dist/ro-RO.js +2 -0
  115. package/dist/ro-RO.umd.js +2 -0
  116. package/dist/ru-RU.js +2 -0
  117. package/dist/ru-RU.umd.js +2 -0
  118. package/dist/sr-Cyrl-RS.js +2 -0
  119. package/dist/sr-Cyrl-RS.umd.js +2 -0
  120. package/dist/sr-Latn-RS.js +2 -0
  121. package/dist/sr-Latn-RS.umd.js +2 -0
  122. package/dist/sv-SE.js +2 -0
  123. package/dist/sv-SE.umd.js +2 -0
  124. package/dist/sw-KE.js +2 -0
  125. package/dist/sw-KE.umd.js +2 -0
  126. package/dist/ta-IN.js +2 -0
  127. package/dist/ta-IN.umd.js +2 -0
  128. package/dist/te-IN.js +2 -0
  129. package/dist/te-IN.umd.js +2 -0
  130. package/dist/th-TH.js +2 -0
  131. package/dist/th-TH.umd.js +2 -0
  132. package/dist/tr-TR.js +2 -0
  133. package/dist/tr-TR.umd.js +2 -0
  134. package/dist/uk-UA.js +2 -0
  135. package/dist/uk-UA.umd.js +2 -0
  136. package/dist/ur-PK.js +2 -0
  137. package/dist/ur-PK.umd.js +2 -0
  138. package/dist/vi-VN.js +2 -0
  139. package/dist/vi-VN.umd.js +2 -0
  140. package/dist/yo-NG.js +2 -0
  141. package/dist/yo-NG.umd.js +2 -0
  142. package/dist/zh-Hans-CN.js +2 -0
  143. package/dist/zh-Hans-CN.umd.js +2 -0
  144. package/dist/zh-Hant-TW.js +2 -0
  145. package/dist/zh-Hant-TW.umd.js +2 -0
  146. package/package.json +47 -82
  147. package/src/am-ET.d.ts +40 -0
  148. package/src/am-ET.js +269 -0
  149. package/src/am-Latn-ET.d.ts +35 -0
  150. package/src/am-Latn-ET.js +264 -0
  151. package/src/ar-SA.d.ts +49 -0
  152. package/{lib/languages/ar.js → src/ar-SA.js} +177 -15
  153. package/src/az-AZ.d.ts +37 -0
  154. package/src/az-AZ.js +312 -0
  155. package/src/bn-BD.d.ts +36 -0
  156. package/{lib/languages/bn.js → src/bn-BD.js} +110 -6
  157. package/src/cs-CZ.d.ts +49 -0
  158. package/{lib/languages/cs.js → src/cs-CZ.js} +240 -14
  159. package/src/da-DK.d.ts +44 -0
  160. package/{lib/languages/da.js → src/da-DK.js} +131 -11
  161. package/src/de-DE.d.ts +57 -0
  162. package/src/de-DE.js +603 -0
  163. package/src/el-GR.d.ts +40 -0
  164. package/src/el-GR.js +418 -0
  165. package/src/en-AU.d.ts +47 -0
  166. package/src/en-AU.js +423 -0
  167. package/src/en-BD.d.ts +49 -0
  168. package/src/en-BD.js +415 -0
  169. package/src/en-CA.d.ts +63 -0
  170. package/src/en-CA.js +518 -0
  171. package/src/en-GB.d.ts +56 -0
  172. package/src/en-GB.js +469 -0
  173. package/src/en-GH.d.ts +11 -0
  174. package/src/en-GH.js +345 -0
  175. package/src/en-IE.d.ts +56 -0
  176. package/src/en-IE.js +479 -0
  177. package/src/en-IN.d.ts +49 -0
  178. package/src/en-IN.js +415 -0
  179. package/src/en-KE.d.ts +11 -0
  180. package/src/en-KE.js +345 -0
  181. package/src/en-MY.d.ts +11 -0
  182. package/src/en-MY.js +347 -0
  183. package/src/en-NG.d.ts +56 -0
  184. package/src/en-NG.js +479 -0
  185. package/src/en-NZ.d.ts +11 -0
  186. package/{lib/languages/en.js → src/en-NZ.js} +164 -31
  187. package/src/en-PH.d.ts +11 -0
  188. package/src/en-PH.js +345 -0
  189. package/src/en-PK.d.ts +49 -0
  190. package/src/en-PK.js +415 -0
  191. package/src/en-SG.d.ts +11 -0
  192. package/src/en-SG.js +345 -0
  193. package/src/en-US.d.ts +63 -0
  194. package/src/en-US.js +516 -0
  195. package/src/en-ZA.d.ts +56 -0
  196. package/src/en-ZA.js +478 -0
  197. package/src/es-ES.d.ts +65 -0
  198. package/src/es-ES.js +541 -0
  199. package/src/es-MX.d.ts +58 -0
  200. package/{lib/languages/es.js → src/es-MX.js} +228 -18
  201. package/src/es-US.d.ts +58 -0
  202. package/src/es-US.js +446 -0
  203. package/src/fa-IR.d.ts +38 -0
  204. package/src/fa-IR.js +246 -0
  205. package/src/fi-FI.d.ts +46 -0
  206. package/{lib/languages/fi.js → src/fi-FI.js} +152 -11
  207. package/src/fil-PH.d.ts +37 -0
  208. package/{lib/languages/fil.js → src/fil-PH.js} +144 -8
  209. package/src/fr-BE.d.ts +49 -0
  210. package/{lib/languages → src}/fr-BE.js +175 -13
  211. package/src/fr-FR.d.ts +63 -0
  212. package/{lib/languages/fr.js → src/fr-FR.js} +182 -16
  213. package/src/gu-IN.d.ts +35 -0
  214. package/{lib/languages/gu.js → src/gu-IN.js} +115 -6
  215. package/src/ha-NG.d.ts +37 -0
  216. package/{lib/languages/ha.js → src/ha-NG.js} +107 -8
  217. package/src/hbo-IL.d.ts +39 -0
  218. package/{lib/languages/hbo.js → src/hbo-IL.js} +211 -19
  219. package/src/he-IL.d.ts +37 -0
  220. package/src/he-IL.js +537 -0
  221. package/src/hi-IN.d.ts +36 -0
  222. package/{lib/languages/hi.js → src/hi-IN.js} +116 -6
  223. package/src/hr-HR.d.ts +42 -0
  224. package/src/hr-HR.js +463 -0
  225. package/src/hu-HU.d.ts +38 -0
  226. package/{lib/languages/hu.js → src/hu-HU.js} +164 -6
  227. package/src/id-ID.d.ts +38 -0
  228. package/{lib/languages/id.js → src/id-ID.js} +99 -8
  229. package/src/it-IT.d.ts +59 -0
  230. package/{lib/languages/it.js → src/it-IT.js} +179 -15
  231. package/src/ja-JP.d.ts +49 -0
  232. package/{lib/languages/ja.js → src/ja-JP.js} +111 -12
  233. package/src/ka-GE.d.ts +44 -0
  234. package/{lib/languages/ka.js → src/ka-GE.js} +113 -11
  235. package/src/kn-IN.d.ts +35 -0
  236. package/{lib/languages/kn.js → src/kn-IN.js} +115 -6
  237. package/src/ko-KR.d.ts +45 -0
  238. package/{lib/languages/ko.js → src/ko-KR.js} +94 -12
  239. package/src/lt-LT.d.ts +49 -0
  240. package/src/lt-LT.js +543 -0
  241. package/src/lv-LV.d.ts +49 -0
  242. package/src/lv-LV.js +595 -0
  243. package/src/mr-IN.d.ts +36 -0
  244. package/{lib/languages/mr.js → src/mr-IN.js} +116 -6
  245. package/src/ms-MY.d.ts +37 -0
  246. package/{lib/languages/ms.js → src/ms-MY.js} +111 -8
  247. package/src/nb-NO.d.ts +44 -0
  248. package/{lib/languages/nb.js → src/nb-NO.js} +153 -11
  249. package/src/nl-NL.d.ts +54 -0
  250. package/{lib/languages/nl.js → src/nl-NL.js} +260 -18
  251. package/src/pa-IN.d.ts +36 -0
  252. package/{lib/languages/pa.js → src/pa-IN.js} +116 -6
  253. package/src/pl-PL.d.ts +55 -0
  254. package/src/pl-PL.js +585 -0
  255. package/src/pt-PT.d.ts +45 -0
  256. package/{lib/languages/pt.js → src/pt-PT.js} +234 -12
  257. package/src/ro-RO.d.ts +44 -0
  258. package/{lib/languages/ro.js → src/ro-RO.js} +212 -18
  259. package/src/ru-RU.d.ts +50 -0
  260. package/src/ru-RU.js +535 -0
  261. package/src/sr-Cyrl-RS.d.ts +49 -0
  262. package/src/sr-Cyrl-RS.js +503 -0
  263. package/src/sr-Latn-RS.d.ts +49 -0
  264. package/src/sr-Latn-RS.js +503 -0
  265. package/src/sv-SE.d.ts +44 -0
  266. package/{lib/languages/sv.js → src/sv-SE.js} +136 -11
  267. package/src/sw-KE.d.ts +37 -0
  268. package/{lib/languages/sw.js → src/sw-KE.js} +117 -6
  269. package/src/ta-IN.d.ts +35 -0
  270. package/{lib/languages/ta.js → src/ta-IN.js} +109 -6
  271. package/src/te-IN.d.ts +35 -0
  272. package/{lib/languages/te.js → src/te-IN.js} +115 -6
  273. package/src/th-TH.d.ts +38 -0
  274. package/{lib/languages/th.js → src/th-TH.js} +99 -6
  275. package/src/tr-TR.d.ts +48 -0
  276. package/{lib/languages/tr.js → src/tr-TR.js} +168 -23
  277. package/src/uk-UA.d.ts +42 -0
  278. package/src/uk-UA.js +463 -0
  279. package/src/ur-PK.d.ts +36 -0
  280. package/{lib/languages/ur.js → src/ur-PK.js} +116 -6
  281. package/src/utils/expand-scientific.d.ts +32 -0
  282. package/src/utils/expand-scientific.js +65 -0
  283. package/src/utils/parse-cardinal.d.ts +14 -0
  284. package/{lib/utils/parse-numeric.js → src/utils/parse-cardinal.js} +14 -44
  285. package/src/utils/parse-currency.d.ts +14 -0
  286. package/src/utils/parse-currency.js +91 -0
  287. package/src/utils/parse-ordinal.d.ts +10 -0
  288. package/src/utils/parse-ordinal.js +103 -0
  289. package/src/vi-VN.d.ts +48 -0
  290. package/{lib/languages/vi.js → src/vi-VN.js} +102 -11
  291. package/src/yo-NG.d.ts +37 -0
  292. package/{lib/languages/yo.js → src/yo-NG.js} +109 -9
  293. package/src/zh-Hans-CN.d.ts +48 -0
  294. package/{lib/languages/zh-Hans.js → src/zh-Hans-CN.js} +140 -8
  295. package/src/zh-Hant-TW.d.ts +50 -0
  296. package/{lib/languages/zh-Hant.js → src/zh-Hant-TW.js} +139 -8
  297. package/dist/languages/am-Latn.js +0 -3
  298. package/dist/languages/am-Latn.js.map +0 -1
  299. package/dist/languages/am.js +0 -3
  300. package/dist/languages/am.js.map +0 -1
  301. package/dist/languages/ar.js +0 -3
  302. package/dist/languages/ar.js.map +0 -1
  303. package/dist/languages/az.js +0 -3
  304. package/dist/languages/az.js.map +0 -1
  305. package/dist/languages/bn.js +0 -3
  306. package/dist/languages/bn.js.map +0 -1
  307. package/dist/languages/cs.js +0 -3
  308. package/dist/languages/cs.js.map +0 -1
  309. package/dist/languages/da.js +0 -3
  310. package/dist/languages/da.js.map +0 -1
  311. package/dist/languages/de.js +0 -3
  312. package/dist/languages/de.js.map +0 -1
  313. package/dist/languages/el.js +0 -3
  314. package/dist/languages/el.js.map +0 -1
  315. package/dist/languages/en.js +0 -3
  316. package/dist/languages/en.js.map +0 -1
  317. package/dist/languages/es.js +0 -3
  318. package/dist/languages/es.js.map +0 -1
  319. package/dist/languages/fa.js +0 -3
  320. package/dist/languages/fa.js.map +0 -1
  321. package/dist/languages/fi.js +0 -3
  322. package/dist/languages/fi.js.map +0 -1
  323. package/dist/languages/fil.js +0 -3
  324. package/dist/languages/fil.js.map +0 -1
  325. package/dist/languages/fr-BE.js +0 -3
  326. package/dist/languages/fr-BE.js.map +0 -1
  327. package/dist/languages/fr.js +0 -3
  328. package/dist/languages/fr.js.map +0 -1
  329. package/dist/languages/gu.js +0 -3
  330. package/dist/languages/gu.js.map +0 -1
  331. package/dist/languages/ha.js +0 -3
  332. package/dist/languages/ha.js.map +0 -1
  333. package/dist/languages/hbo.js +0 -3
  334. package/dist/languages/hbo.js.map +0 -1
  335. package/dist/languages/he.js +0 -3
  336. package/dist/languages/he.js.map +0 -1
  337. package/dist/languages/hi.js +0 -3
  338. package/dist/languages/hi.js.map +0 -1
  339. package/dist/languages/hr.js +0 -3
  340. package/dist/languages/hr.js.map +0 -1
  341. package/dist/languages/hu.js +0 -3
  342. package/dist/languages/hu.js.map +0 -1
  343. package/dist/languages/id.js +0 -3
  344. package/dist/languages/id.js.map +0 -1
  345. package/dist/languages/it.js +0 -3
  346. package/dist/languages/it.js.map +0 -1
  347. package/dist/languages/ja.js +0 -3
  348. package/dist/languages/ja.js.map +0 -1
  349. package/dist/languages/ka.js +0 -3
  350. package/dist/languages/ka.js.map +0 -1
  351. package/dist/languages/kn.js +0 -3
  352. package/dist/languages/kn.js.map +0 -1
  353. package/dist/languages/ko.js +0 -3
  354. package/dist/languages/ko.js.map +0 -1
  355. package/dist/languages/lt.js +0 -3
  356. package/dist/languages/lt.js.map +0 -1
  357. package/dist/languages/lv.js +0 -3
  358. package/dist/languages/lv.js.map +0 -1
  359. package/dist/languages/mr.js +0 -3
  360. package/dist/languages/mr.js.map +0 -1
  361. package/dist/languages/ms.js +0 -3
  362. package/dist/languages/ms.js.map +0 -1
  363. package/dist/languages/nb.js +0 -3
  364. package/dist/languages/nb.js.map +0 -1
  365. package/dist/languages/nl.js +0 -3
  366. package/dist/languages/nl.js.map +0 -1
  367. package/dist/languages/pa.js +0 -3
  368. package/dist/languages/pa.js.map +0 -1
  369. package/dist/languages/pl.js +0 -3
  370. package/dist/languages/pl.js.map +0 -1
  371. package/dist/languages/pt.js +0 -3
  372. package/dist/languages/pt.js.map +0 -1
  373. package/dist/languages/ro.js +0 -3
  374. package/dist/languages/ro.js.map +0 -1
  375. package/dist/languages/ru.js +0 -3
  376. package/dist/languages/ru.js.map +0 -1
  377. package/dist/languages/sr-Cyrl.js +0 -3
  378. package/dist/languages/sr-Cyrl.js.map +0 -1
  379. package/dist/languages/sr-Latn.js +0 -3
  380. package/dist/languages/sr-Latn.js.map +0 -1
  381. package/dist/languages/sv.js +0 -3
  382. package/dist/languages/sv.js.map +0 -1
  383. package/dist/languages/sw.js +0 -3
  384. package/dist/languages/sw.js.map +0 -1
  385. package/dist/languages/ta.js +0 -3
  386. package/dist/languages/ta.js.map +0 -1
  387. package/dist/languages/te.js +0 -3
  388. package/dist/languages/te.js.map +0 -1
  389. package/dist/languages/th.js +0 -3
  390. package/dist/languages/th.js.map +0 -1
  391. package/dist/languages/tr.js +0 -3
  392. package/dist/languages/tr.js.map +0 -1
  393. package/dist/languages/uk.js +0 -3
  394. package/dist/languages/uk.js.map +0 -1
  395. package/dist/languages/ur.js +0 -3
  396. package/dist/languages/ur.js.map +0 -1
  397. package/dist/languages/vi.js +0 -3
  398. package/dist/languages/vi.js.map +0 -1
  399. package/dist/languages/yo.js +0 -3
  400. package/dist/languages/yo.js.map +0 -1
  401. package/dist/languages/zh-Hans.js +0 -3
  402. package/dist/languages/zh-Hans.js.map +0 -1
  403. package/dist/languages/zh-Hant.js +0 -3
  404. package/dist/languages/zh-Hant.js.map +0 -1
  405. package/dist/n2words.js +0 -3
  406. package/dist/n2words.js.map +0 -1
  407. package/lib/languages/am-Latn.d.ts +0 -7
  408. package/lib/languages/am-Latn.js +0 -159
  409. package/lib/languages/am.d.ts +0 -7
  410. package/lib/languages/am.js +0 -159
  411. package/lib/languages/ar.d.ts +0 -17
  412. package/lib/languages/az.d.ts +0 -7
  413. package/lib/languages/az.js +0 -171
  414. package/lib/languages/bn.d.ts +0 -7
  415. package/lib/languages/cs.d.ts +0 -18
  416. package/lib/languages/da.d.ts +0 -14
  417. package/lib/languages/de.d.ts +0 -17
  418. package/lib/languages/de.js +0 -320
  419. package/lib/languages/el.d.ts +0 -14
  420. package/lib/languages/el.js +0 -236
  421. package/lib/languages/en.d.ts +0 -17
  422. package/lib/languages/es.d.ts +0 -21
  423. package/lib/languages/fa.d.ts +0 -7
  424. package/lib/languages/fa.js +0 -134
  425. package/lib/languages/fi.d.ts +0 -14
  426. package/lib/languages/fil.d.ts +0 -7
  427. package/lib/languages/fr-BE.d.ts +0 -11
  428. package/lib/languages/fr.d.ts +0 -21
  429. package/lib/languages/gu.d.ts +0 -7
  430. package/lib/languages/ha.d.ts +0 -7
  431. package/lib/languages/hbo.d.ts +0 -13
  432. package/lib/languages/he.d.ts +0 -13
  433. package/lib/languages/he.js +0 -265
  434. package/lib/languages/hi.d.ts +0 -7
  435. package/lib/languages/hr.d.ts +0 -11
  436. package/lib/languages/hr.js +0 -224
  437. package/lib/languages/hu.d.ts +0 -7
  438. package/lib/languages/id.d.ts +0 -7
  439. package/lib/languages/it.d.ts +0 -19
  440. package/lib/languages/ja.d.ts +0 -17
  441. package/lib/languages/ka.d.ts +0 -17
  442. package/lib/languages/kn.d.ts +0 -7
  443. package/lib/languages/ko.d.ts +0 -14
  444. package/lib/languages/lt.d.ts +0 -18
  445. package/lib/languages/lt.js +0 -301
  446. package/lib/languages/lv.d.ts +0 -18
  447. package/lib/languages/lv.js +0 -312
  448. package/lib/languages/mr.d.ts +0 -7
  449. package/lib/languages/ms.d.ts +0 -7
  450. package/lib/languages/nb.d.ts +0 -14
  451. package/lib/languages/nl.d.ts +0 -26
  452. package/lib/languages/pa.d.ts +0 -7
  453. package/lib/languages/pl.d.ts +0 -22
  454. package/lib/languages/pl.js +0 -317
  455. package/lib/languages/pt.d.ts +0 -17
  456. package/lib/languages/ro.d.ts +0 -18
  457. package/lib/languages/ru.d.ts +0 -11
  458. package/lib/languages/ru.js +0 -245
  459. package/lib/languages/sr-Cyrl.d.ts +0 -11
  460. package/lib/languages/sr-Cyrl.js +0 -221
  461. package/lib/languages/sr-Latn.d.ts +0 -11
  462. package/lib/languages/sr-Latn.js +0 -221
  463. package/lib/languages/sv.d.ts +0 -14
  464. package/lib/languages/sw.d.ts +0 -7
  465. package/lib/languages/ta.d.ts +0 -7
  466. package/lib/languages/te.d.ts +0 -7
  467. package/lib/languages/th.d.ts +0 -7
  468. package/lib/languages/tr.d.ts +0 -18
  469. package/lib/languages/uk.d.ts +0 -11
  470. package/lib/languages/uk.js +0 -224
  471. package/lib/languages/ur.d.ts +0 -7
  472. package/lib/languages/vi.d.ts +0 -17
  473. package/lib/languages/yo.d.ts +0 -7
  474. package/lib/languages/zh-Hans.d.ts +0 -11
  475. package/lib/languages/zh-Hant.d.ts +0 -11
  476. package/lib/n2words.d.ts +0 -55
  477. package/lib/n2words.js +0 -126
  478. package/lib/utils/parse-numeric.d.ts +0 -17
  479. /package/{lib → src}/utils/is-plain-object.d.ts +0 -0
  480. /package/{lib → src}/utils/is-plain-object.js +0 -0
  481. /package/{lib → src}/utils/validate-options.d.ts +0 -0
  482. /package/{lib → src}/utils/validate-options.js +0 -0
@@ -1,134 +0,0 @@
1
- /**
2
- * Persian language converter - Functional Implementation
3
- *
4
- * Self-contained converter using recursive decomposition.
5
- *
6
- * Key features:
7
- * - "و" (and) conjunction for compound numbers
8
- * - Omit "یک" (one) before thousand
9
- * - Pre-composed hundreds (دویست, سيصد, etc.)
10
- */
11
-
12
- import { parseNumericValue } from '../utils/parse-numeric.js'
13
-
14
- // ============================================================================
15
- // Vocabulary
16
- // ============================================================================
17
-
18
- const ONES = { 1: 'یک', 2: 'دو', 3: 'سه', 4: 'چهار', 5: 'پنج', 6: 'شش', 7: 'هفت', 8: 'هشت', 9: 'نه' }
19
- const TEENS = { 10: 'ده', 11: 'یازده', 12: 'دوازده', 13: 'سیزده', 14: 'چهارده', 15: 'پانزده', 16: 'شانزده', 17: 'هفده', 18: 'هجده', 19: 'نوزده' }
20
- const TENS = { 20: 'بیست', 30: 'سی', 40: 'چهل', 50: 'پنجاه', 60: 'شصت', 70: 'هفتاد', 80: 'هشتاد', 90: 'نود' }
21
- const HUNDREDS = { 100: 'صد', 200: 'دویست', 300: 'سيصد', 400: 'چهار صد', 500: 'پانصد', 600: 'ششصد', 700: 'هفتصد', 800: 'هشتصد', 900: 'نهصد' }
22
-
23
- const THOUSAND = 'هزار'
24
- const MILLION = 'میلیون'
25
-
26
- const ZERO = 'صفر'
27
- const NEGATIVE = 'منفى'
28
- const DECIMAL_SEP = 'ممیّز'
29
-
30
- // ============================================================================
31
- // Conversion Functions
32
- // ============================================================================
33
-
34
- function integerToWords (n) {
35
- if (n === 0n) return ZERO
36
-
37
- // 1-9
38
- if (n <= 9n) {
39
- return ONES[Number(n)]
40
- }
41
-
42
- // 10-19
43
- if (n <= 19n) {
44
- return TEENS[Number(n)]
45
- }
46
-
47
- // 20-99
48
- if (n < 100n) {
49
- const ones = n % 10n
50
- const tens = n - ones
51
- if (ones === 0n) {
52
- return TENS[Number(tens)]
53
- }
54
- return `${TENS[Number(tens)]} و ${ONES[Number(ones)]}`
55
- }
56
-
57
- // 100-999
58
- if (n < 1000n) {
59
- const hundreds = 100n * (n / 100n)
60
- const remainder = n - hundreds
61
- if (remainder === 0n) {
62
- return HUNDREDS[Number(hundreds)]
63
- }
64
- return `${HUNDREDS[Number(hundreds)]} و ${integerToWords(remainder)}`
65
- }
66
-
67
- // 1000-999999
68
- if (n < 1_000_000n) {
69
- const thousandMultiplier = n / 1000n
70
- // Persian omits "one" before thousand: 1000 is just "هزار", not "یک هزار"
71
- const thousandPrefix = thousandMultiplier === 1n
72
- ? ''
73
- : integerToWords(thousandMultiplier) + ' '
74
- const remainder = n % 1000n
75
- const suffix = remainder === 0n ? '' : ' ' + integerToWords(remainder)
76
- return `${thousandPrefix}${THOUSAND}${suffix}`
77
- }
78
-
79
- // 1000000+
80
- const millionMultiplier = n / 1_000_000n
81
- const millionPrefix = integerToWords(millionMultiplier) + ' ' + MILLION
82
- const remainder = n % 1_000_000n
83
- const suffix = remainder === 0n ? '' : ' و ' + integerToWords(remainder)
84
- return `${millionPrefix}${suffix}`
85
- }
86
-
87
- function decimalPartToWords (decimalPart) {
88
- let result = ''
89
- let i = 0
90
-
91
- while (i < decimalPart.length && decimalPart[i] === '0') {
92
- if (result) result += ' '
93
- result += ZERO
94
- i++
95
- }
96
-
97
- const remainder = decimalPart.slice(i)
98
- if (remainder) {
99
- if (result) result += ' '
100
- result += integerToWords(BigInt(remainder))
101
- }
102
-
103
- return result
104
- }
105
-
106
- /**
107
- * Converts a numeric value to Persian words.
108
- *
109
- * @param {number | string | bigint} value - The numeric value to convert
110
- * @returns {string} The number in Persian words
111
- */
112
- function toWords (value) {
113
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
114
-
115
- let result = ''
116
-
117
- if (isNegative) {
118
- result = NEGATIVE + ' '
119
- }
120
-
121
- result += integerToWords(integerPart)
122
-
123
- if (decimalPart) {
124
- result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
125
- }
126
-
127
- return result
128
- }
129
-
130
- // ============================================================================
131
- // Exports
132
- // ============================================================================
133
-
134
- export { toWords }
@@ -1,14 +0,0 @@
1
- /**
2
- * Converts a numeric value to Finnish words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Finnish 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) // 'kaksikymmentäyksi'
11
- * toWords(1000) // 'tuhat'
12
- * toWords('3.14') // 'kolme pilkku yksi neljä'
13
- */
14
- export function toWords(value: number | string | bigint): string;
@@ -1,7 +0,0 @@
1
- /**
2
- * Converts a numeric value to Filipino words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Filipino words
6
- */
7
- export function toWords(value: number | string | bigint): string;
@@ -1,11 +0,0 @@
1
- /**
2
- * Converts a numeric value to Belgian French words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @param {Object} [options] - Optional configuration
6
- * @param {boolean} [options.withHyphenSeparator=false] - Use hyphens between words
7
- * @returns {string} The number in Belgian French words
8
- */
9
- export function toWords(value: number | string | bigint, options?: {
10
- withHyphenSeparator?: boolean | undefined;
11
- }): string;
@@ -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,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;
@@ -1,265 +0,0 @@
1
- /**
2
- * Modern Hebrew language converter - Functional Implementation
3
- *
4
- * Self-contained module with its own input validation, ready for subpath exports.
5
- *
6
- * Key features:
7
- * - Feminine grammatical forms (default in Modern Hebrew)
8
- * - Dual forms for 2, 200, 2000
9
- * - Special 1-9 thousands construct state
10
- * - "ו" (ve) conjunction rules vary by position
11
- * - Per-digit decimal reading
12
- */
13
-
14
- import { parseNumericValue } from '../utils/parse-numeric.js'
15
- import { validateOptions } from '../utils/validate-options.js'
16
-
17
- // ============================================================================
18
- // Vocabulary (arrays for indexed access - faster than object property lookup)
19
- // ============================================================================
20
-
21
- // Feminine forms (default in Modern Hebrew) - index 0 unused
22
- const ONES = ['', 'אחת', 'שתים', 'שלש', 'ארבע', 'חמש', 'שש', 'שבע', 'שמונה', 'תשע']
23
- const TEENS = ['עשר', 'אחת עשרה', 'שתים עשרה', 'שלש עשרה', 'ארבע עשרה', 'חמש עשרה', 'שש עשרה', 'שבע עשרה', 'שמונה עשרה', 'תשע עשרה']
24
- const TENS = ['', '', 'עשרים', 'שלשים', 'ארבעים', 'חמישים', 'ששים', 'שבעים', 'שמונים', 'תשעים']
25
- const HUNDREDS = ['', 'מאה', 'מאתיים', 'שלש מאות', 'ארבע מאות', 'חמש מאות', 'שש מאות', 'שבע מאות', 'שמונה מאות', 'תשע מאות']
26
-
27
- // Special forms for 1-9 thousand (index 0 unused)
28
- const THOUSANDS_SPECIAL = ['', 'אלף', 'אלפיים', 'שלשת אלפים', 'ארבעת אלפים', 'חמשת אלפים', 'ששת אלפים', 'שבעת אלפים', 'שמונת אלפים', 'תשעת אלפים']
29
-
30
- // Scale words (index 1 = thousands, 2 = millions, etc.)
31
- const SCALE = ['', 'אלף', 'מיליון', 'מיליארד', 'טריליון', 'קוודרליון', 'קווינטיליון']
32
- const SCALE_PLURAL = ['', 'אלפים', 'מיליונים', 'מיליארדים', 'טריליונים', 'קוודרליונים', 'קווינטיליונים']
33
-
34
- const ZERO = 'אפס'
35
- const NEGATIVE = 'מינוס'
36
- const DECIMAL_SEP = 'נקודה'
37
-
38
- // ============================================================================
39
- // Segment Building
40
- // ============================================================================
41
-
42
- /**
43
- * Builds segment word for scale segments (thousands, millions, etc.).
44
- * "ו" is added before tens and ones when following hundreds.
45
- */
46
- function buildScaleSegment (n, andWord) {
47
- if (n === 0) return ''
48
-
49
- const ones = n % 10
50
- const tens = Math.floor(n / 10) % 10
51
- const hundreds = Math.floor(n / 100)
52
-
53
- let result = ''
54
-
55
- // Hundreds
56
- if (hundreds > 0) {
57
- result = HUNDREDS[hundreds]
58
- }
59
-
60
- // Tens and ones
61
- if (tens === 1) {
62
- // Teens (10-19)
63
- const teenWord = TEENS[ones]
64
- if (result) {
65
- result += ' ' + andWord + teenWord
66
- } else {
67
- result = teenWord
68
- }
69
- } else {
70
- // Tens (20-90)
71
- if (tens >= 2) {
72
- if (result) {
73
- result += ' ' + andWord + TENS[tens]
74
- } else {
75
- result = TENS[tens]
76
- }
77
- }
78
-
79
- // Ones
80
- if (ones > 0) {
81
- if (result) {
82
- result += ' ' + andWord + ONES[ones]
83
- } else {
84
- result = ONES[ones]
85
- }
86
- }
87
- }
88
-
89
- return result
90
- }
91
-
92
- /**
93
- * Builds segment word for units segment (no scale word).
94
- * "ו" is only added before the final ones digit.
95
- */
96
- function buildUnitsSegment (n, andWord) {
97
- if (n === 0) return ''
98
-
99
- const ones = n % 10
100
- const tens = Math.floor(n / 10) % 10
101
- const hundreds = Math.floor(n / 100)
102
-
103
- let result = ''
104
-
105
- // Hundreds
106
- if (hundreds > 0) {
107
- result = HUNDREDS[hundreds]
108
- }
109
-
110
- // Tens (no conjunction)
111
- if (tens === 1) {
112
- // Teens (10-19)
113
- if (result) {
114
- result += ' ' + TEENS[ones]
115
- } else {
116
- result = TEENS[ones]
117
- }
118
- } else {
119
- if (tens >= 2) {
120
- if (result) {
121
- result += ' ' + TENS[tens]
122
- } else {
123
- result = TENS[tens]
124
- }
125
- }
126
-
127
- // Ones - conjunction only here
128
- if (ones > 0) {
129
- if (result) {
130
- result += ' ' + andWord + ONES[ones]
131
- } else {
132
- result = ONES[ones]
133
- }
134
- }
135
- }
136
-
137
- return result
138
- }
139
-
140
- // ============================================================================
141
- // Conversion Functions
142
- // ============================================================================
143
-
144
- /**
145
- * Converts a non-negative integer to Hebrew words.
146
- *
147
- * @param {bigint} n - Non-negative integer to convert
148
- * @param {Object} options - Conversion options
149
- * @returns {string} Hebrew words
150
- */
151
- function integerToWords (n, options) {
152
- if (n === 0n) return ZERO
153
-
154
- const andWord = options.andWord ?? 'ו'
155
-
156
- // Fast path: numbers < 1000
157
- if (n < 1000n) {
158
- return buildUnitsSegment(Number(n), andWord)
159
- }
160
-
161
- // Extract segments using BigInt modulo
162
- const segments = []
163
- let temp = n
164
- while (temp > 0n) {
165
- segments.push(Number(temp % 1000n))
166
- temp = temp / 1000n
167
- }
168
-
169
- // Build result string directly
170
- let result = ''
171
-
172
- for (let i = segments.length - 1; i >= 0; i--) {
173
- const segment = segments[i]
174
- if (segment === 0) continue
175
-
176
- if (i === 0) {
177
- // Units segment (no scale word)
178
- const segmentWord = buildUnitsSegment(segment, andWord)
179
- if (result) {
180
- // Add "ו" before single-digit units when following scale words
181
- if (segment <= 9) {
182
- result += ' ' + andWord + segmentWord
183
- } else {
184
- result += ' ' + segmentWord
185
- }
186
- } else {
187
- result = segmentWord
188
- }
189
- } else if (i === 1) {
190
- // Thousands - special handling for 1-9
191
- if (segment <= 9) {
192
- if (result) result += ' '
193
- result += THOUSANDS_SPECIAL[segment]
194
- } else {
195
- const segmentWord = buildScaleSegment(segment, andWord)
196
- if (result) result += ' '
197
- result += segmentWord + ' ' + SCALE[1]
198
- }
199
- } else {
200
- // Millions and above
201
- if (segment === 1) {
202
- if (result) result += ' '
203
- result += SCALE[i]
204
- } else {
205
- const segmentWord = buildScaleSegment(segment, andWord)
206
- if (result) result += ' '
207
- result += segmentWord + ' ' + SCALE_PLURAL[i]
208
- }
209
- }
210
- }
211
-
212
- return result
213
- }
214
-
215
- /**
216
- * Converts decimal digits to Hebrew words (digit by digit).
217
- *
218
- * @param {string} decimalPart - Decimal digits (without the point)
219
- * @returns {string} Hebrew words for decimal part
220
- */
221
- function decimalPartToWords (decimalPart) {
222
- let result = ''
223
-
224
- for (let i = 0; i < decimalPart.length; i++) {
225
- const d = parseInt(decimalPart[i], 10)
226
- if (result) result += ' '
227
- result += d === 0 ? ZERO : ONES[d]
228
- }
229
-
230
- return result
231
- }
232
-
233
- /**
234
- * Converts a numeric value to Modern Hebrew words.
235
- *
236
- * @param {number | string | bigint} value - The numeric value to convert
237
- * @param {Object} [options] - Optional configuration
238
- * @param {('masculine'|'feminine')} [options.gender='masculine'] - Grammatical gender
239
- * @param {string} [options.andWord] - Custom conjunction word
240
- * @returns {string} The number in Modern Hebrew words
241
- */
242
- function toWords (value, options) {
243
- options = validateOptions(options)
244
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
245
-
246
- let result = ''
247
-
248
- if (isNegative) {
249
- result = NEGATIVE + ' '
250
- }
251
-
252
- result += integerToWords(integerPart, options)
253
-
254
- if (decimalPart) {
255
- result += ' ' + DECIMAL_SEP + ' ' + decimalPartToWords(decimalPart)
256
- }
257
-
258
- return result
259
- }
260
-
261
- // ============================================================================
262
- // Exports
263
- // ============================================================================
264
-
265
- export { toWords }
@@ -1,7 +0,0 @@
1
- /**
2
- * Converts a numeric value to Hindi words.
3
- *
4
- * @param {number | string | bigint} value - The numeric value to convert
5
- * @returns {string} The number in Hindi words
6
- */
7
- export function toWords(value: number | string | bigint): string;
@@ -1,11 +0,0 @@
1
- /**
2
- * Converts a numeric value to Croatian 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
- * @returns {string} The number in Croatian words
8
- */
9
- export function toWords(value: number | string | bigint, options?: {
10
- gender?: "masculine" | "feminine" | undefined;
11
- }): string;