node-ipdox 1.0.6 → 1.1.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.
- package/README.md +28 -5
- package/dist/ipdox.d.ts +20 -2
- package/dist/ipdox.d.ts.map +1 -1
- package/dist/ipdox.js +403 -66
- package/dist/ipdox.js.map +1 -1
- package/dist/types/IPDOXConstructor.d.ts +4 -0
- package/dist/types/IPDOXConstructor.d.ts.map +1 -1
- package/dist/types/IPDOXResponse.d.ts +4 -4
- package/dist/types/IPDOXResponse.d.ts.map +1 -1
- package/dist/utils/apis.d.ts +4 -1
- package/dist/utils/apis.d.ts.map +1 -1
- package/dist/utils/apis.js +3 -0
- package/dist/utils/apis.js.map +1 -1
- package/package.json +21 -7
package/README.md
CHANGED
|
@@ -4,6 +4,25 @@
|
|
|
4
4
|
|
|
5
5
|
IPDox is a simple and efficient IP geolocation library for Node.js. It fetches data from multiple geolocation APIs and provides a unified response. It also includes a caching mechanism to prevent unnecessary requests.
|
|
6
6
|
|
|
7
|
+
## Providers
|
|
8
|
+
|
|
9
|
+
Current keyless providers used:
|
|
10
|
+
|
|
11
|
+
- ip-api.com
|
|
12
|
+
- ipwho.is
|
|
13
|
+
- freeipapi.com
|
|
14
|
+
- ipapi.co
|
|
15
|
+
|
|
16
|
+
Note: ip-api.com free tier uses HTTP only. Provide `ipApiKey` to enable HTTPS (pro).
|
|
17
|
+
|
|
18
|
+
Fallback providers (best-effort, used after primary providers fail):
|
|
19
|
+
|
|
20
|
+
- geoip.vuiz.net
|
|
21
|
+
- apip.cc
|
|
22
|
+
- ip-sonar.com
|
|
23
|
+
|
|
24
|
+
Fallback providers can return partial data; `city` may be an empty string when unknown.
|
|
25
|
+
|
|
7
26
|
## Installation
|
|
8
27
|
|
|
9
28
|
```bash
|
|
@@ -18,7 +37,9 @@ import { IPDox } from "node-ipdox";
|
|
|
18
37
|
const ipdox = new IPDox({
|
|
19
38
|
cacheMaxItems: 5000,
|
|
20
39
|
cacheMaxAge: 43200000,
|
|
21
|
-
maxRetries: 10
|
|
40
|
+
maxRetries: 10,
|
|
41
|
+
requestTimeoutMs: 5000,
|
|
42
|
+
ipApiKey: "YOUR_IP_API_KEY"
|
|
22
43
|
});
|
|
23
44
|
|
|
24
45
|
ipdox
|
|
@@ -29,13 +50,15 @@ ipdox
|
|
|
29
50
|
|
|
30
51
|
## API
|
|
31
52
|
|
|
32
|
-
### `new IPDox({ cacheMaxItems, cacheMaxAge, maxRetries })`
|
|
53
|
+
### `new IPDox({ cacheMaxItems, cacheMaxAge, maxRetries, requestTimeoutMs, ipApiKey })`
|
|
33
54
|
|
|
34
55
|
Creates a new instance of IPDox.
|
|
35
56
|
|
|
36
57
|
- `cacheMaxItems` - The maximum number of items to store in the cache (default: 1000)
|
|
37
58
|
- `cacheMaxAge` - The cache timeout in milliseconds (default: 43200000 (12 hours))
|
|
38
59
|
- `maxRetries` - Maximum number of retries if an API request fails (default: 10)
|
|
60
|
+
- `requestTimeoutMs` - Request timeout in milliseconds (default: 5000)
|
|
61
|
+
- `ipApiKey` - Optional ip-api.com pro API key to enable HTTPS
|
|
39
62
|
|
|
40
63
|
### `ipdox.doxIP({ ip })`
|
|
41
64
|
|
|
@@ -45,7 +68,7 @@ Fetches geolocation data for the specified IP address.
|
|
|
45
68
|
|
|
46
69
|
Returns a Promise that resolves to an `IPDOXResponse` object.
|
|
47
70
|
|
|
48
|
-
If no response is found, undefined is returned.
|
|
71
|
+
If no response is found or the IP is invalid, undefined is returned.
|
|
49
72
|
|
|
50
73
|
## IPDOXResponse
|
|
51
74
|
|
|
@@ -59,8 +82,8 @@ export interface IPDOXResponse {
|
|
|
59
82
|
continent: string; // Continent ISO code
|
|
60
83
|
latitude: number; // Latitude
|
|
61
84
|
longitude: number; // Longitude
|
|
62
|
-
zip
|
|
63
|
-
isp
|
|
85
|
+
zip?: string; // Zip code (might be undefined)
|
|
86
|
+
isp?: string; // ISP name (might be undefined)
|
|
64
87
|
proxy?: boolean; // Boolean indicating if the IP address is a proxy (might be undefined)
|
|
65
88
|
isHosting?: boolean; // Boolean indicating if the IP address is a hosting provider (might be undefined)
|
|
66
89
|
proxyInfo?: {
|
package/dist/ipdox.d.ts
CHANGED
|
@@ -4,6 +4,11 @@ import { IPDOXConstructor } from "./types/IPDOXConstructor.js";
|
|
|
4
4
|
declare class IPDox {
|
|
5
5
|
private cache;
|
|
6
6
|
private maxRetries;
|
|
7
|
+
private requestTimeoutMs;
|
|
8
|
+
private inFlight;
|
|
9
|
+
private http;
|
|
10
|
+
private ipApiKey?;
|
|
11
|
+
private unavailableProviders;
|
|
7
12
|
/**
|
|
8
13
|
* @description Creates an instance of IPDox.
|
|
9
14
|
* @param {IPDOXConstructor} params
|
|
@@ -11,7 +16,7 @@ declare class IPDox {
|
|
|
11
16
|
* @param {number} params.cacheMaxAge - The cache timeout in milliseconds (default: 43200000 (12 hours))
|
|
12
17
|
* @param {number} params.maxRetries - The maximum number of retries (default: 10)
|
|
13
18
|
*/
|
|
14
|
-
constructor({ cacheMaxItems, cacheMaxAge, maxRetries }?: IPDOXConstructor);
|
|
19
|
+
constructor({ cacheMaxItems, cacheMaxAge, maxRetries, requestTimeoutMs, ipApiKey }?: IPDOXConstructor);
|
|
15
20
|
/**
|
|
16
21
|
* @description Get information about an IP address
|
|
17
22
|
* @param {IPDOXRequest} params - Params of the request
|
|
@@ -20,12 +25,25 @@ declare class IPDox {
|
|
|
20
25
|
* @memberof IPDox
|
|
21
26
|
*/
|
|
22
27
|
doxIP({ ip }: IPDOXRequest): Promise<IPDOXResponse | undefined>;
|
|
23
|
-
private
|
|
28
|
+
private shuffleProviders;
|
|
29
|
+
private fetchWithRetries;
|
|
30
|
+
private fetchFromProvider;
|
|
31
|
+
private waitWithJitter;
|
|
32
|
+
private noteProviderFailure;
|
|
33
|
+
private isDnsError;
|
|
34
|
+
private parseNumber;
|
|
35
|
+
private parseString;
|
|
36
|
+
private pickString;
|
|
37
|
+
private pickStringOrEmpty;
|
|
38
|
+
private normalizeContinentCode;
|
|
24
39
|
private cacheResponse;
|
|
25
40
|
private fetchIPHyphenAPIDotCom;
|
|
26
41
|
private fetchFreeIPAPIDotCom;
|
|
27
42
|
private fetchIPWhoDotIs;
|
|
28
43
|
private fetchIPAPIDotCo;
|
|
44
|
+
private fetchGeoIPVuizDotNet;
|
|
45
|
+
private fetchAPIPDotCC;
|
|
46
|
+
private fetchIPSonarDotCom;
|
|
29
47
|
}
|
|
30
48
|
export default IPDox;
|
|
31
49
|
//# sourceMappingURL=ipdox.d.ts.map
|
package/dist/ipdox.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipdox.d.ts","sourceRoot":"","sources":["../src/ipdox.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ipdox.d.ts","sourceRoot":"","sources":["../src/ipdox.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAC;AAoB/D,cAAM,KAAK;IACV,OAAO,CAAC,KAAK,CAAkC;IAC/C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAkD;IAClE,OAAO,CAAC,IAAI,CAAgB;IAC5B,OAAO,CAAC,QAAQ,CAAC,CAAS;IAC1B,OAAO,CAAC,oBAAoB,CAAe;IAE3C;;;;;;OAMG;gBAEF,EACC,aAAoB,EACpB,WAAsB,EACtB,UAAe,EACf,gBAA6C,EAC7C,QAAQ,EACR,GAAE,gBAKF;IAqBF;;;;;;OAMG;IACG,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,YAAY,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IA0BrE,OAAO,CAAC,gBAAgB;YAcV,gBAAgB;YAmEhB,iBAAiB;YAwBjB,cAAc;IAS5B,OAAO,CAAC,mBAAmB;IAM3B,OAAO,CAAC,UAAU;IAUlB,OAAO,CAAC,WAAW;IAkBnB,OAAO,CAAC,WAAW;IASnB,OAAO,CAAC,UAAU;IAWlB,OAAO,CAAC,iBAAiB;IAIzB,OAAO,CAAC,sBAAsB;IA0B9B,OAAO,CAAC,aAAa;YAIP,sBAAsB;YAuDtB,oBAAoB;YAkDpB,eAAe;YAoDf,eAAe;YAuCf,oBAAoB;YAwDpB,cAAc;YAyDd,kBAAkB;CA6ChC;AAED,eAAe,KAAK,CAAC"}
|
package/dist/ipdox.js
CHANGED
|
@@ -3,12 +3,33 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
const node_net_1 = require("node:net");
|
|
6
7
|
const axios_1 = __importDefault(require("axios"));
|
|
7
8
|
const apis_js_1 = require("./utils/apis.js");
|
|
8
9
|
const lru_cache_1 = require("lru-cache");
|
|
10
|
+
const DEFAULT_REQUEST_TIMEOUT_MS = 5000;
|
|
11
|
+
const DEFAULT_USER_AGENT = "node-ipdox";
|
|
12
|
+
const RETRY_BACKOFF_BASE_MS = 150;
|
|
13
|
+
const RETRY_BACKOFF_MAX_MS = 2000;
|
|
14
|
+
const PRIMARY_PROVIDERS = [
|
|
15
|
+
apis_js_1.GeoAPIs.IP_HYPHEN_API_DOT_COM,
|
|
16
|
+
apis_js_1.GeoAPIs.FREE_IP_API_DOT_COM,
|
|
17
|
+
apis_js_1.GeoAPIs.IPWHO_DOT_IS,
|
|
18
|
+
apis_js_1.GeoAPIs.IPAPI_DOT_CO
|
|
19
|
+
];
|
|
20
|
+
const FALLBACK_PROVIDERS = [
|
|
21
|
+
apis_js_1.GeoAPIs.GEOIP_VUIZ_DOT_NET,
|
|
22
|
+
apis_js_1.GeoAPIs.APIP_DOT_CC,
|
|
23
|
+
apis_js_1.GeoAPIs.IP_SONAR_DOT_COM
|
|
24
|
+
];
|
|
9
25
|
class IPDox {
|
|
10
26
|
cache;
|
|
11
27
|
maxRetries;
|
|
28
|
+
requestTimeoutMs;
|
|
29
|
+
inFlight;
|
|
30
|
+
http;
|
|
31
|
+
ipApiKey;
|
|
32
|
+
unavailableProviders;
|
|
12
33
|
/**
|
|
13
34
|
* @description Creates an instance of IPDox.
|
|
14
35
|
* @param {IPDOXConstructor} params
|
|
@@ -16,16 +37,29 @@ class IPDox {
|
|
|
16
37
|
* @param {number} params.cacheMaxAge - The cache timeout in milliseconds (default: 43200000 (12 hours))
|
|
17
38
|
* @param {number} params.maxRetries - The maximum number of retries (default: 10)
|
|
18
39
|
*/
|
|
19
|
-
constructor({ cacheMaxItems = 1000, cacheMaxAge = 43200000, maxRetries = 10 } = {
|
|
40
|
+
constructor({ cacheMaxItems = 1000, cacheMaxAge = 43200000, maxRetries = 10, requestTimeoutMs = DEFAULT_REQUEST_TIMEOUT_MS, ipApiKey } = {
|
|
20
41
|
cacheMaxItems: 1000,
|
|
21
42
|
cacheMaxAge: 43200000,
|
|
22
|
-
maxRetries: 10
|
|
43
|
+
maxRetries: 10,
|
|
44
|
+
requestTimeoutMs: DEFAULT_REQUEST_TIMEOUT_MS
|
|
23
45
|
}) {
|
|
24
46
|
this.cache = new lru_cache_1.LRUCache({
|
|
25
47
|
max: cacheMaxItems,
|
|
26
|
-
ttl: cacheMaxAge
|
|
48
|
+
ttl: cacheMaxAge,
|
|
49
|
+
ttlAutopurge: true
|
|
27
50
|
});
|
|
28
51
|
this.maxRetries = maxRetries;
|
|
52
|
+
this.requestTimeoutMs = requestTimeoutMs;
|
|
53
|
+
this.inFlight = new Map();
|
|
54
|
+
this.ipApiKey = typeof ipApiKey === "string" ? ipApiKey.trim() : undefined;
|
|
55
|
+
this.unavailableProviders = new Set();
|
|
56
|
+
this.http = axios_1.default.create({
|
|
57
|
+
timeout: this.requestTimeoutMs,
|
|
58
|
+
headers: {
|
|
59
|
+
"User-Agent": DEFAULT_USER_AGENT
|
|
60
|
+
},
|
|
61
|
+
validateStatus: status => status >= 200 && status < 500
|
|
62
|
+
});
|
|
29
63
|
}
|
|
30
64
|
/**
|
|
31
65
|
* @description Get information about an IP address
|
|
@@ -35,65 +69,212 @@ class IPDox {
|
|
|
35
69
|
* @memberof IPDox
|
|
36
70
|
*/
|
|
37
71
|
async doxIP({ ip }) {
|
|
72
|
+
const normalizedIP = typeof ip === "string" ? ip.trim() : "";
|
|
38
73
|
// Check that the ip is valid
|
|
39
|
-
if (!
|
|
74
|
+
if (!normalizedIP || (0, node_net_1.isIP)(normalizedIP) === 0) {
|
|
40
75
|
return undefined;
|
|
41
76
|
}
|
|
42
77
|
// Check if the IP is already in the cache
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
return cachedResponse;
|
|
47
|
-
}
|
|
78
|
+
const cachedResponse = this.cache.get(normalizedIP);
|
|
79
|
+
if (cachedResponse) {
|
|
80
|
+
return cachedResponse;
|
|
48
81
|
}
|
|
49
|
-
//
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
82
|
+
// Check if there's an ongoing request for the same IP
|
|
83
|
+
const inFlight = this.inFlight.get(normalizedIP);
|
|
84
|
+
if (inFlight) {
|
|
85
|
+
return inFlight;
|
|
86
|
+
}
|
|
87
|
+
const task = this.fetchWithRetries(normalizedIP);
|
|
88
|
+
this.inFlight.set(normalizedIP, task);
|
|
89
|
+
task.finally(() => this.inFlight.delete(normalizedIP));
|
|
90
|
+
return task;
|
|
91
|
+
}
|
|
92
|
+
shuffleProviders(providers, avoidFirst) {
|
|
93
|
+
const shuffled = [...providers];
|
|
94
|
+
for (let i = shuffled.length - 1; i > 0; i--) {
|
|
95
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
96
|
+
[shuffled[i], shuffled[j]] = [shuffled[j], shuffled[i]];
|
|
97
|
+
}
|
|
98
|
+
if (avoidFirst && shuffled.length > 1 && shuffled[0] === avoidFirst) {
|
|
99
|
+
[shuffled[0], shuffled[1]] = [shuffled[1], shuffled[0]];
|
|
100
|
+
}
|
|
101
|
+
return shuffled;
|
|
102
|
+
}
|
|
103
|
+
async fetchWithRetries(ip) {
|
|
104
|
+
if (this.maxRetries <= 0) {
|
|
105
|
+
return undefined;
|
|
106
|
+
}
|
|
107
|
+
const primaryProviders = PRIMARY_PROVIDERS.filter(provider => !this.unavailableProviders.has(provider));
|
|
108
|
+
const fallbackProviders = FALLBACK_PROVIDERS.filter(provider => !this.unavailableProviders.has(provider));
|
|
109
|
+
const providers = primaryProviders.length > 0 || fallbackProviders.length > 0
|
|
110
|
+
? { primary: primaryProviders, fallback: fallbackProviders }
|
|
111
|
+
: {
|
|
112
|
+
primary: Object.values(apis_js_1.GeoAPIs).filter(provider => !this.unavailableProviders.has(provider)),
|
|
113
|
+
fallback: []
|
|
114
|
+
};
|
|
115
|
+
let attempts = 0;
|
|
116
|
+
let order = [
|
|
117
|
+
...this.shuffleProviders(providers.primary),
|
|
118
|
+
...this.shuffleProviders(providers.fallback)
|
|
119
|
+
];
|
|
120
|
+
let index = 0;
|
|
121
|
+
if (order.length === 0) {
|
|
122
|
+
return undefined;
|
|
123
|
+
}
|
|
124
|
+
while (attempts < this.maxRetries) {
|
|
125
|
+
if (index >= order.length) {
|
|
126
|
+
order = [
|
|
127
|
+
...this.shuffleProviders(providers.primary),
|
|
128
|
+
...this.shuffleProviders(providers.fallback)
|
|
129
|
+
];
|
|
130
|
+
index = 0;
|
|
131
|
+
if (order.length === 0) {
|
|
132
|
+
return undefined;
|
|
69
133
|
}
|
|
70
134
|
}
|
|
135
|
+
const provider = order[index];
|
|
136
|
+
index++;
|
|
137
|
+
if (this.unavailableProviders.has(provider)) {
|
|
138
|
+
attempts++;
|
|
139
|
+
continue;
|
|
140
|
+
}
|
|
141
|
+
try {
|
|
142
|
+
return await this.fetchFromProvider(provider, ip);
|
|
143
|
+
}
|
|
71
144
|
catch (error) {
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
145
|
+
this.noteProviderFailure(provider, error);
|
|
146
|
+
attempts++;
|
|
147
|
+
if (attempts < this.maxRetries) {
|
|
148
|
+
await this.waitWithJitter(attempts);
|
|
149
|
+
}
|
|
75
150
|
}
|
|
76
151
|
}
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
152
|
+
return undefined;
|
|
153
|
+
}
|
|
154
|
+
async fetchFromProvider(provider, ip) {
|
|
155
|
+
switch (provider) {
|
|
156
|
+
case apis_js_1.GeoAPIs.IP_HYPHEN_API_DOT_COM:
|
|
157
|
+
return this.fetchIPHyphenAPIDotCom(ip);
|
|
158
|
+
case apis_js_1.GeoAPIs.FREE_IP_API_DOT_COM:
|
|
159
|
+
return this.fetchFreeIPAPIDotCom(ip);
|
|
160
|
+
case apis_js_1.GeoAPIs.IPWHO_DOT_IS:
|
|
161
|
+
return this.fetchIPWhoDotIs(ip);
|
|
162
|
+
case apis_js_1.GeoAPIs.IPAPI_DOT_CO:
|
|
163
|
+
return this.fetchIPAPIDotCo(ip);
|
|
164
|
+
case apis_js_1.GeoAPIs.GEOIP_VUIZ_DOT_NET:
|
|
165
|
+
return this.fetchGeoIPVuizDotNet(ip);
|
|
166
|
+
case apis_js_1.GeoAPIs.APIP_DOT_CC:
|
|
167
|
+
return this.fetchAPIPDotCC(ip);
|
|
168
|
+
case apis_js_1.GeoAPIs.IP_SONAR_DOT_COM:
|
|
169
|
+
return this.fetchIPSonarDotCom(ip);
|
|
170
|
+
default:
|
|
171
|
+
throw new Error("Unsupported provider");
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
async waitWithJitter(attempt) {
|
|
175
|
+
const baseDelay = Math.min(RETRY_BACKOFF_MAX_MS, RETRY_BACKOFF_BASE_MS * 2 ** Math.max(0, attempt - 1));
|
|
176
|
+
const jitter = Math.random() * baseDelay;
|
|
177
|
+
await new Promise(resolve => setTimeout(resolve, jitter));
|
|
178
|
+
}
|
|
179
|
+
noteProviderFailure(provider, error) {
|
|
180
|
+
if (provider === apis_js_1.GeoAPIs.IPAPI_DOT_CO && this.isDnsError(error)) {
|
|
181
|
+
this.unavailableProviders.add(provider);
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
isDnsError(error) {
|
|
185
|
+
if (!error || typeof error !== "object") {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
const maybeError = error;
|
|
189
|
+
const code = maybeError.code ?? maybeError.cause?.code;
|
|
190
|
+
return code === "ENOTFOUND" || code === "EAI_AGAIN" || code === "ENODATA";
|
|
191
|
+
}
|
|
192
|
+
parseNumber(value) {
|
|
193
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
194
|
+
return value;
|
|
195
|
+
}
|
|
196
|
+
if (typeof value === "string") {
|
|
197
|
+
const trimmed = value.trim();
|
|
198
|
+
if (trimmed !== "") {
|
|
199
|
+
const parsed = Number.parseFloat(trimmed);
|
|
200
|
+
if (Number.isFinite(parsed)) {
|
|
201
|
+
return parsed;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
80
204
|
}
|
|
81
|
-
|
|
82
|
-
return response ? response : undefined;
|
|
205
|
+
return undefined;
|
|
83
206
|
}
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
207
|
+
parseString(value) {
|
|
208
|
+
if (typeof value === "string") {
|
|
209
|
+
const trimmed = value.trim();
|
|
210
|
+
return trimmed === "" ? undefined : trimmed;
|
|
211
|
+
}
|
|
212
|
+
return undefined;
|
|
213
|
+
}
|
|
214
|
+
pickString(...values) {
|
|
215
|
+
for (const value of values) {
|
|
216
|
+
const parsed = this.parseString(value);
|
|
217
|
+
if (parsed) {
|
|
218
|
+
return parsed;
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
return undefined;
|
|
222
|
+
}
|
|
223
|
+
pickStringOrEmpty(...values) {
|
|
224
|
+
return this.pickString(...values) ?? "";
|
|
225
|
+
}
|
|
226
|
+
normalizeContinentCode(continentName) {
|
|
227
|
+
const name = this.parseString(continentName)?.toLowerCase();
|
|
228
|
+
if (!name) {
|
|
229
|
+
return undefined;
|
|
230
|
+
}
|
|
231
|
+
switch (name) {
|
|
232
|
+
case "north america":
|
|
233
|
+
return "NA";
|
|
234
|
+
case "south america":
|
|
235
|
+
return "SA";
|
|
236
|
+
case "europe":
|
|
237
|
+
return "EU";
|
|
238
|
+
case "africa":
|
|
239
|
+
return "AF";
|
|
240
|
+
case "asia":
|
|
241
|
+
return "AS";
|
|
242
|
+
case "oceania":
|
|
243
|
+
return "OC";
|
|
244
|
+
case "antarctica":
|
|
245
|
+
return "AN";
|
|
246
|
+
default:
|
|
247
|
+
return undefined;
|
|
248
|
+
}
|
|
89
249
|
}
|
|
90
250
|
cacheResponse(ip, response) {
|
|
91
251
|
this.cache.set(ip, response);
|
|
92
252
|
}
|
|
93
253
|
async fetchIPHyphenAPIDotCom(ip) {
|
|
94
|
-
const
|
|
95
|
-
|
|
254
|
+
const baseURL = this.ipApiKey
|
|
255
|
+
? "https://pro.ip-api.com/json/"
|
|
256
|
+
: apis_js_1.GeoAPIs.IP_HYPHEN_API_DOT_COM;
|
|
257
|
+
const requestURL = baseURL +
|
|
258
|
+
ip +
|
|
259
|
+
"?fields=24899583" +
|
|
260
|
+
(this.ipApiKey ? `&key=${encodeURIComponent(this.ipApiKey)}` : "");
|
|
261
|
+
const response = await this.http.get(requestURL);
|
|
96
262
|
if (response.data.status === "success") {
|
|
263
|
+
const zip = typeof response.data.zip === "string" && response.data.zip !== ""
|
|
264
|
+
? response.data.zip
|
|
265
|
+
: undefined;
|
|
266
|
+
const isp = typeof response.data.isp === "string" && response.data.isp !== ""
|
|
267
|
+
? response.data.isp
|
|
268
|
+
: undefined;
|
|
269
|
+
const proxy = typeof response.data.proxy === "boolean"
|
|
270
|
+
? response.data.proxy
|
|
271
|
+
: undefined;
|
|
272
|
+
const isHosting = typeof response.data.hosting === "boolean"
|
|
273
|
+
? response.data.hosting
|
|
274
|
+
: undefined;
|
|
275
|
+
const timeZone = typeof response.data.timezone === "string"
|
|
276
|
+
? response.data.timezone
|
|
277
|
+
: undefined;
|
|
97
278
|
const formattedResponse = {
|
|
98
279
|
ip: response.data.query,
|
|
99
280
|
country: response.data.countryCode,
|
|
@@ -101,11 +282,11 @@ class IPDox {
|
|
|
101
282
|
continent: response.data.continentCode,
|
|
102
283
|
latitude: response.data.lat,
|
|
103
284
|
longitude: response.data.lon,
|
|
104
|
-
zip
|
|
105
|
-
isp
|
|
106
|
-
proxy
|
|
107
|
-
isHosting
|
|
108
|
-
timeZone
|
|
285
|
+
zip,
|
|
286
|
+
isp,
|
|
287
|
+
proxy,
|
|
288
|
+
isHosting,
|
|
289
|
+
timeZone,
|
|
109
290
|
source: "ip-api.com"
|
|
110
291
|
};
|
|
111
292
|
this.cacheResponse(ip, formattedResponse);
|
|
@@ -117,8 +298,25 @@ class IPDox {
|
|
|
117
298
|
}
|
|
118
299
|
async fetchFreeIPAPIDotCom(ip) {
|
|
119
300
|
const requestURL = apis_js_1.GeoAPIs.FREE_IP_API_DOT_COM + ip;
|
|
120
|
-
const response = await
|
|
121
|
-
if (response.data.ipVersion === 4) {
|
|
301
|
+
const response = await this.http.get(requestURL);
|
|
302
|
+
if (response.data.ipVersion === 4 || response.data.ipVersion === 6) {
|
|
303
|
+
const zip = typeof response.data.zipCode === "string" &&
|
|
304
|
+
response.data.zipCode !== ""
|
|
305
|
+
? response.data.zipCode
|
|
306
|
+
: undefined;
|
|
307
|
+
const isp = typeof response.data.isp === "string" && response.data.isp !== ""
|
|
308
|
+
? response.data.isp
|
|
309
|
+
: undefined;
|
|
310
|
+
const proxy = typeof response.data.proxy === "boolean"
|
|
311
|
+
? response.data.proxy
|
|
312
|
+
: undefined;
|
|
313
|
+
const isHosting = typeof response.data.hosting === "boolean"
|
|
314
|
+
? response.data.hosting
|
|
315
|
+
: undefined;
|
|
316
|
+
const timeZone = Array.isArray(response.data.timeZones) &&
|
|
317
|
+
typeof response.data.timeZones[0] === "string"
|
|
318
|
+
? response.data.timeZones[0]
|
|
319
|
+
: undefined;
|
|
122
320
|
const formattedResponse = {
|
|
123
321
|
ip: response.data.ipAddress,
|
|
124
322
|
country: response.data.countryCode,
|
|
@@ -126,11 +324,11 @@ class IPDox {
|
|
|
126
324
|
continent: response.data.continentCode,
|
|
127
325
|
latitude: response.data.latitude,
|
|
128
326
|
longitude: response.data.longitude,
|
|
129
|
-
zip
|
|
130
|
-
isp
|
|
131
|
-
proxy
|
|
132
|
-
isHosting
|
|
133
|
-
timeZone
|
|
327
|
+
zip,
|
|
328
|
+
isp,
|
|
329
|
+
proxy,
|
|
330
|
+
isHosting,
|
|
331
|
+
timeZone,
|
|
134
332
|
source: "freeipapi.com"
|
|
135
333
|
};
|
|
136
334
|
this.cacheResponse(ip, formattedResponse);
|
|
@@ -142,8 +340,27 @@ class IPDox {
|
|
|
142
340
|
}
|
|
143
341
|
async fetchIPWhoDotIs(ip) {
|
|
144
342
|
const requestURL = apis_js_1.GeoAPIs.IPWHO_DOT_IS + ip;
|
|
145
|
-
const response = await
|
|
343
|
+
const response = await this.http.get(requestURL);
|
|
146
344
|
if (response.data.success) {
|
|
345
|
+
const zip = typeof response.data.postal === "string" &&
|
|
346
|
+
response.data.postal !== ""
|
|
347
|
+
? response.data.postal
|
|
348
|
+
: undefined;
|
|
349
|
+
const isp = typeof response.data.connection?.isp === "string" &&
|
|
350
|
+
response.data.connection.isp !== ""
|
|
351
|
+
? response.data.connection.isp
|
|
352
|
+
: undefined;
|
|
353
|
+
const proxy = typeof response.data.proxy === "boolean"
|
|
354
|
+
? response.data.proxy
|
|
355
|
+
: undefined;
|
|
356
|
+
const isHosting = typeof response.data.hosting === "boolean"
|
|
357
|
+
? response.data.hosting
|
|
358
|
+
: undefined;
|
|
359
|
+
const timeZone = typeof response.data.timezone?.id === "string"
|
|
360
|
+
? response.data.timezone.id
|
|
361
|
+
: typeof response.data.timezone === "string"
|
|
362
|
+
? response.data.timezone
|
|
363
|
+
: undefined;
|
|
147
364
|
const formattedResponse = {
|
|
148
365
|
ip: response.data.ip,
|
|
149
366
|
country: response.data.country_code,
|
|
@@ -151,11 +368,11 @@ class IPDox {
|
|
|
151
368
|
continent: response.data.continent_code,
|
|
152
369
|
latitude: response.data.latitude,
|
|
153
370
|
longitude: response.data.longitude,
|
|
154
|
-
zip
|
|
155
|
-
isp
|
|
156
|
-
proxy
|
|
157
|
-
isHosting
|
|
158
|
-
timeZone
|
|
371
|
+
zip,
|
|
372
|
+
isp,
|
|
373
|
+
proxy,
|
|
374
|
+
isHosting,
|
|
375
|
+
timeZone,
|
|
159
376
|
source: "ipwho.is"
|
|
160
377
|
};
|
|
161
378
|
this.cacheResponse(ip, formattedResponse);
|
|
@@ -167,8 +384,18 @@ class IPDox {
|
|
|
167
384
|
}
|
|
168
385
|
async fetchIPAPIDotCo(ip) {
|
|
169
386
|
const requestURL = apis_js_1.GeoAPIs.IPAPI_DOT_CO + ip + "/json";
|
|
170
|
-
const response = await
|
|
387
|
+
const response = await this.http.get(requestURL);
|
|
171
388
|
if (response.data.ip) {
|
|
389
|
+
const zip = typeof response.data.postal === "string" &&
|
|
390
|
+
response.data.postal !== ""
|
|
391
|
+
? response.data.postal
|
|
392
|
+
: undefined;
|
|
393
|
+
const isp = typeof response.data.org === "string" && response.data.org !== ""
|
|
394
|
+
? response.data.org
|
|
395
|
+
: undefined;
|
|
396
|
+
const timeZone = typeof response.data.timezone === "string"
|
|
397
|
+
? response.data.timezone
|
|
398
|
+
: undefined;
|
|
172
399
|
const formattedResponse = {
|
|
173
400
|
ip: response.data.ip,
|
|
174
401
|
country: response.data.country_code,
|
|
@@ -176,9 +403,9 @@ class IPDox {
|
|
|
176
403
|
continent: response.data.continent_code,
|
|
177
404
|
latitude: response.data.latitude,
|
|
178
405
|
longitude: response.data.longitude,
|
|
179
|
-
zip
|
|
180
|
-
isp
|
|
181
|
-
timeZone
|
|
406
|
+
zip,
|
|
407
|
+
isp,
|
|
408
|
+
timeZone,
|
|
182
409
|
source: "ipapi.co"
|
|
183
410
|
};
|
|
184
411
|
this.cacheResponse(ip, formattedResponse);
|
|
@@ -188,6 +415,116 @@ class IPDox {
|
|
|
188
415
|
return Promise.reject();
|
|
189
416
|
}
|
|
190
417
|
}
|
|
418
|
+
async fetchGeoIPVuizDotNet(ip) {
|
|
419
|
+
const requestURL = apis_js_1.GeoAPIs.GEOIP_VUIZ_DOT_NET + "?ip=" + encodeURIComponent(ip);
|
|
420
|
+
const response = await this.http.get(requestURL);
|
|
421
|
+
const data = response.data;
|
|
422
|
+
const responseIP = this.parseString(data?.ip) ?? ip;
|
|
423
|
+
const country = this.pickString(data?.country_code, data?.countryCode);
|
|
424
|
+
const city = this.pickStringOrEmpty(data?.city, data?.region, data?.country, data?.country_name);
|
|
425
|
+
const continent = this.pickString(data?.continent_code, data?.continentCode) ??
|
|
426
|
+
this.normalizeContinentCode(data?.continent);
|
|
427
|
+
const latitude = this.parseNumber(data?.latitude ?? data?.lat);
|
|
428
|
+
const longitude = this.parseNumber(data?.longitude ?? data?.lon);
|
|
429
|
+
if (responseIP &&
|
|
430
|
+
country &&
|
|
431
|
+
continent &&
|
|
432
|
+
latitude !== undefined &&
|
|
433
|
+
longitude !== undefined) {
|
|
434
|
+
const zip = this.pickString(data?.postal_code, data?.zip);
|
|
435
|
+
const isp = this.pickString(data?.isp, data?.organization, data?.asn_organization);
|
|
436
|
+
const timeZone = this.pickString(data?.timezone);
|
|
437
|
+
const formattedResponse = {
|
|
438
|
+
ip: responseIP,
|
|
439
|
+
country,
|
|
440
|
+
city,
|
|
441
|
+
continent,
|
|
442
|
+
latitude,
|
|
443
|
+
longitude,
|
|
444
|
+
zip,
|
|
445
|
+
isp,
|
|
446
|
+
timeZone,
|
|
447
|
+
source: "geoip.vuiz.net"
|
|
448
|
+
};
|
|
449
|
+
this.cacheResponse(ip, formattedResponse);
|
|
450
|
+
return Promise.resolve(formattedResponse);
|
|
451
|
+
}
|
|
452
|
+
return Promise.reject();
|
|
453
|
+
}
|
|
454
|
+
async fetchAPIPDotCC(ip) {
|
|
455
|
+
const requestURL = apis_js_1.GeoAPIs.APIP_DOT_CC + encodeURIComponent(ip);
|
|
456
|
+
const response = await this.http.get(requestURL);
|
|
457
|
+
const data = response.data;
|
|
458
|
+
if (data?.status && data.status !== "success") {
|
|
459
|
+
return Promise.reject();
|
|
460
|
+
}
|
|
461
|
+
const responseIP = this.parseString(data?.ip) ?? ip;
|
|
462
|
+
const country = this.parseString(data?.CountryCode);
|
|
463
|
+
const city = this.pickStringOrEmpty(data?.City, data?.RegionName, data?.CountryName);
|
|
464
|
+
const continent = this.parseString(data?.ContinentCode) ??
|
|
465
|
+
this.normalizeContinentCode(data?.ContinentName);
|
|
466
|
+
const latitude = this.parseNumber(data?.Latitude);
|
|
467
|
+
const longitude = this.parseNumber(data?.Longitude);
|
|
468
|
+
if (responseIP &&
|
|
469
|
+
country &&
|
|
470
|
+
continent &&
|
|
471
|
+
latitude !== undefined &&
|
|
472
|
+
longitude !== undefined) {
|
|
473
|
+
const zip = this.parseString(data?.Postal);
|
|
474
|
+
const isp = this.parseString(data?.org) ||
|
|
475
|
+
this.parseString(data?.Org) ||
|
|
476
|
+
this.parseString(data?.ISP);
|
|
477
|
+
const timeZone = this.parseString(data?.TimeZone);
|
|
478
|
+
const formattedResponse = {
|
|
479
|
+
ip: responseIP,
|
|
480
|
+
country,
|
|
481
|
+
city,
|
|
482
|
+
continent,
|
|
483
|
+
latitude,
|
|
484
|
+
longitude,
|
|
485
|
+
zip,
|
|
486
|
+
isp,
|
|
487
|
+
timeZone,
|
|
488
|
+
source: "apip.cc"
|
|
489
|
+
};
|
|
490
|
+
this.cacheResponse(ip, formattedResponse);
|
|
491
|
+
return Promise.resolve(formattedResponse);
|
|
492
|
+
}
|
|
493
|
+
return Promise.reject();
|
|
494
|
+
}
|
|
495
|
+
async fetchIPSonarDotCom(ip) {
|
|
496
|
+
const requestURL = apis_js_1.GeoAPIs.IP_SONAR_DOT_COM + encodeURIComponent(ip);
|
|
497
|
+
const response = await this.http.get(requestURL);
|
|
498
|
+
const data = response.data;
|
|
499
|
+
const responseIP = this.parseString(data?.ip) ?? ip;
|
|
500
|
+
const country = this.parseString(data?.country_code);
|
|
501
|
+
const city = this.pickStringOrEmpty(data?.city_name, data?.region_name, data?.country_name);
|
|
502
|
+
const continent = this.parseString(data?.continent_code);
|
|
503
|
+
const latitude = this.parseNumber(data?.latitude);
|
|
504
|
+
const longitude = this.parseNumber(data?.longitude);
|
|
505
|
+
if (responseIP &&
|
|
506
|
+
country &&
|
|
507
|
+
continent &&
|
|
508
|
+
latitude !== undefined &&
|
|
509
|
+
longitude !== undefined) {
|
|
510
|
+
const zip = this.parseString(data?.postal_code);
|
|
511
|
+
const timeZone = this.parseString(data?.timezone);
|
|
512
|
+
const formattedResponse = {
|
|
513
|
+
ip: responseIP,
|
|
514
|
+
country,
|
|
515
|
+
city,
|
|
516
|
+
continent,
|
|
517
|
+
latitude,
|
|
518
|
+
longitude,
|
|
519
|
+
zip,
|
|
520
|
+
timeZone,
|
|
521
|
+
source: "ip-sonar.com"
|
|
522
|
+
};
|
|
523
|
+
this.cacheResponse(ip, formattedResponse);
|
|
524
|
+
return Promise.resolve(formattedResponse);
|
|
525
|
+
}
|
|
526
|
+
return Promise.reject();
|
|
527
|
+
}
|
|
191
528
|
}
|
|
192
529
|
exports.default = IPDox;
|
|
193
530
|
//# sourceMappingURL=ipdox.js.map
|
package/dist/ipdox.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ipdox.js","sourceRoot":"","sources":["../src/ipdox.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ipdox.js","sourceRoot":"","sources":["../src/ipdox.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,10 +5,14 @@
|
|
|
5
5
|
* @property {number} cacheMaxItems The maximum number of items in the cache (default: 1000)
|
|
6
6
|
* @property {number} cacheMaxAge The cache timeout in milliseconds (default: 43200000 (12 hours))
|
|
7
7
|
* @property {number} maxRetries The maximum number of retries (default: 10)
|
|
8
|
+
* @property {number} requestTimeoutMs Request timeout in milliseconds (default: 5000)
|
|
9
|
+
* @property {string} ipApiKey Optional ip-api.com pro API key for HTTPS
|
|
8
10
|
*/
|
|
9
11
|
export interface IPDOXConstructor {
|
|
10
12
|
cacheMaxItems?: number;
|
|
11
13
|
cacheMaxAge?: number;
|
|
12
14
|
maxRetries?: number;
|
|
15
|
+
requestTimeoutMs?: number;
|
|
16
|
+
ipApiKey?: string;
|
|
13
17
|
}
|
|
14
18
|
//# sourceMappingURL=IPDOXConstructor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPDOXConstructor.d.ts","sourceRoot":"","sources":["../../src/types/IPDOXConstructor.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"IPDOXConstructor.d.ts","sourceRoot":"","sources":["../../src/types/IPDOXConstructor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,MAAM,WAAW,gBAAgB;IAChC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB"}
|
|
@@ -8,8 +8,8 @@
|
|
|
8
8
|
* @property {string} continent The continent (ISO 3166)
|
|
9
9
|
* @property {number} latitude The latitude
|
|
10
10
|
* @property {number} longitude The longitude
|
|
11
|
-
* @property {string} zip The ZIP code
|
|
12
|
-
* @property {string} isp The ISP (Internet Service Provider)
|
|
11
|
+
* @property {string} zip The ZIP code (might be undefined)
|
|
12
|
+
* @property {string} isp The ISP (Internet Service Provider) (might be undefined)
|
|
13
13
|
* @property {boolean} proxy Is the IP address a proxy?
|
|
14
14
|
* @property {boolean} isHosting Is the IP address a hosting provider?
|
|
15
15
|
* @property {object} proxyInfo Information about the proxy
|
|
@@ -26,8 +26,8 @@ export interface IPDOXResponse {
|
|
|
26
26
|
continent: string;
|
|
27
27
|
latitude: number;
|
|
28
28
|
longitude: number;
|
|
29
|
-
zip
|
|
30
|
-
isp
|
|
29
|
+
zip?: string;
|
|
30
|
+
isp?: string;
|
|
31
31
|
proxy?: boolean;
|
|
32
32
|
isHosting?: boolean;
|
|
33
33
|
proxyInfo?: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IPDOXResponse.d.ts","sourceRoot":"","sources":["../../src/types/IPDOXResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"IPDOXResponse.d.ts","sourceRoot":"","sources":["../../src/types/IPDOXResponse.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE;QACX,KAAK,EAAE,OAAO,CAAC;QACf,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;KACjB,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;CACf"}
|
package/dist/utils/apis.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ export declare enum GeoAPIs {
|
|
|
2
2
|
IP_HYPHEN_API_DOT_COM = "http://ip-api.com/json/",
|
|
3
3
|
FREE_IP_API_DOT_COM = "https://freeipapi.com/api/json/",
|
|
4
4
|
IPWHO_DOT_IS = "https://ipwho.is/",
|
|
5
|
-
IPAPI_DOT_CO = "https://ipapi.co/"
|
|
5
|
+
IPAPI_DOT_CO = "https://ipapi.co/",
|
|
6
|
+
GEOIP_VUIZ_DOT_NET = "https://geoip.vuiz.net/geoip",
|
|
7
|
+
APIP_DOT_CC = "https://apip.cc/api-json/",
|
|
8
|
+
IP_SONAR_DOT_COM = "https://api.ip-sonar.com/v1/"
|
|
6
9
|
}
|
|
7
10
|
//# sourceMappingURL=apis.d.ts.map
|
package/dist/utils/apis.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apis.d.ts","sourceRoot":"","sources":["../../src/utils/apis.ts"],"names":[],"mappings":"AAAA,oBAAY,OAAO;IAClB,qBAAqB,4BAA4B;IACjD,mBAAmB,oCAAoC;IACvD,YAAY,sBAAsB;IAClC,YAAY,sBAAsB;
|
|
1
|
+
{"version":3,"file":"apis.d.ts","sourceRoot":"","sources":["../../src/utils/apis.ts"],"names":[],"mappings":"AAAA,oBAAY,OAAO;IAClB,qBAAqB,4BAA4B;IACjD,mBAAmB,oCAAoC;IACvD,YAAY,sBAAsB;IAClC,YAAY,sBAAsB;IAClC,kBAAkB,iCAAiC;IACnD,WAAW,8BAA8B;IACzC,gBAAgB,iCAAiC;CACjD"}
|
package/dist/utils/apis.js
CHANGED
|
@@ -7,5 +7,8 @@ var GeoAPIs;
|
|
|
7
7
|
GeoAPIs["FREE_IP_API_DOT_COM"] = "https://freeipapi.com/api/json/";
|
|
8
8
|
GeoAPIs["IPWHO_DOT_IS"] = "https://ipwho.is/";
|
|
9
9
|
GeoAPIs["IPAPI_DOT_CO"] = "https://ipapi.co/";
|
|
10
|
+
GeoAPIs["GEOIP_VUIZ_DOT_NET"] = "https://geoip.vuiz.net/geoip";
|
|
11
|
+
GeoAPIs["APIP_DOT_CC"] = "https://apip.cc/api-json/";
|
|
12
|
+
GeoAPIs["IP_SONAR_DOT_COM"] = "https://api.ip-sonar.com/v1/";
|
|
10
13
|
})(GeoAPIs || (exports.GeoAPIs = GeoAPIs = {}));
|
|
11
14
|
//# sourceMappingURL=apis.js.map
|
package/dist/utils/apis.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apis.js","sourceRoot":"","sources":["../../src/utils/apis.ts"],"names":[],"mappings":";;;AAAA,IAAY,
|
|
1
|
+
{"version":3,"file":"apis.js","sourceRoot":"","sources":["../../src/utils/apis.ts"],"names":[],"mappings":";;;AAAA,IAAY,OAQX;AARD,WAAY,OAAO;IAClB,4DAAiD,CAAA;IACjD,kEAAuD,CAAA;IACvD,6CAAkC,CAAA;IAClC,6CAAkC,CAAA;IAClC,8DAAmD,CAAA;IACnD,oDAAyC,CAAA;IACzC,4DAAiD,CAAA;AAClD,CAAC,EARW,OAAO,uBAAP,OAAO,QAQlB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "node-ipdox",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "node-ipdox is a Node.js library for GeoIP lookup, leveraging various free GeoIP APIs. It provides a unified response format and incorporates local caching to minimize duplicate requests.",
|
|
5
5
|
"author": "Mikel Calvo <contact@mikecalvo.net> (www.mikelcalvo.net)",
|
|
6
6
|
"keywords": [
|
|
@@ -15,10 +15,21 @@
|
|
|
15
15
|
"license": "ISC",
|
|
16
16
|
"readmeFilename": "README.md",
|
|
17
17
|
"homepage": "https://github.com/MikelCalvo/ipdox#readme",
|
|
18
|
-
"bugs": {
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/MikelCalvo/ipdox/issues"
|
|
20
|
+
},
|
|
19
21
|
"main": "./dist/index.js",
|
|
20
22
|
"types": "./dist/index.d.ts",
|
|
21
|
-
"
|
|
23
|
+
"exports": {
|
|
24
|
+
".": {
|
|
25
|
+
"types": "./dist/index.d.ts",
|
|
26
|
+
"require": "./dist/index.js",
|
|
27
|
+
"import": "./dist/index.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"dist"
|
|
32
|
+
],
|
|
22
33
|
"scripts": {
|
|
23
34
|
"test": "vitest run",
|
|
24
35
|
"test:watch": "vitest",
|
|
@@ -34,11 +45,14 @@
|
|
|
34
45
|
"access": "public",
|
|
35
46
|
"provenance": true
|
|
36
47
|
},
|
|
37
|
-
"dependencies": {
|
|
48
|
+
"dependencies": {
|
|
49
|
+
"axios": "1.13.4",
|
|
50
|
+
"lru-cache": "^11.2.5"
|
|
51
|
+
},
|
|
38
52
|
"devDependencies": {
|
|
39
|
-
"@types/node": "25.
|
|
40
|
-
"prettier": "3.
|
|
53
|
+
"@types/node": "25.2.1",
|
|
54
|
+
"prettier": "3.8.1",
|
|
41
55
|
"typescript": "^5.9.3",
|
|
42
|
-
"vitest": "4.0.
|
|
56
|
+
"vitest": "4.0.18"
|
|
43
57
|
}
|
|
44
58
|
}
|