@prosopo/ipinfo 0.5.3 → 0.7.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.
@@ -9,6 +9,7 @@ ViteCommonJSConfig: .
9
9
  '/home/runner/work/captcha/captcha/packages/util-crypto/tsconfig.json'
10
10
  ]
11
11
  }
12
+ The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
12
13
  {
13
14
  externals: [
14
15
  '@prosopo/logger',
@@ -18,7 +19,6 @@ ViteCommonJSConfig: .
18
19
  '@prosopo/util-crypto'
19
20
  ]
20
21
  }
21
- The plugin "vite-tsconfig-paths" is detected. Vite now supports tsconfig paths resolution natively via the resolve.tsconfigPaths option. You can remove the plugin and set resolve.tsconfigPaths: true in your Vite config instead.
22
22
  vite v8.1.6 building ssr environment for production...
23
23
  Bundle build started
24
24
  
@@ -27,8 +27,8 @@ rendering chunks...
27
27
  computing gzip size...
28
28
  dist/cjs/index.cjs 0.66 kB │ gzip: 0.26 kB
29
29
  dist/cjs/lookupCache.cjs 1.64 kB │ gzip: 0.78 kB
30
- dist/cjs/IpInfoService.cjs 4.07 kB │ gzip: 1.49 kB
31
- dist/cjs/backends/ipapi.cjs 4.39 kB │ gzip: 1.83 kB
30
+ dist/cjs/IpInfoService.cjs 4.23 kB │ gzip: 1.53 kB
32
31
  dist/cjs/backends/maxmind.cjs 5.92 kB │ gzip: 1.89 kB
32
+ dist/cjs/backends/ipapi.cjs 6.99 kB │ gzip: 2.64 kB
33
33
 
34
- ✓ built in 49ms
34
+ ✓ built in 74ms
@@ -28,8 +28,8 @@ computing gzip size...
28
28
  dist/esm/_virtual/_rolldown/runtime.js 0.04 kB │ gzip: 0.06 kB
29
29
  dist/esm/index.js 0.39 kB │ gzip: 0.19 kB
30
30
  dist/esm/lookupCache.js 1.60 kB │ gzip: 0.77 kB
31
- dist/esm/IpInfoService.js 3.97 kB │ gzip: 1.48 kB
32
- dist/esm/backends/ipapi.js 4.33 kB │ gzip: 1.82 kB
31
+ dist/esm/IpInfoService.js 4.13 kB │ gzip: 1.52 kB
33
32
  dist/esm/backends/maxmind.js 5.91 kB │ gzip: 1.89 kB
33
+ dist/esm/backends/ipapi.js 6.83 kB │ gzip: 2.63 kB
34
34
 
35
- ✓ built in 48ms
35
+ ✓ built in 52ms
@@ -1,5 +1,5 @@
1
1
  $ tsc --build --verbose
2
- 10:55:37 AM - Projects in this build:
2
+ 11:50:38 AM - Projects in this build:
3
3
  * ../../dev/config/tsconfig.json
4
4
  * ../util/tsconfig.json
5
5
  * ../logger/tsconfig.json
@@ -8,19 +8,19 @@ $ tsc --build --verbose
8
8
  * ../types/tsconfig.json
9
9
  * tsconfig.json
10
10
 
11
- 10:55:37 AM - Project '../../dev/config/tsconfig.json' is up to date because newest input '../../dev/config/src/vite/modifyExportsFiles.test.ts' is older than output '../../dev/config/dist/tsc/tsconfig.tsbuildinfo'
11
+ 11:50:38 AM - 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/dist/tsc/tsconfig.tsbuildinfo'
12
12
 
13
- 10:55:37 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/dist/tsc/tsconfig.tsbuildinfo'
13
+ 11:50:38 AM - Project '../util/tsconfig.json' is up to date because newest input '../util/src/url.ts' is older than output '../util/dist/tsc/tsconfig.tsbuildinfo'
14
14
 
15
- 10:55:37 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/dist/tsc/tsconfig.tsbuildinfo'
15
+ 11:50:38 AM - Project '../logger/tsconfig.json' is up to date because newest input '../logger/src/index.ts' is older than output '../logger/dist/tsc/tsconfig.tsbuildinfo'
16
16
 
17
- 10:55:37 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/translationKey.ts' is older than output '../locale/dist/tsc/tsconfig.tsbuildinfo'
17
+ 11:50:38 AM - Project '../locale/tsconfig.json' is up to date because newest input '../locale/src/process.ts' is older than output '../locale/dist/tsc/tsconfig.tsbuildinfo'
18
18
 
19
- 10:55:37 AM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/dist/tsc/tsconfig.tsbuildinfo'
19
+ 11:50:38 AM - Project '../util-crypto/tsconfig.json' is up to date because newest input '../util-crypto/src/types.ts' is older than output '../util-crypto/dist/tsc/tsconfig.tsbuildinfo'
20
20
 
21
- 10:55:37 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/dist/tsc/tsconfig.tsbuildinfo'
21
+ 11:50:38 AM - Project '../types/tsconfig.json' is up to date because newest input '../types/src/types.test-d.ts' is older than output '../types/dist/tsc/tsconfig.tsbuildinfo'
22
22
 
23
- 10:55:37 AM - Project 'tsconfig.json' is out of date because output file 'dist/tsc/tsconfig.tsbuildinfo' does not exist
23
+ 11:50:38 AM - Project 'tsconfig.json' is out of date because output file 'dist/tsc/tsconfig.tsbuildinfo' does not exist
24
24
 
25
- 10:55:37 AM - Building project '/home/runner/work/captcha/captcha/packages/ipinfo/tsconfig.json'...
25
+ 11:50:38 AM - Building project '/home/runner/work/captcha/captcha/packages/ipinfo/tsconfig.json'...
26
26
 
package/CHANGELOG.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # @prosopo/ipinfo
2
2
 
3
+ ## 0.7.0
4
+ ### Minor Changes
5
+
6
+ - d9520ea: The traffic filter's `abuser` category, its exceptions, the DNS-path signal and the IP validation rules now use the IP lookup's reputation score.
7
+
8
+ - The IP lookup carries `reputationScore` and `reputationBand`. An address without a score never meets a threshold.
9
+ - New settings: `trafficFilter.reputationScoreThreshold`, exception `minReputationScore`, and `ipValidationRules.reputationScoreThreshold`.
10
+ - `abuserScoreThreshold`, `minAbuserScore` and `ipValidationRules.abuseScoreThreshold` are deprecated. Stored records still parse, and an exception that has only `minAbuserScore` keeps its current behaviour until it is updated.
11
+
12
+ ### Patch Changes
13
+
14
+ - Updated dependencies [d9520ea]
15
+ - @prosopo/types@5.26.0
16
+ - @prosopo/logger@2.1.9
17
+
18
+ ## 0.6.0
19
+ ### Minor Changes
20
+
21
+ - b80b627: Decision machines can now act on repeated wild guesses at an interactive captcha.
22
+
23
+ - Usage counters gain a `farMiss` kind. It is written per user account and per address when a puzzle answer lands well away from the slot, as opposed to a near miss.
24
+ - A decision machine can export `requiredDecideCounters()` (named apart from the routing `requiredCounters()`, since one bundle serves both) and `requiresAccountSighting()`. At verification the provider reads what it asked for into `input.counters` and `input.accountSighting`. Anything that cannot be read is left out rather than passed as zero.
25
+ - The reputation DB client reads `reputation.shared_reason` onto `IPInfoResult.sharedReason`. `IIpInfoService` gains `accountSighting(siteKey, account)`, which reads `GET /v1/account/{siteKey}/{account}` and has no answer for an unknown account, a 404 or an error.
26
+
27
+ ### Patch Changes
28
+
29
+ - Updated dependencies [b80b627]
30
+ - Updated dependencies [007f43c]
31
+ - @prosopo/types@5.25.0
32
+
3
33
  ## 0.5.3
4
34
  ### Patch Changes
5
35
 
@@ -74,6 +74,10 @@ var IpInfoService = class {
74
74
  if (!this.maxmindBackend?.isAvailable()) return void 0;
75
75
  return this.maxmindBackend.countryCode(ip);
76
76
  }
77
+ async accountSighting(siteKey, account) {
78
+ if (!this.ipapiBackend?.isAvailable()) return;
79
+ return this.ipapiBackend.accountSighting(siteKey, account);
80
+ }
77
81
  async lookup(ip) {
78
82
  return this.cache ? this.cache.getOrLookup(ip, (address) => this.lookupUncached(address)) : this.lookupUncached(ip);
79
83
  }
@@ -1,3 +1,4 @@
1
+ let _prosopo_types = require("@prosopo/types");
1
2
  /**
2
3
  * Parse an upstream abuser score, which arrives as a string like "0.0012 (Low)".
3
4
  *
@@ -29,6 +30,37 @@ var parseDetectorRisk = (reputation) => {
29
30
  const risk = reputation?.detector_risk;
30
31
  return typeof risk === "number" && risk >= 0 && risk <= 1 ? risk : void 0;
31
32
  };
33
+ /**
34
+ * The address's reputation score, if the lookup returned one. Undefined
35
+ * otherwise, never 0.
36
+ */
37
+ var parseReputationScore = (reputation) => {
38
+ const assessment = reputation?.assessment;
39
+ const score = assessment?.score;
40
+ if (assessment?.state !== "scored" || typeof score !== "number" || !Number.isFinite(score) || score < 0 || score > 1) return;
41
+ const band = assessment.band;
42
+ return {
43
+ score,
44
+ ...typeof band === "string" && band && { band }
45
+ };
46
+ };
47
+ /** The shared-egress reason, when it is one this client knows. */
48
+ var parseSharedReason = (reputation) => {
49
+ const reason = reputation?.shared_reason;
50
+ return _prosopo_types.REPUTATION_SHARED_REASONS.find((known) => known === reason);
51
+ };
52
+ /**
53
+ * An account the reputation DB knows, read defensively: the body is cast from
54
+ * `response.json()`, not validated.
55
+ */
56
+ var parseAccountSighting = (body) => {
57
+ const userAgents = body?.user_agents_7d;
58
+ if (body?.known !== true || typeof userAgents !== "number" || !Number.isInteger(userAgents) || userAgents < 0) return;
59
+ return {
60
+ userAgents7d: userAgents,
61
+ deviceTypes: Array.isArray(body.device_types) ? body.device_types.filter((type) => typeof type === "string") : []
62
+ };
63
+ };
32
64
  var IpapiBackend = class {
33
65
  constructor(config) {
34
66
  this.config = config;
@@ -72,6 +104,7 @@ var IpapiBackend = class {
72
104
  error: "IP address is bogon (non-routable)",
73
105
  ip
74
106
  };
107
+ const reputation = parseReputationScore(data.reputation);
75
108
  return {
76
109
  ip: data.ip,
77
110
  isValid: true,
@@ -100,7 +133,10 @@ var IpapiBackend = class {
100
133
  vpnType: data.vpn?.type,
101
134
  abuserScore: parseAbuserScore(data.asn?.abuser_score),
102
135
  companyAbuserScore: parseAbuserScore(data.company?.abuser_score),
103
- detectorRisk: parseDetectorRisk(data.reputation)
136
+ reputationScore: reputation?.score,
137
+ reputationBand: reputation?.band,
138
+ detectorRisk: parseDetectorRisk(data.reputation),
139
+ sharedReason: parseSharedReason(data.reputation)
104
140
  };
105
141
  } catch (fetchError) {
106
142
  clearTimeout(timeoutId);
@@ -119,8 +155,40 @@ var IpapiBackend = class {
119
155
  };
120
156
  }
121
157
  }
158
+ /**
159
+ * The reputation DB's sighting of `account` on `siteKey`, from
160
+ * `GET /v1/account/{siteKey}/{account}`. Undefined for an unknown account
161
+ * and for every failure: a DB without account data answers 404.
162
+ */
163
+ async accountSighting(siteKey, account) {
164
+ if (!siteKey || !account) return;
165
+ const controller = new AbortController();
166
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
167
+ try {
168
+ const url = new URL(`/v1/account/${encodeURIComponent(siteKey)}/${encodeURIComponent(account)}`, this.config.baseUrl);
169
+ const response = await (this.config.fetch ?? globalThis.fetch)(url.toString(), {
170
+ method: "GET",
171
+ headers: { Accept: "application/json" },
172
+ signal: controller.signal
173
+ });
174
+ if (!response.ok) return;
175
+ return parseAccountSighting(await response.json());
176
+ } catch (error) {
177
+ this.config.logger?.debug(() => ({
178
+ msg: "Account sighting lookup failed",
179
+ err: error,
180
+ data: { siteKey }
181
+ }));
182
+ return;
183
+ } finally {
184
+ clearTimeout(timeoutId);
185
+ }
186
+ }
122
187
  };
123
188
  //#endregion
124
189
  exports.IpapiBackend = IpapiBackend;
125
190
  exports.parseAbuserScore = parseAbuserScore;
191
+ exports.parseAccountSighting = parseAccountSighting;
126
192
  exports.parseDetectorRisk = parseDetectorRisk;
193
+ exports.parseReputationScore = parseReputationScore;
194
+ exports.parseSharedReason = parseSharedReason;
@@ -74,6 +74,10 @@ var IpInfoService = class {
74
74
  if (!this.maxmindBackend?.isAvailable()) return void 0;
75
75
  return this.maxmindBackend.countryCode(ip);
76
76
  }
77
+ async accountSighting(siteKey, account) {
78
+ if (!this.ipapiBackend?.isAvailable()) return;
79
+ return this.ipapiBackend.accountSighting(siteKey, account);
80
+ }
77
81
  async lookup(ip) {
78
82
  return this.cache ? this.cache.getOrLookup(ip, (address) => this.lookupUncached(address)) : this.lookupUncached(ip);
79
83
  }
@@ -1,3 +1,4 @@
1
+ import { REPUTATION_SHARED_REASONS } from "@prosopo/types";
1
2
  /**
2
3
  * Parse an upstream abuser score, which arrives as a string like "0.0012 (Low)".
3
4
  *
@@ -29,6 +30,37 @@ var parseDetectorRisk = (reputation) => {
29
30
  const risk = reputation?.detector_risk;
30
31
  return typeof risk === "number" && risk >= 0 && risk <= 1 ? risk : void 0;
31
32
  };
33
+ /**
34
+ * The address's reputation score, if the lookup returned one. Undefined
35
+ * otherwise, never 0.
36
+ */
37
+ var parseReputationScore = (reputation) => {
38
+ const assessment = reputation?.assessment;
39
+ const score = assessment?.score;
40
+ if (assessment?.state !== "scored" || typeof score !== "number" || !Number.isFinite(score) || score < 0 || score > 1) return;
41
+ const band = assessment.band;
42
+ return {
43
+ score,
44
+ ...typeof band === "string" && band && { band }
45
+ };
46
+ };
47
+ /** The shared-egress reason, when it is one this client knows. */
48
+ var parseSharedReason = (reputation) => {
49
+ const reason = reputation?.shared_reason;
50
+ return REPUTATION_SHARED_REASONS.find((known) => known === reason);
51
+ };
52
+ /**
53
+ * An account the reputation DB knows, read defensively: the body is cast from
54
+ * `response.json()`, not validated.
55
+ */
56
+ var parseAccountSighting = (body) => {
57
+ const userAgents = body?.user_agents_7d;
58
+ if (body?.known !== true || typeof userAgents !== "number" || !Number.isInteger(userAgents) || userAgents < 0) return;
59
+ return {
60
+ userAgents7d: userAgents,
61
+ deviceTypes: Array.isArray(body.device_types) ? body.device_types.filter((type) => typeof type === "string") : []
62
+ };
63
+ };
32
64
  var IpapiBackend = class {
33
65
  constructor(config) {
34
66
  this.config = config;
@@ -72,6 +104,7 @@ var IpapiBackend = class {
72
104
  error: "IP address is bogon (non-routable)",
73
105
  ip
74
106
  };
107
+ const reputation = parseReputationScore(data.reputation);
75
108
  return {
76
109
  ip: data.ip,
77
110
  isValid: true,
@@ -100,7 +133,10 @@ var IpapiBackend = class {
100
133
  vpnType: data.vpn?.type,
101
134
  abuserScore: parseAbuserScore(data.asn?.abuser_score),
102
135
  companyAbuserScore: parseAbuserScore(data.company?.abuser_score),
103
- detectorRisk: parseDetectorRisk(data.reputation)
136
+ reputationScore: reputation?.score,
137
+ reputationBand: reputation?.band,
138
+ detectorRisk: parseDetectorRisk(data.reputation),
139
+ sharedReason: parseSharedReason(data.reputation)
104
140
  };
105
141
  } catch (fetchError) {
106
142
  clearTimeout(timeoutId);
@@ -119,6 +155,35 @@ var IpapiBackend = class {
119
155
  };
120
156
  }
121
157
  }
158
+ /**
159
+ * The reputation DB's sighting of `account` on `siteKey`, from
160
+ * `GET /v1/account/{siteKey}/{account}`. Undefined for an unknown account
161
+ * and for every failure: a DB without account data answers 404.
162
+ */
163
+ async accountSighting(siteKey, account) {
164
+ if (!siteKey || !account) return;
165
+ const controller = new AbortController();
166
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
167
+ try {
168
+ const url = new URL(`/v1/account/${encodeURIComponent(siteKey)}/${encodeURIComponent(account)}`, this.config.baseUrl);
169
+ const response = await (this.config.fetch ?? globalThis.fetch)(url.toString(), {
170
+ method: "GET",
171
+ headers: { Accept: "application/json" },
172
+ signal: controller.signal
173
+ });
174
+ if (!response.ok) return;
175
+ return parseAccountSighting(await response.json());
176
+ } catch (error) {
177
+ this.config.logger?.debug(() => ({
178
+ msg: "Account sighting lookup failed",
179
+ err: error,
180
+ data: { siteKey }
181
+ }));
182
+ return;
183
+ } finally {
184
+ clearTimeout(timeoutId);
185
+ }
186
+ }
122
187
  };
123
188
  //#endregion
124
- export { IpapiBackend, parseAbuserScore, parseDetectorRisk };
189
+ export { IpapiBackend, parseAbuserScore, parseAccountSighting, parseDetectorRisk, parseReputationScore, parseSharedReason };
@@ -1,4 +1,4 @@
1
- import type { IPInfoResponse } from "@prosopo/types";
1
+ import type { AccountSighting, IPInfoResponse } from "@prosopo/types";
2
2
  import { IpapiBackend } from "./backends/ipapi.js";
3
3
  import { MaxMindBackend } from "./backends/maxmind.js";
4
4
  import type { IIpInfoService, IpInfoServiceConfig } from "./types.js";
@@ -16,6 +16,7 @@ export declare class IpInfoService implements IIpInfoService {
16
16
  initialize(): Promise<void>;
17
17
  isAvailable(): boolean;
18
18
  country(ip: string): string | undefined;
19
+ accountSighting(siteKey: string, account: string): Promise<AccountSighting | undefined>;
19
20
  lookup(ip: string): Promise<IPInfoResponse>;
20
21
  private lookupUncached;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IpInfoService.d.ts","sourceRoot":"","sources":["../../src/IpInfoService.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAiCjD;AAQD,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,aAAc,YAAW,cAAc;IACnD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEpC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,cAAc;IA6B5D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,WAAW,IAAI,OAAO;IAsBtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAMnC,cAAc;CA4C5B"}
1
+ {"version":3,"file":"IpInfoService.d.ts","sourceRoot":"","sources":["../../src/IpInfoService.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAiCjD;AAQD,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,aAAc,YAAW,cAAc;IACnD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEpC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,cAAc;IA6B5D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,WAAW,IAAI,OAAO;IAsBtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjC,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAOjC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAMnC,cAAc;CA4C5B"}
@@ -75,6 +75,12 @@ export class IpInfoService {
75
75
  return undefined;
76
76
  return this.maxmindBackend.countryCode(ip);
77
77
  }
78
+ async accountSighting(siteKey, account) {
79
+ if (!this.ipapiBackend?.isAvailable()) {
80
+ return undefined;
81
+ }
82
+ return this.ipapiBackend.accountSighting(siteKey, account);
83
+ }
78
84
  async lookup(ip) {
79
85
  return this.cache
80
86
  ? this.cache.getOrLookup(ip, (address) => this.lookupUncached(address))
@@ -1 +1 @@
1
- {"version":3,"file":"IpInfoService.js","sourceRoot":"","sources":["../../src/IpInfoService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IpInfoService.js","sourceRoot":"","sources":["../../src/IpInfoService.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Logger } from "@prosopo/logger";
2
- import type { IPApiReputationInfo, IPInfoResponse } from "@prosopo/types";
2
+ import { type AccountSighting, type IPApiReputationInfo, type IPInfoResponse, type ReputationAccountResponse, type ReputationSharedReason } from "@prosopo/types";
3
3
  export declare const DEFAULT_TIMEOUT_MS = 700;
4
4
  export type FetchFn = (url: string, init: RequestInit) => Promise<globalThis.Response>;
5
5
  export interface IpapiBackendConfig {
@@ -11,11 +11,18 @@ export interface IpapiBackendConfig {
11
11
  }
12
12
  export declare const parseAbuserScore: (score: string | undefined) => number | undefined;
13
13
  export declare const parseDetectorRisk: (reputation: IPApiReputationInfo | undefined) => number | undefined;
14
+ export declare const parseReputationScore: (reputation: IPApiReputationInfo | undefined) => {
15
+ score: number;
16
+ band?: string;
17
+ } | undefined;
18
+ export declare const parseSharedReason: (reputation: IPApiReputationInfo | undefined) => ReputationSharedReason | undefined;
19
+ export declare const parseAccountSighting: (body: ReputationAccountResponse | undefined) => AccountSighting | undefined;
14
20
  export declare class IpapiBackend {
15
21
  private config;
16
22
  constructor(config: IpapiBackendConfig);
17
23
  isAvailable(): boolean;
18
24
  private get timeoutMs();
19
25
  lookup(ip: string): Promise<IPInfoResponse>;
26
+ accountSighting(siteKey: string, account: string): Promise<AccountSighting | undefined>;
20
27
  }
21
28
  //# sourceMappingURL=ipapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipapi.d.ts","sourceRoot":"","sources":["../../../src/backends/ipapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EACX,mBAAmB,EAEnB,cAAc,EAEd,MAAM,gBAAgB,CAAC;AAMxB,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,MAAM,MAAM,OAAO,GAAG,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,KACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAuBD,eAAO,MAAM,gBAAgB,UACrB,MAAM,GAAG,SAAS,KACvB,MAAM,GAAG,SASX,CAAC;AAEF,eAAO,MAAM,iBAAiB,eACjB,mBAAmB,GAAG,SAAS,KACzC,MAAM,GAAG,SAGX,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAItC,WAAW,IAAI,OAAO;IAItB,OAAO,KAAK,SAAS,GAEpB;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CA2GjD"}
1
+ {"version":3,"file":"ipapi.d.ts","sourceRoot":"","sources":["../../../src/backends/ipapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EAGnB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,MAAM,gBAAgB,CAAC;AAMxB,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,MAAM,MAAM,OAAO,GAAG,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,KACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAuBD,eAAO,MAAM,gBAAgB,UACrB,MAAM,GAAG,SAAS,KACvB,MAAM,GAAG,SASX,CAAC;AAEF,eAAO,MAAM,iBAAiB,eACjB,mBAAmB,GAAG,SAAS,KACzC,MAAM,GAAG,SAGX,CAAC;AAMF,eAAO,MAAM,oBAAoB,eACpB,mBAAmB,GAAG,SAAS,KACzC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAcrC,CAAC;AAGF,eAAO,MAAM,iBAAiB,eACjB,mBAAmB,GAAG,SAAS,KACzC,sBAAsB,GAAG,SAG3B,CAAC;AAMF,eAAO,MAAM,oBAAoB,SAC1B,yBAAyB,GAAG,SAAS,KACzC,eAAe,GAAG,SAkBpB,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAItC,WAAW,IAAI,OAAO;IAItB,OAAO,KAAK,SAAS,GAEpB;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAqH3C,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;CAkCvC"}
@@ -1,3 +1,4 @@
1
+ import { REPUTATION_SHARED_REASONS, } from "@prosopo/types";
1
2
  export const DEFAULT_TIMEOUT_MS = 700;
2
3
  export const parseAbuserScore = (score) => {
3
4
  const head = score?.split(" ")[0];
@@ -11,6 +12,38 @@ export const parseDetectorRisk = (reputation) => {
11
12
  const risk = reputation?.detector_risk;
12
13
  return typeof risk === "number" && risk >= 0 && risk <= 1 ? risk : undefined;
13
14
  };
15
+ export const parseReputationScore = (reputation) => {
16
+ const assessment = reputation?.assessment;
17
+ const score = assessment?.score;
18
+ if (assessment?.state !== "scored" ||
19
+ typeof score !== "number" ||
20
+ !Number.isFinite(score) ||
21
+ score < 0 ||
22
+ score > 1) {
23
+ return undefined;
24
+ }
25
+ const band = assessment.band;
26
+ return { score, ...(typeof band === "string" && band && { band }) };
27
+ };
28
+ export const parseSharedReason = (reputation) => {
29
+ const reason = reputation?.shared_reason;
30
+ return REPUTATION_SHARED_REASONS.find((known) => known === reason);
31
+ };
32
+ export const parseAccountSighting = (body) => {
33
+ const userAgents = body?.user_agents_7d;
34
+ if (body?.known !== true ||
35
+ typeof userAgents !== "number" ||
36
+ !Number.isInteger(userAgents) ||
37
+ userAgents < 0) {
38
+ return undefined;
39
+ }
40
+ return {
41
+ userAgents7d: userAgents,
42
+ deviceTypes: Array.isArray(body.device_types)
43
+ ? body.device_types.filter((type) => typeof type === "string")
44
+ : [],
45
+ };
46
+ };
14
47
  export class IpapiBackend {
15
48
  constructor(config) {
16
49
  this.config = config;
@@ -63,6 +96,7 @@ export class IpapiBackend {
63
96
  ip,
64
97
  };
65
98
  }
99
+ const reputation = parseReputationScore(data.reputation);
66
100
  const result = {
67
101
  ip: data.ip,
68
102
  isValid: true,
@@ -91,7 +125,10 @@ export class IpapiBackend {
91
125
  vpnType: data.vpn?.type,
92
126
  abuserScore: parseAbuserScore(data.asn?.abuser_score),
93
127
  companyAbuserScore: parseAbuserScore(data.company?.abuser_score),
128
+ reputationScore: reputation?.score,
129
+ reputationBand: reputation?.band,
94
130
  detectorRisk: parseDetectorRisk(data.reputation),
131
+ sharedReason: parseSharedReason(data.reputation),
95
132
  };
96
133
  return result;
97
134
  }
@@ -115,5 +152,36 @@ export class IpapiBackend {
115
152
  };
116
153
  }
117
154
  }
155
+ async accountSighting(siteKey, account) {
156
+ if (!siteKey || !account) {
157
+ return undefined;
158
+ }
159
+ const controller = new AbortController();
160
+ const timeoutId = setTimeout(() => controller.abort(), this.timeoutMs);
161
+ try {
162
+ const url = new URL(`/v1/account/${encodeURIComponent(siteKey)}/${encodeURIComponent(account)}`, this.config.baseUrl);
163
+ const doFetch = this.config.fetch ?? globalThis.fetch;
164
+ const response = await doFetch(url.toString(), {
165
+ method: "GET",
166
+ headers: { Accept: "application/json" },
167
+ signal: controller.signal,
168
+ });
169
+ if (!response.ok) {
170
+ return undefined;
171
+ }
172
+ return parseAccountSighting((await response.json()));
173
+ }
174
+ catch (error) {
175
+ this.config.logger?.debug(() => ({
176
+ msg: "Account sighting lookup failed",
177
+ err: error,
178
+ data: { siteKey },
179
+ }));
180
+ return undefined;
181
+ }
182
+ finally {
183
+ clearTimeout(timeoutId);
184
+ }
185
+ }
118
186
  }
119
187
  //# sourceMappingURL=ipapi.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipapi.js","sourceRoot":"","sources":["../../../src/backends/ipapi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipapi.js","sourceRoot":"","sources":["../../../src/backends/ipapi.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { describe, expect, it, vi } from "vitest";
2
- import { DEFAULT_TIMEOUT_MS, IpapiBackend, parseAbuserScore, parseDetectorRisk, } from "../backends/ipapi.js";
2
+ import { DEFAULT_TIMEOUT_MS, IpapiBackend, parseAbuserScore, parseAccountSighting, parseDetectorRisk, parseReputationScore, parseSharedReason, } from "../backends/ipapi.js";
3
3
  const BASE_URL = "https://api.ipapi.test/";
4
4
  const IP = "8.8.8.8";
5
5
  const baseResponse = (overrides = {}) => ({
@@ -337,6 +337,61 @@ describe("the detector risk", () => {
337
337
  expect(result.detectorRisk).toBeUndefined();
338
338
  });
339
339
  });
340
+ describe("reputation score", () => {
341
+ const lookupScore = async (reputation) => {
342
+ const result = expectValid(await backend(respondWith(baseResponse({ reputation }))).lookup(IP));
343
+ return {
344
+ reputationScore: result.reputationScore,
345
+ reputationBand: result.reputationBand,
346
+ };
347
+ };
348
+ it("carries a scored assessment's score and band onto the result", async () => {
349
+ expect(await lookupScore({
350
+ assessment: { state: "scored", score: 0.476, band: "elevated" },
351
+ })).toEqual({ reputationScore: 0.476, reputationBand: "elevated" });
352
+ });
353
+ it("keeps both ends of the range", () => {
354
+ expect(parseReputationScore({ assessment: { state: "scored", score: 0 } })).toEqual({ score: 0 });
355
+ expect(parseReputationScore({ assessment: { state: "scored", score: 1 } })).toEqual({ score: 1 });
356
+ });
357
+ it("reads an unscored assessment as no score, never as 0", async () => {
358
+ expect(await lookupScore({ assessment: { state: "no_evidence" } })).toEqual({ reputationScore: undefined, reputationBand: undefined });
359
+ expect(await lookupScore({})).toEqual({
360
+ reputationScore: undefined,
361
+ reputationBand: undefined,
362
+ });
363
+ expect(await lookupScore(undefined)).toEqual({
364
+ reputationScore: undefined,
365
+ reputationBand: undefined,
366
+ });
367
+ });
368
+ it("ignores a score that is not under a scored state", () => {
369
+ expect(parseReputationScore({
370
+ assessment: { state: "no_evidence", score: 0.9 },
371
+ })).toBeUndefined();
372
+ expect(parseReputationScore({ assessment: { score: 0.9 } })).toBeUndefined();
373
+ });
374
+ it("drops a score outside 0..1 or not a finite number", () => {
375
+ for (const score of [-0.1, 1.5, Number.NaN, Number.POSITIVE_INFINITY]) {
376
+ expect(parseReputationScore({ assessment: { state: "scored", score } })).toBeUndefined();
377
+ }
378
+ });
379
+ it("drops a score sent as a string", async () => {
380
+ const result = expectValid(await backend(respondWith({
381
+ ...baseResponse(),
382
+ reputation: { assessment: { state: "scored", score: "0.9" } },
383
+ })).lookup(IP));
384
+ expect(result.reputationScore).toBeUndefined();
385
+ });
386
+ it("does not read the abuser scores as a reputation score", async () => {
387
+ const result = expectValid(await backend(respondWith({
388
+ ...baseResponse({ is_abuser: true }),
389
+ asn: { asn: 1, abuser_score: "0.9 (Very High)" },
390
+ company: { name: "Example", abuser_score: "0.9 (Very High)" },
391
+ })).lookup(IP));
392
+ expect(result.reputationScore).toBeUndefined();
393
+ });
394
+ });
340
395
  describe("IpapiBackend.lookup timeout", () => {
341
396
  it("gives up on a hanging upstream and says so", async () => {
342
397
  const result = await backend(respondNever, { timeoutMs: 20 }).lookup(IP);
@@ -385,4 +440,89 @@ describe("IpapiBackend default fetch", () => {
385
440
  expect(result.isValid).toBe(false);
386
441
  });
387
442
  });
443
+ describe("parseSharedReason", () => {
444
+ it("reads a reason this client knows", () => {
445
+ expect(parseSharedReason({ shared_reason: "many_accounts" })).toBe("many_accounts");
446
+ });
447
+ it("reports a null, absent or unknown reason as not shared", () => {
448
+ expect(parseSharedReason({ shared_reason: null })).toBeUndefined();
449
+ expect(parseSharedReason({})).toBeUndefined();
450
+ expect(parseSharedReason(undefined)).toBeUndefined();
451
+ const fromTheWire = JSON.parse('{"shared_reason":"something_new"}');
452
+ expect(parseSharedReason(fromTheWire)).toBeUndefined();
453
+ });
454
+ });
455
+ describe("IpapiBackend.lookup shared reason", () => {
456
+ it("carries the reputation DB's shared reason onto the result", async () => {
457
+ const backend = new IpapiBackend({
458
+ baseUrl: BASE_URL,
459
+ fetch: respondWith(baseResponse({ reputation: { shared_reason: "mobile" } })),
460
+ });
461
+ const result = expectValid(await backend.lookup(IP));
462
+ expect(result.sharedReason).toBe("mobile");
463
+ });
464
+ });
465
+ describe("parseAccountSighting", () => {
466
+ it("reads a known account", () => {
467
+ expect(parseAccountSighting({
468
+ known: true,
469
+ user_agents_7d: 3,
470
+ device_types: ["iOS", "Mac"],
471
+ })).toEqual({ userAgents7d: 3, deviceTypes: ["iOS", "Mac"] });
472
+ });
473
+ it("has no answer for an unknown account or a malformed body", () => {
474
+ expect(parseAccountSighting({ known: false })).toBeUndefined();
475
+ expect(parseAccountSighting(undefined)).toBeUndefined();
476
+ expect(parseAccountSighting({ known: true })).toBeUndefined();
477
+ expect(parseAccountSighting({ known: true, user_agents_7d: -1 })).toBeUndefined();
478
+ expect(parseAccountSighting({ known: true, user_agents_7d: 1.5 })).toBeUndefined();
479
+ });
480
+ it("drops device types that are not strings", () => {
481
+ const fromTheWire = JSON.parse('{"known":true,"user_agents_7d":1,"device_types":["iOS",3,null]}');
482
+ expect(parseAccountSighting(fromTheWire)?.deviceTypes).toEqual(["iOS"]);
483
+ });
484
+ });
485
+ describe("IpapiBackend.accountSighting", () => {
486
+ it("asks for the site's account by path", async () => {
487
+ const fetch = vi.fn(respondWith({ known: true, user_agents_7d: 2, device_types: [] }));
488
+ const backend = new IpapiBackend({ baseUrl: BASE_URL, fetch });
489
+ expect(await backend.accountSighting("5Site", "5User/x")).toEqual({
490
+ userAgents7d: 2,
491
+ deviceTypes: [],
492
+ });
493
+ expect(fetch.mock.calls[0]?.[0]).toBe("https://api.ipapi.test/v1/account/5Site/5User%2Fx");
494
+ expect(fetch.mock.calls[0]?.[1].method).toBe("GET");
495
+ });
496
+ it("has no answer when the DB has no account data", async () => {
497
+ const backend = new IpapiBackend({
498
+ baseUrl: BASE_URL,
499
+ fetch: respondWith({ error: "not found" }, { status: 404 }),
500
+ });
501
+ expect(await backend.accountSighting("5Site", "5User")).toBeUndefined();
502
+ });
503
+ it("has no answer when the DB cannot be reached", async () => {
504
+ const backend = new IpapiBackend({
505
+ baseUrl: BASE_URL,
506
+ fetch: async () => {
507
+ throw new Error("connection refused");
508
+ },
509
+ });
510
+ expect(await backend.accountSighting("5Site", "5User")).toBeUndefined();
511
+ });
512
+ it("has no answer when the DB is too slow", async () => {
513
+ const backend = new IpapiBackend({
514
+ baseUrl: BASE_URL,
515
+ fetch: respondNever,
516
+ timeoutMs: 5,
517
+ });
518
+ expect(await backend.accountSighting("5Site", "5User")).toBeUndefined();
519
+ });
520
+ it("does not call out without a site or an account", async () => {
521
+ const fetch = vi.fn(respondWith({}));
522
+ const backend = new IpapiBackend({ baseUrl: BASE_URL, fetch });
523
+ expect(await backend.accountSighting("", "5User")).toBeUndefined();
524
+ expect(await backend.accountSighting("5Site", "")).toBeUndefined();
525
+ expect(fetch).not.toHaveBeenCalled();
526
+ });
527
+ });
388
528
  //# sourceMappingURL=ipapi.unit.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipapi.unit.test.js","sourceRoot":"","sources":["../../../src/tests/ipapi.unit.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ipapi.unit.test.js","sourceRoot":"","sources":["../../../src/tests/ipapi.unit.test.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,11 @@
1
1
  import type { Logger } from "@prosopo/logger";
2
- import type { IPInfoResponse } from "@prosopo/types";
2
+ import type { AccountSighting, IPInfoResponse } from "@prosopo/types";
3
3
  import type { LookupCacheConfig } from "./lookupCache.js";
4
4
  export interface IIpInfoService {
5
5
  initialize(): Promise<void>;
6
6
  lookup(ip: string): Promise<IPInfoResponse>;
7
7
  country(ip: string): string | undefined;
8
+ accountSighting(siteKey: string, account: string): Promise<AccountSighting | undefined>;
8
9
  isAvailable(): boolean;
9
10
  }
10
11
  export interface IpInfoServiceConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAM5C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxC,WAAW,IAAI,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAM5C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAMxC,eAAe,CACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IACxC,WAAW,IAAI,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC"}
@@ -1,4 +1,4 @@
1
- import type { IPInfoResponse } from "@prosopo/types";
1
+ import type { AccountSighting, IPInfoResponse } from "@prosopo/types";
2
2
  import { IpapiBackend } from "./backends/ipapi.js";
3
3
  import { MaxMindBackend } from "./backends/maxmind.js";
4
4
  import type { IIpInfoService, IpInfoServiceConfig } from "./types.js";
@@ -16,6 +16,7 @@ export declare class IpInfoService implements IIpInfoService {
16
16
  initialize(): Promise<void>;
17
17
  isAvailable(): boolean;
18
18
  country(ip: string): string | undefined;
19
+ accountSighting(siteKey: string, account: string): Promise<AccountSighting | undefined>;
19
20
  lookup(ip: string): Promise<IPInfoResponse>;
20
21
  private lookupUncached;
21
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"IpInfoService.d.ts","sourceRoot":"","sources":["../../src/IpInfoService.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAiCjD;AAQD,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,aAAc,YAAW,cAAc;IACnD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEpC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,cAAc;IA6B5D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,WAAW,IAAI,OAAO;IAsBtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAMnC,cAAc;CA4C5B"}
1
+ {"version":3,"file":"IpInfoService.d.ts","sourceRoot":"","sources":["../../src/IpInfoService.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AAMtE,wBAAgB,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAiCjD;AAQD,MAAM,WAAW,cAAc;IAC9B,OAAO,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;CAC5B;AAED,qBAAa,aAAc,YAAW,cAAc;IACnD,OAAO,CAAC,cAAc,CAA+B;IACrD,OAAO,CAAC,YAAY,CAA6B;IACjD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;gBAEpC,MAAM,EAAE,mBAAmB,EAAE,QAAQ,CAAC,EAAE,cAAc;IA6B5D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAcjC,WAAW,IAAI,OAAO;IAsBtB,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;IAMjC,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAOjC,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;YAMnC,cAAc;CA4C5B"}
@@ -1,5 +1,5 @@
1
1
  import type { Logger } from "@prosopo/logger";
2
- import type { IPApiReputationInfo, IPInfoResponse } from "@prosopo/types";
2
+ import { type AccountSighting, type IPApiReputationInfo, type IPInfoResponse, type ReputationAccountResponse, type ReputationSharedReason } from "@prosopo/types";
3
3
  export declare const DEFAULT_TIMEOUT_MS = 700;
4
4
  export type FetchFn = (url: string, init: RequestInit) => Promise<globalThis.Response>;
5
5
  export interface IpapiBackendConfig {
@@ -11,11 +11,18 @@ export interface IpapiBackendConfig {
11
11
  }
12
12
  export declare const parseAbuserScore: (score: string | undefined) => number | undefined;
13
13
  export declare const parseDetectorRisk: (reputation: IPApiReputationInfo | undefined) => number | undefined;
14
+ export declare const parseReputationScore: (reputation: IPApiReputationInfo | undefined) => {
15
+ score: number;
16
+ band?: string;
17
+ } | undefined;
18
+ export declare const parseSharedReason: (reputation: IPApiReputationInfo | undefined) => ReputationSharedReason | undefined;
19
+ export declare const parseAccountSighting: (body: ReputationAccountResponse | undefined) => AccountSighting | undefined;
14
20
  export declare class IpapiBackend {
15
21
  private config;
16
22
  constructor(config: IpapiBackendConfig);
17
23
  isAvailable(): boolean;
18
24
  private get timeoutMs();
19
25
  lookup(ip: string): Promise<IPInfoResponse>;
26
+ accountSighting(siteKey: string, account: string): Promise<AccountSighting | undefined>;
20
27
  }
21
28
  //# sourceMappingURL=ipapi.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ipapi.d.ts","sourceRoot":"","sources":["../../../src/backends/ipapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EACX,mBAAmB,EAEnB,cAAc,EAEd,MAAM,gBAAgB,CAAC;AAMxB,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,MAAM,MAAM,OAAO,GAAG,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,KACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAuBD,eAAO,MAAM,gBAAgB,UACrB,MAAM,GAAG,SAAS,KACvB,MAAM,GAAG,SASX,CAAC;AAEF,eAAO,MAAM,iBAAiB,eACjB,mBAAmB,GAAG,SAAS,KACzC,MAAM,GAAG,SAGX,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAItC,WAAW,IAAI,OAAO;IAItB,OAAO,KAAK,SAAS,GAEpB;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;CA2GjD"}
1
+ {"version":3,"file":"ipapi.d.ts","sourceRoot":"","sources":["../../../src/backends/ipapi.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EACN,KAAK,eAAe,EACpB,KAAK,mBAAmB,EAExB,KAAK,cAAc,EAGnB,KAAK,yBAAyB,EAC9B,KAAK,sBAAsB,EAC3B,MAAM,gBAAgB,CAAC;AAMxB,eAAO,MAAM,kBAAkB,MAAM,CAAC;AAGtC,MAAM,MAAM,OAAO,GAAG,CACrB,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,WAAW,KACb,OAAO,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AAElC,MAAM,WAAW,kBAAkB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,SAAS,CAAC,EAAE,MAAM,CAAC;CACnB;AAuBD,eAAO,MAAM,gBAAgB,UACrB,MAAM,GAAG,SAAS,KACvB,MAAM,GAAG,SASX,CAAC;AAEF,eAAO,MAAM,iBAAiB,eACjB,mBAAmB,GAAG,SAAS,KACzC,MAAM,GAAG,SAGX,CAAC;AAMF,eAAO,MAAM,oBAAoB,eACpB,mBAAmB,GAAG,SAAS,KACzC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,SAcrC,CAAC;AAGF,eAAO,MAAM,iBAAiB,eACjB,mBAAmB,GAAG,SAAS,KACzC,sBAAsB,GAAG,SAG3B,CAAC;AAMF,eAAO,MAAM,oBAAoB,SAC1B,yBAAyB,GAAG,SAAS,KACzC,eAAe,GAAG,SAkBpB,CAAC;AAEF,qBAAa,YAAY;IACxB,OAAO,CAAC,MAAM,CAAqB;gBAEvB,MAAM,EAAE,kBAAkB;IAItC,WAAW,IAAI,OAAO;IAItB,OAAO,KAAK,SAAS,GAEpB;IAEK,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAqH3C,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;CAkCvC"}
@@ -1,10 +1,11 @@
1
1
  import type { Logger } from "@prosopo/logger";
2
- import type { IPInfoResponse } from "@prosopo/types";
2
+ import type { AccountSighting, IPInfoResponse } from "@prosopo/types";
3
3
  import type { LookupCacheConfig } from "./lookupCache.js";
4
4
  export interface IIpInfoService {
5
5
  initialize(): Promise<void>;
6
6
  lookup(ip: string): Promise<IPInfoResponse>;
7
7
  country(ip: string): string | undefined;
8
+ accountSighting(siteKey: string, account: string): Promise<AccountSighting | undefined>;
8
9
  isAvailable(): boolean;
9
10
  }
10
11
  export interface IpInfoServiceConfig {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAM5C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IACxC,WAAW,IAAI,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACtE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC9B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC;IAM5C,OAAO,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;IAMxC,eAAe,CACd,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACb,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAAC;IACxC,WAAW,IAAI,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,mBAAmB;IACnC,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,iBAAiB,CAAC;CAChC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prosopo/ipinfo",
3
- "version": "0.5.3",
3
+ "version": "0.7.0",
4
4
  "description": "IP information service with MaxMind and ipapi.is backends",
5
5
  "main": "dist/esm/index.js",
6
6
  "types": "dist/types/index.d.ts",
@@ -17,8 +17,8 @@
17
17
  },
18
18
  "dependencies": {
19
19
  "@maxmind/geoip2-node": "7.1.0",
20
- "@prosopo/logger": "2.1.8",
21
- "@prosopo/types": "5.24.0"
20
+ "@prosopo/logger": "2.1.9",
21
+ "@prosopo/types": "5.26.0"
22
22
  },
23
23
  "devDependencies": {
24
24
  "@prosopo/config": "3.5.3",