@hebcal/geo-sqlite 5.10.1 → 5.10.3

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.
package/README.md CHANGED
@@ -25,6 +25,15 @@ const loc3 = db.lookupLegacyCity('IL-Netanya');
25
25
  db.close();
26
26
  ```
27
27
 
28
+ ## Data attribution
29
+
30
+ Some location data is incorporated directly into this package, including the
31
+ bundled fixtures used by `make-test-dbs` to build test databases (the ~60
32
+ "classic" Hebcal cities, `cities-patch.txt`, and related country/admin1 data).
33
+ This data is derived from [GeoNames.org](https://www.geonames.org/) and is used
34
+ under the
35
+ [Creative Commons Attribution 4.0 License](https://creativecommons.org/licenses/by/4.0/).
36
+
28
37
  ## Classes
29
38
 
30
39
  <dl>
package/bin/make-test-dbs CHANGED
@@ -1,8 +1,9 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  // Builds geonames.sqlite3 and zips.sqlite3 for testing without downloading
4
- // from geonames.org. Uses cities-patch.txt as the main geonames data source
5
- // and minimal fixture files bundled in this repo.
4
+ // from geonames.org. Uses the ~60 "classic" Hebcal cities (cities5000.txt) plus
5
+ // cities-patch.txt as the geonames data source, along with minimal fixture files
6
+ // bundled in this repo.
6
7
 
7
8
  import {buildGeonamesSqlite, makeZipsSqlite} from '@hebcal/geo-sqlite';
8
9
  import {pino} from 'pino';
@@ -28,11 +29,11 @@ const zipsDb = path.join(outDir, 'zips.sqlite3');
28
29
  await buildGeonamesSqlite({
29
30
  dbFilename: geonamesDb,
30
31
  countryInfotxt: path.join(repoDir, 'test/fixtures/countryInfo.txt'),
31
- cities5000txt: path.join(repoDir, 'cities-patch.txt'),
32
- citiesPatch: '/dev/null',
32
+ cities5000txt: path.join(repoDir, 'test/fixtures/cities5000.txt'),
33
+ citiesPatch: path.join(repoDir, 'cities-patch.txt'),
33
34
  admin1CodesASCIItxt: path.join(repoDir, 'test/fixtures/admin1CodesASCII.txt'),
34
35
  ILtxt: '/dev/null',
35
- ILalternate: '/dev/null',
36
+ ILalternate: path.join(repoDir, 'test/fixtures/IL-alt.txt'),
36
37
  population,
37
38
  logger,
38
39
  });
package/dist/index.js CHANGED
@@ -1,4 +1,4 @@
1
- /*! @hebcal/geo-sqlite v5.10.1 */
1
+ /*! @hebcal/geo-sqlite v5.10.3 */
2
2
  import { DatabaseSync } from 'node:sqlite';
3
3
  import fs$1, { existsSync } from 'node:fs';
4
4
  import QuickLRU from 'quick-lru';
@@ -512,7 +512,7 @@ function munge(s) {
512
512
  }
513
513
 
514
514
  // DO NOT EDIT THIS AUTO-GENERATED FILE!
515
- const version = '5.10.1';
515
+ const version = '5.10.3';
516
516
 
517
517
  const GEONAME_SQL = `SELECT
518
518
  g.name as name,
@@ -892,7 +892,7 @@ class GeoDb {
892
892
  }
893
893
  // this is a ZIP code prefix, a string with 1-4 digits
894
894
  const zipA = qraw.substring(0, 5);
895
- const zipB = String(+zipA + 1).padStart(zipA.length, '0');
895
+ const zipB = zipA === '9' ? 'A' :String(+zipA + 1).padStart(zipA.length, '0');
896
896
  return this.zipCompStmt.all(zipA, zipB).map(GeoDb.zipResultToObj);
897
897
  } else {
898
898
  if (!this.geonamesCompStmt) {
package/geo-sqlite.d.ts CHANGED
@@ -1,28 +1,161 @@
1
- /// <reference types="node"/>
2
-
3
1
  import {Location} from '@hebcal/core';
4
2
 
5
- declare module '@hebcal/geo-sqlite' {
6
- export type AutoComplete = {
7
- id: number | string;
8
- value: string;
9
- geo: 'geoname' | 'zip';
10
- asciiname: string;
11
- admin1?: string;
12
- country?: string;
13
- population?: number;
14
- latitude?: number;
15
- longitude?: number;
16
- timezone?: string;
17
- };
18
- export class GeoDb {
19
- constructor(logger: any, zipsFilename: string, geonamesFilename: string);
20
- close(): void;
21
- lookupZip(zip: string): Location;
22
- lookupGeoname(geonameid: number): Location;
23
- lookupLegacyCity(cityName: string): Location;
24
- autoComplete(qraw: string, latlong?: boolean): AutoComplete[];
25
- cacheZips(): void;
26
- cacheGeonames(): void;
27
- }
3
+ export type AutoComplete = {
4
+ id: number | string;
5
+ value: string;
6
+ geo: 'geoname' | 'zip';
7
+ name?: string;
8
+ asciiname?: string;
9
+ admin1?: string;
10
+ country?: string;
11
+ cc?: string;
12
+ population?: number;
13
+ latitude?: number;
14
+ longitude?: number;
15
+ timezone?: string;
16
+ elevation?: number;
17
+ };
18
+
19
+ /**
20
+ * Options for configuring the GeoDb constructor.
21
+ */
22
+ export type GeoDbOptions = {
23
+ /** Maximum number of entries in the ZIP code LRU cache. Default is 150. */
24
+ zipsCacheSize?: number;
25
+ /** Maximum number of entries in the geonames LRU cache. Default is 750. */
26
+ geonamesCacheSize?: number;
27
+ };
28
+
29
+ /**
30
+ * Options for `buildGeonamesSqlite`.
31
+ */
32
+ export type BuildGeonamesSqliteOptions = {
33
+ /** Path to the output SQLite database file. */
34
+ dbFilename: string;
35
+ /** Path to countryInfo.txt from geonames.org. */
36
+ countryInfotxt: string;
37
+ /** Path to cities5000.txt (or similar) from geonames.org. */
38
+ cities5000txt: string;
39
+ /** Path to a TSV patch file with additional city rows. */
40
+ citiesPatch: string;
41
+ /** Path to admin1CodesASCII.txt from geonames.org. */
42
+ admin1CodesASCIItxt: string;
43
+ /** Path to IL.txt (Israel geonames) from geonames.org. */
44
+ ILtxt: string;
45
+ /** Path to IL alternate names file from geonames.org. */
46
+ ILalternate: string;
47
+ /** Logger instance (e.g. pino). */
48
+ logger: any;
49
+ /** Minimum population filter for PPL feature codes. */
50
+ population?: number;
51
+ };
52
+
53
+ /**
54
+ * Wrapper around SQLite databases for looking up geographic locations
55
+ * by ZIP code, geoname ID, or legacy Hebcal city name.
56
+ */
57
+ export class GeoDb {
58
+ /**
59
+ * Opens the ZIP code and geonames SQLite databases.
60
+ * @param logger - Logger instance (e.g. pino), or `null` to disable logging
61
+ * @param zipsFilename - Path to the ZIP codes SQLite database file
62
+ * @param geonamesFilename - Path to the geonames SQLite database file
63
+ * @param options - Optional cache size configuration
64
+ */
65
+ constructor(logger: any, zipsFilename: string, geonamesFilename: string, options?: GeoDbOptions);
66
+
67
+ /** Closes both database handles. */
68
+ close(): void;
69
+
70
+ /**
71
+ * Looks up a US ZIP code and returns the corresponding location.
72
+ * @param zip - 5-digit US ZIP code (leading zeros preserved as string)
73
+ * @returns The location, or `null` if not found
74
+ */
75
+ lookupZip(zip: string): Location;
76
+
77
+ /**
78
+ * Looks up a geonames.org ID and returns the corresponding location.
79
+ * @param geonameid - Numeric geoname ID from geonames.org
80
+ * @returns The location, or `null` if not found
81
+ */
82
+ lookupGeoname(geonameid: number): Location;
83
+
84
+ /**
85
+ * Looks up a legacy Hebcal city name (e.g. "Jerusalem" or "New York")
86
+ * and returns the corresponding location.
87
+ * @param cityName - Legacy city name string
88
+ * @returns The location, or `null` if not found
89
+ */
90
+ lookupLegacyCity(cityName: string): Location;
91
+
92
+ /**
93
+ * Generates autocomplete suggestions for a query string.
94
+ * Numeric queries search ZIP codes; alphabetic queries search geonames
95
+ * and ZIP city names via full-text search.
96
+ * @param qraw - Raw query string from user input
97
+ * @param latlong - If `true`, include latitude, longitude, timezone, and population in results
98
+ * @returns Array of autocomplete suggestion objects, sorted by population
99
+ */
100
+ autoComplete(qraw: string, latlong?: boolean): AutoComplete[];
101
+
102
+ /**
103
+ * Reads the entire ZIP code database into an in-memory cache,
104
+ * replacing the default LRU cache. Useful for high-throughput servers.
105
+ */
106
+ cacheZips(): void;
107
+
108
+ /**
109
+ * Reads the entire geonames database into an in-memory cache,
110
+ * replacing the default LRU cache. Useful for high-throughput servers.
111
+ */
112
+ cacheGeonames(): void;
113
+
114
+ /**
115
+ * Returns the version string of the `@hebcal/geo-sqlite` package.
116
+ */
117
+ static version(): string;
118
+
119
+ /**
120
+ * Tests whether the given string begins with exactly 5 ASCII digits
121
+ * (a valid US ZIP code format).
122
+ * @param str - String to test
123
+ * @returns `true` if the string starts with 5 digits
124
+ */
125
+ static is5DigitZip(str: string): boolean;
126
+
127
+ /**
128
+ * Convenience wrapper around the `transliterate` function from the
129
+ * `transliteration` npm package. Converts Unicode text to ASCII.
130
+ * @param source - String to transliterate
131
+ * @param options - Options passed to the underlying `transliterate` function
132
+ * @returns Transliterated ASCII string
133
+ */
134
+ static transliterate(source: string, options?: any): string;
135
+
136
+ /**
137
+ * Builds a display string for a city from its name components.
138
+ * Applies special formatting for US ("USA") and UK ("UK") country names,
139
+ * and omits the admin1 subdivision when it duplicates the city name.
140
+ * @param cityName - City name, e.g. "Tel Aviv" or "Chicago"
141
+ * @param admin1 - First-level administrative subdivision, e.g. "Illinois"
142
+ * @param countryName - Full country name, e.g. "United States" or "Israel"
143
+ * @returns Formatted city description, e.g. "Chicago, Illinois, USA"
144
+ */
145
+ static geonameCityDescr(cityName: string, admin1: string, countryName: string): string;
28
146
  }
147
+
148
+ /**
149
+ * Builds the `geonames.sqlite3` database from raw text files
150
+ * downloaded from geonames.org.
151
+ * @param opts - Paths to input files and configuration
152
+ * @returns Resolves when the database has been built and closed
153
+ */
154
+ export function buildGeonamesSqlite(opts: BuildGeonamesSqliteOptions): Promise<boolean>;
155
+
156
+ /**
157
+ * Builds the `zips.sqlite3` database from a bundled SQL schema file.
158
+ * @param dbFilename - Path to the output SQLite database file
159
+ * @param sqlFile - Path to the SQL schema file to execute
160
+ */
161
+ export function makeZipsSqlite(dbFilename: string, sqlFile: string): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hebcal/geo-sqlite",
3
- "version": "5.10.1",
3
+ "version": "5.10.3",
4
4
  "author": "Michael J. Radwin (https://github.com/mjradwin)",
5
5
  "keywords": [
6
6
  "hebcal"
@@ -39,7 +39,7 @@
39
39
  ],
40
40
  "dependencies": {
41
41
  "@hebcal/cities": "^6.1.0",
42
- "@hebcal/core": "^6.4.1",
42
+ "@hebcal/core": "^6.5.0",
43
43
  "minimist": "^1.2.8",
44
44
  "pino": "^10.3.1",
45
45
  "pino-pretty": "^13.1.3",
@@ -0,0 +1,8 @@
1
+ 90000001 295629 he אשדוד 1
2
+ 90000002 295530 he באר שבע 1
3
+ 90000003 295277 he אילת 1
4
+ 90000004 294801 he חיפה 1
5
+ 90000005 281184 he ירושלים 1
6
+ 90000006 293918 he פתח תקווה 1
7
+ 90000007 293397 he תל אביב 1
8
+ 90000008 293322 he טבריה 1
@@ -50,7 +50,7 @@ GB.ENG England England 6269131
50
50
  GH.05 Ashanti Region Ashanti Region 2303611
51
51
  GN.B Boke Region Boke Region 2422465
52
52
  GR.ESYE43 Thessaly Thessaly 734786
53
- HU.05 Komarom-Esztergom Komarom-Esztergom 719828
53
+ HU.05 Budapest Budapest 3054643
54
54
  ID.31 Jakarta Jakarta 1642911
55
55
  IE.L Leinster Leinster 7521314
56
56
  IE.M Munster Munster 7778955
@@ -139,3 +139,32 @@ US.VA Virginia Virginia 6254928
139
139
  US.WA Washington Washington 5815135
140
140
  VE.15 Miranda State Miranda State 3632873
141
141
  ZA.05 KwaZulu-Natal KwaZulu-Natal 1085580
142
+ ZA.06 Gauteng Gauteng 1085594
143
+ US.GA Georgia Georgia 4197000
144
+ US.MD Maryland Maryland 4361885
145
+ US.OH Ohio Ohio 5165418
146
+ US.CO Colorado Colorado 5417618
147
+ US.MI Michigan Michigan 5001836
148
+ US.HI Hawaii Hawaii 5855797
149
+ US.NV Nevada Nevada 5509151
150
+ US.IL Illinois Illinois 4896861
151
+ US.MN Minnesota Minnesota 5037779
152
+ US.NE Nebraska Nebraska 5073708
153
+ US.RI Rhode Island Rhode Island 5224323
154
+ US.AZ Arizona Arizona 5551752
155
+ US.OR Oregon Oregon 5744337
156
+ US.MO Missouri Missouri 4398678
157
+ US.DC Washington, D.C. Washington, D.C. 4138106
158
+ IL.04 Haifa District Haifa District 294800
159
+ IQ.07 Baghdad Baghdad 98182
160
+ CO.34 Bogota D.C. Bogota D.C. 3688685
161
+ AR.07 Buenos Aires Buenos Aires 3433955
162
+ FI.01 Uusimaa Uusimaa 830673
163
+ UA.30 Kyiv City Kyiv City 703447
164
+ BO.04 La Paz Department La Paz Department 3911924
165
+ FR.11 Ile-de-France Ile-de-France 3012874
166
+ FR.93 Provence-Alpes-Cote d'Azur Provence-Alpes-Cote d'Azur 2985244
167
+ MX.07 Mexico City Mexico City 3530589
168
+ RU.48 Moscow Moscow 524894
169
+ RU.66 Saint Petersburg Saint Petersburg 536203
170
+ BR.27 Sao Paulo Sao Paulo 3448433
@@ -0,0 +1,65 @@
1
+ 295629 Ashdod Ashdod 31.79213 34.64966 P PPLA IL 01 220174 27 Asia/Jerusalem 2024-01-01
2
+ 4180439 Atlanta Atlanta 33.749 -84.38798 P PPLA US GA 498044 336 America/New_York 2024-01-01
3
+ 4671654 Austin Austin 30.26715 -97.74306 P PPLA US TX 931830 165 America/Chicago 2024-01-01
4
+ 98182 Baghdad Baghdad 33.34058 44.40088 P PPLA IQ 07 5672516 41 Asia/Baghdad 2024-01-01
5
+ 295530 Beer Sheva Beer Sheva 31.25181 34.7913 P PPLA IL 01 186600 285 Asia/Jerusalem 2024-01-01
6
+ 2950159 Berlin Berlin 52.52437 13.41053 P PPLA DE 16 3426354 43 Europe/Berlin 2024-01-01
7
+ 4347778 Baltimore Baltimore 39.29038 -76.61219 P PPLA US MD 593490 35 America/New_York 2024-01-01
8
+ 3688689 Bogota Bogota 4.60971 -74.08175 P PPLA CO 34 7674366 2582 America/Bogota 2024-01-01
9
+ 4930956 Boston Boston 42.35843 -71.05977 P PPLA US MA 617594 38 America/New_York 2024-01-01
10
+ 3054643 Budapest Budapest 47.49801 19.03991 P PPLA HU 05 1741041 104 Europe/Budapest 2024-01-01
11
+ 3435910 Buenos Aires Buenos Aires -34.61315 -58.37723 P PPLA AR 07 13076300 31 America/Argentina/Buenos_Aires 2024-01-01
12
+ 5110629 Buffalo Buffalo 42.88645 -78.87837 P PPLA US NY 278349 191 America/New_York 2024-01-01
13
+ 4887398 Chicago Chicago 41.85003 -87.65005 P PPLA US IL 2720546 180 America/Chicago 2024-01-01
14
+ 4508722 Cincinnati Cincinnati 39.162 -84.45689 P PPLA US OH 309317 267 America/New_York 2024-01-01
15
+ 5150529 Cleveland Cleveland 41.4995 -81.69541 P PPLA US OH 390113 204 America/New_York 2024-01-01
16
+ 4684888 Dallas Dallas 32.78306 -96.80667 P PPLA US TX 1300092 139 America/Chicago 2024-01-01
17
+ 5419384 Denver Denver 39.73915 -104.9847 P PPLA US CO 600158 1636 America/Denver 2024-01-01
18
+ 4990729 Detroit Detroit 42.33143 -83.04575 P PPLA US MI 713777 192 America/Detroit 2024-01-01
19
+ 295277 Eilat Eilat 29.55805 34.94821 P PPLA IL 01 47359 63 Asia/Jerusalem 2024-01-01
20
+ 2411585 Gibraltar Gibraltar 36.14474 -5.35257 P PPLA GI 26544 11 Europe/Gibraltar 2024-01-01
21
+ 294801 Haifa Haifa 32.81841 34.9885 P PPLA IL 04 267300 40 Asia/Jerusalem 2024-01-01
22
+ 5856195 Hawaii Hawaii 21.30694 -157.85833 P PPLA US HI 371657 18 Pacific/Honolulu 2024-01-01
23
+ 658225 Helsinki Helsinki 60.16952 24.93545 P PPLA FI 01 658864 26 Europe/Helsinki 2024-01-01
24
+ 4699066 Houston Houston 29.76328 -95.36327 P PPLA US TX 2296224 30 America/Chicago 2024-01-01
25
+ 281184 Jerusalem Jerusalem 31.76904 35.21633 P PPLA IL 06 801000 786 Asia/Jerusalem 2024-01-01
26
+ 993800 Johannesburg Johannesburg -26.20227 28.04363 P PPLA ZA 06 2026469 1767 Africa/Johannesburg 2024-01-01
27
+ 703448 Kiev Kiev 50.45466 30.5238 P PPLA UA 30 2797553 187 Europe/Kiev 2024-01-01
28
+ 3911925 La Paz La Paz -16.5 -68.15 P PPLA BO 04 812799 3782 America/La_Paz 2024-01-01
29
+ 5100572 Livingston Livingston 40.79593 -74.31487 P PPLA US NJ 29366 98 America/New_York 2024-01-01
30
+ 5506956 Las Vegas Las Vegas 36.17497 -115.13722 P PPLA US NV 583756 613 America/Los_Angeles 2024-01-01
31
+ 2643743 London London 51.50853 -0.12574 P PPLA GB ENG 7556900 25 Europe/London 2024-01-01
32
+ 5368361 Los Angeles Los Angeles 34.05223 -118.24368 P PPLA US CA 3971883 96 America/Los_Angeles 2024-01-01
33
+ 2995469 Marseilles Marseilles 43.29695 5.38107 P PPLA FR 93 870731 28 Europe/Paris 2024-01-01
34
+ 4164138 Miami Miami 25.77427 -80.19366 P PPLA US FL 441003 25 America/New_York 2024-01-01
35
+ 5037649 Minneapolis Minneapolis 44.97997 -93.26384 P PPLA US MN 410939 262 America/Chicago 2024-01-01
36
+ 2158177 Melbourne Melbourne -37.814 144.96332 P PPLA AU 06 4917750 25 Australia/Melbourne 2024-01-01
37
+ 3530597 Mexico City Mexico City 19.42847 -99.12766 P PPLA MX 07 12294193 2240 America/Mexico_City 2024-01-01
38
+ 6077243 Montreal Montreal 45.50884 -73.58781 P PPLA CA 10 1600000 216 America/Toronto 2024-01-01
39
+ 524901 Moscow Moscow 55.75222 37.61556 P PPLA RU 48 10381222 144 Europe/Moscow 2024-01-01
40
+ 5128581 New York New York 40.71427 -74.00597 P PPLA US NY 8175133 57 America/New_York 2024-01-01
41
+ 5074472 Omaha Omaha 41.25861 -95.93779 P PPLA US NE 408958 315 America/Chicago 2024-01-01
42
+ 6094817 Ottawa Ottawa 45.41117 -75.69812 P PPLA CA 08 812129 71 America/Toronto 2024-01-01
43
+ 3703443 Panama City Panama City 8.9936 -79.51973 P PPLA PA 408168 17 America/Panama 2024-01-01
44
+ 2988507 Paris Paris 48.85341 2.3488 P PPLA FR 11 2138551 42 Europe/Paris 2024-01-01
45
+ 5224082 Pawtucket Pawtucket 41.87871 -71.38256 P PPLA US RI 71148 0 America/New_York 2024-01-01
46
+ 293918 Petach Tikvah Petach Tikvah 32.08707 34.88747 P PPLA IL 02 236169 54 Asia/Jerusalem 2024-01-01
47
+ 4560349 Philadelphia Philadelphia 39.95233 -75.16379 P PPLA US PA 1567442 8 America/New_York 2024-01-01
48
+ 5308655 Phoenix Phoenix 33.44838 -112.07404 P PPLA US AZ 1660272 366 America/Phoenix 2024-01-01
49
+ 5206379 Pittsburgh Pittsburgh 40.44062 -79.99589 P PPLA US PA 302407 239 America/New_York 2024-01-01
50
+ 5224151 Providence Providence 41.82399 -71.41283 P PPLA US RI 190934 0 America/New_York 2024-01-01
51
+ 5746545 Portland Portland 45.52345 -122.67621 P PPLA US OR 632309 15 America/Los_Angeles 2024-01-01
52
+ 4407066 Saint Louis Saint Louis 38.62727 -90.19789 P PPLA US MO 319294 149 America/Chicago 2024-01-01
53
+ 498817 Saint Petersburg Saint Petersburg 59.93863 30.31413 P PPLA RU 66 5028000 11 Europe/Moscow 2024-01-01
54
+ 5391811 San Diego San Diego 32.71533 -117.15726 P PPLA US CA 1394928 20 America/Los_Angeles 2024-01-01
55
+ 5391959 San Francisco San Francisco 37.77493 -122.41942 P PPLA US CA 864816 28 America/Los_Angeles 2024-01-01
56
+ 3448439 Sao Paulo Sao Paulo -23.5475 -46.63611 P PPLA BR 27 10021295 769 America/Sao_Paulo 2024-01-01
57
+ 5809844 Seattle Seattle 47.60621 -122.33207 P PPLA US WA 684451 56 America/Los_Angeles 2024-01-01
58
+ 2147714 Sydney Sydney -33.86785 151.20732 P PPLA AU 02 4627345 58 Australia/Sydney 2024-01-01
59
+ 293397 Tel Aviv Tel Aviv 32.08088 34.78057 P PPLA IL 05 432892 15 Asia/Jerusalem 2024-01-01
60
+ 293322 Tiberias Tiberias 32.79221 35.53124 P PPLA IL 03 43500 0 Asia/Jerusalem 2024-01-01
61
+ 6167865 Toronto Toronto 43.70011 -79.4163 P PPLA CA 08 2731571 175 America/Toronto 2024-01-01
62
+ 6173331 Vancouver Vancouver 49.24966 -123.11934 P PPLA CA 02 600000 70 America/Vancouver 2024-01-01
63
+ 5144336 White Plains White Plains 41.03399 -73.76291 P PPLA US NY 58241 82 America/New_York 2024-01-01
64
+ 4140963 Washington DC Washington DC 38.89511 -77.03637 P PPLA US DC 601723 6 America/New_York 2024-01-01
65
+ 4956184 Worcester Worcester 42.26259 -71.80229 P PPLA US MA 182544 164 America/New_York 2024-01-01
@@ -59,3 +59,9 @@ UG UGA 800 UG Uganda Kampala 236040 45741007 AF .ug UGX Shilling 256 en-UG,lg,
59
59
  US USA 840 US United States Washington 9629091 331002651 NA .us USD Dollar 1 #####-#### ^\d{5}(-\d{4})?$ en-US,es-US,haw,fr 6252001 CA,MX,CU
60
60
  VE VEN 862 VE Venezuela Caracas 912050 28435943 SA .ve VES Bolivar 58 #### ^\d{4}$ es-VE 3625428 TT,GY,BR,CO
61
61
  ZA ZAF 710 SF South Africa Pretoria 1219912 59308690 AF .za ZAR Rand 27 #### ^\d{4}$ zu,xh,af,nso,en-ZA,tn,st,ts,ss,ve,nr 953987 ZW,SZ,MZ,BW,NA,LS
62
+ BR BRA 076 BR Brazil Brasilia 8511965 209469333 SA .br BRL Real 55 #####-### ^\d{5}-\d{3}$ pt-BR,es,en,fr 3469034 SR,PE,BO,UY,GY,PY,GF,VE,CO,AR
63
+ CO COL 170 CO Colombia Bogota 1138910 49648685 SA .co COP Peso 57 es-CO 3686110 EC,PE,PA,BR,VE
64
+ FI FIN 246 FI Finland Helsinki 337030 5518050 EU .fi EUR Euro 358 ##### ^(?:FI)*(\d{5})$ fi-FI,sv-FI,smn 660013 NO,RU,SE
65
+ GI GIB 292 GI Gibraltar Gibraltar 6 33718 EU .gi GIP Pound 350 en-GI,es,it,pt 2411586
66
+ IQ IRQ 368 IZ Iraq Baghdad 437072 38433600 AS .iq IQD Dinar 964 ##### ^(\d{5})$ ar-IQ,ku,hy 99237 SY,SA,IR,JO,TR,KW
67
+ PA PAN 591 PM Panama Panama City 78200 4176873 NA .pa PAB Balboa 507 es-PA,en 3703430 CR,CO