utilitify-core 1.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 (147) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +338 -0
  3. package/dist/async.cjs +25 -0
  4. package/dist/async.cjs.map +1 -0
  5. package/dist/async.d.cts +104 -0
  6. package/dist/async.d.ts +104 -0
  7. package/dist/async.js +4 -0
  8. package/dist/async.js.map +1 -0
  9. package/dist/chunk-2ICNRTSN.cjs +346 -0
  10. package/dist/chunk-2ICNRTSN.cjs.map +1 -0
  11. package/dist/chunk-3DPF72DY.js +170 -0
  12. package/dist/chunk-3DPF72DY.js.map +1 -0
  13. package/dist/chunk-4CV4JOE5.js +24 -0
  14. package/dist/chunk-4CV4JOE5.js.map +1 -0
  15. package/dist/chunk-4SLYNSLH.cjs +783 -0
  16. package/dist/chunk-4SLYNSLH.cjs.map +1 -0
  17. package/dist/chunk-5WP7DWCG.js +1285 -0
  18. package/dist/chunk-5WP7DWCG.js.map +1 -0
  19. package/dist/chunk-BMQ6YPKV.js +876 -0
  20. package/dist/chunk-BMQ6YPKV.js.map +1 -0
  21. package/dist/chunk-BZCMWUKS.cjs +479 -0
  22. package/dist/chunk-BZCMWUKS.cjs.map +1 -0
  23. package/dist/chunk-C5R744DY.cjs +173 -0
  24. package/dist/chunk-C5R744DY.cjs.map +1 -0
  25. package/dist/chunk-C75J62CV.cjs +913 -0
  26. package/dist/chunk-C75J62CV.cjs.map +1 -0
  27. package/dist/chunk-CZLDE2OZ.cjs +28 -0
  28. package/dist/chunk-CZLDE2OZ.cjs.map +1 -0
  29. package/dist/chunk-DSMB6AF6.cjs +193 -0
  30. package/dist/chunk-DSMB6AF6.cjs.map +1 -0
  31. package/dist/chunk-ETWGPOPY.js +426 -0
  32. package/dist/chunk-ETWGPOPY.js.map +1 -0
  33. package/dist/chunk-FQBPVN63.cjs +403 -0
  34. package/dist/chunk-FQBPVN63.cjs.map +1 -0
  35. package/dist/chunk-G4GYQGTW.cjs +178 -0
  36. package/dist/chunk-G4GYQGTW.cjs.map +1 -0
  37. package/dist/chunk-GFDMZDMI.js +486 -0
  38. package/dist/chunk-GFDMZDMI.js.map +1 -0
  39. package/dist/chunk-HOTOYIPB.js +171 -0
  40. package/dist/chunk-HOTOYIPB.js.map +1 -0
  41. package/dist/chunk-HYADH4ZX.js +176 -0
  42. package/dist/chunk-HYADH4ZX.js.map +1 -0
  43. package/dist/chunk-JBN7C5WE.js +255 -0
  44. package/dist/chunk-JBN7C5WE.js.map +1 -0
  45. package/dist/chunk-JNCTPFTD.cjs +25 -0
  46. package/dist/chunk-JNCTPFTD.cjs.map +1 -0
  47. package/dist/chunk-N3BH3BV7.js +21 -0
  48. package/dist/chunk-N3BH3BV7.js.map +1 -0
  49. package/dist/chunk-NFPGAVRQ.js +749 -0
  50. package/dist/chunk-NFPGAVRQ.js.map +1 -0
  51. package/dist/chunk-OFFRGRBN.cjs +1332 -0
  52. package/dist/chunk-OFFRGRBN.cjs.map +1 -0
  53. package/dist/chunk-OZLKYIZL.cjs +490 -0
  54. package/dist/chunk-OZLKYIZL.cjs.map +1 -0
  55. package/dist/chunk-P3NUK46X.js +145 -0
  56. package/dist/chunk-P3NUK46X.js.map +1 -0
  57. package/dist/chunk-P7P2B7ZI.cjs +429 -0
  58. package/dist/chunk-P7P2B7ZI.cjs.map +1 -0
  59. package/dist/chunk-PB6SKSJN.cjs +150 -0
  60. package/dist/chunk-PB6SKSJN.cjs.map +1 -0
  61. package/dist/chunk-R3IXCJR7.js +378 -0
  62. package/dist/chunk-R3IXCJR7.js.map +1 -0
  63. package/dist/chunk-SD6P3WEJ.js +324 -0
  64. package/dist/chunk-SD6P3WEJ.js.map +1 -0
  65. package/dist/chunk-YSCHP26P.js +451 -0
  66. package/dist/chunk-YSCHP26P.js.map +1 -0
  67. package/dist/chunk-ZLMPRPCY.cjs +274 -0
  68. package/dist/chunk-ZLMPRPCY.cjs.map +1 -0
  69. package/dist/common-CBDYNJeh.d.cts +48 -0
  70. package/dist/common-CBDYNJeh.d.ts +48 -0
  71. package/dist/constants.cjs +42 -0
  72. package/dist/constants.cjs.map +1 -0
  73. package/dist/constants.d.cts +60 -0
  74. package/dist/constants.d.ts +60 -0
  75. package/dist/constants.js +5 -0
  76. package/dist/constants.js.map +1 -0
  77. package/dist/country/index.cjs +154 -0
  78. package/dist/country/index.cjs.map +1 -0
  79. package/dist/country/index.d.cts +1 -0
  80. package/dist/country/index.d.ts +1 -0
  81. package/dist/country/index.js +5 -0
  82. package/dist/country/index.js.map +1 -0
  83. package/dist/date/index.cjs +117 -0
  84. package/dist/date/index.cjs.map +1 -0
  85. package/dist/date/index.d.cts +283 -0
  86. package/dist/date/index.d.ts +283 -0
  87. package/dist/date/index.js +4 -0
  88. package/dist/date/index.js.map +1 -0
  89. package/dist/environment/index.cjs +73 -0
  90. package/dist/environment/index.cjs.map +1 -0
  91. package/dist/environment/index.d.cts +127 -0
  92. package/dist/environment/index.d.ts +127 -0
  93. package/dist/environment/index.js +4 -0
  94. package/dist/environment/index.js.map +1 -0
  95. package/dist/form/index.cjs +81 -0
  96. package/dist/form/index.cjs.map +1 -0
  97. package/dist/form/index.d.cts +227 -0
  98. package/dist/form/index.d.ts +227 -0
  99. package/dist/form/index.js +4 -0
  100. package/dist/form/index.js.map +1 -0
  101. package/dist/i18n.cjs +37 -0
  102. package/dist/i18n.cjs.map +1 -0
  103. package/dist/i18n.d.cts +102 -0
  104. package/dist/i18n.d.ts +102 -0
  105. package/dist/i18n.js +4 -0
  106. package/dist/i18n.js.map +1 -0
  107. package/dist/index-BXBmBHyL.d.ts +718 -0
  108. package/dist/index-BYsUCP3u.d.cts +718 -0
  109. package/dist/index-Cl26FrAZ.d.cts +362 -0
  110. package/dist/index-Cl26FrAZ.d.ts +362 -0
  111. package/dist/index.cjs +1265 -0
  112. package/dist/index.cjs.map +1 -0
  113. package/dist/index.d.cts +205 -0
  114. package/dist/index.d.ts +205 -0
  115. package/dist/index.js +277 -0
  116. package/dist/index.js.map +1 -0
  117. package/dist/schema.cjs +13 -0
  118. package/dist/schema.cjs.map +1 -0
  119. package/dist/schema.d.cts +84 -0
  120. package/dist/schema.d.ts +84 -0
  121. package/dist/schema.js +4 -0
  122. package/dist/schema.js.map +1 -0
  123. package/dist/security/index.cjs +94 -0
  124. package/dist/security/index.cjs.map +1 -0
  125. package/dist/security/index.d.cts +216 -0
  126. package/dist/security/index.d.ts +216 -0
  127. package/dist/security/index.js +5 -0
  128. package/dist/security/index.js.map +1 -0
  129. package/dist/string/index.cjs +153 -0
  130. package/dist/string/index.cjs.map +1 -0
  131. package/dist/string/index.d.cts +471 -0
  132. package/dist/string/index.d.ts +471 -0
  133. package/dist/string/index.js +4 -0
  134. package/dist/string/index.js.map +1 -0
  135. package/dist/transform/index.cjs +105 -0
  136. package/dist/transform/index.cjs.map +1 -0
  137. package/dist/transform/index.d.cts +271 -0
  138. package/dist/transform/index.d.ts +271 -0
  139. package/dist/transform/index.js +4 -0
  140. package/dist/transform/index.js.map +1 -0
  141. package/dist/validators/index.cjs +195 -0
  142. package/dist/validators/index.cjs.map +1 -0
  143. package/dist/validators/index.d.cts +2 -0
  144. package/dist/validators/index.d.ts +2 -0
  145. package/dist/validators/index.js +6 -0
  146. package/dist/validators/index.js.map +1 -0
  147. package/package.json +229 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/country/data/countries.ts","../src/country/codes.ts","../src/country/data/timezones.ts","../src/country/timezone.ts","../src/country/data/currencies.ts","../src/country/currency.ts","../src/country/flags.ts","../src/country/dialCode.ts"],"names":[],"mappings":"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","file":"chunk-NFPGAVRQ.js","sourcesContent":["import type { Country } from '../../types';\r\n\r\n/**\r\n * Comprehensive country data - ISO 3166-1\r\n * Includes all major countries with complete metadata\r\n */\r\nexport const COUNTRIES: Country[] = [\r\n // North America (3)\r\n { name: 'United States', officialName: 'United States of America', alpha2: 'US', alpha3: 'USA', numeric: '840', continent: 'North America', capital: 'Washington, D.C.', languages: ['en'], currency: 'USD', dialCode: '+1', flag: '๐Ÿ‡บ๐Ÿ‡ธ' },\r\n { name: 'Canada', alpha2: 'CA', alpha3: 'CAN', numeric: '124', continent: 'North America', capital: 'Ottawa', languages: ['en', 'fr'], currency: 'CAD', dialCode: '+1', flag: '๐Ÿ‡จ๐Ÿ‡ฆ' },\r\n { name: 'Mexico', officialName: 'United Mexican States', alpha2: 'MX', alpha3: 'MEX', numeric: '484', continent: 'North America', capital: 'Mexico City', languages: ['es'], currency: 'MXN', dialCode: '+52', flag: '๐Ÿ‡ฒ๐Ÿ‡ฝ' },\r\n\r\n // Central America (7)\r\n { name: 'Guatemala', alpha2: 'GT', alpha3: 'GTM', numeric: '320', continent: 'North America', capital: 'Guatemala City', languages: ['es'], currency: 'GTQ', dialCode: '+502', flag: '๐Ÿ‡ฌ๐Ÿ‡น' },\r\n { name: 'Honduras', alpha2: 'HN', alpha3: 'HND', numeric: '340', continent: 'North America', capital: 'Tegucigalpa', languages: ['es'], currency: 'HNL', dialCode: '+504', flag: '๐Ÿ‡ญ๐Ÿ‡ณ' },\r\n { name: 'El Salvador', alpha2: 'SV', alpha3: 'SLV', numeric: '222', continent: 'North America', capital: 'San Salvador', languages: ['es'], currency: 'USD', dialCode: '+503', flag: '๐Ÿ‡ธ๐Ÿ‡ป' },\r\n { name: 'Nicaragua', alpha2: 'NI', alpha3: 'NIC', numeric: '558', continent: 'North America', capital: 'Managua', languages: ['es'], currency: 'NIO', dialCode: '+505', flag: '๐Ÿ‡ณ๐Ÿ‡ฎ' },\r\n { name: 'Costa Rica', alpha2: 'CR', alpha3: 'CRI', numeric: '188', continent: 'North America', capital: 'San Josรฉ', languages: ['es'], currency: 'CRC', dialCode: '+506', flag: '๐Ÿ‡จ๐Ÿ‡ท' },\r\n { name: 'Panama', alpha2: 'PA', alpha3: 'PAN', numeric: '591', continent: 'North America', capital: 'Panama City', languages: ['es'], currency: 'PAB', dialCode: '+507', flag: '๐Ÿ‡ต๐Ÿ‡ฆ' },\r\n { name: 'Belize', alpha2: 'BZ', alpha3: 'BLZ', numeric: '084', continent: 'North America', capital: 'Belmopan', languages: ['en'], currency: 'BZD', dialCode: '+501', flag: '๐Ÿ‡ง๐Ÿ‡ฟ' },\r\n\r\n // Caribbean (15)\r\n { name: 'Jamaica', alpha2: 'JM', alpha3: 'JAM', numeric: '388', continent: 'North America', capital: 'Kingston', languages: ['en'], currency: 'JMD', dialCode: '+1', flag: '๐Ÿ‡ฏ๐Ÿ‡ฒ' },\r\n { name: 'Cuba', alpha2: 'CU', alpha3: 'CUB', numeric: '192', continent: 'North America', capital: 'Havana', languages: ['es'], currency: 'CUP', dialCode: '+53', flag: '๐Ÿ‡จ๐Ÿ‡บ' },\r\n { name: 'Haiti', alpha2: 'HT', alpha3: 'HTI', numeric: '332', continent: 'North America', capital: 'Port-au-Prince', languages: ['fr', 'ht'], currency: 'HTG', dialCode: '+509', flag: '๐Ÿ‡ญ๐Ÿ‡น' },\r\n { name: 'Dominican Republic', alpha2: 'DO', alpha3: 'DOM', numeric: '214', continent: 'North America', capital: 'Santo Domingo', languages: ['es'], currency: 'DOP', dialCode: '+1', flag: '๐Ÿ‡ฉ๐Ÿ‡ด' },\r\n { name: 'Puerto Rico', alpha2: 'PR', alpha3: 'PRI', numeric: '630', continent: 'North America', capital: 'San Juan', languages: ['es', 'en'], currency: 'USD', dialCode: '+1', flag: '๐Ÿ‡ต๐Ÿ‡ท' },\r\n { name: 'Trinidad and Tobago', alpha2: 'TT', alpha3: 'TTO', numeric: '780', continent: 'North America', capital: 'Port of Spain', languages: ['en'], currency: 'TTD', dialCode: '+1', flag: '๐Ÿ‡น๐Ÿ‡น' },\r\n { name: 'Bahamas', alpha2: 'BS', alpha3: 'BHS', numeric: '044', continent: 'North America', capital: 'Nassau', languages: ['en'], currency: 'BSD', dialCode: '+1', flag: '๐Ÿ‡ง๐Ÿ‡ธ' },\r\n { name: 'Barbados', alpha2: 'BB', alpha3: 'BRB', numeric: '052', continent: 'North America', capital: 'Bridgetown', languages: ['en'], currency: 'BBD', dialCode: '+1', flag: '๐Ÿ‡ง๐Ÿ‡ง' },\r\n\r\n // Europe (35)\r\n { name: 'United Kingdom', officialName: 'United Kingdom of Great Britain and Northern Ireland', alpha2: 'GB', alpha3: 'GBR', numeric: '826', continent: 'Europe', capital: 'London', languages: ['en'], currency: 'GBP', dialCode: '+44', flag: '๐Ÿ‡ฌ๐Ÿ‡ง' },\r\n { name: 'Germany', officialName: 'Federal Republic of Germany', alpha2: 'DE', alpha3: 'DEU', numeric: '276', continent: 'Europe', capital: 'Berlin', languages: ['de'], currency: 'EUR', dialCode: '+49', flag: '๐Ÿ‡ฉ๐Ÿ‡ช' },\r\n { name: 'France', officialName: 'French Republic', alpha2: 'FR', alpha3: 'FRA', numeric: '250', continent: 'Europe', capital: 'Paris', languages: ['fr'], currency: 'EUR', dialCode: '+33', flag: '๐Ÿ‡ซ๐Ÿ‡ท' },\r\n { name: 'Italy', officialName: 'Italian Republic', alpha2: 'IT', alpha3: 'ITA', numeric: '380', continent: 'Europe', capital: 'Rome', languages: ['it'], currency: 'EUR', dialCode: '+39', flag: '๐Ÿ‡ฎ๐Ÿ‡น' },\r\n { name: 'Spain', officialName: 'Kingdom of Spain', alpha2: 'ES', alpha3: 'ESP', numeric: '724', continent: 'Europe', capital: 'Madrid', languages: ['es'], currency: 'EUR', dialCode: '+34', flag: '๐Ÿ‡ช๐Ÿ‡ธ' },\r\n { name: 'Netherlands', officialName: 'Kingdom of the Netherlands', alpha2: 'NL', alpha3: 'NLD', numeric: '528', continent: 'Europe', capital: 'Amsterdam', languages: ['nl'], currency: 'EUR', dialCode: '+31', flag: '๐Ÿ‡ณ๐Ÿ‡ฑ' },\r\n { name: 'Belgium', officialName: 'Kingdom of Belgium', alpha2: 'BE', alpha3: 'BEL', numeric: '056', continent: 'Europe', capital: 'Brussels', languages: ['nl', 'fr', 'de'], currency: 'EUR', dialCode: '+32', flag: '๐Ÿ‡ง๐Ÿ‡ช' },\r\n { name: 'Switzerland', officialName: 'Swiss Confederation', alpha2: 'CH', alpha3: 'CHE', numeric: '756', continent: 'Europe', capital: 'Bern', languages: ['de', 'fr', 'it', 'rm'], currency: 'CHF', dialCode: '+41', flag: '๐Ÿ‡จ๐Ÿ‡ญ' },\r\n { name: 'Austria', officialName: 'Republic of Austria', alpha2: 'AT', alpha3: 'AUT', numeric: '040', continent: 'Europe', capital: 'Vienna', languages: ['de'], currency: 'EUR', dialCode: '+43', flag: '๐Ÿ‡ฆ๐Ÿ‡น' },\r\n { name: 'Sweden', officialName: 'Kingdom of Sweden', alpha2: 'SE', alpha3: 'SWE', numeric: '752', continent: 'Europe', capital: 'Stockholm', languages: ['sv'], currency: 'SEK', dialCode: '+46', flag: '๐Ÿ‡ธ๐Ÿ‡ช' },\r\n { name: 'Norway', officialName: 'Kingdom of Norway', alpha2: 'NO', alpha3: 'NOR', numeric: '578', continent: 'Europe', capital: 'Oslo', languages: ['no'], currency: 'NOK', dialCode: '+47', flag: '๐Ÿ‡ณ๐Ÿ‡ด' },\r\n { name: 'Denmark', officialName: 'Kingdom of Denmark', alpha2: 'DK', alpha3: 'DNK', numeric: '208', continent: 'Europe', capital: 'Copenhagen', languages: ['da'], currency: 'DKK', dialCode: '+45', flag: '๐Ÿ‡ฉ๐Ÿ‡ฐ' },\r\n { name: 'Finland', officialName: 'Republic of Finland', alpha2: 'FI', alpha3: 'FIN', numeric: '246', continent: 'Europe', capital: 'Helsinki', languages: ['fi', 'sv'], currency: 'EUR', dialCode: '+358', flag: '๐Ÿ‡ซ๐Ÿ‡ฎ' },\r\n { name: 'Poland', officialName: 'Republic of Poland', alpha2: 'PL', alpha3: 'POL', numeric: '616', continent: 'Europe', capital: 'Warsaw', languages: ['pl'], currency: 'PLN', dialCode: '+48', flag: '๐Ÿ‡ต๐Ÿ‡ฑ' },\r\n { name: 'Portugal', officialName: 'Portuguese Republic', alpha2: 'PT', alpha3: 'PRT', numeric: '620', continent: 'Europe', capital: 'Lisbon', languages: ['pt'], currency: 'EUR', dialCode: '+351', flag: '๐Ÿ‡ต๐Ÿ‡น' },\r\n { name: 'Ireland', alpha2: 'IE', alpha3: 'IRL', numeric: '372', continent: 'Europe', capital: 'Dublin', languages: ['en', 'ga'], currency: 'EUR', dialCode: '+353', flag: '๐Ÿ‡ฎ๐Ÿ‡ช' },\r\n { name: 'Greece', officialName: 'Hellenic Republic', alpha2: 'GR', alpha3: 'GRC', numeric: '300', continent: 'Europe', capital: 'Athens', languages: ['el'], currency: 'EUR', dialCode: '+30', flag: '๐Ÿ‡ฌ๐Ÿ‡ท' },\r\n { name: 'Czech Republic', alpha2: 'CZ', alpha3: 'CZE', numeric: '203', continent: 'Europe', capital: 'Prague', languages: ['cs'], currency: 'CZK', dialCode: '+420', flag: '๐Ÿ‡จ๐Ÿ‡ฟ' },\r\n { name: 'Hungary', alpha2: 'HU', alpha3: 'HUN', numeric: '348', continent: 'Europe', capital: 'Budapest', languages: ['hu'], currency: 'HUF', dialCode: '+36', flag: '๐Ÿ‡ญ๐Ÿ‡บ' },\r\n { name: 'Romania', alpha2: 'RO', alpha3: 'ROU', numeric: '642', continent: 'Europe', capital: 'Bucharest', languages: ['ro'], currency: 'RON', dialCode: '+40', flag: '๐Ÿ‡ท๐Ÿ‡ด' },\r\n { name: 'Bulgaria', alpha2: 'BG', alpha3: 'BGR', numeric: '100', continent: 'Europe', capital: 'Sofia', languages: ['bg'], currency: 'BGN', dialCode: '+359', flag: '๐Ÿ‡ง๐Ÿ‡ฌ' },\r\n { name: 'Croatia', alpha2: 'HR', alpha3: 'HRV', numeric: '191', continent: 'Europe', capital: 'Zagreb', languages: ['hr'], currency: 'EUR', dialCode: '+385', flag: '๐Ÿ‡ญ๐Ÿ‡ท' },\r\n { name: 'Slovakia', alpha2: 'SK', alpha3: 'SVK', numeric: '703', continent: 'Europe', capital: 'Bratislava', languages: ['sk'], currency: 'EUR', dialCode: '+421', flag: '๐Ÿ‡ธ๐Ÿ‡ฐ' },\r\n { name: 'Slovenia', alpha2: 'SI', alpha3: 'SVN', numeric: '705', continent: 'Europe', capital: 'Ljubljana', languages: ['sl'], currency: 'EUR', dialCode: '+386', flag: '๐Ÿ‡ธ๐Ÿ‡ฎ' },\r\n { name: 'Serbia', alpha2: 'RS', alpha3: 'SRB', numeric: '688', continent: 'Europe', capital: 'Belgrade', languages: ['sr'], currency: 'RSD', dialCode: '+381', flag: '๐Ÿ‡ท๐Ÿ‡ธ' },\r\n { name: 'Lithuania', alpha2: 'LT', alpha3: 'LTU', numeric: '440', continent: 'Europe', capital: 'Vilnius', languages: ['lt'], currency: 'EUR', dialCode: '+370', flag: '๐Ÿ‡ฑ๐Ÿ‡น' },\r\n { name: 'Latvia', alpha2: 'LV', alpha3: 'LVA', numeric: '428', continent: 'Europe', capital: 'Riga', languages: ['lv'], currency: 'EUR', dialCode: '+371', flag: '๐Ÿ‡ฑ๐Ÿ‡ป' },\r\n { name: 'Estonia', alpha2: 'EE', alpha3: 'EST', numeric: '233', continent: 'Europe', capital: 'Tallinn', languages: ['et'], currency: 'EUR', dialCode: '+372', flag: '๐Ÿ‡ช๐Ÿ‡ช' },\r\n { name: 'Luxembourg', alpha2: 'LU', alpha3: 'LUX', numeric: '442', continent: 'Europe', capital: 'Luxembourg', languages: ['lb', 'fr', 'de'], currency: 'EUR', dialCode: '+352', flag: '๐Ÿ‡ฑ๐Ÿ‡บ' },\r\n { name: 'Iceland', alpha2: 'IS', alpha3: 'ISL', numeric: '352', continent: 'Europe', capital: 'Reykjavik', languages: ['is'], currency: 'ISK', dialCode: '+354', flag: '๐Ÿ‡ฎ๐Ÿ‡ธ' },\r\n { name: 'Cyprus', alpha2: 'CY', alpha3: 'CYP', numeric: '196', continent: 'Europe', capital: 'Nicosia', languages: ['el', 'tr'], currency: 'EUR', dialCode: '+357', flag: '๐Ÿ‡จ๐Ÿ‡พ' },\r\n { name: 'Malta', alpha2: 'MT', alpha3: 'MLT', numeric: '470', continent: 'Europe', capital: 'Valletta', languages: ['mt', 'en'], currency: 'EUR', dialCode: '+356', flag: '๐Ÿ‡ฒ๐Ÿ‡น' },\r\n { name: 'Russia', officialName: 'Russian Federation', alpha2: 'RU', alpha3: 'RUS', numeric: '643', continent: 'Europe', capital: 'Moscow', languages: ['ru'], currency: 'RUB', dialCode: '+7', flag: '๐Ÿ‡ท๐Ÿ‡บ' },\r\n { name: 'Ukraine', alpha2: 'UA', alpha3: 'UKR', numeric: '804', continent: 'Europe', capital: 'Kyiv', languages: ['uk'], currency: 'UAH', dialCode: '+380', flag: '๐Ÿ‡บ๐Ÿ‡ฆ' },\r\n { name: 'Belarus', alpha2: 'BY', alpha3: 'BLR', numeric: '112', continent: 'Europe', capital: 'Minsk', languages: ['be', 'ru'], currency: 'BYN', dialCode: '+375', flag: '๐Ÿ‡ง๐Ÿ‡พ' },\r\n\r\n // Asia (35)\r\n { name: 'China', officialName: \"People's Republic of China\", alpha2: 'CN', alpha3: 'CHN', numeric: '156', continent: 'Asia', capital: 'Beijing', languages: ['zh'], currency: 'CNY', dialCode: '+86', flag: '๐Ÿ‡จ๐Ÿ‡ณ' },\r\n { name: 'Japan', alpha2: 'JP', alpha3: 'JPN', numeric: '392', continent: 'Asia', capital: 'Tokyo', languages: ['ja'], currency: 'JPY', dialCode: '+81', flag: '๐Ÿ‡ฏ๐Ÿ‡ต' },\r\n { name: 'South Korea', officialName: 'Republic of Korea', alpha2: 'KR', alpha3: 'KOR', numeric: '410', continent: 'Asia', capital: 'Seoul', languages: ['ko'], currency: 'KRW', dialCode: '+82', flag: '๐Ÿ‡ฐ๐Ÿ‡ท' },\r\n { name: 'India', officialName: 'Republic of India', alpha2: 'IN', alpha3: 'IND', numeric: '356', continent: 'Asia', capital: 'New Delhi', languages: ['hi', 'en'], currency: 'INR', dialCode: '+91', flag: '๐Ÿ‡ฎ๐Ÿ‡ณ' },\r\n { name: 'Pakistan', officialName: 'Islamic Republic of Pakistan', alpha2: 'PK', alpha3: 'PAK', numeric: '586', continent: 'Asia', capital: 'Islamabad', languages: ['ur', 'en'], currency: 'PKR', dialCode: '+92', flag: '๐Ÿ‡ต๐Ÿ‡ฐ' },\r\n { name: 'Bangladesh', officialName: \"People's Republic of Bangladesh\", alpha2: 'BD', alpha3: 'BGD', numeric: '050', continent: 'Asia', capital: 'Dhaka', languages: ['bn'], currency: 'BDT', dialCode: '+880', flag: '๐Ÿ‡ง๐Ÿ‡ฉ' },\r\n { name: 'Indonesia', officialName: 'Republic of Indonesia', alpha2: 'ID', alpha3: 'IDN', numeric: '360', continent: 'Asia', capital: 'Jakarta', languages: ['id'], currency: 'IDR', dialCode: '+62', flag: '๐Ÿ‡ฎ๐Ÿ‡ฉ' },\r\n { name: 'Thailand', officialName: 'Kingdom of Thailand', alpha2: 'TH', alpha3: 'THA', numeric: '764', continent: 'Asia', capital: 'Bangkok', languages: ['th'], currency: 'THB', dialCode: '+66', flag: '๐Ÿ‡น๐Ÿ‡ญ' },\r\n { name: 'Vietnam', officialName: 'Socialist Republic of Vietnam', alpha2: 'VN', alpha3: 'VNM', numeric: '704', continent: 'Asia', capital: 'Hanoi', languages: ['vi'], currency: 'VND', dialCode: '+84', flag: '๐Ÿ‡ป๐Ÿ‡ณ' },\r\n { name: 'Philippines', officialName: 'Republic of the Philippines', alpha2: 'PH', alpha3: 'PHL', numeric: '608', continent: 'Asia', capital: 'Manila', languages: ['tl', 'en'], currency: 'PHP', dialCode: '+63', flag: '๐Ÿ‡ต๐Ÿ‡ญ' },\r\n { name: 'Malaysia', alpha2: 'MY', alpha3: 'MYS', numeric: '458', continent: 'Asia', capital: 'Kuala Lumpur', languages: ['ms'], currency: 'MYR', dialCode: '+60', flag: '๐Ÿ‡ฒ๐Ÿ‡พ' },\r\n { name: 'Singapore', officialName: 'Republic of Singapore', alpha2: 'SG', alpha3: 'SGP', numeric: '702', continent: 'Asia', capital: 'Singapore', languages: ['en', 'zh', 'ms', 'ta'], currency: 'SGD', dialCode: '+65', flag: '๐Ÿ‡ธ๐Ÿ‡ฌ' },\r\n { name: 'Myanmar', alpha2: 'MM', alpha3: 'MMR', numeric: '104', continent: 'Asia', capital: 'Naypyidaw', languages: ['my'], currency: 'MMK', dialCode: '+95', flag: '๐Ÿ‡ฒ๐Ÿ‡ฒ' },\r\n { name: 'Cambodia', alpha2: 'KH', alpha3: 'KHM', numeric: '116', continent: 'Asia', capital: 'Phnom Penh', languages: ['km'], currency: 'KHR', dialCode: '+855', flag: '๐Ÿ‡ฐ๐Ÿ‡ญ' },\r\n { name: 'Laos', alpha2: 'LA', alpha3: 'LAO', numeric: '418', continent: 'Asia', capital: 'Vientiane', languages: ['lo'], currency: 'LAK', dialCode: '+856', flag: '๐Ÿ‡ฑ๐Ÿ‡ฆ' },\r\n { name: 'Nepal', alpha2: 'NP', alpha3: 'NPL', numeric: '524', continent: 'Asia', capital: 'Kathmandu', languages: ['ne'], currency: 'NPR', dialCode: '+977', flag: '๐Ÿ‡ณ๐Ÿ‡ต' },\r\n { name: 'Sri Lanka', alpha2: 'LK', alpha3: 'LKA', numeric: '144', continent: 'Asia', capital: 'Colombo', languages: ['si', 'ta'], currency: 'LKR', dialCode: '+94', flag: '๐Ÿ‡ฑ๐Ÿ‡ฐ' },\r\n { name: 'Mongolia', alpha2: 'MN', alpha3: 'MNG', numeric: '496', continent: 'Asia', capital: 'Ulaanbaatar', languages: ['mn'], currency: 'MNT', dialCode: '+976', flag: '๐Ÿ‡ฒ๐Ÿ‡ณ' },\r\n { name: 'North Korea', alpha2: 'KP', alpha3: 'PRK', numeric: '408', continent: 'Asia', capital: 'Pyongyang', languages: ['ko'], currency: 'KPW', dialCode: '+850', flag: '๐Ÿ‡ฐ๐Ÿ‡ต' },\r\n { name: 'Taiwan', alpha2: 'TW', alpha3: 'TWN', numeric: '158', continent: 'Asia', capital: 'Taipei', languages: ['zh'], currency: 'TWD', dialCode: '+886', flag: '๐Ÿ‡น๐Ÿ‡ผ' },\r\n { name: 'Hong Kong', alpha2: 'HK', alpha3: 'HKG', numeric: '344', continent: 'Asia', capital: 'Hong Kong', languages: ['zh', 'en'], currency: 'HKD', dialCode: '+852', flag: '๐Ÿ‡ญ๐Ÿ‡ฐ' },\r\n\r\n // Central Asia (5)\r\n { name: 'Kazakhstan', alpha2: 'KZ', alpha3: 'KAZ', numeric: '398', continent: 'Asia', capital: 'Astana', languages: ['kk', 'ru'], currency: 'KZT', dialCode: '+7', flag: '๐Ÿ‡ฐ๐Ÿ‡ฟ' },\r\n { name: 'Uzbekistan', alpha2: 'UZ', alpha3: 'UZB', numeric: '860', continent: 'Asia', capital: 'Tashkent', languages: ['uz'], currency: 'UZS', dialCode: '+998', flag: '๐Ÿ‡บ๐Ÿ‡ฟ' },\r\n { name: 'Turkmenistan', alpha2: 'TM', alpha3: 'TKM', numeric: '795', continent: 'Asia', capital: 'Ashgabat', languages: ['tk'], currency: 'TMT', dialCode: '+993', flag: '๐Ÿ‡น๐Ÿ‡ฒ' },\r\n { name: 'Kyrgyzstan', alpha2: 'KG', alpha3: 'KGZ', numeric: '417', continent: 'Asia', capital: 'Bishkek', languages: ['ky', 'ru'], currency: 'KGS', dialCode: '+996', flag: '๐Ÿ‡ฐ๐Ÿ‡ฌ' },\r\n { name: 'Tajikistan', alpha2: 'TJ', alpha3: 'TJK', numeric: '762', continent: 'Asia', capital: 'Dushanbe', languages: ['tg'], currency: 'TJS', dialCode: '+992', flag: '๐Ÿ‡น๐Ÿ‡ฏ' },\r\n\r\n // Middle East (15)\r\n { name: 'United Arab Emirates', alpha2: 'AE', alpha3: 'ARE', numeric: '784', continent: 'Asia', capital: 'Abu Dhabi', languages: ['ar'], currency: 'AED', dialCode: '+971', flag: '๐Ÿ‡ฆ๐Ÿ‡ช' },\r\n { name: 'Saudi Arabia', officialName: 'Kingdom of Saudi Arabia', alpha2: 'SA', alpha3: 'SAU', numeric: '682', continent: 'Asia', capital: 'Riyadh', languages: ['ar'], currency: 'SAR', dialCode: '+966', flag: '๐Ÿ‡ธ๐Ÿ‡ฆ' },\r\n { name: 'Turkey', officialName: 'Republic of Turkey', alpha2: 'TR', alpha3: 'TUR', numeric: '792', continent: 'Asia', capital: 'Ankara', languages: ['tr'], currency: 'TRY', dialCode: '+90', flag: '๐Ÿ‡น๐Ÿ‡ท' },\r\n { name: 'Iran', officialName: 'Islamic Republic of Iran', alpha2: 'IR', alpha3: 'IRN', numeric: '364', continent: 'Asia', capital: 'Tehran', languages: ['fa'], currency: 'IRR', dialCode: '+98', flag: '๐Ÿ‡ฎ๐Ÿ‡ท' },\r\n { name: 'Israel', officialName: 'State of Israel', alpha2: 'IL', alpha3: 'ISR', numeric: '376', continent: 'Asia', capital: 'Jerusalem', languages: ['he', 'ar'], currency: 'ILS', dialCode: '+972', flag: '๐Ÿ‡ฎ๐Ÿ‡ฑ' },\r\n { name: 'Qatar', officialName: 'State of Qatar', alpha2: 'QA', alpha3: 'QAT', numeric: '634', continent: 'Asia', capital: 'Doha', languages: ['ar'], currency: 'QAR', dialCode: '+974', flag: '๐Ÿ‡ถ๐Ÿ‡ฆ' },\r\n { name: 'Kuwait', officialName: 'State of Kuwait', alpha2: 'KW', alpha3: 'KWT', numeric: '414', continent: 'Asia', capital: 'Kuwait City', languages: ['ar'], currency: 'KWD', dialCode: '+965', flag: '๐Ÿ‡ฐ๐Ÿ‡ผ' },\r\n { name: 'Bahrain', alpha2: 'BH', alpha3: 'BHR', numeric: '048', continent: 'Asia', capital: 'Manama', languages: ['ar'], currency: 'BHD', dialCode: '+973', flag: '๐Ÿ‡ง๐Ÿ‡ญ' },\r\n { name: 'Oman', alpha2: 'OM', alpha3: 'OMN', numeric: '512', continent: 'Asia', capital: 'Muscat', languages: ['ar'], currency: 'OMR', dialCode: '+968', flag: '๐Ÿ‡ด๐Ÿ‡ฒ' },\r\n { name: 'Jordan', alpha2: 'JO', alpha3: 'JOR', numeric: '400', continent: 'Asia', capital: 'Amman', languages: ['ar'], currency: 'JOD', dialCode: '+962', flag: '๐Ÿ‡ฏ๐Ÿ‡ด' },\r\n { name: 'Lebanon', alpha2: 'LB', alpha3: 'LBN', numeric: '422', continent: 'Asia', capital: 'Beirut', languages: ['ar'], currency: 'LBP', dialCode: '+961', flag: '๐Ÿ‡ฑ๐Ÿ‡ง' },\r\n { name: 'Iraq', alpha2: 'IQ', alpha3: 'IRQ', numeric: '368', continent: 'Asia', capital: 'Baghdad', languages: ['ar', 'ku'], currency: 'IQD', dialCode: '+964', flag: '๐Ÿ‡ฎ๐Ÿ‡ถ' },\r\n { name: 'Syria', alpha2: 'SY', alpha3: 'SYR', numeric: '760', continent: 'Asia', capital: 'Damascus', languages: ['ar'], currency: 'SYP', dialCode: '+963', flag: '๐Ÿ‡ธ๐Ÿ‡พ' },\r\n { name: 'Yemen', alpha2: 'YE', alpha3: 'YEM', numeric: '887', continent: 'Asia', capital: \"Sana'a\", languages: ['ar'], currency: 'YER', dialCode: '+967', flag: '๐Ÿ‡พ๐Ÿ‡ช' },\r\n { name: 'Afghanistan', alpha2: 'AF', alpha3: 'AFG', numeric: '004', continent: 'Asia', capital: 'Kabul', languages: ['ps', 'fa'], currency: 'AFN', dialCode: '+93', flag: '๐Ÿ‡ฆ๐Ÿ‡ซ' },\r\n\r\n // Africa (35)\r\n { name: 'Egypt', officialName: 'Arab Republic of Egypt', alpha2: 'EG', alpha3: 'EGY', numeric: '818', continent: 'Africa', capital: 'Cairo', languages: ['ar'], currency: 'EGP', dialCode: '+20', flag: '๐Ÿ‡ช๐Ÿ‡ฌ' },\r\n { name: 'Nigeria', officialName: 'Federal Republic of Nigeria', alpha2: 'NG', alpha3: 'NGA', numeric: '566', continent: 'Africa', capital: 'Abuja', languages: ['en'], currency: 'NGN', dialCode: '+234', flag: '๐Ÿ‡ณ๐Ÿ‡ฌ' },\r\n { name: 'South Africa', officialName: 'Republic of South Africa', alpha2: 'ZA', alpha3: 'ZAF', numeric: '710', continent: 'Africa', capital: 'Pretoria', languages: ['af', 'en', 'zu', 'xh'], currency: 'ZAR', dialCode: '+27', flag: '๐Ÿ‡ฟ๐Ÿ‡ฆ' },\r\n { name: 'Kenya', officialName: 'Republic of Kenya', alpha2: 'KE', alpha3: 'KEN', numeric: '404', continent: 'Africa', capital: 'Nairobi', languages: ['en', 'sw'], currency: 'KES', dialCode: '+254', flag: '๐Ÿ‡ฐ๐Ÿ‡ช' },\r\n { name: 'Morocco', officialName: 'Kingdom of Morocco', alpha2: 'MA', alpha3: 'MAR', numeric: '504', continent: 'Africa', capital: 'Rabat', languages: ['ar', 'fr'], currency: 'MAD', dialCode: '+212', flag: '๐Ÿ‡ฒ๐Ÿ‡ฆ' },\r\n { name: 'Algeria', officialName: \"People's Democratic Republic of Algeria\", alpha2: 'DZ', alpha3: 'DZA', numeric: '012', continent: 'Africa', capital: 'Algiers', languages: ['ar', 'fr'], currency: 'DZD', dialCode: '+213', flag: '๐Ÿ‡ฉ๐Ÿ‡ฟ' },\r\n { name: 'Tunisia', alpha2: 'TN', alpha3: 'TUN', numeric: '788', continent: 'Africa', capital: 'Tunis', languages: ['ar', 'fr'], currency: 'TND', dialCode: '+216', flag: '๐Ÿ‡น๐Ÿ‡ณ' },\r\n { name: 'Libya', alpha2: 'LY', alpha3: 'LBY', numeric: '434', continent: 'Africa', capital: 'Tripoli', languages: ['ar'], currency: 'LYD', dialCode: '+218', flag: '๐Ÿ‡ฑ๐Ÿ‡พ' },\r\n { name: 'Ghana', alpha2: 'GH', alpha3: 'GHA', numeric: '288', continent: 'Africa', capital: 'Accra', languages: ['en'], currency: 'GHS', dialCode: '+233', flag: '๐Ÿ‡ฌ๐Ÿ‡ญ' },\r\n { name: 'Tanzania', alpha2: 'TZ', alpha3: 'TZA', numeric: '834', continent: 'Africa', capital: 'Dodoma', languages: ['sw', 'en'], currency: 'TZS', dialCode: '+255', flag: '๐Ÿ‡น๐Ÿ‡ฟ' },\r\n { name: 'Ethiopia', alpha2: 'ET', alpha3: 'ETH', numeric: '231', continent: 'Africa', capital: 'Addis Ababa', languages: ['am'], currency: 'ETB', dialCode: '+251', flag: '๐Ÿ‡ช๐Ÿ‡น' },\r\n { name: 'Uganda', alpha2: 'UG', alpha3: 'UGA', numeric: '800', continent: 'Africa', capital: 'Kampala', languages: ['en', 'sw'], currency: 'UGX', dialCode: '+256', flag: '๐Ÿ‡บ๐Ÿ‡ฌ' },\r\n { name: 'Rwanda', alpha2: 'RW', alpha3: 'RWA', numeric: '646', continent: 'Africa', capital: 'Kigali', languages: ['rw', 'en', 'fr'], currency: 'RWF', dialCode: '+250', flag: '๐Ÿ‡ท๐Ÿ‡ผ' },\r\n { name: 'Senegal', alpha2: 'SN', alpha3: 'SEN', numeric: '686', continent: 'Africa', capital: 'Dakar', languages: ['fr'], currency: 'XOF', dialCode: '+221', flag: '๐Ÿ‡ธ๐Ÿ‡ณ' },\r\n { name: 'Ivory Coast', alpha2: 'CI', alpha3: 'CIV', numeric: '384', continent: 'Africa', capital: 'Yamoussoukro', languages: ['fr'], currency: 'XOF', dialCode: '+225', flag: '๐Ÿ‡จ๐Ÿ‡ฎ' },\r\n { name: 'Cameroon', alpha2: 'CM', alpha3: 'CMR', numeric: '120', continent: 'Africa', capital: 'Yaoundรฉ', languages: ['fr', 'en'], currency: 'XAF', dialCode: '+237', flag: '๐Ÿ‡จ๐Ÿ‡ฒ' },\r\n { name: 'Angola', alpha2: 'AO', alpha3: 'AGO', numeric: '024', continent: 'Africa', capital: 'Luanda', languages: ['pt'], currency: 'AOA', dialCode: '+244', flag: '๐Ÿ‡ฆ๐Ÿ‡ด' },\r\n { name: 'Mozambique', alpha2: 'MZ', alpha3: 'MOZ', numeric: '508', continent: 'Africa', capital: 'Maputo', languages: ['pt'], currency: 'MZN', dialCode: '+258', flag: '๐Ÿ‡ฒ๐Ÿ‡ฟ' },\r\n { name: 'Zimbabwe', alpha2: 'ZW', alpha3: 'ZWE', numeric: '716', continent: 'Africa', capital: 'Harare', languages: ['en', 'sn', 'nd'], currency: 'ZWL', dialCode: '+263', flag: '๐Ÿ‡ฟ๐Ÿ‡ผ' },\r\n { name: 'Zambia', alpha2: 'ZM', alpha3: 'ZMB', numeric: '894', continent: 'Africa', capital: 'Lusaka', languages: ['en'], currency: 'ZMW', dialCode: '+260', flag: '๐Ÿ‡ฟ๐Ÿ‡ฒ' },\r\n { name: 'Botswana', alpha2: 'BW', alpha3: 'BWA', numeric: '072', continent: 'Africa', capital: 'Gaborone', languages: ['en', 'tn'], currency: 'BWP', dialCode: '+267', flag: '๐Ÿ‡ง๐Ÿ‡ผ' },\r\n { name: 'Namibia', alpha2: 'NA', alpha3: 'NAM', numeric: '516', continent: 'Africa', capital: 'Windhoek', languages: ['en'], currency: 'NAD', dialCode: '+264', flag: '๐Ÿ‡ณ๐Ÿ‡ฆ' },\r\n { name: 'Mauritius', alpha2: 'MU', alpha3: 'MUS', numeric: '480', continent: 'Africa', capital: 'Port Louis', languages: ['en', 'fr'], currency: 'MUR', dialCode: '+230', flag: '๐Ÿ‡ฒ๐Ÿ‡บ' },\r\n { name: 'Madagascar', alpha2: 'MG', alpha3: 'MDG', numeric: '450', continent: 'Africa', capital: 'Antananarivo', languages: ['mg', 'fr'], currency: 'MGA', dialCode: '+261', flag: '๐Ÿ‡ฒ๐Ÿ‡ฌ' },\r\n { name: 'Sudan', alpha2: 'SD', alpha3: 'SDN', numeric: '729', continent: 'Africa', capital: 'Khartoum', languages: ['ar', 'en'], currency: 'SDG', dialCode: '+249', flag: '๐Ÿ‡ธ๐Ÿ‡ฉ' },\r\n\r\n // South America (12)\r\n { name: 'Brazil', officialName: 'Federative Republic of Brazil', alpha2: 'BR', alpha3: 'BRA', numeric: '076', continent: 'South America', capital: 'Brasรญlia', languages: ['pt'], currency: 'BRL', dialCode: '+55', flag: '๐Ÿ‡ง๐Ÿ‡ท' },\r\n { name: 'Argentina', officialName: 'Argentine Republic', alpha2: 'AR', alpha3: 'ARG', numeric: '032', continent: 'South America', capital: 'Buenos Aires', languages: ['es'], currency: 'ARS', dialCode: '+54', flag: '๐Ÿ‡ฆ๐Ÿ‡ท' },\r\n { name: 'Colombia', officialName: 'Republic of Colombia', alpha2: 'CO', alpha3: 'COL', numeric: '170', continent: 'South America', capital: 'Bogotรก', languages: ['es'], currency: 'COP', dialCode: '+57', flag: '๐Ÿ‡จ๐Ÿ‡ด' },\r\n { name: 'Chile', officialName: 'Republic of Chile', alpha2: 'CL', alpha3: 'CHL', numeric: '152', continent: 'South America', capital: 'Santiago', languages: ['es'], currency: 'CLP', dialCode: '+56', flag: '๐Ÿ‡จ๐Ÿ‡ฑ' },\r\n { name: 'Peru', officialName: 'Republic of Peru', alpha2: 'PE', alpha3: 'PER', numeric: '604', continent: 'South America', capital: 'Lima', languages: ['es'], currency: 'PEN', dialCode: '+51', flag: '๐Ÿ‡ต๐Ÿ‡ช' },\r\n { name: 'Venezuela', alpha2: 'VE', alpha3: 'VEN', numeric: '862', continent: 'South America', capital: 'Caracas', languages: ['es'], currency: 'VES', dialCode: '+58', flag: '๐Ÿ‡ป๐Ÿ‡ช' },\r\n { name: 'Ecuador', alpha2: 'EC', alpha3: 'ECU', numeric: '218', continent: 'South America', capital: 'Quito', languages: ['es'], currency: 'USD', dialCode: '+593', flag: '๐Ÿ‡ช๐Ÿ‡จ' },\r\n { name: 'Bolivia', alpha2: 'BO', alpha3: 'BOL', numeric: '068', continent: 'South America', capital: 'Sucre', languages: ['es'], currency: 'BOB', dialCode: '+591', flag: '๐Ÿ‡ง๐Ÿ‡ด' },\r\n { name: 'Paraguay', alpha2: 'PY', alpha3: 'PRY', numeric: '600', continent: 'South America', capital: 'Asunciรณn', languages: ['es', 'gn'], currency: 'PYG', dialCode: '+595', flag: '๐Ÿ‡ต๐Ÿ‡พ' },\r\n { name: 'Uruguay', alpha2: 'UY', alpha3: 'URY', numeric: '858', continent: 'South America', capital: 'Montevideo', languages: ['es'], currency: 'UYU', dialCode: '+598', flag: '๐Ÿ‡บ๐Ÿ‡พ' },\r\n { name: 'Guyana', alpha2: 'GY', alpha3: 'GUY', numeric: '328', continent: 'South America', capital: 'Georgetown', languages: ['en'], currency: 'GYD', dialCode: '+592', flag: '๐Ÿ‡ฌ๐Ÿ‡พ' },\r\n { name: 'Suriname', alpha2: 'SR', alpha3: 'SUR', numeric: '740', continent: 'South America', capital: 'Paramaribo', languages: ['nl'], currency: 'SRD', dialCode: '+597', flag: '๐Ÿ‡ธ๐Ÿ‡ท' },\r\n\r\n // Oceania (8)\r\n { name: 'Australia', officialName: 'Commonwealth of Australia', alpha2: 'AU', alpha3: 'AUS', numeric: '036', continent: 'Oceania', capital: 'Canberra', languages: ['en'], currency: 'AUD', dialCode: '+61', flag: '๐Ÿ‡ฆ๐Ÿ‡บ' },\r\n { name: 'New Zealand', alpha2: 'NZ', alpha3: 'NZL', numeric: '554', continent: 'Oceania', capital: 'Wellington', languages: ['en', 'mi'], currency: 'NZD', dialCode: '+64', flag: '๐Ÿ‡ณ๐Ÿ‡ฟ' },\r\n { name: 'Papua New Guinea', alpha2: 'PG', alpha3: 'PNG', numeric: '598', continent: 'Oceania', capital: 'Port Moresby', languages: ['en', 'tpi', 'ho'], currency: 'PGK', dialCode: '+675', flag: '๐Ÿ‡ต๐Ÿ‡ฌ' },\r\n { name: 'Fiji', alpha2: 'FJ', alpha3: 'FJI', numeric: '242', continent: 'Oceania', capital: 'Suva', languages: ['en', 'fj', 'hi'], currency: 'FJD', dialCode: '+679', flag: '๐Ÿ‡ซ๐Ÿ‡ฏ' },\r\n { name: 'Samoa', alpha2: 'WS', alpha3: 'WSM', numeric: '882', continent: 'Oceania', capital: 'Apia', languages: ['sm', 'en'], currency: 'WST', dialCode: '+685', flag: '๐Ÿ‡ผ๐Ÿ‡ธ' },\r\n { name: 'Tonga', alpha2: 'TO', alpha3: 'TON', numeric: '776', continent: 'Oceania', capital: \"Nuku'alofa\", languages: ['to', 'en'], currency: 'TOP', dialCode: '+676', flag: '๐Ÿ‡น๐Ÿ‡ด' },\r\n { name: 'Vanuatu', alpha2: 'VU', alpha3: 'VUT', numeric: '548', continent: 'Oceania', capital: 'Port Vila', languages: ['bi', 'en', 'fr'], currency: 'VUV', dialCode: '+678', flag: '๐Ÿ‡ป๐Ÿ‡บ' },\r\n { name: 'Solomon Islands', alpha2: 'SB', alpha3: 'SLB', numeric: '090', continent: 'Oceania', capital: 'Honiara', languages: ['en'], currency: 'SBD', dialCode: '+677', flag: '๐Ÿ‡ธ๐Ÿ‡ง' },\r\n];\r\n\r\n/**\r\n * Country lookup maps for O(1) access\r\n */\r\nexport const COUNTRY_BY_ALPHA2 = new Map<string, Country>(\r\n COUNTRIES.map(c => [c.alpha2.toUpperCase(), c])\r\n);\r\n\r\nexport const COUNTRY_BY_ALPHA3 = new Map<string, Country>(\r\n COUNTRIES.map(c => [c.alpha3.toUpperCase(), c])\r\n);\r\n\r\nexport const COUNTRY_BY_NUMERIC = new Map<string, Country>(\r\n COUNTRIES.map(c => [c.numeric, c])\r\n);\r\n","import type { Country, CountryCodeFormat } from '../types';\r\nimport { COUNTRIES, COUNTRY_BY_ALPHA2, COUNTRY_BY_ALPHA3, COUNTRY_BY_NUMERIC } from './data/countries';\r\n\r\n/**\r\n * Get country by alpha-2 code (e.g., \"US\", \"PK\")\r\n *\r\n * @param code - ISO 3166-1 alpha-2 code\r\n * @returns Country or null\r\n */\r\nexport function getCountryByAlpha2(code: string): Country | null {\r\n if (!code || typeof code !== 'string') return null;\r\n return COUNTRY_BY_ALPHA2.get(code.toUpperCase()) || null;\r\n}\r\n\r\n/**\r\n * Get country by alpha-3 code (e.g., \"USA\", \"PAK\")\r\n *\r\n * @param code - ISO 3166-1 alpha-3 code\r\n * @returns Country or null\r\n */\r\nexport function getCountryByAlpha3(code: string): Country | null {\r\n if (!code || typeof code !== 'string') return null;\r\n return COUNTRY_BY_ALPHA3.get(code.toUpperCase()) || null;\r\n}\r\n\r\n/**\r\n * Get country by numeric code (e.g., \"840\", \"586\")\r\n *\r\n * @param code - ISO 3166-1 numeric code\r\n * @returns Country or null\r\n */\r\nexport function getCountryByNumeric(code: string | number): Country | null {\r\n if (code === null || code === undefined) return null;\r\n const numericStr = String(code).padStart(3, '0');\r\n return COUNTRY_BY_NUMERIC.get(numericStr) || null;\r\n}\r\n\r\n/**\r\n * Get country by any code format (alpha-2, alpha-3, or numeric)\r\n *\r\n * @param code - Country code in any format (e.g., 'US', 'USA', '840')\r\n * @returns Country object with details or null if not found\r\n *\r\n * @example\r\n * ```typescript\r\n * getCountry('US'); // returns { name: 'United States', ... }\r\n * getCountry('USA'); // returns { name: 'United States', ... }\r\n * getCountry(840); // returns { name: 'United States', ... }\r\n * ```\r\n */\r\nexport function getCountry(code: string | number): Country | null {\r\n if (code === null || code === undefined) return null;\r\n\r\n const codeStr = String(code).toUpperCase();\r\n\r\n // Try alpha-2 first (most common)\r\n if (codeStr.length === 2) {\r\n return getCountryByAlpha2(codeStr);\r\n }\r\n\r\n // Try alpha-3\r\n if (codeStr.length === 3 && /^[A-Z]+$/.test(codeStr)) {\r\n return getCountryByAlpha3(codeStr);\r\n }\r\n\r\n // Try numeric\r\n if (/^\\d+$/.test(codeStr)) {\r\n return getCountryByNumeric(codeStr);\r\n }\r\n\r\n return null;\r\n}\r\n\r\n/**\r\n * Convert country code between formats\r\n *\r\n * @param code - Source country code\r\n * @param to - Target format\r\n * @returns Converted code or null\r\n */\r\nexport function convertCountryCode(\r\n code: string | number,\r\n to: CountryCodeFormat\r\n): string | null {\r\n const country = getCountry(code);\r\n if (!country) return null;\r\n\r\n switch (to) {\r\n case 'alpha2':\r\n return country.alpha2;\r\n case 'alpha3':\r\n return country.alpha3;\r\n case 'numeric':\r\n return country.numeric;\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Get all countries\r\n *\r\n * @returns Array of all countries\r\n */\r\nexport function getAllCountries(): Country[] {\r\n return [...COUNTRIES];\r\n}\r\n\r\n/**\r\n * Get countries by continent\r\n *\r\n * @param continent - Continent name\r\n * @returns Array of countries\r\n */\r\nexport function getCountriesByContinent(continent: string): Country[] {\r\n return COUNTRIES.filter(c => c.continent.toLowerCase() === continent.toLowerCase());\r\n}\r\n\r\n/**\r\n * Get countries by language\r\n *\r\n * @param language - Language code\r\n * @returns Array of countries\r\n */\r\nexport function getCountriesByLanguage(language: string): Country[] {\r\n const lang = language.toLowerCase();\r\n return COUNTRIES.filter(c => c.languages.some(l => l.toLowerCase() === lang));\r\n}\r\n\r\n/**\r\n * Search countries by name\r\n *\r\n * @param query - Search query\r\n * @returns Array of matching countries\r\n */\r\nexport function searchCountries(query: string): Country[] {\r\n if (!query || typeof query !== 'string') return [];\r\n const q = query.toLowerCase().trim();\r\n if (!q) return [];\r\n\r\n return COUNTRIES.filter(\r\n c =>\r\n c.name.toLowerCase().includes(q) ||\r\n c.officialName?.toLowerCase().includes(q) ||\r\n c.alpha2.toLowerCase() === q ||\r\n c.alpha3.toLowerCase() === q\r\n );\r\n}\r\n\r\n/**\r\n * Check if country code is valid\r\n *\r\n * @param code - Country code\r\n * @returns true if valid\r\n */\r\nexport function isValidCountryCode(code: string | number): boolean {\r\n return getCountry(code) !== null;\r\n}\r\n","/**\r\n * Timezone data by country code\r\n */\r\nexport const TIMEZONES_BY_COUNTRY: Record<string, string[]> = {\r\n // North America\r\n US: ['America/New_York', 'America/Chicago', 'America/Denver', 'America/Los_Angeles', 'America/Anchorage', 'Pacific/Honolulu'],\r\n CA: ['America/Toronto', 'America/Vancouver', 'America/Edmonton', 'America/Winnipeg', 'America/Halifax'],\r\n MX: ['America/Mexico_City', 'America/Tijuana', 'America/Cancun'],\r\n\r\n // Europe\r\n GB: ['Europe/London'],\r\n DE: ['Europe/Berlin'],\r\n FR: ['Europe/Paris'],\r\n IT: ['Europe/Rome'],\r\n ES: ['Europe/Madrid'],\r\n NL: ['Europe/Amsterdam'],\r\n BE: ['Europe/Brussels'],\r\n CH: ['Europe/Zurich'],\r\n AT: ['Europe/Vienna'],\r\n SE: ['Europe/Stockholm'],\r\n NO: ['Europe/Oslo'],\r\n DK: ['Europe/Copenhagen'],\r\n FI: ['Europe/Helsinki'],\r\n PL: ['Europe/Warsaw'],\r\n PT: ['Europe/Lisbon'],\r\n IE: ['Europe/Dublin'],\r\n GR: ['Europe/Athens'],\r\n CZ: ['Europe/Prague'],\r\n HU: ['Europe/Budapest'],\r\n RO: ['Europe/Bucharest'],\r\n\r\n // Asia\r\n CN: ['Asia/Shanghai', 'Asia/Hong_Kong'],\r\n JP: ['Asia/Tokyo'],\r\n KR: ['Asia/Seoul'],\r\n IN: ['Asia/Kolkata'],\r\n PK: ['Asia/Karachi'],\r\n BD: ['Asia/Dhaka'],\r\n ID: ['Asia/Jakarta', 'Asia/Makassar', 'Asia/Jayapura'],\r\n TH: ['Asia/Bangkok'],\r\n VN: ['Asia/Ho_Chi_Minh'],\r\n PH: ['Asia/Manila'],\r\n MY: ['Asia/Kuala_Lumpur'],\r\n SG: ['Asia/Singapore'],\r\n\r\n // Middle East\r\n AE: ['Asia/Dubai'],\r\n SA: ['Asia/Riyadh'],\r\n EG: ['Africa/Cairo'],\r\n TR: ['Europe/Istanbul'],\r\n IR: ['Asia/Tehran'],\r\n IL: ['Asia/Jerusalem'],\r\n QA: ['Asia/Qatar'],\r\n KW: ['Asia/Kuwait'],\r\n\r\n // Africa\r\n NG: ['Africa/Lagos'],\r\n ZA: ['Africa/Johannesburg'],\r\n KE: ['Africa/Nairobi'],\r\n MA: ['Africa/Casablanca'],\r\n DZ: ['Africa/Algiers'],\r\n\r\n // South America\r\n BR: ['America/Sao_Paulo', 'America/Manaus', 'America/Recife'],\r\n AR: ['America/Buenos_Aires'],\r\n CO: ['America/Bogota'],\r\n CL: ['America/Santiago'],\r\n PE: ['America/Lima'],\r\n\r\n // Oceania\r\n AU: ['Australia/Sydney', 'Australia/Melbourne', 'Australia/Brisbane', 'Australia/Perth', 'Australia/Adelaide'],\r\n NZ: ['Pacific/Auckland'],\r\n\r\n // Russia & CIS\r\n RU: ['Europe/Moscow', 'Asia/Yekaterinburg', 'Asia/Novosibirsk', 'Asia/Vladivostok'],\r\n UA: ['Europe/Kiev'],\r\n};\r\n\r\n/**\r\n * Default timezone by country\r\n */\r\nexport const DEFAULT_TIMEZONE: Record<string, string> = {\r\n US: 'America/New_York',\r\n CA: 'America/Toronto',\r\n MX: 'America/Mexico_City',\r\n GB: 'Europe/London',\r\n DE: 'Europe/Berlin',\r\n FR: 'Europe/Paris',\r\n IT: 'Europe/Rome',\r\n ES: 'Europe/Madrid',\r\n NL: 'Europe/Amsterdam',\r\n BE: 'Europe/Brussels',\r\n CH: 'Europe/Zurich',\r\n AT: 'Europe/Vienna',\r\n SE: 'Europe/Stockholm',\r\n NO: 'Europe/Oslo',\r\n DK: 'Europe/Copenhagen',\r\n FI: 'Europe/Helsinki',\r\n PL: 'Europe/Warsaw',\r\n PT: 'Europe/Lisbon',\r\n IE: 'Europe/Dublin',\r\n GR: 'Europe/Athens',\r\n CZ: 'Europe/Prague',\r\n HU: 'Europe/Budapest',\r\n RO: 'Europe/Bucharest',\r\n CN: 'Asia/Shanghai',\r\n JP: 'Asia/Tokyo',\r\n KR: 'Asia/Seoul',\r\n IN: 'Asia/Kolkata',\r\n PK: 'Asia/Karachi',\r\n BD: 'Asia/Dhaka',\r\n ID: 'Asia/Jakarta',\r\n TH: 'Asia/Bangkok',\r\n VN: 'Asia/Ho_Chi_Minh',\r\n PH: 'Asia/Manila',\r\n MY: 'Asia/Kuala_Lumpur',\r\n SG: 'Asia/Singapore',\r\n AE: 'Asia/Dubai',\r\n SA: 'Asia/Riyadh',\r\n EG: 'Africa/Cairo',\r\n TR: 'Europe/Istanbul',\r\n IR: 'Asia/Tehran',\r\n IL: 'Asia/Jerusalem',\r\n QA: 'Asia/Qatar',\r\n KW: 'Asia/Kuwait',\r\n NG: 'Africa/Lagos',\r\n ZA: 'Africa/Johannesburg',\r\n KE: 'Africa/Nairobi',\r\n MA: 'Africa/Casablanca',\r\n DZ: 'Africa/Algiers',\r\n BR: 'America/Sao_Paulo',\r\n AR: 'America/Buenos_Aires',\r\n CO: 'America/Bogota',\r\n CL: 'America/Santiago',\r\n PE: 'America/Lima',\r\n AU: 'Australia/Sydney',\r\n NZ: 'Pacific/Auckland',\r\n RU: 'Europe/Moscow',\r\n UA: 'Europe/Kiev',\r\n};\r\n","import { TIMEZONES_BY_COUNTRY, DEFAULT_TIMEZONE } from './data/timezones';\r\n\r\n/**\r\n * Get all timezones for a country\r\n *\r\n * @param countryCode - ISO country code\r\n * @returns Array of timezone names\r\n */\r\nexport function getTimezonesByCountry(countryCode: string): string[] {\r\n if (!countryCode || typeof countryCode !== 'string') return [];\r\n return TIMEZONES_BY_COUNTRY[countryCode.toUpperCase()] || [];\r\n}\r\n\r\n/**\r\n * Get default timezone for a country\r\n *\r\n * @param countryCode - ISO country code\r\n * @returns Default timezone or null\r\n */\r\nexport function getDefaultTimezone(countryCode: string): string | null {\r\n if (!countryCode || typeof countryCode !== 'string') return null;\r\n return DEFAULT_TIMEZONE[countryCode.toUpperCase()] || null;\r\n}\r\n\r\n/**\r\n * Get current time in a country's timezone\r\n *\r\n * @param countryCode - ISO country code\r\n * @returns Date in country's timezone\r\n */\r\nexport function getCurrentTimeInCountry(countryCode: string): Date | null {\r\n const timezone = getDefaultTimezone(countryCode);\r\n if (!timezone) return null;\r\n\r\n try {\r\n // Create a date string in the target timezone and parse it\r\n const now = new Date();\r\n const options: Intl.DateTimeFormatOptions = {\r\n timeZone: timezone,\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false,\r\n };\r\n\r\n const formatter = new Intl.DateTimeFormat('en-CA', options);\r\n const parts = formatter.formatToParts(now);\r\n\r\n const getPart = (type: string) => parts.find(p => p.type === type)?.value || '0';\r\n\r\n return new Date(\r\n parseInt(getPart('year')),\r\n parseInt(getPart('month')) - 1,\r\n parseInt(getPart('day')),\r\n parseInt(getPart('hour')),\r\n parseInt(getPart('minute')),\r\n parseInt(getPart('second'))\r\n );\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Get timezone offset for a country\r\n *\r\n * @param countryCode - ISO country code\r\n * @returns Offset string (e.g., \"+05:00\") or null\r\n */\r\nexport function getTimezoneOffset(countryCode: string): string | null {\r\n const timezone = getDefaultTimezone(countryCode);\r\n if (!timezone) return null;\r\n\r\n try {\r\n const now = new Date();\r\n const options: Intl.DateTimeFormatOptions = {\r\n timeZone: timezone,\r\n timeZoneName: 'shortOffset',\r\n };\r\n\r\n const formatter = new Intl.DateTimeFormat('en-US', options);\r\n const parts = formatter.formatToParts(now);\r\n const tzPart = parts.find(p => p.type === 'timeZoneName');\r\n\r\n if (tzPart?.value) {\r\n // Convert \"GMT+5\" to \"+05:00\"\r\n const match = tzPart.value.match(/GMT([+-])(\\d+)(?::(\\d+))?/);\r\n if (match) {\r\n const sign = match[1];\r\n const hours = match[2].padStart(2, '0');\r\n const minutes = (match[3] || '00').padStart(2, '0');\r\n return `${sign}${hours}:${minutes}`;\r\n }\r\n }\r\n return null;\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Convert time between timezones\r\n *\r\n * @param date - Date to convert\r\n * @param fromCountry - Source country code\r\n * @param toCountry - Target country code\r\n * @returns Converted date or null\r\n */\r\nexport function convertTimeBetweenCountries(\r\n date: Date,\r\n _fromCountry: string,\r\n toCountry: string\r\n): Date | null {\r\n const toTimezone = getDefaultTimezone(toCountry);\r\n if (!toTimezone) return null;\r\n\r\n try {\r\n const options: Intl.DateTimeFormatOptions = {\r\n timeZone: toTimezone,\r\n year: 'numeric',\r\n month: '2-digit',\r\n day: '2-digit',\r\n hour: '2-digit',\r\n minute: '2-digit',\r\n second: '2-digit',\r\n hour12: false,\r\n };\r\n\r\n const formatter = new Intl.DateTimeFormat('en-CA', options);\r\n const parts = formatter.formatToParts(date);\r\n\r\n const getPart = (type: string) => parts.find(p => p.type === type)?.value || '0';\r\n\r\n return new Date(\r\n parseInt(getPart('year')),\r\n parseInt(getPart('month')) - 1,\r\n parseInt(getPart('day')),\r\n parseInt(getPart('hour')),\r\n parseInt(getPart('minute')),\r\n parseInt(getPart('second'))\r\n );\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Format time for a specific timezone\r\n *\r\n * @param date - Date to format\r\n * @param countryCode - Country code\r\n * @param options - Intl.DateTimeFormat options\r\n * @returns Formatted time string\r\n */\r\nexport function formatTimeForCountry(\r\n date: Date,\r\n countryCode: string,\r\n options: Partial<Intl.DateTimeFormatOptions> = {}\r\n): string {\r\n const timezone = getDefaultTimezone(countryCode);\r\n if (!timezone) return date.toISOString();\r\n\r\n try {\r\n const formatOptions: Intl.DateTimeFormatOptions = {\r\n timeZone: timezone,\r\n ...options,\r\n };\r\n\r\n return new Intl.DateTimeFormat('en-US', formatOptions).format(date);\r\n } catch {\r\n return date.toISOString();\r\n }\r\n}\r\n","import type { CurrencyInfo } from '../../types';\r\n\r\n/**\r\n * Currency information by currency code\r\n */\r\nexport const CURRENCIES: Record<string, CurrencyInfo> = {\r\n USD: { code: 'USD', symbol: '$', name: 'US Dollar', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n EUR: { code: 'EUR', symbol: 'โ‚ฌ', name: 'Euro', decimals: 2, symbolPosition: 'before', thousandsSeparator: '.', decimalSeparator: ',' },\r\n GBP: { code: 'GBP', symbol: 'ยฃ', name: 'British Pound', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n JPY: { code: 'JPY', symbol: 'ยฅ', name: 'Japanese Yen', decimals: 0, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n CNY: { code: 'CNY', symbol: 'ยฅ', name: 'Chinese Yuan', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n INR: { code: 'INR', symbol: 'โ‚น', name: 'Indian Rupee', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n PKR: { code: 'PKR', symbol: 'Rs', name: 'Pakistani Rupee', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n BDT: { code: 'BDT', symbol: 'เงณ', name: 'Bangladeshi Taka', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n AUD: { code: 'AUD', symbol: 'A$', name: 'Australian Dollar', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n CAD: { code: 'CAD', symbol: 'C$', name: 'Canadian Dollar', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n CHF: { code: 'CHF', symbol: 'CHF', name: 'Swiss Franc', decimals: 2, symbolPosition: 'before', thousandsSeparator: \"'\", decimalSeparator: '.' },\r\n HKD: { code: 'HKD', symbol: 'HK$', name: 'Hong Kong Dollar', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n SGD: { code: 'SGD', symbol: 'S$', name: 'Singapore Dollar', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n NZD: { code: 'NZD', symbol: 'NZ$', name: 'New Zealand Dollar', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n KRW: { code: 'KRW', symbol: 'โ‚ฉ', name: 'South Korean Won', decimals: 0, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n MXN: { code: 'MXN', symbol: '$', name: 'Mexican Peso', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n BRL: { code: 'BRL', symbol: 'R$', name: 'Brazilian Real', decimals: 2, symbolPosition: 'before', thousandsSeparator: '.', decimalSeparator: ',' },\r\n RUB: { code: 'RUB', symbol: 'โ‚ฝ', name: 'Russian Ruble', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n ZAR: { code: 'ZAR', symbol: 'R', name: 'South African Rand', decimals: 2, symbolPosition: 'before', thousandsSeparator: ' ', decimalSeparator: '.' },\r\n TRY: { code: 'TRY', symbol: 'โ‚บ', name: 'Turkish Lira', decimals: 2, symbolPosition: 'before', thousandsSeparator: '.', decimalSeparator: ',' },\r\n AED: { code: 'AED', symbol: 'ุฏ.ุฅ', name: 'UAE Dirham', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n SAR: { code: 'SAR', symbol: '๏ทผ', name: 'Saudi Riyal', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n QAR: { code: 'QAR', symbol: '๏ทผ', name: 'Qatari Riyal', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n KWD: { code: 'KWD', symbol: 'ุฏ.ูƒ', name: 'Kuwaiti Dinar', decimals: 3, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n EGP: { code: 'EGP', symbol: 'Eยฃ', name: 'Egyptian Pound', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n NGN: { code: 'NGN', symbol: 'โ‚ฆ', name: 'Nigerian Naira', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n KES: { code: 'KES', symbol: 'KSh', name: 'Kenyan Shilling', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n THB: { code: 'THB', symbol: 'เธฟ', name: 'Thai Baht', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n MYR: { code: 'MYR', symbol: 'RM', name: 'Malaysian Ringgit', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n IDR: { code: 'IDR', symbol: 'Rp', name: 'Indonesian Rupiah', decimals: 0, symbolPosition: 'before', thousandsSeparator: '.', decimalSeparator: ',' },\r\n PHP: { code: 'PHP', symbol: 'โ‚ฑ', name: 'Philippine Peso', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n VND: { code: 'VND', symbol: 'โ‚ซ', name: 'Vietnamese Dong', decimals: 0, symbolPosition: 'after', thousandsSeparator: '.', decimalSeparator: ',' },\r\n PLN: { code: 'PLN', symbol: 'zล‚', name: 'Polish Zloty', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n SEK: { code: 'SEK', symbol: 'kr', name: 'Swedish Krona', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n NOK: { code: 'NOK', symbol: 'kr', name: 'Norwegian Krone', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n DKK: { code: 'DKK', symbol: 'kr', name: 'Danish Krone', decimals: 2, symbolPosition: 'after', thousandsSeparator: '.', decimalSeparator: ',' },\r\n CZK: { code: 'CZK', symbol: 'Kฤ', name: 'Czech Koruna', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n HUF: { code: 'HUF', symbol: 'Ft', name: 'Hungarian Forint', decimals: 0, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n RON: { code: 'RON', symbol: 'lei', name: 'Romanian Leu', decimals: 2, symbolPosition: 'after', thousandsSeparator: '.', decimalSeparator: ',' },\r\n UAH: { code: 'UAH', symbol: 'โ‚ด', name: 'Ukrainian Hryvnia', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n ILS: { code: 'ILS', symbol: 'โ‚ช', name: 'Israeli Shekel', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n IRR: { code: 'IRR', symbol: '๏ทผ', name: 'Iranian Rial', decimals: 0, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n ARS: { code: 'ARS', symbol: '$', name: 'Argentine Peso', decimals: 2, symbolPosition: 'before', thousandsSeparator: '.', decimalSeparator: ',' },\r\n COP: { code: 'COP', symbol: '$', name: 'Colombian Peso', decimals: 0, symbolPosition: 'before', thousandsSeparator: '.', decimalSeparator: ',' },\r\n CLP: { code: 'CLP', symbol: '$', name: 'Chilean Peso', decimals: 0, symbolPosition: 'before', thousandsSeparator: '.', decimalSeparator: ',' },\r\n PEN: { code: 'PEN', symbol: 'S/', name: 'Peruvian Sol', decimals: 2, symbolPosition: 'before', thousandsSeparator: ',', decimalSeparator: '.' },\r\n MAD: { code: 'MAD', symbol: 'ุฏ.ู….', name: 'Moroccan Dirham', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n DZD: { code: 'DZD', symbol: 'ุฏ.ุฌ', name: 'Algerian Dinar', decimals: 2, symbolPosition: 'after', thousandsSeparator: ' ', decimalSeparator: ',' },\r\n};\r\n\r\n/**\r\n * Currency by country code\r\n */\r\nexport const CURRENCY_BY_COUNTRY: Record<string, string> = {\r\n US: 'USD', CA: 'CAD', MX: 'MXN',\r\n GB: 'GBP', DE: 'EUR', FR: 'EUR', IT: 'EUR', ES: 'EUR', NL: 'EUR', BE: 'EUR',\r\n AT: 'EUR', PT: 'EUR', IE: 'EUR', GR: 'EUR', FI: 'EUR',\r\n CH: 'CHF', SE: 'SEK', NO: 'NOK', DK: 'DKK', PL: 'PLN',\r\n CZ: 'CZK', HU: 'HUF', RO: 'RON',\r\n CN: 'CNY', JP: 'JPY', KR: 'KRW', IN: 'INR', PK: 'PKR', BD: 'BDT',\r\n ID: 'IDR', TH: 'THB', VN: 'VND', PH: 'PHP', MY: 'MYR', SG: 'SGD',\r\n AE: 'AED', SA: 'SAR', EG: 'EGP', TR: 'TRY', IR: 'IRR', IL: 'ILS', QA: 'QAR', KW: 'KWD',\r\n NG: 'NGN', ZA: 'ZAR', KE: 'KES', MA: 'MAD', DZ: 'DZD',\r\n BR: 'BRL', AR: 'ARS', CO: 'COP', CL: 'CLP', PE: 'PEN',\r\n AU: 'AUD', NZ: 'NZD',\r\n RU: 'RUB', UA: 'UAH',\r\n};\r\n","import type { CurrencyInfo } from '../types';\r\nimport { CURRENCIES, CURRENCY_BY_COUNTRY } from './data/currencies';\r\n\r\n/**\r\n * Get currency info by currency code\r\n *\r\n * @param currencyCode - ISO 4217 currency code\r\n * @returns Currency info or null\r\n */\r\nexport function getCurrency(currencyCode: string): CurrencyInfo | null {\r\n if (!currencyCode || typeof currencyCode !== 'string') return null;\r\n return CURRENCIES[currencyCode.toUpperCase()] || null;\r\n}\r\n\r\n/**\r\n * Get currency by country code\r\n *\r\n * @param countryCode - ISO country code\r\n * @returns Currency info or null\r\n */\r\nexport function getCurrencyByCountry(countryCode: string): CurrencyInfo | null {\r\n if (!countryCode || typeof countryCode !== 'string') return null;\r\n const currencyCode = CURRENCY_BY_COUNTRY[countryCode.toUpperCase()];\r\n if (!currencyCode) return null;\r\n return getCurrency(currencyCode);\r\n}\r\n\r\n/**\r\n * Format currency amount\r\n *\r\n * @param amount - Amount to format\r\n * @param currencyCode - Currency code or country code\r\n * @returns Formatted currency string\r\n */\r\nexport function formatCurrency(amount: number, currencyCode: string): string {\r\n if (typeof amount !== 'number' || isNaN(amount)) return '';\r\n\r\n // Try to get currency directly, or by country\r\n let currency = getCurrency(currencyCode);\r\n if (!currency) {\r\n currency = getCurrencyByCountry(currencyCode);\r\n }\r\n\r\n if (!currency) {\r\n return amount.toFixed(2);\r\n }\r\n\r\n // Format the number\r\n const absoluteAmount = Math.abs(amount);\r\n const fixedAmount = absoluteAmount.toFixed(currency.decimals);\r\n\r\n // Split into integer and decimal parts\r\n const [integerPart, decimalPart] = fixedAmount.split('.');\r\n\r\n // Add thousands separator\r\n const formattedInteger = integerPart.replace(\r\n /\\B(?=(\\d{3})+(?!\\d))/g,\r\n currency.thousandsSeparator\r\n );\r\n\r\n // Combine parts\r\n let formattedAmount = formattedInteger;\r\n if (currency.decimals > 0 && decimalPart) {\r\n formattedAmount += currency.decimalSeparator + decimalPart;\r\n }\r\n\r\n // Add symbol\r\n if (currency.symbolPosition === 'before') {\r\n formattedAmount = currency.symbol + formattedAmount;\r\n } else {\r\n formattedAmount = formattedAmount + ' ' + currency.symbol;\r\n }\r\n\r\n // Handle negative\r\n if (amount < 0) {\r\n formattedAmount = '-' + formattedAmount;\r\n }\r\n\r\n return formattedAmount;\r\n}\r\n\r\n/**\r\n * Parse currency string to number\r\n *\r\n * @param value - Currency string\r\n * @param currencyCode - Currency code\r\n * @returns Parsed number or NaN\r\n */\r\nexport function parseCurrency(value: string, currencyCode: string): number {\r\n if (!value || typeof value !== 'string') return NaN;\r\n\r\n const currency = getCurrency(currencyCode);\r\n if (!currency) {\r\n // Try basic parsing\r\n return parseFloat(value.replace(/[^\\d.-]/g, ''));\r\n }\r\n\r\n // Remove currency symbol\r\n let cleaned = value.replace(currency.symbol, '').trim();\r\n\r\n // Handle thousands and decimal separators\r\n // Replace thousands separator with nothing\r\n cleaned = cleaned.split(currency.thousandsSeparator).join('');\r\n\r\n // Replace decimal separator with .\r\n if (currency.decimalSeparator !== '.') {\r\n cleaned = cleaned.replace(currency.decimalSeparator, '.');\r\n }\r\n\r\n // Remove any remaining non-numeric characters except . and -\r\n cleaned = cleaned.replace(/[^\\d.-]/g, '');\r\n\r\n return parseFloat(cleaned);\r\n}\r\n\r\n/**\r\n * Get all supported currencies\r\n *\r\n * @returns Array of currency info\r\n */\r\nexport function getAllCurrencies(): CurrencyInfo[] {\r\n return Object.values(CURRENCIES);\r\n}\r\n\r\n/**\r\n * Get currency symbol\r\n *\r\n * @param currencyCode - Currency code\r\n * @returns Symbol or null\r\n */\r\nexport function getCurrencySymbol(currencyCode: string): string | null {\r\n const currency = getCurrency(currencyCode);\r\n return currency?.symbol || null;\r\n}\r\n\r\n/**\r\n * Convert amount between currencies (requires exchange rate)\r\n *\r\n * @param amount - Amount to convert\r\n * @param fromCurrency - Source currency code\r\n * @param toCurrency - Target currency code\r\n * @param exchangeRate - Exchange rate (from -> to)\r\n * @returns Converted amount\r\n */\r\nexport function convertCurrency(\r\n amount: number,\r\n _fromCurrency: string,\r\n toCurrency: string,\r\n exchangeRate: number\r\n): number {\r\n if (typeof amount !== 'number' || isNaN(amount)) return NaN;\r\n if (typeof exchangeRate !== 'number' || isNaN(exchangeRate)) return NaN;\r\n\r\n const toCurrencyInfo = getCurrency(toCurrency);\r\n const converted = amount * exchangeRate;\r\n\r\n if (toCurrencyInfo) {\r\n // Round to appropriate decimal places\r\n const multiplier = Math.pow(10, toCurrencyInfo.decimals);\r\n return Math.round(converted * multiplier) / multiplier;\r\n }\r\n\r\n return converted;\r\n}\r\n","import { getCountryByAlpha2 } from './codes';\r\n\r\n/**\r\n * Get flag emoji for a country code\r\n *\r\n * @param countryCode - ISO alpha-2 country code\r\n * @returns Flag emoji or null if invalid\r\n *\r\n * @example\r\n * ```typescript\r\n * getFlagEmoji('US'); // '๐Ÿ‡บ๐Ÿ‡ธ'\r\n * getFlagEmoji('PK'); // '๐Ÿ‡ต๐Ÿ‡ฐ'\r\n * ```\r\n */\r\nexport function getFlagEmoji(countryCode: string): string | null {\r\n if (!countryCode || typeof countryCode !== 'string') return null;\r\n\r\n const code = countryCode.toUpperCase().trim();\r\n if (code.length !== 2) return null;\r\n\r\n // Check if valid country code\r\n const country = getCountryByAlpha2(code);\r\n if (country) {\r\n return country.flag;\r\n }\r\n\r\n // For invalid country codes, return null\r\n return null;\r\n}\r\n\r\n/**\r\n * Get country code from flag emoji\r\n *\r\n * @param emoji - Flag emoji\r\n * @returns ISO alpha-2 country code or null\r\n *\r\n * @example\r\n * ```typescript\r\n * getCountryFromEmoji('๐Ÿ‡บ๐Ÿ‡ธ'); // 'US'\r\n * getCountryFromEmoji('๐Ÿ‡ต๐Ÿ‡ฐ'); // 'PK'\r\n * ```\r\n */\r\nexport function getCountryFromEmoji(emoji: string): string | null {\r\n if (!emoji || typeof emoji !== 'string') return null;\r\n\r\n try {\r\n const codePoints = [...emoji].map(char => char.codePointAt(0) || 0);\r\n\r\n // Check if these are regional indicator symbols\r\n if (codePoints.length !== 2) return null;\r\n\r\n const chars = codePoints.map(cp => {\r\n if (cp >= 0x1f1e6 && cp <= 0x1f1ff) {\r\n return String.fromCharCode(65 + (cp - 0x1f1e6));\r\n }\r\n return null;\r\n });\r\n\r\n if (chars.some(c => c === null)) return null;\r\n\r\n return chars.join('');\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\n/**\r\n * Check if string is a valid flag emoji\r\n *\r\n * @param str - String to check\r\n * @returns true if valid flag emoji\r\n */\r\nexport function isFlagEmoji(str: string): boolean {\r\n if (!str || typeof str !== 'string') return false;\r\n\r\n const countryCode = getCountryFromEmoji(str);\r\n if (!countryCode) return false;\r\n\r\n // Verify it's a valid country\r\n return getCountryByAlpha2(countryCode) !== null;\r\n}\r\n\r\n/**\r\n * Get all flag emojis\r\n *\r\n * @returns Record of country code to flag emoji\r\n */\r\nexport function getAllFlags(): Record<string, string> {\r\n const flags: Record<string, string> = {};\r\n\r\n // Generate for all uppercase letter combinations\r\n for (let i = 65; i <= 90; i++) {\r\n for (let j = 65; j <= 90; j++) {\r\n const code = String.fromCharCode(i, j);\r\n const country = getCountryByAlpha2(code);\r\n if (country) {\r\n flags[code] = country.flag;\r\n }\r\n }\r\n }\r\n\r\n return flags;\r\n}\r\n","import { getCountryByAlpha2, getAllCountries } from './codes';\r\nimport { getPhoneFormat } from './data/phoneFormats';\r\n\r\n/**\r\n * Get dialing code for a country\r\n *\r\n * @param countryCode - ISO alpha-2 country code\r\n * @returns Dialing code (e.g., \"+1\", \"+92\") or null\r\n */\r\nexport function getDialingCode(countryCode: string): string | null {\r\n if (!countryCode || typeof countryCode !== 'string') return null;\r\n\r\n const country = getCountryByAlpha2(countryCode);\r\n if (country) {\r\n return country.dialCode;\r\n }\r\n\r\n const phoneFormat = getPhoneFormat(countryCode);\r\n return phoneFormat?.dialCode || null;\r\n}\r\n\r\n/**\r\n * Get country code from dialing code\r\n *\r\n * @param dialCode - Dialing code (with or without +)\r\n * @returns Array of possible country codes\r\n */\r\nexport function getCountriesByDialingCode(dialCode: string): string[] {\r\n if (!dialCode || typeof dialCode !== 'string') return [];\r\n\r\n // Normalize dial code\r\n let normalized = dialCode.trim();\r\n if (!normalized.startsWith('+')) {\r\n normalized = '+' + normalized;\r\n }\r\n\r\n const countries: string[] = [];\r\n\r\n // Use getAllCountries instead of require for ESM compatibility\r\n const allCountries = getAllCountries();\r\n\r\n for (const country of allCountries) {\r\n if (country.dialCode === normalized) {\r\n countries.push(country.alpha2);\r\n }\r\n }\r\n\r\n return countries;\r\n}\r\n\r\n/**\r\n * Format phone number with dialing code\r\n *\r\n * @param nationalNumber - National phone number\r\n * @param countryCode - ISO country code\r\n * @returns Formatted international number\r\n */\r\nexport function formatWithDialingCode(nationalNumber: string, countryCode: string): string {\r\n const dialCode = getDialingCode(countryCode);\r\n if (!dialCode) return nationalNumber;\r\n\r\n // Clean the national number\r\n let cleaned = nationalNumber.replace(/\\D/g, '');\r\n\r\n // Remove leading zero if present\r\n if (cleaned.startsWith('0')) {\r\n cleaned = cleaned.slice(1);\r\n }\r\n\r\n return `${dialCode} ${cleaned}`;\r\n}\r\n\r\n/**\r\n * Check if phone number includes valid dialing code\r\n *\r\n * @param phone - Phone number\r\n * @returns true if has valid dialing code\r\n */\r\nexport function hasValidDialingCode(phone: string): boolean {\r\n if (!phone || typeof phone !== 'string') return false;\r\n\r\n const cleaned = phone.trim();\r\n if (!cleaned.startsWith('+')) return false;\r\n\r\n const allCountries = getAllCountries();\r\n\r\n // Check each country's dial code\r\n for (const country of allCountries) {\r\n const dialDigits = country.dialCode.replace(/\\D/g, '');\r\n const phoneDigits = cleaned.replace(/\\D/g, '');\r\n\r\n if (phoneDigits.startsWith(dialDigits)) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n}\r\n"]}