arevdata 0.1.17

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 (289) hide show
  1. package/README.md +499 -0
  2. package/dist/arevdata.cjs +38955 -0
  3. package/dist/arevdata.cjs.map +1 -0
  4. package/dist/arevdata.js +38955 -0
  5. package/dist/arevdata.js.map +1 -0
  6. package/dist/assets/flags/LICENSE.flag-icons.txt +21 -0
  7. package/dist/assets/flags/README.md +11 -0
  8. package/dist/assets/flags/index.html +88 -0
  9. package/dist/assets/flags/overrides/xn.svg +6 -0
  10. package/dist/assets/flags/svg/ad.svg +150 -0
  11. package/dist/assets/flags/svg/ae.svg +6 -0
  12. package/dist/assets/flags/svg/af.svg +81 -0
  13. package/dist/assets/flags/svg/ag.svg +14 -0
  14. package/dist/assets/flags/svg/al.svg +5 -0
  15. package/dist/assets/flags/svg/am.svg +5 -0
  16. package/dist/assets/flags/svg/ao.svg +13 -0
  17. package/dist/assets/flags/svg/ar.svg +32 -0
  18. package/dist/assets/flags/svg/at.svg +4 -0
  19. package/dist/assets/flags/svg/au.svg +8 -0
  20. package/dist/assets/flags/svg/az.svg +8 -0
  21. package/dist/assets/flags/svg/ba.svg +12 -0
  22. package/dist/assets/flags/svg/bb.svg +6 -0
  23. package/dist/assets/flags/svg/bd.svg +4 -0
  24. package/dist/assets/flags/svg/be.svg +7 -0
  25. package/dist/assets/flags/svg/bf.svg +7 -0
  26. package/dist/assets/flags/svg/bg.svg +5 -0
  27. package/dist/assets/flags/svg/bh.svg +4 -0
  28. package/dist/assets/flags/svg/bi.svg +15 -0
  29. package/dist/assets/flags/svg/bj.svg +14 -0
  30. package/dist/assets/flags/svg/bn.svg +36 -0
  31. package/dist/assets/flags/svg/bo.svg +673 -0
  32. package/dist/assets/flags/svg/br.svg +45 -0
  33. package/dist/assets/flags/svg/bs.svg +13 -0
  34. package/dist/assets/flags/svg/bt.svg +89 -0
  35. package/dist/assets/flags/svg/bw.svg +7 -0
  36. package/dist/assets/flags/svg/by.svg +18 -0
  37. package/dist/assets/flags/svg/bz.svg +145 -0
  38. package/dist/assets/flags/svg/ca.svg +4 -0
  39. package/dist/assets/flags/svg/cd.svg +5 -0
  40. package/dist/assets/flags/svg/cf.svg +15 -0
  41. package/dist/assets/flags/svg/cg.svg +12 -0
  42. package/dist/assets/flags/svg/ch.svg +9 -0
  43. package/dist/assets/flags/svg/cl.svg +13 -0
  44. package/dist/assets/flags/svg/cm.svg +15 -0
  45. package/dist/assets/flags/svg/cn.svg +11 -0
  46. package/dist/assets/flags/svg/co.svg +7 -0
  47. package/dist/assets/flags/svg/cr.svg +7 -0
  48. package/dist/assets/flags/svg/cu.svg +13 -0
  49. package/dist/assets/flags/svg/cv.svg +13 -0
  50. package/dist/assets/flags/svg/cy.svg +6 -0
  51. package/dist/assets/flags/svg/cz.svg +5 -0
  52. package/dist/assets/flags/svg/de.svg +5 -0
  53. package/dist/assets/flags/svg/dj.svg +13 -0
  54. package/dist/assets/flags/svg/dk.svg +5 -0
  55. package/dist/assets/flags/svg/dm.svg +152 -0
  56. package/dist/assets/flags/svg/do.svg +121 -0
  57. package/dist/assets/flags/svg/dz.svg +5 -0
  58. package/dist/assets/flags/svg/ec.svg +138 -0
  59. package/dist/assets/flags/svg/ee.svg +5 -0
  60. package/dist/assets/flags/svg/eg.svg +38 -0
  61. package/dist/assets/flags/svg/er.svg +8 -0
  62. package/dist/assets/flags/svg/es.svg +544 -0
  63. package/dist/assets/flags/svg/et.svg +14 -0
  64. package/dist/assets/flags/svg/fi.svg +5 -0
  65. package/dist/assets/flags/svg/fj.svg +120 -0
  66. package/dist/assets/flags/svg/fm.svg +11 -0
  67. package/dist/assets/flags/svg/fr.svg +5 -0
  68. package/dist/assets/flags/svg/ga.svg +7 -0
  69. package/dist/assets/flags/svg/gb.svg +7 -0
  70. package/dist/assets/flags/svg/gd.svg +27 -0
  71. package/dist/assets/flags/svg/ge.svg +6 -0
  72. package/dist/assets/flags/svg/gh.svg +6 -0
  73. package/dist/assets/flags/svg/gm.svg +14 -0
  74. package/dist/assets/flags/svg/gn.svg +7 -0
  75. package/dist/assets/flags/svg/gq.svg +23 -0
  76. package/dist/assets/flags/svg/gr.svg +16 -0
  77. package/dist/assets/flags/svg/gt.svg +204 -0
  78. package/dist/assets/flags/svg/gw.svg +13 -0
  79. package/dist/assets/flags/svg/gy.svg +9 -0
  80. package/dist/assets/flags/svg/hn.svg +18 -0
  81. package/dist/assets/flags/svg/hr.svg +58 -0
  82. package/dist/assets/flags/svg/ht.svg +116 -0
  83. package/dist/assets/flags/svg/hu.svg +7 -0
  84. package/dist/assets/flags/svg/id.svg +4 -0
  85. package/dist/assets/flags/svg/ie.svg +7 -0
  86. package/dist/assets/flags/svg/il.svg +14 -0
  87. package/dist/assets/flags/svg/in.svg +25 -0
  88. package/dist/assets/flags/svg/iq.svg +10 -0
  89. package/dist/assets/flags/svg/ir.svg +219 -0
  90. package/dist/assets/flags/svg/is.svg +12 -0
  91. package/dist/assets/flags/svg/it.svg +7 -0
  92. package/dist/assets/flags/svg/jm.svg +8 -0
  93. package/dist/assets/flags/svg/jo.svg +16 -0
  94. package/dist/assets/flags/svg/jp.svg +11 -0
  95. package/dist/assets/flags/svg/ke.svg +23 -0
  96. package/dist/assets/flags/svg/kg.svg +4 -0
  97. package/dist/assets/flags/svg/kh.svg +61 -0
  98. package/dist/assets/flags/svg/ki.svg +36 -0
  99. package/dist/assets/flags/svg/km.svg +16 -0
  100. package/dist/assets/flags/svg/kn.svg +14 -0
  101. package/dist/assets/flags/svg/kp.svg +15 -0
  102. package/dist/assets/flags/svg/kr.svg +24 -0
  103. package/dist/assets/flags/svg/kw.svg +13 -0
  104. package/dist/assets/flags/svg/kz.svg +36 -0
  105. package/dist/assets/flags/svg/la.svg +12 -0
  106. package/dist/assets/flags/svg/lb.svg +15 -0
  107. package/dist/assets/flags/svg/lc.svg +8 -0
  108. package/dist/assets/flags/svg/li.svg +43 -0
  109. package/dist/assets/flags/svg/lk.svg +22 -0
  110. package/dist/assets/flags/svg/lr.svg +14 -0
  111. package/dist/assets/flags/svg/ls.svg +8 -0
  112. package/dist/assets/flags/svg/lt.svg +7 -0
  113. package/dist/assets/flags/svg/lu.svg +5 -0
  114. package/dist/assets/flags/svg/lv.svg +6 -0
  115. package/dist/assets/flags/svg/ly.svg +13 -0
  116. package/dist/assets/flags/svg/ma.svg +4 -0
  117. package/dist/assets/flags/svg/mc.svg +6 -0
  118. package/dist/assets/flags/svg/md.svg +70 -0
  119. package/dist/assets/flags/svg/me.svg +116 -0
  120. package/dist/assets/flags/svg/mg.svg +7 -0
  121. package/dist/assets/flags/svg/mh.svg +7 -0
  122. package/dist/assets/flags/svg/mk.svg +5 -0
  123. package/dist/assets/flags/svg/ml.svg +7 -0
  124. package/dist/assets/flags/svg/mm.svg +12 -0
  125. package/dist/assets/flags/svg/mn.svg +14 -0
  126. package/dist/assets/flags/svg/mr.svg +6 -0
  127. package/dist/assets/flags/svg/mt.svg +58 -0
  128. package/dist/assets/flags/svg/mu.svg +8 -0
  129. package/dist/assets/flags/svg/mv.svg +6 -0
  130. package/dist/assets/flags/svg/mw.svg +10 -0
  131. package/dist/assets/flags/svg/mx.svg +382 -0
  132. package/dist/assets/flags/svg/my.svg +26 -0
  133. package/dist/assets/flags/svg/mz.svg +21 -0
  134. package/dist/assets/flags/svg/na.svg +16 -0
  135. package/dist/assets/flags/svg/ne.svg +6 -0
  136. package/dist/assets/flags/svg/ng.svg +6 -0
  137. package/dist/assets/flags/svg/ni.svg +129 -0
  138. package/dist/assets/flags/svg/nl.svg +5 -0
  139. package/dist/assets/flags/svg/no.svg +7 -0
  140. package/dist/assets/flags/svg/np.svg +13 -0
  141. package/dist/assets/flags/svg/nr.svg +12 -0
  142. package/dist/assets/flags/svg/nz.svg +36 -0
  143. package/dist/assets/flags/svg/om.svg +115 -0
  144. package/dist/assets/flags/svg/pa.svg +14 -0
  145. package/dist/assets/flags/svg/pe.svg +4 -0
  146. package/dist/assets/flags/svg/pg.svg +9 -0
  147. package/dist/assets/flags/svg/ph.svg +6 -0
  148. package/dist/assets/flags/svg/pk.svg +15 -0
  149. package/dist/assets/flags/svg/pl.svg +6 -0
  150. package/dist/assets/flags/svg/ps.svg +6 -0
  151. package/dist/assets/flags/svg/pt.svg +57 -0
  152. package/dist/assets/flags/svg/pw.svg +11 -0
  153. package/dist/assets/flags/svg/py.svg +157 -0
  154. package/dist/assets/flags/svg/qa.svg +4 -0
  155. package/dist/assets/flags/svg/ro.svg +7 -0
  156. package/dist/assets/flags/svg/rs.svg +292 -0
  157. package/dist/assets/flags/svg/ru.svg +5 -0
  158. package/dist/assets/flags/svg/rw.svg +13 -0
  159. package/dist/assets/flags/svg/sa.svg +25 -0
  160. package/dist/assets/flags/svg/sb.svg +13 -0
  161. package/dist/assets/flags/svg/sc.svg +7 -0
  162. package/dist/assets/flags/svg/sd.svg +13 -0
  163. package/dist/assets/flags/svg/se.svg +4 -0
  164. package/dist/assets/flags/svg/sg.svg +13 -0
  165. package/dist/assets/flags/svg/si.svg +18 -0
  166. package/dist/assets/flags/svg/sk.svg +9 -0
  167. package/dist/assets/flags/svg/sl.svg +7 -0
  168. package/dist/assets/flags/svg/sm.svg +75 -0
  169. package/dist/assets/flags/svg/sn.svg +8 -0
  170. package/dist/assets/flags/svg/so.svg +11 -0
  171. package/dist/assets/flags/svg/sr.svg +6 -0
  172. package/dist/assets/flags/svg/ss.svg +8 -0
  173. package/dist/assets/flags/svg/st.svg +16 -0
  174. package/dist/assets/flags/svg/sv.svg +593 -0
  175. package/dist/assets/flags/svg/sy.svg +6 -0
  176. package/dist/assets/flags/svg/sz.svg +34 -0
  177. package/dist/assets/flags/svg/td.svg +7 -0
  178. package/dist/assets/flags/svg/tg.svg +14 -0
  179. package/dist/assets/flags/svg/th.svg +7 -0
  180. package/dist/assets/flags/svg/tj.svg +22 -0
  181. package/dist/assets/flags/svg/tl.svg +13 -0
  182. package/dist/assets/flags/svg/tm.svg +204 -0
  183. package/dist/assets/flags/svg/tn.svg +4 -0
  184. package/dist/assets/flags/svg/to.svg +10 -0
  185. package/dist/assets/flags/svg/tr.svg +8 -0
  186. package/dist/assets/flags/svg/tt.svg +5 -0
  187. package/dist/assets/flags/svg/tv.svg +9 -0
  188. package/dist/assets/flags/svg/tw.svg +34 -0
  189. package/dist/assets/flags/svg/tz.svg +13 -0
  190. package/dist/assets/flags/svg/ua.svg +6 -0
  191. package/dist/assets/flags/svg/ug.svg +30 -0
  192. package/dist/assets/flags/svg/us.svg +9 -0
  193. package/dist/assets/flags/svg/uy.svg +28 -0
  194. package/dist/assets/flags/svg/uz.svg +30 -0
  195. package/dist/assets/flags/svg/va.svg +190 -0
  196. package/dist/assets/flags/svg/vc.svg +8 -0
  197. package/dist/assets/flags/svg/ve.svg +26 -0
  198. package/dist/assets/flags/svg/vn.svg +11 -0
  199. package/dist/assets/flags/svg/vu.svg +21 -0
  200. package/dist/assets/flags/svg/ws.svg +7 -0
  201. package/dist/assets/flags/svg/xk.svg +5 -0
  202. package/dist/assets/flags/svg/xn.svg +6 -0
  203. package/dist/assets/flags/svg/ye.svg +7 -0
  204. package/dist/assets/flags/svg/za.svg +17 -0
  205. package/dist/assets/flags/svg/zm.svg +27 -0
  206. package/dist/assets/flags/svg/zw.svg +21 -0
  207. package/dist/data/languages/index.html +86 -0
  208. package/dist/docs/api-worker-plan/index.html +439 -0
  209. package/dist/docs/cities/index.html +193 -0
  210. package/dist/docs/continents-currencies/index.html +306 -0
  211. package/dist/docs/countries/index.html +274 -0
  212. package/dist/docs/country-maps/index.html +262 -0
  213. package/dist/docs/flags/index.html +300 -0
  214. package/dist/docs/geography/index.html +454 -0
  215. package/dist/docs/languages/index.html +304 -0
  216. package/dist/docs/phone-codes/index.html +152 -0
  217. package/dist/docs/states/index.html +334 -0
  218. package/dist/docs/world-map/index.html +345 -0
  219. package/dist/examples/vue-app/index.html +208 -0
  220. package/dist/index.html +784 -0
  221. package/dist/robots.txt +2 -0
  222. package/dist/style/app.css +1 -0
  223. package/dist/types/__tests__/cities.test.d.ts +1 -0
  224. package/dist/types/__tests__/continents.test.d.ts +1 -0
  225. package/dist/types/__tests__/countries.test.d.ts +1 -0
  226. package/dist/types/__tests__/countryMaps.test.d.ts +1 -0
  227. package/dist/types/__tests__/geography.test.d.ts +1 -0
  228. package/dist/types/__tests__/index.test.d.ts +1 -0
  229. package/dist/types/__tests__/phoneCodes.test.d.ts +1 -0
  230. package/dist/types/__tests__/states.test.d.ts +1 -0
  231. package/dist/types/__tests__/translations.test.d.ts +1 -0
  232. package/dist/types/api/index.d.ts +5 -0
  233. package/dist/types/api/index.test.d.ts +1 -0
  234. package/dist/types/api/query.d.ts +3 -0
  235. package/dist/types/api/response.d.ts +16 -0
  236. package/dist/types/api/router.d.ts +1 -0
  237. package/dist/types/api/routes/cities.d.ts +2 -0
  238. package/dist/types/api/routes/countries.d.ts +2 -0
  239. package/dist/types/api/routes/health.d.ts +1 -0
  240. package/dist/types/api/routes/maps.d.ts +1 -0
  241. package/dist/types/api/routes/meta.d.ts +1 -0
  242. package/dist/types/api/routes/phoneCodes.d.ts +1 -0
  243. package/dist/types/data/cities.d.ts +22 -0
  244. package/dist/types/data/continents.d.ts +9 -0
  245. package/dist/types/data/countries.d.ts +23 -0
  246. package/dist/types/data/countryMaps.d.ts +104 -0
  247. package/dist/types/data/currencies.d.ts +13 -0
  248. package/dist/types/data/flags.d.ts +37 -0
  249. package/dist/types/data/geography.d.ts +48 -0
  250. package/dist/types/data/languages/index.d.ts +2 -0
  251. package/dist/types/data/languages/language.test.d.ts +1 -0
  252. package/dist/types/data/languages/languageData.d.ts +6 -0
  253. package/dist/types/data/languages/languageFunctions.d.ts +43 -0
  254. package/dist/types/data/languages/translations/ar.d.ts +1189 -0
  255. package/dist/types/data/languages/translations/de.d.ts +1189 -0
  256. package/dist/types/data/languages/translations/es.d.ts +1189 -0
  257. package/dist/types/data/languages/translations/fr.d.ts +1189 -0
  258. package/dist/types/data/languages/translations/hi.d.ts +1189 -0
  259. package/dist/types/data/languages/translations/it.d.ts +1189 -0
  260. package/dist/types/data/languages/translations/ja.d.ts +1189 -0
  261. package/dist/types/data/languages/translations/ko.d.ts +1189 -0
  262. package/dist/types/data/languages/translations/nl.d.ts +1189 -0
  263. package/dist/types/data/languages/translations/pl.d.ts +1189 -0
  264. package/dist/types/data/languages/translations/pt.d.ts +1189 -0
  265. package/dist/types/data/languages/translations/ru.d.ts +1189 -0
  266. package/dist/types/data/languages/translations/tr.d.ts +1189 -0
  267. package/dist/types/data/languages/translations/zh.d.ts +1189 -0
  268. package/dist/types/data/phoneCodes.d.ts +16 -0
  269. package/dist/types/data/states.d.ts +18 -0
  270. package/dist/types/data/translations/ar.d.ts +1832 -0
  271. package/dist/types/data/translations/de.d.ts +2005 -0
  272. package/dist/types/data/translations/es.d.ts +1852 -0
  273. package/dist/types/data/translations/fr.d.ts +1860 -0
  274. package/dist/types/data/translations/hi.d.ts +1816 -0
  275. package/dist/types/data/translations/it.d.ts +1824 -0
  276. package/dist/types/data/translations/ja.d.ts +1833 -0
  277. package/dist/types/data/translations/ko.d.ts +1832 -0
  278. package/dist/types/data/translations/nl.d.ts +1826 -0
  279. package/dist/types/data/translations/pl.d.ts +1818 -0
  280. package/dist/types/data/translations/pt.d.ts +1829 -0
  281. package/dist/types/data/translations/ru.d.ts +1838 -0
  282. package/dist/types/data/translations/tr.d.ts +1818 -0
  283. package/dist/types/data/translations/zh.d.ts +1834 -0
  284. package/dist/types/data/translations.d.ts +73 -0
  285. package/dist/types/data/worldMap.d.ts +122 -0
  286. package/dist/types/index.d.ts +33 -0
  287. package/dist/types/types/index.d.ts +348 -0
  288. package/dist/types/utils/geo.d.ts +101 -0
  289. package/package.json +67 -0
@@ -0,0 +1,193 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+ <meta name="type" content="content">
6
+ <title>Cities</title>
7
+ <link href="/style/app.css" rel="stylesheet" type="text/css">
8
+ </head>
9
+ <body class="page--cities">
10
+ <div class="page-container">
11
+ <header class="header">
12
+ <div class="header__container">
13
+ </div>
14
+ </header>
15
+ <main class="main">
16
+ <section class="section">
17
+ <div class="container">
18
+ <div class="content"><h1 id="cities" tabindex="-1">Cities</h1>
19
+ <p><a href="../README.md">← Back to README</a></p>
20
+ <p>The <code>cities</code> array contains ~270 major world cities, including every national capital. Each city has coordinates (lat/lon), country code, and population where available.</p>
21
+ <h2 id="import" tabindex="-1">Import</h2>
22
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span>
23
+ cities<span class="token punctuation">,</span>
24
+ getCitiesByCountry<span class="token punctuation">,</span>
25
+ getCapitalCity<span class="token punctuation">,</span>
26
+ getCitiesByPopulation<span class="token punctuation">,</span>
27
+ searchCities<span class="token punctuation">,</span>
28
+ <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
29
+ <span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span> City <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
30
+ </code></pre>
31
+ <h2 id="data-shape" tabindex="-1">Data shape</h2>
32
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">interface</span> <span class="token class-name">City</span> <span class="token punctuation">{</span>
33
+ name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// "Tokyo"</span>
34
+ country<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// ISO 3166-1 alpha-2, e.g. "JP"</span>
35
+ state<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// State/region name (optional), e.g. "Tokyo"</span>
36
+ population<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// Approximate city population (optional)</span>
37
+ lat<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// Latitude (−90 to 90)</span>
38
+ lon<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// Longitude (−180 to 180)</span>
39
+ capital<span class="token operator">?</span><span class="token operator">:</span> <span class="token builtin">boolean</span><span class="token punctuation">;</span> <span class="token comment">// true if this is the national capital</span>
40
+ <span class="token punctuation">}</span>
41
+ </code></pre>
42
+ <h2 id="examples" tabindex="-1">Examples</h2>
43
+ <h3 id="all-cities" tabindex="-1">All cities</h3>
44
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> cities <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
45
+
46
+ <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>cities<span class="token punctuation">.</span>length<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// ~270</span>
47
+
48
+ <span class="token comment">// All national capitals</span>
49
+ <span class="token keyword">const</span> capitals <span class="token operator">=</span> cities<span class="token punctuation">.</span><span class="token function">filter</span><span class="token punctuation">(</span>c <span class="token operator">=></span> c<span class="token punctuation">.</span>capital<span class="token punctuation">)</span><span class="token punctuation">;</span>
50
+ <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>capitals<span class="token punctuation">.</span>length<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// ~185</span>
51
+ </code></pre>
52
+ <h3 id="capital-city-of-a-country" tabindex="-1">Capital city of a country</h3>
53
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> getCapitalCity <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
54
+
55
+ <span class="token function">getCapitalCity</span><span class="token punctuation">(</span><span class="token string">"GB"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
56
+ <span class="token comment">// { name: "London", country: "GB", lat: 51.5074, lon: -0.1278, capital: true, population: 9648110 }</span>
57
+
58
+ <span class="token function">getCapitalCity</span><span class="token punctuation">(</span><span class="token string">"JP"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
59
+ <span class="token comment">// { name: "Tokyo", country: "JP", lat: 35.6762, lon: 139.6503, capital: true, population: 13960000 }</span>
60
+
61
+ <span class="token function">getCapitalCity</span><span class="token punctuation">(</span><span class="token string">"ZZ"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// undefined</span>
62
+ </code></pre>
63
+ <h3 id="cities-in-a-country" tabindex="-1">Cities in a country</h3>
64
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> getCitiesByCountry <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
65
+
66
+ <span class="token keyword">const</span> usCities <span class="token operator">=</span> <span class="token function">getCitiesByCountry</span><span class="token punctuation">(</span><span class="token string">"US"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
67
+ usCities<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>c <span class="token operator">=></span> c<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
68
+ <span class="token comment">// ["New York City", "Los Angeles", "Chicago", "Houston", "Phoenix",</span>
69
+ <span class="token comment">// "Philadelphia", "San Antonio", "San Diego", "Dallas", "Washington D.C.", ...]</span>
70
+ </code></pre>
71
+ <h3 id="top-cities-by-population" tabindex="-1">Top cities by population</h3>
72
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> getCitiesByPopulation <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
73
+
74
+ <span class="token comment">// Top 10 most populous cities</span>
75
+ <span class="token keyword">const</span> top10 <span class="token operator">=</span> <span class="token function">getCitiesByPopulation</span><span class="token punctuation">(</span><span class="token number">10</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
76
+ top10<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>c <span class="token operator">=></span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>c<span class="token punctuation">.</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> (</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>c<span class="token punctuation">.</span>country<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">)</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">)</span><span class="token punctuation">;</span>
77
+ <span class="token comment">// ["Chongqing (CN)", "Tokyo (JP)", "Delhi (IN)", "Shanghai (CN)", ...]</span>
78
+
79
+ <span class="token comment">// All cities sorted by population</span>
80
+ <span class="token keyword">const</span> all <span class="token operator">=</span> <span class="token function">getCitiesByPopulation</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
81
+ </code></pre>
82
+ <h3 id="search-cities-by-name" tabindex="-1">Search cities by name</h3>
83
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> searchCities <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
84
+
85
+ <span class="token function">searchCities</span><span class="token punctuation">(</span><span class="token string">"new"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
86
+ <span class="token comment">// [{ name: "New York City", ... }, { name: "New Delhi", ... }, ...]</span>
87
+
88
+ <span class="token function">searchCities</span><span class="token punctuation">(</span><span class="token string">"london"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
89
+ <span class="token comment">// [{ name: "London", country: "GB", ... }]</span>
90
+
91
+ <span class="token comment">// Case-insensitive</span>
92
+ <span class="token function">searchCities</span><span class="token punctuation">(</span><span class="token string">"BERLIN"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// same as searchCities("berlin")</span>
93
+ </code></pre>
94
+ <h3 id="build-a-city-autocomplete" tabindex="-1">Build a city autocomplete</h3>
95
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> searchCities<span class="token punctuation">,</span> getCountryByCode <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
96
+
97
+ <span class="token keyword">function</span> <span class="token function">cityAutocomplete</span><span class="token punctuation">(</span>input<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span> <span class="token punctuation">{</span>
98
+ <span class="token keyword">return</span> <span class="token function">searchCities</span><span class="token punctuation">(</span>input<span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span><span class="token punctuation">(</span>city<span class="token punctuation">)</span> <span class="token operator">=></span> <span class="token punctuation">{</span>
99
+ <span class="token keyword">const</span> country <span class="token operator">=</span> <span class="token function">getCountryByCode</span><span class="token punctuation">(</span>city<span class="token punctuation">.</span>country<span class="token punctuation">)</span><span class="token punctuation">;</span>
100
+ <span class="token keyword">return</span> <span class="token punctuation">{</span>
101
+ label<span class="token operator">:</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>city<span class="token punctuation">.</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">, </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>country<span class="token operator">?.</span>name <span class="token operator">??</span> city<span class="token punctuation">.</span>country<span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span>
102
+ value<span class="token operator">:</span> <span class="token punctuation">{</span> lat<span class="token operator">:</span> city<span class="token punctuation">.</span>lat<span class="token punctuation">,</span> lon<span class="token operator">:</span> city<span class="token punctuation">.</span>lon<span class="token punctuation">,</span> code<span class="token operator">:</span> city<span class="token punctuation">.</span>country <span class="token punctuation">}</span><span class="token punctuation">,</span>
103
+ <span class="token punctuation">}</span><span class="token punctuation">;</span>
104
+ <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
105
+ <span class="token punctuation">}</span>
106
+
107
+ <span class="token function">cityAutocomplete</span><span class="token punctuation">(</span><span class="token string">"par"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
108
+ <span class="token comment">// [{ label: "Paris, France", value: { lat: 48.8566, lon: 2.3522, code: "FR" } }]</span>
109
+ </code></pre>
110
+ <h3 id="calculate-distance-from-capital-to-capital" tabindex="-1">Calculate distance from capital to capital</h3>
111
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> getCapitalCity <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
112
+ <span class="token keyword">import</span> <span class="token punctuation">{</span> haversineDistance <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
113
+
114
+ <span class="token keyword">const</span> amsterdam <span class="token operator">=</span> <span class="token function">getCapitalCity</span><span class="token punctuation">(</span><span class="token string">"NL"</span><span class="token punctuation">)</span><span class="token operator">!</span><span class="token punctuation">;</span>
115
+ <span class="token keyword">const</span> berlin <span class="token operator">=</span> <span class="token function">getCapitalCity</span><span class="token punctuation">(</span><span class="token string">"DE"</span><span class="token punctuation">)</span><span class="token operator">!</span><span class="token punctuation">;</span>
116
+
117
+ <span class="token keyword">const</span> km <span class="token operator">=</span> <span class="token function">haversineDistance</span><span class="token punctuation">(</span>amsterdam<span class="token punctuation">.</span>lat<span class="token punctuation">,</span> amsterdam<span class="token punctuation">.</span>lon<span class="token punctuation">,</span> berlin<span class="token punctuation">.</span>lat<span class="token punctuation">,</span> berlin<span class="token punctuation">.</span>lon<span class="token punctuation">)</span><span class="token punctuation">;</span>
118
+ <span class="token comment">// ~577 km</span>
119
+ </code></pre>
120
+ <h2 id="coverage" tabindex="-1">Coverage</h2>
121
+ <p>Cities were chosen to cover:</p>
122
+ <ul>
123
+ <li>All national capitals (~185 cities)</li>
124
+ <li>The largest metropolitan areas on each continent</li>
125
+ <li>Major cultural, economic, and tourist destinations</li>
126
+ </ul>
127
+ <p>Cities from every continent are represented including remote capitals like Nuku’alofa (Tonga), Funafuti (Tuvalu), and Majuro (Marshall Islands).</p>
128
+ <h2 id="related" tabindex="-1">Related</h2>
129
+ <ul>
130
+ <li><a href="countries.md">Countries</a> — <code>country</code> field uses alpha-2 codes from <code>countries</code></li>
131
+ <li><a href="geography.md">Geography</a> — <code>haversineDistance()</code> works with the <code>lat</code>/<code>lon</code> fields</li>
132
+ <li><a href="states.md">States</a> — <code>state</code> field aligns with entries in <code>states</code></li>
133
+ </ul>
134
+
135
+ </div>
136
+ </div>
137
+ </section>
138
+ </main>
139
+ </div>
140
+ <footer class="footer">
141
+ <div class="footer__container">
142
+ <div class="footer__controls">
143
+ <div class="footer__control"><span class="footer__label">Theme</span>
144
+ <button class="color-mode-toggle" type="button" data-color-mode-toggle aria-label="Toggle color mode"><span class="color-mode-toggle__value"></span></button>
145
+ </div>
146
+ </div>
147
+ </div>
148
+ </footer>
149
+ </body>
150
+ <script>const isDarkMode = window.matchMedia("prefers-color-scheme: dark").matches;
151
+ let localMode = isDarkMode ? "dark" : "light";
152
+
153
+ const updateColorModeToggle = () => {
154
+ const toggle = document.querySelector("[data-color-mode-toggle]");
155
+ if (!toggle) return;
156
+
157
+ const value = toggle.querySelector(".color-mode-toggle__value");
158
+ if (!value) return;
159
+
160
+ value.textContent = localMode === "dark" ? "Dark" : "Light";
161
+ };
162
+
163
+ const initColorMode = () => {
164
+ localMode = localStorage.getItem("colorMode");
165
+ setCurrentMode(localMode ? localMode : isDarkMode ? "dark" : "light");
166
+ };
167
+
168
+ const setCurrentMode = (mode) => {
169
+ localMode = mode;
170
+ localStorage.setItem("colorMode", localMode);
171
+ document.body.setAttribute("color-mode", mode);
172
+ updateColorModeToggle();
173
+ };
174
+
175
+ const switchMode = () => {
176
+ if (localMode == "dark") setCurrentMode("light");
177
+ else setCurrentMode("dark");
178
+ };
179
+
180
+ const bindColorModeToggle = () => {
181
+ const toggle = document.querySelector("[data-color-mode-toggle]");
182
+ if (!toggle) return;
183
+
184
+ toggle.addEventListener("click", () => {
185
+ switchMode();
186
+ });
187
+ };
188
+
189
+ initColorMode();
190
+ bindColorModeToggle();
191
+
192
+ </script>
193
+ </html>
@@ -0,0 +1,306 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta name="viewport" content="width=device-width, initial-scale=1">
5
+ <meta name="type" content="content">
6
+ <title>Continents &amp;amp; Currencies</title>
7
+ <link href="/style/app.css" rel="stylesheet" type="text/css">
8
+ </head>
9
+ <body class="page--continents-currencies">
10
+ <div class="page-container">
11
+ <header class="header">
12
+ <div class="header__container">
13
+ </div>
14
+ </header>
15
+ <main class="main">
16
+ <section class="section">
17
+ <div class="container">
18
+ <div class="content"><h1 id="continents-%26-currencies" tabindex="-1">Continents &amp; Currencies</h1>
19
+ <p><a href="../README.md">← Back to README</a></p>
20
+ <hr>
21
+ <h2 id="continents" tabindex="-1">Continents</h2>
22
+ <h3 id="import" tabindex="-1">Import</h3>
23
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> continents<span class="token punctuation">,</span> getContinentByCode <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
24
+ <span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span> Continent<span class="token punctuation">,</span> ContinentName <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
25
+ </code></pre>
26
+ <h3 id="data-shape" tabindex="-1">Data shape</h3>
27
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">interface</span> <span class="token class-name">Continent</span> <span class="token punctuation">{</span>
28
+ name<span class="token operator">:</span> ContinentName<span class="token punctuation">;</span> <span class="token comment">// "Europe"</span>
29
+ code<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// "EU" — two-letter continent code</span>
30
+ population<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// Approximate population</span>
31
+ area<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// Area in km²</span>
32
+ countries<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">;</span> <span class="token comment">// Number of sovereign states</span>
33
+ <span class="token punctuation">}</span>
34
+
35
+ <span class="token keyword">type</span> <span class="token class-name">ContinentName</span> <span class="token operator">=</span>
36
+ <span class="token operator">|</span> <span class="token string">"Africa"</span>
37
+ <span class="token operator">|</span> <span class="token string">"Antarctica"</span>
38
+ <span class="token operator">|</span> <span class="token string">"Asia"</span>
39
+ <span class="token operator">|</span> <span class="token string">"Europe"</span>
40
+ <span class="token operator">|</span> <span class="token string">"North America"</span>
41
+ <span class="token operator">|</span> <span class="token string">"Oceania"</span>
42
+ <span class="token operator">|</span> <span class="token string">"South America"</span><span class="token punctuation">;</span>
43
+ </code></pre>
44
+ <h3 id="continent-codes" tabindex="-1">Continent codes</h3>
45
+ <table>
46
+ <thead>
47
+ <tr>
48
+ <th>Code</th>
49
+ <th>Name</th>
50
+ <th>Countries</th>
51
+ <th>Area (km²)</th>
52
+ </tr>
53
+ </thead>
54
+ <tbody>
55
+ <tr>
56
+ <td><code>AF</code></td>
57
+ <td>Africa</td>
58
+ <td>54</td>
59
+ <td>30,370,000</td>
60
+ </tr>
61
+ <tr>
62
+ <td><code>AN</code></td>
63
+ <td>Antarctica</td>
64
+ <td>0</td>
65
+ <td>14,200,000</td>
66
+ </tr>
67
+ <tr>
68
+ <td><code>AS</code></td>
69
+ <td>Asia</td>
70
+ <td>49</td>
71
+ <td>44,579,000</td>
72
+ </tr>
73
+ <tr>
74
+ <td><code>EU</code></td>
75
+ <td>Europe</td>
76
+ <td>44</td>
77
+ <td>10,530,000</td>
78
+ </tr>
79
+ <tr>
80
+ <td><code>NA</code></td>
81
+ <td>North America</td>
82
+ <td>23</td>
83
+ <td>24,709,000</td>
84
+ </tr>
85
+ <tr>
86
+ <td><code>OC</code></td>
87
+ <td>Oceania</td>
88
+ <td>14</td>
89
+ <td>8,526,000</td>
90
+ </tr>
91
+ <tr>
92
+ <td><code>SA</code></td>
93
+ <td>South America</td>
94
+ <td>12</td>
95
+ <td>17,840,000</td>
96
+ </tr>
97
+ </tbody>
98
+ </table>
99
+ <h3 id="examples" tabindex="-1">Examples</h3>
100
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> continents<span class="token punctuation">,</span> getContinentByCode <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
101
+
102
+ <span class="token comment">// All 7 continents</span>
103
+ <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>continents<span class="token punctuation">.</span>length<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// 7</span>
104
+
105
+ <span class="token comment">// Look up by two-letter code</span>
106
+ <span class="token keyword">const</span> europe <span class="token operator">=</span> <span class="token function">getContinentByCode</span><span class="token punctuation">(</span><span class="token string">"EU"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
107
+ <span class="token comment">// { name: "Europe", code: "EU", population: 748958360, area: 10530000, countries: 44 }</span>
108
+
109
+ <span class="token comment">// Case-insensitive</span>
110
+ <span class="token function">getContinentByCode</span><span class="token punctuation">(</span><span class="token string">"eu"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// same as getContinentByCode("EU")</span>
111
+
112
+ <span class="token comment">// Largest continents by area</span>
113
+ <span class="token keyword">const</span> byArea <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token operator">...</span>continents<span class="token punctuation">]</span><span class="token punctuation">.</span><span class="token function">sort</span><span class="token punctuation">(</span><span class="token punctuation">(</span>a<span class="token punctuation">,</span> b<span class="token punctuation">)</span> <span class="token operator">=></span> b<span class="token punctuation">.</span>area <span class="token operator">-</span> a<span class="token punctuation">.</span>area<span class="token punctuation">)</span><span class="token punctuation">;</span>
114
+ byArea<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>c <span class="token operator">=></span> c<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
115
+ <span class="token comment">// ["Asia", "Africa", "North America", "South America", "Antarctica", "Europe", "Oceania"]</span>
116
+ </code></pre>
117
+ <h3 id="use-with-countries" tabindex="-1">Use with countries</h3>
118
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> continents<span class="token punctuation">,</span> getCountriesByContinent <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
119
+
120
+ <span class="token comment">// Add country list to each continent</span>
121
+ <span class="token keyword">const</span> enriched <span class="token operator">=</span> continents<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>continent <span class="token operator">=></span> <span class="token punctuation">(</span><span class="token punctuation">{</span>
122
+ <span class="token operator">...</span>continent<span class="token punctuation">,</span>
123
+ countryList<span class="token operator">:</span> <span class="token function">getCountriesByContinent</span><span class="token punctuation">(</span>continent<span class="token punctuation">.</span>name<span class="token punctuation">)</span><span class="token punctuation">,</span>
124
+ <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
125
+ </code></pre>
126
+ <hr>
127
+ <h2 id="currencies" tabindex="-1">Currencies</h2>
128
+ <h3 id="import-1" tabindex="-1">Import</h3>
129
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span>
130
+ currencies<span class="token punctuation">,</span>
131
+ getCurrencyByCode<span class="token punctuation">,</span>
132
+ getCurrencyByCountry<span class="token punctuation">,</span>
133
+ <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
134
+ <span class="token keyword">import</span> <span class="token keyword">type</span> <span class="token punctuation">{</span> Currency <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
135
+ </code></pre>
136
+ <h3 id="data-shape-1" tabindex="-1">Data shape</h3>
137
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">interface</span> <span class="token class-name">Currency</span> <span class="token punctuation">{</span>
138
+ code<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// ISO 4217 code, e.g. "EUR"</span>
139
+ name<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// "Euro"</span>
140
+ <span class="token builtin">symbol</span><span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">;</span> <span class="token comment">// "€"</span>
141
+ countries<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">;</span> <span class="token comment">// Alpha-2 codes of countries using this currency</span>
142
+ <span class="token punctuation">}</span>
143
+ </code></pre>
144
+ <h3 id="examples-1" tabindex="-1">Examples</h3>
145
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> currencies<span class="token punctuation">,</span> getCurrencyByCode<span class="token punctuation">,</span> getCurrencyByCountry <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
146
+
147
+ <span class="token comment">// All ~150 currencies</span>
148
+ <span class="token builtin">console</span><span class="token punctuation">.</span><span class="token function">log</span><span class="token punctuation">(</span>currencies<span class="token punctuation">.</span>length<span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// ~150</span>
149
+
150
+ <span class="token comment">// Look up by ISO 4217 code</span>
151
+ <span class="token function">getCurrencyByCode</span><span class="token punctuation">(</span><span class="token string">"USD"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
152
+ <span class="token comment">// { code: "USD", name: "US Dollar", symbol: "$", countries: ["US"] }</span>
153
+
154
+ <span class="token function">getCurrencyByCode</span><span class="token punctuation">(</span><span class="token string">"EUR"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
155
+ <span class="token comment">// { code: "EUR", name: "Euro", symbol: "€", countries: ["DE", "FR", "IT", "ES", ...] }</span>
156
+
157
+ <span class="token comment">// Case-insensitive</span>
158
+ <span class="token function">getCurrencyByCode</span><span class="token punctuation">(</span><span class="token string">"usd"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// same as "USD"</span>
159
+
160
+ <span class="token comment">// Look up by country</span>
161
+ <span class="token function">getCurrencyByCountry</span><span class="token punctuation">(</span><span class="token string">"JP"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
162
+ <span class="token comment">// { code: "JPY", name: "Japanese Yen", symbol: "¥", countries: ["JP"] }</span>
163
+
164
+ <span class="token function">getCurrencyByCountry</span><span class="token punctuation">(</span><span class="token string">"DE"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
165
+ <span class="token comment">// { code: "EUR", name: "Euro", symbol: "€", countries: ["DE", "FR", ...] }</span>
166
+ </code></pre>
167
+ <h3 id="list-all-countries-using-the-euro" tabindex="-1">List all countries using the Euro</h3>
168
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> getCurrencyByCode<span class="token punctuation">,</span> getCountryByCode <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
169
+
170
+ <span class="token keyword">const</span> euro <span class="token operator">=</span> <span class="token function">getCurrencyByCode</span><span class="token punctuation">(</span><span class="token string">"EUR"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
171
+ <span class="token keyword">const</span> eurozone <span class="token operator">=</span> euro<span class="token operator">?.</span>countries<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>code <span class="token operator">=></span> <span class="token function">getCountryByCode</span><span class="token punctuation">(</span>code<span class="token punctuation">)</span><span class="token operator">?.</span>name<span class="token punctuation">)</span><span class="token punctuation">;</span>
172
+ <span class="token comment">// ["Andorra", "Austria", "Belgium", "Cyprus", "Estonia", "Finland", "France", ...]</span>
173
+ </code></pre>
174
+ <h3 id="build-a-currency-selector" tabindex="-1">Build a currency selector</h3>
175
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> currencies <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
176
+
177
+ <span class="token keyword">const</span> currencyOptions <span class="token operator">=</span> currencies<span class="token punctuation">.</span><span class="token function">map</span><span class="token punctuation">(</span>c <span class="token operator">=></span> <span class="token punctuation">(</span><span class="token punctuation">{</span>
178
+ value<span class="token operator">:</span> c<span class="token punctuation">.</span>code<span class="token punctuation">,</span>
179
+ label<span class="token operator">:</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>c<span class="token punctuation">.</span><span class="token builtin">symbol</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> </span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>c<span class="token punctuation">.</span>name<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string"> (</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>c<span class="token punctuation">.</span>code<span class="token interpolation-punctuation punctuation">}</span></span><span class="token string">)</span><span class="token template-punctuation string">`</span></span><span class="token punctuation">,</span>
180
+ <span class="token punctuation">}</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span>
181
+ <span class="token comment">// [{ value: "AED", label: "د.إ United Arab Emirates Dirham (AED)" }, ...]</span>
182
+ </code></pre>
183
+ <h3 id="format-a-price-with-the-right-symbol" tabindex="-1">Format a price with the right symbol</h3>
184
+ <pre class="language-ts"><code class="language-ts"><span class="token keyword">import</span> <span class="token punctuation">{</span> getCurrencyByCountry <span class="token punctuation">}</span> <span class="token keyword">from</span> <span class="token string">"arev"</span><span class="token punctuation">;</span>
185
+
186
+ <span class="token keyword">function</span> <span class="token function">formatPrice</span><span class="token punctuation">(</span>amount<span class="token operator">:</span> <span class="token builtin">number</span><span class="token punctuation">,</span> countryCode<span class="token operator">:</span> <span class="token builtin">string</span><span class="token punctuation">)</span><span class="token operator">:</span> <span class="token builtin">string</span> <span class="token punctuation">{</span>
187
+ <span class="token keyword">const</span> currency <span class="token operator">=</span> <span class="token function">getCurrencyByCountry</span><span class="token punctuation">(</span>countryCode<span class="token punctuation">)</span><span class="token punctuation">;</span>
188
+ <span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>currency<span class="token punctuation">)</span> <span class="token keyword">return</span> <span class="token function">String</span><span class="token punctuation">(</span>amount<span class="token punctuation">)</span><span class="token punctuation">;</span>
189
+ <span class="token keyword">return</span> <span class="token template-string"><span class="token template-punctuation string">`</span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>currency<span class="token punctuation">.</span><span class="token builtin">symbol</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token interpolation"><span class="token interpolation-punctuation punctuation">${</span>amount<span class="token punctuation">.</span><span class="token function">toFixed</span><span class="token punctuation">(</span><span class="token number">2</span><span class="token punctuation">)</span><span class="token interpolation-punctuation punctuation">}</span></span><span class="token template-punctuation string">`</span></span><span class="token punctuation">;</span>
190
+ <span class="token punctuation">}</span>
191
+
192
+ <span class="token function">formatPrice</span><span class="token punctuation">(</span><span class="token number">42.5</span><span class="token punctuation">,</span> <span class="token string">"US"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// "$42.50"</span>
193
+ <span class="token function">formatPrice</span><span class="token punctuation">(</span><span class="token number">42.5</span><span class="token punctuation">,</span> <span class="token string">"JP"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// "¥42.50"</span>
194
+ <span class="token function">formatPrice</span><span class="token punctuation">(</span><span class="token number">42.5</span><span class="token punctuation">,</span> <span class="token string">"DE"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">// "€42.50"</span>
195
+ </code></pre>
196
+ <h2 id="related" tabindex="-1">Related</h2>
197
+ <ul>
198
+ <li><a href="countries.md">Countries</a> — <code>country.continent</code> is a <code>ContinentName</code>; <code>country.currency</code> is an ISO 4217 code</li>
199
+ <li><a href="geography.md">Geography</a> — <code>countryGeography</code> is keyed by the same alpha-2 codes used in <code>currency.countries[]</code></li>
200
+ </ul>
201
+
202
+ </div>
203
+ </div>
204
+ </section>
205
+ </main>
206
+ </div>
207
+ <footer class="footer">
208
+ <div class="footer__container">
209
+ <div class="footer__controls">
210
+ <div class="footer__control"><span class="footer__label">Theme</span>
211
+ <button class="color-mode-toggle" type="button" data-color-mode-toggle aria-label="Toggle color mode"><span class="color-mode-toggle__value"></span></button>
212
+ </div>
213
+ </div>
214
+ </div>
215
+ </footer>
216
+ </body>
217
+ <script>const isDarkMode = window.matchMedia("prefers-color-scheme: dark").matches;
218
+ let localMode = isDarkMode ? "dark" : "light";
219
+
220
+ const updateColorModeToggle = () => {
221
+ const toggle = document.querySelector("[data-color-mode-toggle]");
222
+ if (!toggle) return;
223
+
224
+ const value = toggle.querySelector(".color-mode-toggle__value");
225
+ if (!value) return;
226
+
227
+ value.textContent = localMode === "dark" ? "Dark" : "Light";
228
+ };
229
+
230
+ const initColorMode = () => {
231
+ localMode = localStorage.getItem("colorMode");
232
+ setCurrentMode(localMode ? localMode : isDarkMode ? "dark" : "light");
233
+ };
234
+
235
+ const setCurrentMode = (mode) => {
236
+ localMode = mode;
237
+ localStorage.setItem("colorMode", localMode);
238
+ document.body.setAttribute("color-mode", mode);
239
+ updateColorModeToggle();
240
+ };
241
+
242
+ const switchMode = () => {
243
+ if (localMode == "dark") setCurrentMode("light");
244
+ else setCurrentMode("dark");
245
+ };
246
+
247
+ const bindColorModeToggle = () => {
248
+ const toggle = document.querySelector("[data-color-mode-toggle]");
249
+ if (!toggle) return;
250
+
251
+ toggle.addEventListener("click", () => {
252
+ switchMode();
253
+ });
254
+ };
255
+
256
+ initColorMode();
257
+ bindColorModeToggle();
258
+ const tables = document.querySelectorAll("table");
259
+ let initTableWrap = false;
260
+
261
+ const wrapTables = (tables) => {
262
+ tables &&
263
+ tables.forEach((table) => {
264
+ if (table.getBoundingClientRect().width > window.screen.width) {
265
+ table.classList.add("wrap");
266
+ initTableWrap = true;
267
+ }
268
+ });
269
+ };
270
+
271
+ const labelTables = (tables) => {
272
+ tables &&
273
+ tables.forEach((table) => {
274
+ // Set all headers as attributes to td's
275
+ const headerElements = table.querySelectorAll("thead th");
276
+ const bodyElementRows = table.querySelectorAll("tbody tr");
277
+ const heads = [];
278
+
279
+ if (headerElements && bodyElementRows) {
280
+ // Get TH heads
281
+ headerElements.forEach((th) => {
282
+ heads.push(th.textContent);
283
+ });
284
+ }
285
+
286
+ if (heads.length) {
287
+ bodyElementRows.forEach((tr) => {
288
+ const tds = tr.querySelectorAll("td");
289
+
290
+ tds.forEach((td, i) => {
291
+ td.setAttribute("data-label", heads[i]);
292
+ });
293
+ });
294
+ }
295
+ });
296
+ };
297
+
298
+ wrapTables(tables);
299
+ labelTables(tables);
300
+
301
+ window.addEventListener("resize", () => {
302
+ if (!initTableWrap) wrapTables(tables);
303
+ });
304
+
305
+ </script>
306
+ </html>