@prosopo/ipinfo 0.3.22 → 0.3.23

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.
@@ -1,5 +1,5 @@
1
1
 
2
- > @prosopo/ipinfo@0.3.22 build:cjs
2
+ > @prosopo/ipinfo@0.3.23 build:cjs
3
3
  > NODE_ENV=${NODE_ENV:-development}; vite build --config vite.cjs.config.ts --mode $NODE_ENV
4
4
 
5
5
  ViteCommonJSConfig: .
@@ -30,7 +30,7 @@ rendering chunks...
30
30
  computing gzip size...
31
31
  dist/cjs/index.cjs 0.47 kB │ gzip: 0.21 kB
32
32
  dist/cjs/IpInfoService.cjs 2.80 kB │ gzip: 0.98 kB
33
- dist/cjs/backends/maxmind.cjs 3.82 kB │ gzip: 1.14 kB
34
33
  dist/cjs/backends/ipapi.cjs 4.11 kB │ gzip: 1.75 kB
34
+ dist/cjs/backends/maxmind.cjs 4.94 kB │ gzip: 1.50 kB
35
35
 
36
- ✓ built in 77ms
36
+ ✓ built in 81ms
@@ -1,8 +1,8 @@
1
1
 
2
- > @prosopo/ipinfo@0.3.22 build:tsc
2
+ > @prosopo/ipinfo@0.3.23 build:tsc
3
3
  > tsc --build --verbose
4
4
 
5
- 10:39:11 PM - Projects in this build:
5
+ 1:15:06 PM - Projects in this build:
6
6
  * ../../dev/config/tsconfig.json
7
7
  * ../util/tsconfig.json
8
8
  * ../logger/tsconfig.json
@@ -11,19 +11,19 @@
11
11
  * ../types/tsconfig.json
12
12
  * tsconfig.json
13
13
 
14
- 10:39:11 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/NodejsPolarsNativeFilePlugin.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
14
+ 1:15:07 PM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/webpack/webpack.config.ts' is older than output '../../dev/config/tsconfig.tsbuildinfo'
15
15
 
16
- 10:39:11 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
16
+ 1:15:07 PM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/tsconfig.tsbuildinfo'
17
17
 
18
- 10:39:11 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/logger.ts' is older than output '../logger/tsconfig.tsbuildinfo'
18
+ 1:15:07 PM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/tsconfig.tsbuildinfo'
19
19
 
20
- 10:39:11 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
20
+ 1:15:07 PM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/tsconfig.tsbuildinfo'
21
21
 
22
- 10:39:11 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
22
+ 1:15:07 PM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/tsconfig.tsbuildinfo'
23
23
 
24
- 10:39:11 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
24
+ 1:15:07 PM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/tsconfig.tsbuildinfo'
25
25
 
26
- 10:39:11 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
26
+ 1:15:07 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
27
27
 
28
- 10:39:11 PM - Building project '/home/runner/work/captcha/captcha/packages/ipinfo/tsconfig.json'...
28
+ 1:15:07 PM - Building project '/home/runner/work/captcha/captcha/packages/ipinfo/tsconfig.json'...
29
29
 
@@ -1,9 +1,9 @@
1
1
 
2
- > @prosopo/ipinfo@0.3.22 build
2
+ > @prosopo/ipinfo@0.3.23 build
3
3
  > npm run build:cross-env -- --mode ${NODE_ENV:-development}
4
4
 
5
5
 
6
- > @prosopo/ipinfo@0.3.22 build:cross-env
6
+ > @prosopo/ipinfo@0.3.23 build:cross-env
7
7
  > vite build --config vite.esm.config.ts --mode production
8
8
 
9
9
  ViteEsmConfig: .
@@ -35,7 +35,7 @@ computing gzip size...
35
35
  dist/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
36
36
  dist/index.js 0.28 kB │ gzip: 0.15 kB
37
37
  dist/IpInfoService.js 2.73 kB │ gzip: 0.97 kB
38
- dist/backends/maxmind.js 3.80 kB │ gzip: 1.14 kB
39
38
  dist/backends/ipapi.js 4.07 kB │ gzip: 1.75 kB
39
+ dist/backends/maxmind.js 4.92 kB │ gzip: 1.50 kB
40
40
 
41
- ✓ built in 84ms
41
+ ✓ built in 124ms
package/CHANGELOG.md CHANGED
@@ -1,5 +1,13 @@
1
1
  # @prosopo/ipinfo
2
2
 
3
+ ## 0.3.23
4
+ ### Patch Changes
5
+
6
+ - Updated dependencies [6f57ee9]
7
+ - Updated dependencies [d288371]
8
+ - @prosopo/types@5.7.0
9
+ - @prosopo/logger@2.0.9
10
+
3
11
  ## 0.3.22
4
12
  ### Patch Changes
5
13
 
@@ -11,6 +11,7 @@ export interface MaxMindBackendConfig {
11
11
  export declare class MaxMindBackend {
12
12
  private cityReader;
13
13
  private asnReader;
14
+ private geoReaderKind;
14
15
  private config;
15
16
  constructor(config: MaxMindBackendConfig);
16
17
  initialize(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"maxmind.d.ts","sourceRoot":"","sources":["../../src/backends/maxmind.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAa,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAOnE,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAWlE,MAAM,WAAW,oBAAoB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB;AAED,qBAAa,cAAc;IAC1B,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAIlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCjC,WAAW,IAAI,OAAO;IAIhB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CA8FjD;AAED,MAAM,MAAM,eAAe,GACxB,UAAU,GACV,MAAM,GACN,UAAU,GACV,SAAS,GACT,0BAA0B,GAC1B,0BAA0B,GAC1B,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,SAAS,GACT,UAAU,GACV,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,sBAAsB,GACtB,UAAU,CAAC"}
1
+ {"version":3,"file":"maxmind.d.ts","sourceRoot":"","sources":["../../src/backends/maxmind.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAsB,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,gBAAgB,CAAC;AAOnE,MAAM,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;AAWlE,MAAM,WAAW,oBAAoB;IACpC,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,UAAU,CAAC,EAAE,UAAU,CAAC;CACxB;AAqBD,qBAAa,cAAc;IAC1B,OAAO,CAAC,UAAU,CAA4B;IAC9C,OAAO,CAAC,SAAS,CAA4B;IAC7C,OAAO,CAAC,aAAa,CAA4B;IACjD,OAAO,CAAC,MAAM,CAAuB;gBAEzB,MAAM,EAAE,oBAAoB;IAIlC,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAoCjC,WAAW,IAAI,OAAO;IAIhB,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CA8HjD;AAUD,MAAM,MAAM,eAAe,GACxB,UAAU,GACV,MAAM,GACN,UAAU,GACV,SAAS,GACT,0BAA0B,GAC1B,0BAA0B,GAC1B,QAAQ,GACR,YAAY,GACZ,SAAS,GACT,SAAS,GACT,UAAU,GACV,aAAa,GACb,QAAQ,GACR,QAAQ,GACR,sBAAsB,GACtB,UAAU,CAAC"}
@@ -3,10 +3,13 @@ var openReaderFromFile = async (dbPath) => {
3
3
  const { Reader } = await import("@maxmind/geoip2-node");
4
4
  return Reader.open(dbPath);
5
5
  };
6
+ /** Thrown by geoip2-node when an accessor doesn't match the database type. */
7
+ var BAD_METHOD_CALL_ERROR = "BadMethodCallError";
6
8
  var MaxMindBackend = class {
7
9
  constructor(config) {
8
10
  this.cityReader = null;
9
11
  this.asnReader = null;
12
+ this.geoReaderKind = "unknown";
10
13
  this.config = config;
11
14
  }
12
15
  async initialize() {
@@ -49,15 +52,35 @@ var MaxMindBackend = class {
49
52
  };
50
53
  try {
51
54
  let cityData;
55
+ let countryData;
52
56
  let asnData;
53
- if (this.cityReader) try {
54
- cityData = this.cityReader.city(ip);
55
- } catch (error) {
56
- this.config.logger?.debug(() => ({
57
- msg: "MaxMind City lookup failed",
58
- data: { ip },
59
- err: error
60
- }));
57
+ if (this.cityReader) {
58
+ if (this.geoReaderKind !== "country") try {
59
+ cityData = this.cityReader.city(ip);
60
+ this.geoReaderKind = "city";
61
+ } catch (error) {
62
+ if (isBadMethodCall(error)) {
63
+ this.geoReaderKind = "country";
64
+ this.config.logger?.warn(() => ({
65
+ msg: "MaxMind geo database is not a City database; falling back to country-level lookups",
66
+ data: { dbPath: this.config.cityDbPath },
67
+ err: error
68
+ }));
69
+ } else this.config.logger?.debug(() => ({
70
+ msg: "MaxMind City lookup failed",
71
+ data: { ip },
72
+ err: error
73
+ }));
74
+ }
75
+ if (this.geoReaderKind === "country") try {
76
+ countryData = this.cityReader.country(ip);
77
+ } catch (error) {
78
+ this.config.logger?.debug(() => ({
79
+ msg: "MaxMind Country lookup failed",
80
+ data: { ip },
81
+ err: error
82
+ }));
83
+ }
61
84
  }
62
85
  if (this.asnReader) try {
63
86
  asnData = this.asnReader.asn(ip);
@@ -68,7 +91,8 @@ var MaxMindBackend = class {
68
91
  err: error
69
92
  }));
70
93
  }
71
- if (!cityData && !asnData) return {
94
+ const geoData = cityData ?? countryData;
95
+ if (!geoData && !asnData) return {
72
96
  isValid: false,
73
97
  error: "No MaxMind data available for IP",
74
98
  ip
@@ -76,25 +100,25 @@ var MaxMindBackend = class {
76
100
  return {
77
101
  ip,
78
102
  isValid: true,
79
- isVPN: cityData?.traits?.isAnonymousVpn ?? false,
80
- isTor: cityData?.traits?.isTorExitNode ?? false,
81
- isProxy: (cityData?.traits?.isPublicProxy ?? false) || (cityData?.traits?.isResidentialProxy ?? false),
82
- isDatacenter: cityData?.traits?.isHostingProvider ?? false,
103
+ isVPN: geoData?.traits?.isAnonymousVpn ?? false,
104
+ isTor: geoData?.traits?.isTorExitNode ?? false,
105
+ isProxy: (geoData?.traits?.isPublicProxy ?? false) || (geoData?.traits?.isResidentialProxy ?? false),
106
+ isDatacenter: geoData?.traits?.isHostingProvider ?? false,
83
107
  isAbuser: false,
84
108
  isMobile: false,
85
- isSatellite: cityData?.traits?.isSatelliteProvider ?? false,
109
+ isSatellite: geoData?.traits?.isSatelliteProvider ?? false,
86
110
  isCrawler: false,
87
- country: cityData?.country?.names?.en,
88
- countryCode: cityData?.country?.isoCode,
111
+ country: geoData?.country?.names?.en,
112
+ countryCode: geoData?.country?.isoCode,
89
113
  region: cityData?.subdivisions?.[0]?.names?.en,
90
114
  city: cityData?.city?.names?.en,
91
115
  latitude: cityData?.location?.latitude,
92
116
  longitude: cityData?.location?.longitude,
93
117
  timezone: cityData?.location?.timeZone,
94
- asnNumber: cityData?.traits?.autonomousSystemNumber ?? asnData?.autonomousSystemNumber,
95
- asnOrganization: cityData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
96
- providerName: cityData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
97
- providerType: mapUserType(cityData?.traits?.userType)
118
+ asnNumber: geoData?.traits?.autonomousSystemNumber ?? asnData?.autonomousSystemNumber,
119
+ asnOrganization: geoData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
120
+ providerName: geoData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
121
+ providerType: mapUserType(geoData?.traits?.userType)
98
122
  };
99
123
  } catch (error) {
100
124
  return {
@@ -105,6 +129,13 @@ var MaxMindBackend = class {
105
129
  }
106
130
  }
107
131
  };
132
+ /**
133
+ * geoip2-node sets `name` on its error classes, so this survives the class
134
+ * identity being lost across the lazy `import()` in `openReaderFromFile`.
135
+ */
136
+ function isBadMethodCall(error) {
137
+ return error instanceof Error && error.name === BAD_METHOD_CALL_ERROR;
138
+ }
108
139
  function mapUserType(userType) {
109
140
  switch (userType) {
110
141
  case "hosting":
@@ -1 +1 @@
1
- {"version":3,"file":"maxmind.js","sourceRoot":"","sources":["../../src/backends/maxmind.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maxmind.js","sourceRoot":"","sources":["../../src/backends/maxmind.ts"],"names":[],"mappings":"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"}
@@ -3,10 +3,13 @@ var openReaderFromFile = async (dbPath) => {
3
3
  const { Reader } = await import("@maxmind/geoip2-node");
4
4
  return Reader.open(dbPath);
5
5
  };
6
+ /** Thrown by geoip2-node when an accessor doesn't match the database type. */
7
+ var BAD_METHOD_CALL_ERROR = "BadMethodCallError";
6
8
  var MaxMindBackend = class {
7
9
  constructor(config) {
8
10
  this.cityReader = null;
9
11
  this.asnReader = null;
12
+ this.geoReaderKind = "unknown";
10
13
  this.config = config;
11
14
  }
12
15
  async initialize() {
@@ -49,15 +52,35 @@ var MaxMindBackend = class {
49
52
  };
50
53
  try {
51
54
  let cityData;
55
+ let countryData;
52
56
  let asnData;
53
- if (this.cityReader) try {
54
- cityData = this.cityReader.city(ip);
55
- } catch (error) {
56
- this.config.logger?.debug(() => ({
57
- msg: "MaxMind City lookup failed",
58
- data: { ip },
59
- err: error
60
- }));
57
+ if (this.cityReader) {
58
+ if (this.geoReaderKind !== "country") try {
59
+ cityData = this.cityReader.city(ip);
60
+ this.geoReaderKind = "city";
61
+ } catch (error) {
62
+ if (isBadMethodCall(error)) {
63
+ this.geoReaderKind = "country";
64
+ this.config.logger?.warn(() => ({
65
+ msg: "MaxMind geo database is not a City database; falling back to country-level lookups",
66
+ data: { dbPath: this.config.cityDbPath },
67
+ err: error
68
+ }));
69
+ } else this.config.logger?.debug(() => ({
70
+ msg: "MaxMind City lookup failed",
71
+ data: { ip },
72
+ err: error
73
+ }));
74
+ }
75
+ if (this.geoReaderKind === "country") try {
76
+ countryData = this.cityReader.country(ip);
77
+ } catch (error) {
78
+ this.config.logger?.debug(() => ({
79
+ msg: "MaxMind Country lookup failed",
80
+ data: { ip },
81
+ err: error
82
+ }));
83
+ }
61
84
  }
62
85
  if (this.asnReader) try {
63
86
  asnData = this.asnReader.asn(ip);
@@ -68,7 +91,8 @@ var MaxMindBackend = class {
68
91
  err: error
69
92
  }));
70
93
  }
71
- if (!cityData && !asnData) return {
94
+ const geoData = cityData ?? countryData;
95
+ if (!geoData && !asnData) return {
72
96
  isValid: false,
73
97
  error: "No MaxMind data available for IP",
74
98
  ip
@@ -76,25 +100,25 @@ var MaxMindBackend = class {
76
100
  return {
77
101
  ip,
78
102
  isValid: true,
79
- isVPN: cityData?.traits?.isAnonymousVpn ?? false,
80
- isTor: cityData?.traits?.isTorExitNode ?? false,
81
- isProxy: (cityData?.traits?.isPublicProxy ?? false) || (cityData?.traits?.isResidentialProxy ?? false),
82
- isDatacenter: cityData?.traits?.isHostingProvider ?? false,
103
+ isVPN: geoData?.traits?.isAnonymousVpn ?? false,
104
+ isTor: geoData?.traits?.isTorExitNode ?? false,
105
+ isProxy: (geoData?.traits?.isPublicProxy ?? false) || (geoData?.traits?.isResidentialProxy ?? false),
106
+ isDatacenter: geoData?.traits?.isHostingProvider ?? false,
83
107
  isAbuser: false,
84
108
  isMobile: false,
85
- isSatellite: cityData?.traits?.isSatelliteProvider ?? false,
109
+ isSatellite: geoData?.traits?.isSatelliteProvider ?? false,
86
110
  isCrawler: false,
87
- country: cityData?.country?.names?.en,
88
- countryCode: cityData?.country?.isoCode,
111
+ country: geoData?.country?.names?.en,
112
+ countryCode: geoData?.country?.isoCode,
89
113
  region: cityData?.subdivisions?.[0]?.names?.en,
90
114
  city: cityData?.city?.names?.en,
91
115
  latitude: cityData?.location?.latitude,
92
116
  longitude: cityData?.location?.longitude,
93
117
  timezone: cityData?.location?.timeZone,
94
- asnNumber: cityData?.traits?.autonomousSystemNumber ?? asnData?.autonomousSystemNumber,
95
- asnOrganization: cityData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
96
- providerName: cityData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
97
- providerType: mapUserType(cityData?.traits?.userType)
118
+ asnNumber: geoData?.traits?.autonomousSystemNumber ?? asnData?.autonomousSystemNumber,
119
+ asnOrganization: geoData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
120
+ providerName: geoData?.traits?.autonomousSystemOrganization ?? asnData?.autonomousSystemOrganization,
121
+ providerType: mapUserType(geoData?.traits?.userType)
98
122
  };
99
123
  } catch (error) {
100
124
  return {
@@ -105,6 +129,13 @@ var MaxMindBackend = class {
105
129
  }
106
130
  }
107
131
  };
132
+ /**
133
+ * geoip2-node sets `name` on its error classes, so this survives the class
134
+ * identity being lost across the lazy `import()` in `openReaderFromFile`.
135
+ */
136
+ function isBadMethodCall(error) {
137
+ return error instanceof Error && error.name === BAD_METHOD_CALL_ERROR;
138
+ }
108
139
  function mapUserType(userType) {
109
140
  switch (userType) {
110
141
  case "hosting":
@@ -9,9 +9,15 @@ const reader = (behaviour) => {
9
9
  };
10
10
  return {
11
11
  city: behaviour.city ?? notSupported,
12
+ country: behaviour.country ?? notSupported,
12
13
  asn: behaviour.asn ?? notSupported,
13
14
  };
14
15
  };
16
+ const badMethodCall = () => {
17
+ const error = new Error("The city() method cannot be used with the GeoLite2-Country database");
18
+ error.name = "BadMethodCallError";
19
+ throw error;
20
+ };
15
21
  const cityData = (overrides = {}) => ({
16
22
  country: { isoCode: "US", names: { en: "United States" } },
17
23
  city: { names: { en: "Mountain View" } },
@@ -24,6 +30,11 @@ const cityData = (overrides = {}) => ({
24
30
  traits: {},
25
31
  ...overrides,
26
32
  });
33
+ const countryData = (overrides = {}) => ({
34
+ country: { isoCode: "US", names: { en: "United States" } },
35
+ traits: {},
36
+ ...overrides,
37
+ });
27
38
  const asnData = (overrides = {}) => ({
28
39
  autonomousSystemNumber: 15169,
29
40
  autonomousSystemOrganization: "Google LLC",
@@ -379,6 +390,108 @@ describe("MaxMindBackend.lookup", () => {
379
390
  });
380
391
  });
381
392
  });
393
+ describe("MaxMindBackend with a Country-only geo database", () => {
394
+ const countryBackend = async (options) => {
395
+ const backend = new MaxMindBackend({
396
+ cityDbPath: CITY_DB,
397
+ openReader: opens({
398
+ city: reader({
399
+ city: options.city ?? badMethodCall,
400
+ country: options.country ?? (() => countryData()),
401
+ }),
402
+ }),
403
+ });
404
+ await backend.initialize();
405
+ return backend;
406
+ };
407
+ it("answers from country() when city() rejects the database type", async () => {
408
+ const backend = await countryBackend({});
409
+ const result = expectValid(await backend.lookup(IP));
410
+ expect(result).toMatchObject({
411
+ ip: IP,
412
+ isValid: true,
413
+ country: "United States",
414
+ countryCode: "US",
415
+ });
416
+ });
417
+ it("leaves the city-only fields unset rather than inventing them", async () => {
418
+ const backend = await countryBackend({});
419
+ const result = expectValid(await backend.lookup(IP));
420
+ expect(result.city).toBeUndefined();
421
+ expect(result.region).toBeUndefined();
422
+ expect(result.latitude).toBeUndefined();
423
+ expect(result.longitude).toBeUndefined();
424
+ expect(result.timezone).toBeUndefined();
425
+ });
426
+ it("still reads the traits the country record carries", async () => {
427
+ const backend = await countryBackend({
428
+ country: () => countryData({
429
+ traits: {
430
+ isAnonymousVpn: true,
431
+ autonomousSystemNumber: 15169,
432
+ autonomousSystemOrganization: "Google LLC",
433
+ },
434
+ }),
435
+ });
436
+ const result = expectValid(await backend.lookup(IP));
437
+ expect(result.isVPN).toBe(true);
438
+ expect(result.asnNumber).toBe(15169);
439
+ expect(result.providerName).toBe("Google LLC");
440
+ });
441
+ it("stops calling city() once the database type is known", async () => {
442
+ const city = vi.fn(badMethodCall);
443
+ const backend = await countryBackend({ city });
444
+ await backend.lookup(IP);
445
+ await backend.lookup(IP);
446
+ await backend.lookup(IP);
447
+ expect(city).toHaveBeenCalledTimes(1);
448
+ });
449
+ it("warns once, naming the database, when it discovers the mismatch", async () => {
450
+ const warn = vi.fn();
451
+ const backend = new MaxMindBackend({
452
+ cityDbPath: CITY_DB,
453
+ openReader: opens({
454
+ city: reader({
455
+ city: badMethodCall,
456
+ country: () => countryData(),
457
+ }),
458
+ }),
459
+ logger: { warn, info: vi.fn(), debug: vi.fn() },
460
+ });
461
+ await backend.initialize();
462
+ await backend.lookup(IP);
463
+ await backend.lookup(IP);
464
+ expect(warn).toHaveBeenCalledTimes(1);
465
+ const payload = (warn.mock.calls[0]?.[0])();
466
+ expect(payload.msg).toBe("MaxMind geo database is not a City database; falling back to country-level lookups");
467
+ expect(payload.data.dbPath).toBe(CITY_DB);
468
+ });
469
+ it("reports no data when the country lookup finds nothing either", async () => {
470
+ const backend = await countryBackend({
471
+ country: () => {
472
+ throw new Error("address not found");
473
+ },
474
+ });
475
+ await expect(backend.lookup(IP)).resolves.toEqual({
476
+ isValid: false,
477
+ error: "No MaxMind data available for IP",
478
+ ip: IP,
479
+ });
480
+ });
481
+ it("never calls country() when the database really is a City database", async () => {
482
+ const country = vi.fn(() => countryData());
483
+ const backend = new MaxMindBackend({
484
+ cityDbPath: CITY_DB,
485
+ openReader: opens({
486
+ city: reader({ city: () => cityData(), country }),
487
+ }),
488
+ });
489
+ await backend.initialize();
490
+ await backend.lookup(IP);
491
+ await backend.lookup(IP);
492
+ expect(country).not.toHaveBeenCalled();
493
+ });
494
+ });
382
495
  describe("MaxMindBackend default reader", () => {
383
496
  it("does not throw when the real database file is missing", async () => {
384
497
  const backend = new MaxMindBackend({
@@ -1 +1 @@
1
- {"version":3,"file":"maxmind.unit.test.js","sourceRoot":"","sources":["../../src/tests/maxmind.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maxmind.unit.test.js","sourceRoot":"","sources":["../../src/tests/maxmind.unit.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/ipinfo",
3
- "version": "0.3.22",
3
+ "version": "0.3.23",
4
4
  "description": "IP information service with MaxMind and ipapi.is backends",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -28,11 +28,11 @@
28
28
  },
29
29
  "dependencies": {
30
30
  "@maxmind/geoip2-node": "7.1.0",
31
- "@prosopo/logger": "2.0.8",
32
- "@prosopo/types": "5.6.0"
31
+ "@prosopo/logger": "2.0.9",
32
+ "@prosopo/types": "5.7.0"
33
33
  },
34
34
  "devDependencies": {
35
- "@prosopo/config": "3.3.13",
35
+ "@prosopo/config": "3.3.14",
36
36
  "@types/node": "22.10.2",
37
37
  "@vitest/coverage-v8": "4.1.11",
38
38
  "del-cli": "6.0.0",