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,7 +1,7 @@
1
1
  /**
2
- * Swedish language converter - Functional Implementation
2
+ * Swedish (Sweden) language converter
3
3
  *
4
- * A performance-optimized number-to-words converter using precomputed lookup tables.
4
+ * CLDR: sv-SE | Swedish as used in Sweden
5
5
  *
6
6
  * Key features:
7
7
  * - Hyphenation for tens-ones (tjugo-ett)
@@ -11,7 +11,9 @@
11
11
  * - Long scale naming with -ard forms
12
12
  */
13
13
 
14
- import { parseNumericValue } from '../utils/parse-numeric.js'
14
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
15
+ import { parseCurrencyValue } from './utils/parse-currency.js'
16
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
15
17
 
16
18
  // ============================================================================
17
19
  // Vocabulary (module-level constants)
@@ -32,7 +34,36 @@ const DECIMAL_SEP = 'komma'
32
34
  const SCALES = ['tusen', 'miljon', 'miljard', 'biljon', 'biljard', 'triljon', 'triljard', 'kvadriljon']
33
35
 
34
36
  // ============================================================================
35
- // Precomputed Lookup Tables (built once at module load)
37
+ // Ordinal Vocabulary
38
+ // ============================================================================
39
+
40
+ // Swedish ordinals: 1st-2nd use -a (första, andra), then -de suffix
41
+ // Numbers ending in 1, 2 (except 11, 12) use special forms
42
+ const ORDINAL_ONES = {
43
+ 1: 'första',
44
+ 2: 'andra',
45
+ 3: 'tredje',
46
+ 4: 'fjärde',
47
+ 5: 'femte',
48
+ 6: 'sjätte',
49
+ 7: 'sjunde',
50
+ 8: 'åttonde',
51
+ 9: 'nionde',
52
+ 10: 'tionde',
53
+ 11: 'elfte',
54
+ 12: 'tolfte'
55
+ }
56
+
57
+ // ============================================================================
58
+ // Currency Vocabulary (Swedish Krona)
59
+ // ============================================================================
60
+
61
+ const KRONA = 'krona'
62
+ const KRONOR = 'kronor' // plural
63
+ const ORE = 'öre' // same singular and plural
64
+
65
+ // ============================================================================
66
+ // Segment Building
36
67
  // ============================================================================
37
68
 
38
69
  /**
@@ -43,8 +74,8 @@ function buildSegment (n) {
43
74
  if (n === 0) return { word: '', hasHundred: false, lessThan100: false }
44
75
 
45
76
  const ones = n % 10
46
- const tens = Math.floor(n / 10) % 10
47
- const hundreds = Math.floor(n / 100)
77
+ const tens = Math.trunc(n / 10) % 10
78
+ const hundreds = Math.trunc(n / 100)
48
79
 
49
80
  const parts = []
50
81
  let hasHundred = false
@@ -83,18 +114,6 @@ function buildSegment (n) {
83
114
  }
84
115
  }
85
116
 
86
- // Precompute all 1000 segment words (0-999)
87
- const SEGMENTS = new Array(1000)
88
- const SEGMENTS_HAS_HUNDRED = new Array(1000)
89
- const SEGMENTS_LESS_THAN_100 = new Array(1000)
90
-
91
- for (let i = 0; i < 1000; i++) {
92
- const result = buildSegment(i)
93
- SEGMENTS[i] = result.word
94
- SEGMENTS_HAS_HUNDRED[i] = result.hasHundred
95
- SEGMENTS_LESS_THAN_100[i] = result.lessThan100
96
- }
97
-
98
117
  // ============================================================================
99
118
  // Conversion Functions
100
119
  // ============================================================================
@@ -108,9 +127,9 @@ for (let i = 0; i < 1000; i++) {
108
127
  function integerToWords (n) {
109
128
  if (n === 0n) return ZERO
110
129
 
111
- // Fast path: numbers < 1000 (direct lookup)
130
+ // Fast path: numbers < 1000
112
131
  if (n < 1000n) {
113
- return SEGMENTS[Number(n)]
132
+ return buildSegment(Number(n)).word
114
133
  }
115
134
 
116
135
  // Fast path: numbers < 1,000,000 (thousands)
@@ -119,15 +138,15 @@ function integerToWords (n) {
119
138
  const remainder = Number(n % 1000n)
120
139
 
121
140
  // Omit "ett" before tusen
122
- let result = thousands === 1 ? SCALES[0] : SEGMENTS[thousands] + ' ' + SCALES[0]
141
+ let result = thousands === 1 ? SCALES[0] : buildSegment(thousands).word + ' ' + SCALES[0]
123
142
 
124
143
  if (remainder > 0) {
125
- const remainderWord = SEGMENTS[remainder]
144
+ const remainderResult = buildSegment(remainder)
126
145
  // Insert "och" if remainder < 100 (doesn't have hundred)
127
- if (SEGMENTS_LESS_THAN_100[remainder]) {
128
- result += ' och ' + remainderWord
146
+ if (remainderResult.lessThan100) {
147
+ result += ' och ' + remainderResult.word
129
148
  } else {
130
- result += ' ' + remainderWord
149
+ result += ' ' + remainderResult.word
131
150
  }
132
151
  }
133
152
 
@@ -171,11 +190,13 @@ function buildLargeNumberWords (n) {
171
190
  const segment = segments[i]
172
191
 
173
192
  if (segment !== 0) {
193
+ const segmentResult = buildSegment(segment)
194
+
174
195
  if (scaleIndex === 0) {
175
196
  // Units segment
176
197
  parts.push({
177
- word: SEGMENTS[segment],
178
- hasHundred: SEGMENTS_HAS_HUNDRED[segment],
198
+ word: segmentResult.word,
199
+ hasHundred: segmentResult.hasHundred,
179
200
  isScale: false
180
201
  })
181
202
  } else {
@@ -191,7 +212,7 @@ function buildLargeNumberWords (n) {
191
212
  segmentWord = 'en' // "en miljon"
192
213
  }
193
214
  } else {
194
- segmentWord = SEGMENTS[segment]
215
+ segmentWord = segmentResult.word
195
216
  }
196
217
 
197
218
  if (segmentWord) {
@@ -275,12 +296,12 @@ function decimalPartToWords (decimalPart) {
275
296
  * @throws {Error} If value is not a valid number format
276
297
  *
277
298
  * @example
278
- * toWords(42) // 'fyrtio-två'
279
- * toWords(101) // 'hundra och ett'
280
- * toWords(1000000) // 'en miljon'
299
+ * toCardinal(42) // 'fyrtio-två'
300
+ * toCardinal(101) // 'hundra och ett'
301
+ * toCardinal(1000000) // 'en miljon'
281
302
  */
282
- function toWords (value) {
283
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
303
+ function toCardinal (value) {
304
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
284
305
 
285
306
  let result = ''
286
307
 
@@ -297,8 +318,102 @@ function toWords (value) {
297
318
  return result
298
319
  }
299
320
 
321
+ // ============================================================================
322
+ // ORDINAL: toOrdinal(value)
323
+ // ============================================================================
324
+
325
+ /**
326
+ * Converts a non-negative integer to Swedish ordinal words.
327
+ *
328
+ * Swedish ordinals: första (1st), andra (2nd), tredje (3rd), etc.
329
+ * Most use cardinal + de suffix, with special forms 1-12.
330
+ *
331
+ * @param {bigint} n - Positive integer to convert
332
+ * @returns {string} Swedish ordinal words
333
+ */
334
+ function integerToOrdinal (n) {
335
+ // Special forms for 1-12
336
+ if (n >= 1n && n <= 12n) {
337
+ return ORDINAL_ONES[Number(n)]
338
+ }
339
+
340
+ // For numbers > 12, add -de suffix to cardinal
341
+ // But need to handle endings in 1, 2 specially
342
+ const cardinal = integerToWords(n)
343
+
344
+ // Numbers ending in ett -> första pattern not used for compound
345
+ // Swedish ordinals mostly add -de for >12
346
+ return cardinal + 'de'
347
+ }
348
+
349
+ /**
350
+ * Converts a numeric value to Swedish ordinal words.
351
+ *
352
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
353
+ * @returns {string} The number as ordinal words
354
+ * @throws {TypeError} If value is not a valid numeric type
355
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
356
+ *
357
+ * @example
358
+ * toOrdinal(1) // 'första'
359
+ * toOrdinal(2) // 'andra'
360
+ * toOrdinal(21) // 'tjugo-ettde'
361
+ */
362
+ function toOrdinal (value) {
363
+ const integerPart = parseOrdinalValue(value)
364
+ return integerToOrdinal(integerPart)
365
+ }
366
+
367
+ // ============================================================================
368
+ // CURRENCY: toCurrency(value)
369
+ // ============================================================================
370
+
371
+ /**
372
+ * Converts a numeric value to Swedish currency words (Swedish Krona).
373
+ *
374
+ * Uses krona/kronor and öre (100 öre = 1 krona).
375
+ *
376
+ * @param {number | string | bigint} value - The currency amount to convert
377
+ * @returns {string} The amount in Swedish currency words
378
+ * @throws {TypeError} If value is not a valid numeric type
379
+ * @throws {Error} If value is not a valid number format
380
+ *
381
+ * @example
382
+ * toCurrency(1) // 'en krona'
383
+ * toCurrency(42) // 'fyrtio-två kronor'
384
+ * toCurrency(1.50) // 'en krona och femtio öre'
385
+ */
386
+ function toCurrency (value) {
387
+ const { isNegative, dollars: kronor, cents: ore } = parseCurrencyValue(value)
388
+
389
+ let result = ''
390
+ if (isNegative) {
391
+ result = NEGATIVE + ' '
392
+ }
393
+
394
+ // Kronor part
395
+ if (kronor > 0n || ore === 0n) {
396
+ // Use "en" for 1 krona (not "ett")
397
+ if (kronor === 1n) {
398
+ result += 'en ' + KRONA
399
+ } else {
400
+ result += integerToWords(kronor) + ' ' + KRONOR
401
+ }
402
+ }
403
+
404
+ // Öre part
405
+ if (ore > 0n) {
406
+ if (kronor > 0n) {
407
+ result += ' och '
408
+ }
409
+ result += integerToWords(ore) + ' ' + ORE
410
+ }
411
+
412
+ return result
413
+ }
414
+
300
415
  // ============================================================================
301
416
  // Public API
302
417
  // ============================================================================
303
418
 
304
- export { toWords }
419
+ export { toCardinal, toOrdinal, toCurrency }
package/src/sw-KE.d.ts ADDED
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Converts a numeric value to Swahili words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Swahili words
6
+ */
7
+ export function toCardinal(value: number | string | bigint): string;
8
+ /**
9
+ * Converts a numeric value to Swahili ordinal words.
10
+ *
11
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
12
+ * @returns {string} The number as ordinal words
13
+ * @throws {TypeError} If value is not a valid numeric type
14
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
15
+ *
16
+ * @example
17
+ * toOrdinal(1) // 'wa kwanza'
18
+ * toOrdinal(2) // 'wa pili'
19
+ * toOrdinal(10) // 'wa kumi'
20
+ */
21
+ export function toOrdinal(value: number | string | bigint): string;
22
+ /**
23
+ * Converts a numeric value to Swahili currency words (Kenyan Shilling).
24
+ *
25
+ * Uses shilingi and senti (100 senti = 1 shilingi).
26
+ *
27
+ * @param {number | string | bigint} value - The currency amount to convert
28
+ * @returns {string} The amount in Swahili currency words
29
+ * @throws {TypeError} If value is not a valid numeric type
30
+ * @throws {Error} If value is not a valid number format
31
+ *
32
+ * @example
33
+ * toCurrency(42) // 'shilingi arobaini na mbili'
34
+ * toCurrency(1.50) // 'shilingi moja na senti hamsini'
35
+ * toCurrency(-5) // 'minus shilingi tano'
36
+ */
37
+ export function toCurrency(value: number | string | bigint): string;
@@ -1,7 +1,7 @@
1
1
  /**
2
- * Swahili language converter - Functional Implementation
2
+ * Swahili (Kenya) language converter
3
3
  *
4
- * Self-contained converter with precomputed lookup tables.
4
+ * CLDR: sw-KE | Swahili as used in Kenya
5
5
  *
6
6
  * Key features:
7
7
  * - "na" connector for compound numbers
@@ -9,7 +9,9 @@
9
9
  * - Scale words: elfu, milioni, bilioni
10
10
  */
11
11
 
12
- import { parseNumericValue } from '../utils/parse-numeric.js'
12
+ import { parseCardinalValue } from './utils/parse-cardinal.js'
13
+ import { parseCurrencyValue } from './utils/parse-currency.js'
14
+ import { parseOrdinalValue } from './utils/parse-ordinal.js'
13
15
 
14
16
  // ============================================================================
15
17
  // Vocabulary
@@ -24,6 +26,32 @@ const ZERO = 'sifuri'
24
26
  const NEGATIVE = 'minus'
25
27
  const DECIMAL_SEP = 'nukta'
26
28
 
29
+ // ============================================================================
30
+ // Ordinal Vocabulary
31
+ // ============================================================================
32
+
33
+ // Swahili ordinals use "wa" + cardinal: wa kwanza (1st), wa pili (2nd)
34
+ // First few have special forms
35
+ const ORDINAL_ONES = {
36
+ 1: 'wa kwanza',
37
+ 2: 'wa pili',
38
+ 3: 'wa tatu',
39
+ 4: 'wa nne',
40
+ 5: 'wa tano',
41
+ 6: 'wa sita',
42
+ 7: 'wa saba',
43
+ 8: 'wa nane',
44
+ 9: 'wa tisa'
45
+ }
46
+ const ORDINAL_PREFIX = 'wa'
47
+
48
+ // ============================================================================
49
+ // Currency Vocabulary (Kenyan Shilling)
50
+ // ============================================================================
51
+
52
+ const SHILLING = 'shilingi'
53
+ const CENT = 'senti'
54
+
27
55
  // ============================================================================
28
56
  // Conversion Functions
29
57
  // ============================================================================
@@ -128,8 +156,8 @@ function decimalPartToWords (decimalPart) {
128
156
  * @param {number | string | bigint} value - The numeric value to convert
129
157
  * @returns {string} The number in Swahili words
130
158
  */
131
- function toWords (value) {
132
- const { isNegative, integerPart, decimalPart } = parseNumericValue(value)
159
+ function toCardinal (value) {
160
+ const { isNegative, integerPart, decimalPart } = parseCardinalValue(value)
133
161
 
134
162
  let result = ''
135
163
 
@@ -146,8 +174,91 @@ function toWords (value) {
146
174
  return result
147
175
  }
148
176
 
177
+ // ============================================================================
178
+ // ORDINAL: toOrdinal(value)
179
+ // ============================================================================
180
+
181
+ /**
182
+ * Converts a non-negative integer to Swahili ordinal words.
183
+ *
184
+ * Swahili ordinals: wa kwanza (1st), wa pili (2nd), wa tatu (3rd), etc.
185
+ *
186
+ * @param {bigint} n - Positive integer to convert
187
+ * @returns {string} Swahili ordinal words
188
+ */
189
+ function integerToOrdinal (n) {
190
+ // Special forms for 1-9
191
+ if (n >= 1n && n <= 9n) {
192
+ return ORDINAL_ONES[Number(n)]
193
+ }
194
+
195
+ // For 10+, use "wa" prefix + cardinal
196
+ return ORDINAL_PREFIX + ' ' + integerToWords(n)
197
+ }
198
+
199
+ /**
200
+ * Converts a numeric value to Swahili ordinal words.
201
+ *
202
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
203
+ * @returns {string} The number as ordinal words
204
+ * @throws {TypeError} If value is not a valid numeric type
205
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
206
+ *
207
+ * @example
208
+ * toOrdinal(1) // 'wa kwanza'
209
+ * toOrdinal(2) // 'wa pili'
210
+ * toOrdinal(10) // 'wa kumi'
211
+ */
212
+ function toOrdinal (value) {
213
+ const integerPart = parseOrdinalValue(value)
214
+ return integerToOrdinal(integerPart)
215
+ }
216
+
217
+ // ============================================================================
218
+ // CURRENCY: toCurrency(value)
219
+ // ============================================================================
220
+
221
+ /**
222
+ * Converts a numeric value to Swahili currency words (Kenyan Shilling).
223
+ *
224
+ * Uses shilingi and senti (100 senti = 1 shilingi).
225
+ *
226
+ * @param {number | string | bigint} value - The currency amount to convert
227
+ * @returns {string} The amount in Swahili currency words
228
+ * @throws {TypeError} If value is not a valid numeric type
229
+ * @throws {Error} If value is not a valid number format
230
+ *
231
+ * @example
232
+ * toCurrency(42) // 'shilingi arobaini na mbili'
233
+ * toCurrency(1.50) // 'shilingi moja na senti hamsini'
234
+ * toCurrency(-5) // 'minus shilingi tano'
235
+ */
236
+ function toCurrency (value) {
237
+ const { isNegative, dollars: shillings, cents: senti } = parseCurrencyValue(value)
238
+
239
+ let result = ''
240
+ if (isNegative) {
241
+ result = NEGATIVE + ' '
242
+ }
243
+
244
+ // Shillings part
245
+ if (shillings > 0n || senti === 0n) {
246
+ result += SHILLING + ' ' + integerToWords(shillings)
247
+ }
248
+
249
+ // Senti part
250
+ if (senti > 0n) {
251
+ if (shillings > 0n) {
252
+ result += ' na '
253
+ }
254
+ result += CENT + ' ' + integerToWords(senti)
255
+ }
256
+
257
+ return result
258
+ }
259
+
149
260
  // ============================================================================
150
261
  // Exports
151
262
  // ============================================================================
152
263
 
153
- export { toWords }
264
+ export { toCardinal, toOrdinal, toCurrency }
package/src/ta-IN.d.ts ADDED
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Converts a numeric value to Tamil words.
3
+ *
4
+ * @param {number | string | bigint} value - The numeric value to convert
5
+ * @returns {string} The number in Tamil words
6
+ */
7
+ export function toCardinal(value: number | string | bigint): string;
8
+ /**
9
+ * Converts a numeric value to Tamil ordinal words.
10
+ *
11
+ * @param {number | string | bigint} value - The numeric value to convert (positive integer)
12
+ * @returns {string} The number as ordinal words
13
+ * @throws {TypeError} If value is not a valid numeric type
14
+ * @throws {RangeError} If value is negative, zero, or has a decimal part
15
+ *
16
+ * @example
17
+ * toOrdinal(1) // 'முதல்'
18
+ * toOrdinal(2) // 'இரண்டாவது'
19
+ * toOrdinal(10) // 'பத்துஆவது'
20
+ */
21
+ export function toOrdinal(value: number | string | bigint): string;
22
+ /**
23
+ * Converts a numeric value to Tamil currency words (Indian Rupee).
24
+ *
25
+ * @param {number | string | bigint} value - The currency amount to convert
26
+ * @returns {string} The amount in Tamil currency words
27
+ * @throws {TypeError} If value is not a valid numeric type
28
+ * @throws {Error} If value is not a valid number format
29
+ *
30
+ * @example
31
+ * toCurrency(42.50) // 'நாற்பத்திரண்டு ரூபாய் ஐம்பது பைசா'
32
+ * toCurrency(1) // 'ஒன்று ரூபாய்'
33
+ * toCurrency(0.01) // 'ஒன்று பைசா'
34
+ */
35
+ export function toCurrency(value: number | string | bigint): string;