@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.
- package/.turbo/turbo-build$colon$cjs.log +3 -3
- package/.turbo/turbo-build$colon$tsc.log +10 -10
- package/.turbo/turbo-build.log +4 -4
- package/CHANGELOG.md +8 -0
- package/dist/backends/maxmind.d.ts +1 -0
- package/dist/backends/maxmind.d.ts.map +1 -1
- package/dist/backends/maxmind.js +51 -20
- package/dist/backends/maxmind.js.map +1 -1
- package/dist/cjs/backends/maxmind.cjs +51 -20
- package/dist/tests/maxmind.unit.test.js +113 -0
- package/dist/tests/maxmind.unit.test.js.map +1 -1
- package/package.json +4 -4
- package/src/backends/maxmind.ts +84 -24
- package/src/tests/maxmind.unit.test.ts +168 -2
- package/tsconfig.tsbuildinfo +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/ipinfo@0.3.
|
|
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
|
-
[32m✓ built in
|
|
36
|
+
[32m✓ built in 81ms[39m
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/ipinfo@0.3.
|
|
2
|
+
> @prosopo/ipinfo@0.3.23 build:tsc
|
|
3
3
|
> tsc --build --verbose
|
|
4
4
|
|
|
5
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
26
|
+
1:15:07 PM - Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
|
27
27
|
|
|
28
|
-
|
|
28
|
+
1:15:07 PM - Building project '/home/runner/work/captcha/captcha/packages/ipinfo/tsconfig.json'...
|
|
29
29
|
|
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
|
|
2
|
-
> @prosopo/ipinfo@0.3.
|
|
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.
|
|
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
|
-
[32m✓ built in
|
|
41
|
+
[32m✓ built in 124ms[39m
|
package/CHANGELOG.md
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"maxmind.d.ts","sourceRoot":"","sources":["../../src/backends/maxmind.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,
|
|
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"}
|
package/dist/backends/maxmind.js
CHANGED
|
@@ -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)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
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:
|
|
80
|
-
isTor:
|
|
81
|
-
isProxy: (
|
|
82
|
-
isDatacenter:
|
|
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:
|
|
109
|
+
isSatellite: geoData?.traits?.isSatelliteProvider ?? false,
|
|
86
110
|
isCrawler: false,
|
|
87
|
-
country:
|
|
88
|
-
countryCode:
|
|
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:
|
|
95
|
-
asnOrganization:
|
|
96
|
-
providerName:
|
|
97
|
-
providerType: mapUserType(
|
|
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":"AAyBA,MAAM,kBAAkB,GAAe,KAAK,EAC3C,MAAc,EACS,EAAE;IAGzB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,sBAAsB,CAAC,CAAC;IACxD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAC5B,CAAC,CAAC;
|
|
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)
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
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
|
-
|
|
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:
|
|
80
|
-
isTor:
|
|
81
|
-
isProxy: (
|
|
82
|
-
isDatacenter:
|
|
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:
|
|
109
|
+
isSatellite: geoData?.traits?.isSatelliteProvider ?? false,
|
|
86
110
|
isCrawler: false,
|
|
87
|
-
country:
|
|
88
|
-
countryCode:
|
|
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:
|
|
95
|
-
asnOrganization:
|
|
96
|
-
providerName:
|
|
97
|
-
providerType: mapUserType(
|
|
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.
|
|
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.
|
|
32
|
-
"@prosopo/types": "5.
|
|
31
|
+
"@prosopo/logger": "2.0.9",
|
|
32
|
+
"@prosopo/types": "5.7.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
|
-
"@prosopo/config": "3.3.
|
|
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",
|