@isvalid-dev/sdk 0.1.0 → 0.2.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 +3 -1
- package/dist/index.cjs +356 -2
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/index.js +350 -2
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -19,6 +19,8 @@ npm install @isvalid-dev/sdk
|
|
|
19
19
|
|
|
20
20
|
## Quick Start
|
|
21
21
|
|
|
22
|
+
Get your free API key at [isvalid.dev/getting-started](https://isvalid.dev/getting-started).
|
|
23
|
+
|
|
22
24
|
```typescript
|
|
23
25
|
import { createClient } from '@isvalid-dev/sdk';
|
|
24
26
|
|
|
@@ -109,7 +111,7 @@ iv.nuts(value) iv.uuid(value, opts?) iv.jwt(value)
|
|
|
109
111
|
iv.vin(value) iv.imei(value) iv.semver(value)
|
|
110
112
|
iv.color(value) iv.boolean(value) iv.date(value, opts?)
|
|
111
113
|
iv.btcAddress(value) iv.postalCode(value, opts?)
|
|
112
|
-
iv.aba(value) iv.
|
|
114
|
+
iv.aba(value) iv.containerCode(value) iv.sscc(value)
|
|
113
115
|
iv.gln(value) iv.qr(value) iv.creditCard(number)
|
|
114
116
|
```
|
|
115
117
|
|
package/dist/index.cjs
CHANGED
|
@@ -1,3 +1,357 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
// src/errors.ts
|
|
4
|
+
var IsValidError = class extends Error {
|
|
5
|
+
constructor(status, body) {
|
|
6
|
+
super(body.error);
|
|
7
|
+
this.name = "IsValidError";
|
|
8
|
+
this.status = status;
|
|
9
|
+
this.body = body;
|
|
10
|
+
}
|
|
11
|
+
};
|
|
12
|
+
var IsValidAuthError = class extends IsValidError {
|
|
13
|
+
constructor(body) {
|
|
14
|
+
super(401, body);
|
|
15
|
+
this.name = "IsValidAuthError";
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var IsValidRateLimitError = class extends IsValidError {
|
|
19
|
+
constructor(body, retryAfter = null) {
|
|
20
|
+
super(429, body);
|
|
21
|
+
this.name = "IsValidRateLimitError";
|
|
22
|
+
this.retryAfter = retryAfter;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
|
|
26
|
+
// src/client.ts
|
|
27
|
+
var DEFAULT_BASE_URL = "https://api.isvalid.dev";
|
|
28
|
+
var DEFAULT_TIMEOUT = 1e4;
|
|
29
|
+
var DEFAULT_RETRY = {
|
|
30
|
+
maxRetries: 3,
|
|
31
|
+
initialDelayMs: 500,
|
|
32
|
+
maxDelayMs: 1e4,
|
|
33
|
+
retryOn: [429, 500, 502, 503]
|
|
34
|
+
};
|
|
35
|
+
function resolveRetry(cfg) {
|
|
36
|
+
if (cfg === false) return false;
|
|
37
|
+
if (!cfg) return DEFAULT_RETRY;
|
|
38
|
+
return {
|
|
39
|
+
maxRetries: cfg.maxRetries ?? DEFAULT_RETRY.maxRetries,
|
|
40
|
+
initialDelayMs: cfg.initialDelayMs ?? DEFAULT_RETRY.initialDelayMs,
|
|
41
|
+
maxDelayMs: cfg.maxDelayMs ?? DEFAULT_RETRY.maxDelayMs,
|
|
42
|
+
retryOn: cfg.retryOn ?? DEFAULT_RETRY.retryOn
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
function delay(ms) {
|
|
46
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
47
|
+
}
|
|
48
|
+
function backoffDelay(attempt, initial, max) {
|
|
49
|
+
const base = initial * 2 ** attempt;
|
|
50
|
+
const jitter = Math.random() * initial;
|
|
51
|
+
return Math.min(base + jitter, max);
|
|
52
|
+
}
|
|
53
|
+
var HttpClient = class {
|
|
54
|
+
constructor(config) {
|
|
55
|
+
this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
|
|
56
|
+
this.apiKey = config.apiKey;
|
|
57
|
+
this.retry = resolveRetry(config.retry);
|
|
58
|
+
this.timeout = config.timeout ?? DEFAULT_TIMEOUT;
|
|
59
|
+
}
|
|
60
|
+
async get(path, params) {
|
|
61
|
+
const url = this.buildUrl(path, params);
|
|
62
|
+
return this.request(url, { method: "GET" });
|
|
63
|
+
}
|
|
64
|
+
async post(path, body) {
|
|
65
|
+
const url = this.buildUrl(path);
|
|
66
|
+
return this.request(url, {
|
|
67
|
+
method: "POST",
|
|
68
|
+
body: JSON.stringify(body),
|
|
69
|
+
headers: { "Content-Type": "application/json" }
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
buildUrl(path, params) {
|
|
73
|
+
const url = new URL(path, this.baseUrl);
|
|
74
|
+
if (params) {
|
|
75
|
+
for (const [k, v] of Object.entries(params)) {
|
|
76
|
+
if (v !== void 0) url.searchParams.set(k, v);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return url.toString();
|
|
80
|
+
}
|
|
81
|
+
async request(url, init) {
|
|
82
|
+
const headers = {
|
|
83
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
84
|
+
Accept: "application/json",
|
|
85
|
+
...init.headers
|
|
86
|
+
};
|
|
87
|
+
const maxAttempts = this.retry ? this.retry.maxRetries + 1 : 1;
|
|
88
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
89
|
+
const res = await fetch(url, {
|
|
90
|
+
...init,
|
|
91
|
+
headers,
|
|
92
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
93
|
+
});
|
|
94
|
+
if (res.ok) {
|
|
95
|
+
return await res.json();
|
|
96
|
+
}
|
|
97
|
+
if (this.retry && attempt < this.retry.maxRetries && this.retry.retryOn.includes(res.status)) {
|
|
98
|
+
const retryAfterHeader = res.headers.get("Retry-After");
|
|
99
|
+
const retryMs = retryAfterHeader ? parseInt(retryAfterHeader, 10) * 1e3 : backoffDelay(attempt, this.retry.initialDelayMs, this.retry.maxDelayMs);
|
|
100
|
+
await delay(retryMs);
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
const body = await res.json().catch(() => ({ error: res.statusText }));
|
|
104
|
+
if (res.status === 401) throw new IsValidAuthError(body);
|
|
105
|
+
if (res.status === 429) {
|
|
106
|
+
const ra = res.headers.get("Retry-After");
|
|
107
|
+
throw new IsValidRateLimitError(body, ra ? parseInt(ra, 10) : null);
|
|
108
|
+
}
|
|
109
|
+
throw new IsValidError(res.status, body);
|
|
110
|
+
}
|
|
111
|
+
throw new IsValidError(0, { error: "Max retries exceeded" });
|
|
112
|
+
}
|
|
113
|
+
};
|
|
114
|
+
|
|
115
|
+
// src/namespaces/lei.ts
|
|
116
|
+
function createLeiNamespace(client) {
|
|
117
|
+
const lei = ((value) => client.get("/v0/lei", { value }));
|
|
118
|
+
lei.search = (query, opts) => client.get("/v0/lei/search", {
|
|
119
|
+
q: query,
|
|
120
|
+
country: opts?.country,
|
|
121
|
+
entityStatus: opts?.entityStatus,
|
|
122
|
+
page: opts?.page?.toString(),
|
|
123
|
+
limit: opts?.limit?.toString()
|
|
124
|
+
});
|
|
125
|
+
lei.lous = () => client.get("/v0/lei/lous");
|
|
126
|
+
return lei;
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
// src/namespaces/country.ts
|
|
130
|
+
function createCountryNamespace(client) {
|
|
131
|
+
const country = ((value) => client.get("/v0/country", { value }));
|
|
132
|
+
country.list = () => client.get("/v0/country/list");
|
|
133
|
+
return country;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
// src/namespaces/currency.ts
|
|
137
|
+
function createCurrencyNamespace(client) {
|
|
138
|
+
const currency = ((value) => client.get("/v0/currency", { value }));
|
|
139
|
+
currency.list = () => client.get("/v0/currency/list");
|
|
140
|
+
return currency;
|
|
141
|
+
}
|
|
142
|
+
|
|
143
|
+
// src/namespaces/language.ts
|
|
144
|
+
function createLanguageNamespace(client) {
|
|
145
|
+
const language = ((value) => client.get("/v0/language", { value }));
|
|
146
|
+
language.list = () => client.get("/v0/language/list");
|
|
147
|
+
return language;
|
|
148
|
+
}
|
|
149
|
+
|
|
150
|
+
// src/namespaces/iata.ts
|
|
151
|
+
function createIataNamespace(client) {
|
|
152
|
+
const airline = ((value) => client.get("/v0/iata/airline", { value }));
|
|
153
|
+
airline.list = () => client.get("/v0/iata/airline/list");
|
|
154
|
+
return {
|
|
155
|
+
flight: (value) => client.get("/v0/iata/flight", { value }),
|
|
156
|
+
airline,
|
|
157
|
+
airport: (value) => client.get("/v0/iata/airport", { value })
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// src/namespaces/net.ts
|
|
162
|
+
function createNetNamespace(client) {
|
|
163
|
+
return {
|
|
164
|
+
ip: (value) => client.get("/v0/net/ip", { value }),
|
|
165
|
+
mac: (value) => client.get("/v0/net/mac", { value })
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
// src/namespaces/pl.ts
|
|
170
|
+
function createPlNamespace(client) {
|
|
171
|
+
return {
|
|
172
|
+
pesel: (value) => client.get("/v0/pl/pesel", { value }),
|
|
173
|
+
regon: (value, opts) => client.get("/v0/pl/regon", {
|
|
174
|
+
value,
|
|
175
|
+
lookup: opts?.lookup?.toString()
|
|
176
|
+
}),
|
|
177
|
+
krs: (value, opts) => client.get("/v0/pl/krs", {
|
|
178
|
+
value,
|
|
179
|
+
lookup: opts?.lookup?.toString()
|
|
180
|
+
})
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
// src/namespaces/br.ts
|
|
185
|
+
function createBrNamespace(client) {
|
|
186
|
+
return {
|
|
187
|
+
cnpj: (value) => client.get("/v0/br/cnpj", { value }),
|
|
188
|
+
cpf: (value) => client.get("/v0/br/cpf", { value })
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
// src/namespaces/au.ts
|
|
193
|
+
function createAuNamespace(client) {
|
|
194
|
+
return {
|
|
195
|
+
abn: (value) => client.get("/v0/au/abn", { value })
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
// src/namespaces/es.ts
|
|
200
|
+
function createEsNamespace(client) {
|
|
201
|
+
return {
|
|
202
|
+
nif: (value) => client.get("/v0/es/nif", { value })
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
// src/namespaces/in.ts
|
|
207
|
+
function createInNamespace(client) {
|
|
208
|
+
return {
|
|
209
|
+
gstin: (value) => client.get("/v0/in/gstin", { value })
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
// src/namespaces/us.ts
|
|
214
|
+
function createUsNamespace(client) {
|
|
215
|
+
return {
|
|
216
|
+
npi: (value) => client.get("/v0/us/npi", { value })
|
|
217
|
+
};
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
// src/namespaces/gb.ts
|
|
221
|
+
function createGbNamespace(client) {
|
|
222
|
+
return {
|
|
223
|
+
sortCode: (value) => client.get("/v0/gb/sort-code", { value })
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
// src/index.ts
|
|
228
|
+
var IsValid = class {
|
|
229
|
+
constructor(config) {
|
|
230
|
+
this.client = new HttpClient(config);
|
|
231
|
+
this.lei = createLeiNamespace(this.client);
|
|
232
|
+
this.country = createCountryNamespace(this.client);
|
|
233
|
+
this.currency = createCurrencyNamespace(this.client);
|
|
234
|
+
this.language = createLanguageNamespace(this.client);
|
|
235
|
+
this.iata = createIataNamespace(this.client);
|
|
236
|
+
this.net = createNetNamespace(this.client);
|
|
237
|
+
this.pl = createPlNamespace(this.client);
|
|
238
|
+
this.br = createBrNamespace(this.client);
|
|
239
|
+
this.au = createAuNamespace(this.client);
|
|
240
|
+
this.es = createEsNamespace(this.client);
|
|
241
|
+
this.in = createInNamespace(this.client);
|
|
242
|
+
this.us = createUsNamespace(this.client);
|
|
243
|
+
this.gb = createGbNamespace(this.client);
|
|
244
|
+
}
|
|
245
|
+
// --- Simple endpoints ---
|
|
246
|
+
email(value, opts) {
|
|
247
|
+
return this.client.get("/v0/email", { value, checkMx: opts?.checkMx?.toString() });
|
|
248
|
+
}
|
|
249
|
+
iban(value, opts) {
|
|
250
|
+
return this.client.get("/v0/iban", { value, countryCode: opts?.countryCode });
|
|
251
|
+
}
|
|
252
|
+
isin(value) {
|
|
253
|
+
return this.client.get("/v0/isin", { value });
|
|
254
|
+
}
|
|
255
|
+
dti(value) {
|
|
256
|
+
return this.client.get("/v0/dti", { value });
|
|
257
|
+
}
|
|
258
|
+
vat(value, opts) {
|
|
259
|
+
return this.client.get("/v0/vat", {
|
|
260
|
+
value,
|
|
261
|
+
countryCode: opts?.countryCode,
|
|
262
|
+
checkVies: opts?.checkVies?.toString()
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
gps(value) {
|
|
266
|
+
return this.client.get("/v0/gps", { value });
|
|
267
|
+
}
|
|
268
|
+
phone(value, opts) {
|
|
269
|
+
return this.client.get("/v0/phone", { value, countryCode: opts?.countryCode });
|
|
270
|
+
}
|
|
271
|
+
url(value) {
|
|
272
|
+
return this.client.get("/v0/url", { value });
|
|
273
|
+
}
|
|
274
|
+
ean(value) {
|
|
275
|
+
return this.client.get("/v0/ean", { value });
|
|
276
|
+
}
|
|
277
|
+
isbn(value) {
|
|
278
|
+
return this.client.get("/v0/isbn", { value });
|
|
279
|
+
}
|
|
280
|
+
issn(value) {
|
|
281
|
+
return this.client.get("/v0/issn", { value });
|
|
282
|
+
}
|
|
283
|
+
bic(value) {
|
|
284
|
+
return this.client.get("/v0/bic", { value });
|
|
285
|
+
}
|
|
286
|
+
cusip(value) {
|
|
287
|
+
return this.client.get("/v0/cusip", { value });
|
|
288
|
+
}
|
|
289
|
+
cfi(value) {
|
|
290
|
+
return this.client.get("/v0/cfi", { value });
|
|
291
|
+
}
|
|
292
|
+
mic(value) {
|
|
293
|
+
return this.client.get("/v0/mic", { value });
|
|
294
|
+
}
|
|
295
|
+
nuts(value) {
|
|
296
|
+
return this.client.get("/v0/nuts", { value });
|
|
297
|
+
}
|
|
298
|
+
uuid(value, opts) {
|
|
299
|
+
return this.client.get("/v0/uuid", { value, version: opts?.version?.toString() });
|
|
300
|
+
}
|
|
301
|
+
jwt(value) {
|
|
302
|
+
return this.client.get("/v0/jwt", { value });
|
|
303
|
+
}
|
|
304
|
+
vin(value) {
|
|
305
|
+
return this.client.get("/v0/vin", { value });
|
|
306
|
+
}
|
|
307
|
+
imei(value) {
|
|
308
|
+
return this.client.get("/v0/imei", { value });
|
|
309
|
+
}
|
|
310
|
+
semver(value) {
|
|
311
|
+
return this.client.get("/v0/semver", { value });
|
|
312
|
+
}
|
|
313
|
+
color(value) {
|
|
314
|
+
return this.client.get("/v0/color", { value });
|
|
315
|
+
}
|
|
316
|
+
boolean(value) {
|
|
317
|
+
return this.client.get("/v0/boolean", { value });
|
|
318
|
+
}
|
|
319
|
+
date(value, opts) {
|
|
320
|
+
return this.client.get("/v0/date", { value, format: opts?.format });
|
|
321
|
+
}
|
|
322
|
+
btcAddress(value) {
|
|
323
|
+
return this.client.get("/v0/btc-address", { value });
|
|
324
|
+
}
|
|
325
|
+
postalCode(value, opts) {
|
|
326
|
+
return this.client.get("/v0/postal-code", { value, countryCode: opts?.countryCode });
|
|
327
|
+
}
|
|
328
|
+
aba(value) {
|
|
329
|
+
return this.client.get("/v0/aba", { value });
|
|
330
|
+
}
|
|
331
|
+
containerCode(value) {
|
|
332
|
+
return this.client.get("/v0/container-code", { value });
|
|
333
|
+
}
|
|
334
|
+
sscc(value) {
|
|
335
|
+
return this.client.get("/v0/sscc", { value });
|
|
336
|
+
}
|
|
337
|
+
gln(value) {
|
|
338
|
+
return this.client.get("/v0/gln", { value });
|
|
339
|
+
}
|
|
340
|
+
qr(value) {
|
|
341
|
+
return this.client.get("/v0/qr", { value });
|
|
342
|
+
}
|
|
343
|
+
creditCard(number) {
|
|
344
|
+
return this.client.post("/v0/credit-card", { number });
|
|
345
|
+
}
|
|
346
|
+
};
|
|
347
|
+
function createClient(config) {
|
|
348
|
+
return new IsValid(config);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
exports.IsValid = IsValid;
|
|
352
|
+
exports.IsValidAuthError = IsValidAuthError;
|
|
353
|
+
exports.IsValidError = IsValidError;
|
|
354
|
+
exports.IsValidRateLimitError = IsValidRateLimitError;
|
|
355
|
+
exports.createClient = createClient;
|
|
356
|
+
//# sourceMappingURL=index.cjs.map
|
|
3
357
|
//# sourceMappingURL=index.cjs.map
|
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/namespaces/lei.ts","../src/namespaces/country.ts","../src/namespaces/currency.ts","../src/namespaces/language.ts","../src/namespaces/iata.ts","../src/namespaces/net.ts","../src/namespaces/pl.ts","../src/namespaces/br.ts","../src/namespaces/au.ts","../src/namespaces/es.ts","../src/namespaces/in.ts","../src/namespaces/us.ts","../src/namespaces/gb.ts","../src/index.ts"],"names":["IsValidError","status","body","IsValidAuthError","IsValidRateLimitError","retryAfter","DEFAULT_BASE_URL","DEFAULT_TIMEOUT","DEFAULT_RETRY","resolveRetry","cfg","delay","ms","r","backoffDelay","attempt","initial","max","base","jitter","HttpClient","config","path","params","url","k","v","init","headers","maxAttempts","res","retryAfterHeader","retryMs","ra","createLeiNamespace","client","lei","value","query","opts","createCountryNamespace","country","createCurrencyNamespace","currency","createLanguageNamespace","language","createIataNamespace","airline","createNetNamespace","createPlNamespace","createBrNamespace","createAuNamespace","createEsNamespace","createInNamespace","createUsNamespace","createGbNamespace","IsValid","number","createClient"],"mappings":"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","file":"index.cjs","sourcesContent":["export class IsValidError extends Error {\n readonly status: number;\n readonly body: { error: string };\n\n constructor(status: number, body: { error: string }) {\n super(body.error);\n this.name = 'IsValidError';\n this.status = status;\n this.body = body;\n }\n}\n\nexport class IsValidAuthError extends IsValidError {\n constructor(body: { error: string }) {\n super(401, body);\n this.name = 'IsValidAuthError';\n }\n}\n\nexport class IsValidRateLimitError extends IsValidError {\n readonly retryAfter: number | null;\n\n constructor(body: { error: string }, retryAfter: number | null = null) {\n super(429, body);\n this.name = 'IsValidRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n","import { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\n\nexport interface RetryConfig {\n maxRetries?: number;\n initialDelayMs?: number;\n maxDelayMs?: number;\n retryOn?: number[];\n}\n\nexport interface IsValidConfig {\n apiKey: string;\n baseUrl?: string;\n timeout?: number;\n retry?: RetryConfig | false;\n}\n\nconst DEFAULT_BASE_URL = 'https://api.isvalid.dev';\nconst DEFAULT_TIMEOUT = 10_000;\nconst DEFAULT_RETRY: Required<RetryConfig> = {\n maxRetries: 3,\n initialDelayMs: 500,\n maxDelayMs: 10_000,\n retryOn: [429, 500, 502, 503],\n};\n\nfunction resolveRetry(cfg: RetryConfig | false | undefined): Required<RetryConfig> | false {\n if (cfg === false) return false;\n if (!cfg) return DEFAULT_RETRY;\n return {\n maxRetries: cfg.maxRetries ?? DEFAULT_RETRY.maxRetries,\n initialDelayMs: cfg.initialDelayMs ?? DEFAULT_RETRY.initialDelayMs,\n maxDelayMs: cfg.maxDelayMs ?? DEFAULT_RETRY.maxDelayMs,\n retryOn: cfg.retryOn ?? DEFAULT_RETRY.retryOn,\n };\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nfunction backoffDelay(attempt: number, initial: number, max: number): number {\n const base = initial * 2 ** attempt;\n const jitter = Math.random() * initial;\n return Math.min(base + jitter, max);\n}\n\nexport class HttpClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly retry: Required<RetryConfig> | false;\n private readonly timeout: number;\n\n constructor(config: IsValidConfig) {\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '');\n this.apiKey = config.apiKey;\n this.retry = resolveRetry(config.retry);\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n }\n\n async get<T>(path: string, params?: Record<string, string | undefined>): Promise<T> {\n const url = this.buildUrl(path, params);\n return this.request<T>(url, { method: 'GET' });\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n const url = this.buildUrl(path);\n return this.request<T>(url, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n private buildUrl(path: string, params?: Record<string, string | undefined>): string {\n const url = new URL(path, this.baseUrl);\n if (params) {\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined) url.searchParams.set(k, v);\n }\n }\n return url.toString();\n }\n\n private async request<T>(url: string, init: RequestInit): Promise<T> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: 'application/json',\n ...(init.headers as Record<string, string> | undefined),\n };\n\n const maxAttempts = this.retry ? this.retry.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const res = await fetch(url, {\n ...init,\n headers,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (res.ok) {\n return (await res.json()) as T;\n }\n\n if (this.retry && attempt < this.retry.maxRetries && this.retry.retryOn.includes(res.status)) {\n const retryAfterHeader = res.headers.get('Retry-After');\n const retryMs = retryAfterHeader\n ? parseInt(retryAfterHeader, 10) * 1000\n : backoffDelay(attempt, this.retry.initialDelayMs, this.retry.maxDelayMs);\n await delay(retryMs);\n continue;\n }\n\n const body = await res.json().catch(() => ({ error: res.statusText })) as { error: string };\n\n if (res.status === 401) throw new IsValidAuthError(body);\n if (res.status === 429) {\n const ra = res.headers.get('Retry-After');\n throw new IsValidRateLimitError(body, ra ? parseInt(ra, 10) : null);\n }\n throw new IsValidError(res.status, body);\n }\n\n throw new IsValidError(0, { error: 'Max retries exceeded' });\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { LeiResponse, LeiSearchOptions, LeiSearchResponse, LeiLousResponse } from '../types/lei.js';\n\nexport interface LeiNamespace {\n (value: string): Promise<LeiResponse>;\n search(query: string, opts?: LeiSearchOptions): Promise<LeiSearchResponse>;\n lous(): Promise<LeiLousResponse>;\n}\n\nexport function createLeiNamespace(client: HttpClient): LeiNamespace {\n const lei = ((value: string) =>\n client.get<LeiResponse>('/v0/lei', { value })\n ) as LeiNamespace;\n\n lei.search = (query: string, opts?: LeiSearchOptions) =>\n client.get<LeiSearchResponse>('/v0/lei/search', {\n q: query,\n country: opts?.country,\n entityStatus: opts?.entityStatus,\n page: opts?.page?.toString(),\n limit: opts?.limit?.toString(),\n });\n\n lei.lous = () => client.get<LeiLousResponse>('/v0/lei/lous');\n\n return lei;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CountryResponse, CountryListItem } from '../types/country.js';\n\nexport interface CountryNamespace {\n (value: string): Promise<CountryResponse>;\n list(): Promise<CountryListItem[]>;\n}\n\nexport function createCountryNamespace(client: HttpClient): CountryNamespace {\n const country = ((value: string) =>\n client.get<CountryResponse>('/v0/country', { value })\n ) as CountryNamespace;\n\n country.list = () => client.get<CountryListItem[]>('/v0/country/list');\n\n return country;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CurrencyResponse, CurrencyListItem } from '../types/currency.js';\n\nexport interface CurrencyNamespace {\n (value: string): Promise<CurrencyResponse>;\n list(): Promise<CurrencyListItem[]>;\n}\n\nexport function createCurrencyNamespace(client: HttpClient): CurrencyNamespace {\n const currency = ((value: string) =>\n client.get<CurrencyResponse>('/v0/currency', { value })\n ) as CurrencyNamespace;\n\n currency.list = () => client.get<CurrencyListItem[]>('/v0/currency/list');\n\n return currency;\n}\n","import type { HttpClient } from '../client.js';\nimport type { LanguageResponse, LanguageListItem } from '../types/language.js';\n\nexport interface LanguageNamespace {\n (value: string): Promise<LanguageResponse>;\n list(): Promise<LanguageListItem[]>;\n}\n\nexport function createLanguageNamespace(client: HttpClient): LanguageNamespace {\n const language = ((value: string) =>\n client.get<LanguageResponse>('/v0/language', { value })\n ) as LanguageNamespace;\n\n language.list = () => client.get<LanguageListItem[]>('/v0/language/list');\n\n return language;\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n IataFlightResponse, IataAirlineResponse, IataAirlineListItem, IataAirportResponse,\n} from '../types/iata.js';\n\nexport interface IataAirlineNamespace {\n (value: string): Promise<IataAirlineResponse>;\n list(): Promise<IataAirlineListItem[]>;\n}\n\nexport interface IataNamespace {\n flight(value: string): Promise<IataFlightResponse>;\n airline: IataAirlineNamespace;\n airport(value: string): Promise<IataAirportResponse>;\n}\n\nexport function createIataNamespace(client: HttpClient): IataNamespace {\n const airline = ((value: string) =>\n client.get<IataAirlineResponse>('/v0/iata/airline', { value })\n ) as IataAirlineNamespace;\n\n airline.list = () => client.get<IataAirlineListItem[]>('/v0/iata/airline/list');\n\n return {\n flight: (value: string) =>\n client.get<IataFlightResponse>('/v0/iata/flight', { value }),\n airline,\n airport: (value: string) =>\n client.get<IataAirportResponse>('/v0/iata/airport', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { IpResponse, MacResponse } from '../types/net.js';\n\nexport interface NetNamespace {\n ip(value: string): Promise<IpResponse>;\n mac(value: string): Promise<MacResponse>;\n}\n\nexport function createNetNamespace(client: HttpClient): NetNamespace {\n return {\n ip: (value: string) => client.get<IpResponse>('/v0/net/ip', { value }),\n mac: (value: string) => client.get<MacResponse>('/v0/net/mac', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { PeselResponse, RegonResponse, KrsResponse } from '../types/pl.js';\n\nexport interface PlNamespace {\n pesel(value: string): Promise<PeselResponse>;\n regon(value: string, opts?: { lookup?: boolean }): Promise<RegonResponse>;\n krs(value: string, opts?: { lookup?: boolean }): Promise<KrsResponse>;\n}\n\nexport function createPlNamespace(client: HttpClient): PlNamespace {\n return {\n pesel: (value: string) =>\n client.get<PeselResponse>('/v0/pl/pesel', { value }),\n regon: (value: string, opts?) =>\n client.get<RegonResponse>('/v0/pl/regon', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n krs: (value: string, opts?) =>\n client.get<KrsResponse>('/v0/pl/krs', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { CnpjResponse, CpfResponse } from '../types/br.js';\n\nexport interface BrNamespace {\n cnpj(value: string): Promise<CnpjResponse>;\n cpf(value: string): Promise<CpfResponse>;\n}\n\nexport function createBrNamespace(client: HttpClient): BrNamespace {\n return {\n cnpj: (value: string) => client.get<CnpjResponse>('/v0/br/cnpj', { value }),\n cpf: (value: string) => client.get<CpfResponse>('/v0/br/cpf', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { AbnResponse } from '../types/au.js';\n\nexport interface AuNamespace {\n abn(value: string): Promise<AbnResponse>;\n}\n\nexport function createAuNamespace(client: HttpClient): AuNamespace {\n return {\n abn: (value: string) => client.get<AbnResponse>('/v0/au/abn', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NifResponse } from '../types/es.js';\n\nexport interface EsNamespace {\n nif(value: string): Promise<NifResponse>;\n}\n\nexport function createEsNamespace(client: HttpClient): EsNamespace {\n return {\n nif: (value: string) => client.get<NifResponse>('/v0/es/nif', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { GstinResponse } from '../types/in.js';\n\nexport interface InNamespace {\n gstin(value: string): Promise<GstinResponse>;\n}\n\nexport function createInNamespace(client: HttpClient): InNamespace {\n return {\n gstin: (value: string) => client.get<GstinResponse>('/v0/in/gstin', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NpiResponse } from '../types/us.js';\n\nexport interface UsNamespace {\n npi(value: string): Promise<NpiResponse>;\n}\n\nexport function createUsNamespace(client: HttpClient): UsNamespace {\n return {\n npi: (value: string) => client.get<NpiResponse>('/v0/us/npi', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { SortCodeResponse } from '../types/gb.js';\n\nexport interface GbNamespace {\n sortCode(value: string): Promise<SortCodeResponse>;\n}\n\nexport function createGbNamespace(client: HttpClient): GbNamespace {\n return {\n sortCode: (value: string) => client.get<SortCodeResponse>('/v0/gb/sort-code', { value }),\n };\n}\n","import { HttpClient } from './client.js';\nimport type { IsValidConfig } from './client.js';\nimport { createLeiNamespace } from './namespaces/lei.js';\nimport type { LeiNamespace } from './namespaces/lei.js';\nimport { createCountryNamespace } from './namespaces/country.js';\nimport type { CountryNamespace } from './namespaces/country.js';\nimport { createCurrencyNamespace } from './namespaces/currency.js';\nimport type { CurrencyNamespace } from './namespaces/currency.js';\nimport { createLanguageNamespace } from './namespaces/language.js';\nimport type { LanguageNamespace } from './namespaces/language.js';\nimport { createIataNamespace } from './namespaces/iata.js';\nimport type { IataNamespace } from './namespaces/iata.js';\nimport { createNetNamespace } from './namespaces/net.js';\nimport type { NetNamespace } from './namespaces/net.js';\nimport { createPlNamespace } from './namespaces/pl.js';\nimport type { PlNamespace } from './namespaces/pl.js';\nimport { createBrNamespace } from './namespaces/br.js';\nimport type { BrNamespace } from './namespaces/br.js';\nimport { createAuNamespace } from './namespaces/au.js';\nimport type { AuNamespace } from './namespaces/au.js';\nimport { createEsNamespace } from './namespaces/es.js';\nimport type { EsNamespace } from './namespaces/es.js';\nimport { createInNamespace } from './namespaces/in.js';\nimport type { InNamespace } from './namespaces/in.js';\nimport { createUsNamespace } from './namespaces/us.js';\nimport type { UsNamespace } from './namespaces/us.js';\nimport { createGbNamespace } from './namespaces/gb.js';\nimport type { GbNamespace } from './namespaces/gb.js';\nimport type {\n EmailResponse, IbanResponse, IsinResponse, DtiResponse, VatResponse,\n GpsResponse, PhoneResponse, UrlResponse, EanResponse, IsbnResponse,\n IssnResponse, BicResponse, CusipResponse, CfiResponse, MicResponse,\n NutsResponse, UuidResponse, JwtResponse, VinResponse, ImeiResponse,\n SemverResponse, ColorResponse, BooleanResponse, DateResponse,\n BtcAddressResponse, PostalCodeResponse, AbaResponse, Iso6346Response,\n SsccResponse, GlnResponse, QrResponse, CreditCardResponse,\n} from './types/simple.js';\n\nexport class IsValid {\n private readonly client: HttpClient;\n\n readonly lei: LeiNamespace;\n readonly country: CountryNamespace;\n readonly currency: CurrencyNamespace;\n readonly language: LanguageNamespace;\n readonly iata: IataNamespace;\n readonly net: NetNamespace;\n readonly pl: PlNamespace;\n readonly br: BrNamespace;\n readonly au: AuNamespace;\n readonly es: EsNamespace;\n readonly in: InNamespace;\n readonly us: UsNamespace;\n readonly gb: GbNamespace;\n\n constructor(config: IsValidConfig) {\n this.client = new HttpClient(config);\n\n this.lei = createLeiNamespace(this.client);\n this.country = createCountryNamespace(this.client);\n this.currency = createCurrencyNamespace(this.client);\n this.language = createLanguageNamespace(this.client);\n this.iata = createIataNamespace(this.client);\n this.net = createNetNamespace(this.client);\n this.pl = createPlNamespace(this.client);\n this.br = createBrNamespace(this.client);\n this.au = createAuNamespace(this.client);\n this.es = createEsNamespace(this.client);\n this.in = createInNamespace(this.client);\n this.us = createUsNamespace(this.client);\n this.gb = createGbNamespace(this.client);\n }\n\n // --- Simple endpoints ---\n\n email(value: string, opts?: { checkMx?: boolean }): Promise<EmailResponse> {\n return this.client.get('/v0/email', { value, checkMx: opts?.checkMx?.toString() });\n }\n\n iban(value: string, opts?: { countryCode?: string }): Promise<IbanResponse> {\n return this.client.get('/v0/iban', { value, countryCode: opts?.countryCode });\n }\n\n isin(value: string): Promise<IsinResponse> {\n return this.client.get('/v0/isin', { value });\n }\n\n dti(value: string): Promise<DtiResponse> {\n return this.client.get('/v0/dti', { value });\n }\n\n vat(value: string, opts?: { countryCode?: string; checkVies?: boolean }): Promise<VatResponse> {\n return this.client.get('/v0/vat', {\n value,\n countryCode: opts?.countryCode,\n checkVies: opts?.checkVies?.toString(),\n });\n }\n\n gps(value: string): Promise<GpsResponse> {\n return this.client.get('/v0/gps', { value });\n }\n\n phone(value: string, opts?: { countryCode?: string }): Promise<PhoneResponse> {\n return this.client.get('/v0/phone', { value, countryCode: opts?.countryCode });\n }\n\n url(value: string): Promise<UrlResponse> {\n return this.client.get('/v0/url', { value });\n }\n\n ean(value: string): Promise<EanResponse> {\n return this.client.get('/v0/ean', { value });\n }\n\n isbn(value: string): Promise<IsbnResponse> {\n return this.client.get('/v0/isbn', { value });\n }\n\n issn(value: string): Promise<IssnResponse> {\n return this.client.get('/v0/issn', { value });\n }\n\n bic(value: string): Promise<BicResponse> {\n return this.client.get('/v0/bic', { value });\n }\n\n cusip(value: string): Promise<CusipResponse> {\n return this.client.get('/v0/cusip', { value });\n }\n\n cfi(value: string): Promise<CfiResponse> {\n return this.client.get('/v0/cfi', { value });\n }\n\n mic(value: string): Promise<MicResponse> {\n return this.client.get('/v0/mic', { value });\n }\n\n nuts(value: string): Promise<NutsResponse> {\n return this.client.get('/v0/nuts', { value });\n }\n\n uuid(value: string, opts?: { version?: number }): Promise<UuidResponse> {\n return this.client.get('/v0/uuid', { value, version: opts?.version?.toString() });\n }\n\n jwt(value: string): Promise<JwtResponse> {\n return this.client.get('/v0/jwt', { value });\n }\n\n vin(value: string): Promise<VinResponse> {\n return this.client.get('/v0/vin', { value });\n }\n\n imei(value: string): Promise<ImeiResponse> {\n return this.client.get('/v0/imei', { value });\n }\n\n semver(value: string): Promise<SemverResponse> {\n return this.client.get('/v0/semver', { value });\n }\n\n color(value: string): Promise<ColorResponse> {\n return this.client.get('/v0/color', { value });\n }\n\n boolean(value: string): Promise<BooleanResponse> {\n return this.client.get('/v0/boolean', { value });\n }\n\n date(value: string, opts?: { format?: string }): Promise<DateResponse> {\n return this.client.get('/v0/date', { value, format: opts?.format });\n }\n\n btcAddress(value: string): Promise<BtcAddressResponse> {\n return this.client.get('/v0/btc-address', { value });\n }\n\n postalCode(value: string, opts?: { countryCode?: string }): Promise<PostalCodeResponse> {\n return this.client.get('/v0/postal-code', { value, countryCode: opts?.countryCode });\n }\n\n aba(value: string): Promise<AbaResponse> {\n return this.client.get('/v0/aba', { value });\n }\n\n iso6346(value: string): Promise<Iso6346Response> {\n return this.client.get('/v0/iso6346', { value });\n }\n\n sscc(value: string): Promise<SsccResponse> {\n return this.client.get('/v0/sscc', { value });\n }\n\n gln(value: string): Promise<GlnResponse> {\n return this.client.get('/v0/gln', { value });\n }\n\n qr(value: string): Promise<QrResponse> {\n return this.client.get('/v0/qr', { value });\n }\n\n creditCard(number: string): Promise<CreditCardResponse> {\n return this.client.post('/v0/credit-card', { number });\n }\n}\n\nexport function createClient(config: IsValidConfig): IsValid {\n return new IsValid(config);\n}\n\nexport { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\nexport type { IsValidConfig, RetryConfig } from './client.js';\nexport * from './types/index.js';\n\nexport type { LeiNamespace } from './namespaces/lei.js';\nexport type { CountryNamespace } from './namespaces/country.js';\nexport type { CurrencyNamespace } from './namespaces/currency.js';\nexport type { LanguageNamespace } from './namespaces/language.js';\nexport type { IataNamespace, IataAirlineNamespace } from './namespaces/iata.js';\nexport type { NetNamespace } from './namespaces/net.js';\nexport type { PlNamespace } from './namespaces/pl.js';\nexport type { BrNamespace } from './namespaces/br.js';\nexport type { AuNamespace } from './namespaces/au.js';\nexport type { EsNamespace } from './namespaces/es.js';\nexport type { InNamespace } from './namespaces/in.js';\nexport type { UsNamespace } from './namespaces/us.js';\nexport type { GbNamespace } from './namespaces/gb.js';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/namespaces/lei.ts","../src/namespaces/country.ts","../src/namespaces/currency.ts","../src/namespaces/language.ts","../src/namespaces/iata.ts","../src/namespaces/net.ts","../src/namespaces/pl.ts","../src/namespaces/br.ts","../src/namespaces/au.ts","../src/namespaces/es.ts","../src/namespaces/in.ts","../src/namespaces/us.ts","../src/namespaces/gb.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.cjs","sourcesContent":["export class IsValidError extends Error {\n readonly status: number;\n readonly body: { error: string };\n\n constructor(status: number, body: { error: string }) {\n super(body.error);\n this.name = 'IsValidError';\n this.status = status;\n this.body = body;\n }\n}\n\nexport class IsValidAuthError extends IsValidError {\n constructor(body: { error: string }) {\n super(401, body);\n this.name = 'IsValidAuthError';\n }\n}\n\nexport class IsValidRateLimitError extends IsValidError {\n readonly retryAfter: number | null;\n\n constructor(body: { error: string }, retryAfter: number | null = null) {\n super(429, body);\n this.name = 'IsValidRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n","import { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\n\nexport interface RetryConfig {\n maxRetries?: number;\n initialDelayMs?: number;\n maxDelayMs?: number;\n retryOn?: number[];\n}\n\nexport interface IsValidConfig {\n apiKey: string;\n baseUrl?: string;\n timeout?: number;\n retry?: RetryConfig | false;\n}\n\nconst DEFAULT_BASE_URL = 'https://api.isvalid.dev';\nconst DEFAULT_TIMEOUT = 10_000;\nconst DEFAULT_RETRY: Required<RetryConfig> = {\n maxRetries: 3,\n initialDelayMs: 500,\n maxDelayMs: 10_000,\n retryOn: [429, 500, 502, 503],\n};\n\nfunction resolveRetry(cfg: RetryConfig | false | undefined): Required<RetryConfig> | false {\n if (cfg === false) return false;\n if (!cfg) return DEFAULT_RETRY;\n return {\n maxRetries: cfg.maxRetries ?? DEFAULT_RETRY.maxRetries,\n initialDelayMs: cfg.initialDelayMs ?? DEFAULT_RETRY.initialDelayMs,\n maxDelayMs: cfg.maxDelayMs ?? DEFAULT_RETRY.maxDelayMs,\n retryOn: cfg.retryOn ?? DEFAULT_RETRY.retryOn,\n };\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nfunction backoffDelay(attempt: number, initial: number, max: number): number {\n const base = initial * 2 ** attempt;\n const jitter = Math.random() * initial;\n return Math.min(base + jitter, max);\n}\n\nexport class HttpClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly retry: Required<RetryConfig> | false;\n private readonly timeout: number;\n\n constructor(config: IsValidConfig) {\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '');\n this.apiKey = config.apiKey;\n this.retry = resolveRetry(config.retry);\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n }\n\n async get<T>(path: string, params?: Record<string, string | undefined>): Promise<T> {\n const url = this.buildUrl(path, params);\n return this.request<T>(url, { method: 'GET' });\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n const url = this.buildUrl(path);\n return this.request<T>(url, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n private buildUrl(path: string, params?: Record<string, string | undefined>): string {\n const url = new URL(path, this.baseUrl);\n if (params) {\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined) url.searchParams.set(k, v);\n }\n }\n return url.toString();\n }\n\n private async request<T>(url: string, init: RequestInit): Promise<T> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: 'application/json',\n ...(init.headers as Record<string, string> | undefined),\n };\n\n const maxAttempts = this.retry ? this.retry.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const res = await fetch(url, {\n ...init,\n headers,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (res.ok) {\n return (await res.json()) as T;\n }\n\n if (this.retry && attempt < this.retry.maxRetries && this.retry.retryOn.includes(res.status)) {\n const retryAfterHeader = res.headers.get('Retry-After');\n const retryMs = retryAfterHeader\n ? parseInt(retryAfterHeader, 10) * 1000\n : backoffDelay(attempt, this.retry.initialDelayMs, this.retry.maxDelayMs);\n await delay(retryMs);\n continue;\n }\n\n const body = await res.json().catch(() => ({ error: res.statusText })) as { error: string };\n\n if (res.status === 401) throw new IsValidAuthError(body);\n if (res.status === 429) {\n const ra = res.headers.get('Retry-After');\n throw new IsValidRateLimitError(body, ra ? parseInt(ra, 10) : null);\n }\n throw new IsValidError(res.status, body);\n }\n\n throw new IsValidError(0, { error: 'Max retries exceeded' });\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { LeiResponse, LeiSearchOptions, LeiSearchResponse, LeiLousResponse } from '../types/lei.js';\n\nexport interface LeiNamespace {\n (value: string): Promise<LeiResponse>;\n search(query: string, opts?: LeiSearchOptions): Promise<LeiSearchResponse>;\n lous(): Promise<LeiLousResponse>;\n}\n\nexport function createLeiNamespace(client: HttpClient): LeiNamespace {\n const lei = ((value: string) =>\n client.get<LeiResponse>('/v0/lei', { value })\n ) as LeiNamespace;\n\n lei.search = (query: string, opts?: LeiSearchOptions) =>\n client.get<LeiSearchResponse>('/v0/lei/search', {\n q: query,\n country: opts?.country,\n entityStatus: opts?.entityStatus,\n page: opts?.page?.toString(),\n limit: opts?.limit?.toString(),\n });\n\n lei.lous = () => client.get<LeiLousResponse>('/v0/lei/lous');\n\n return lei;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CountryResponse, CountryListItem } from '../types/country.js';\n\nexport interface CountryNamespace {\n (value: string): Promise<CountryResponse>;\n list(): Promise<CountryListItem[]>;\n}\n\nexport function createCountryNamespace(client: HttpClient): CountryNamespace {\n const country = ((value: string) =>\n client.get<CountryResponse>('/v0/country', { value })\n ) as CountryNamespace;\n\n country.list = () => client.get<CountryListItem[]>('/v0/country/list');\n\n return country;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CurrencyResponse, CurrencyListItem } from '../types/currency.js';\n\nexport interface CurrencyNamespace {\n (value: string): Promise<CurrencyResponse>;\n list(): Promise<CurrencyListItem[]>;\n}\n\nexport function createCurrencyNamespace(client: HttpClient): CurrencyNamespace {\n const currency = ((value: string) =>\n client.get<CurrencyResponse>('/v0/currency', { value })\n ) as CurrencyNamespace;\n\n currency.list = () => client.get<CurrencyListItem[]>('/v0/currency/list');\n\n return currency;\n}\n","import type { HttpClient } from '../client.js';\nimport type { LanguageResponse, LanguageListItem } from '../types/language.js';\n\nexport interface LanguageNamespace {\n (value: string): Promise<LanguageResponse>;\n list(): Promise<LanguageListItem[]>;\n}\n\nexport function createLanguageNamespace(client: HttpClient): LanguageNamespace {\n const language = ((value: string) =>\n client.get<LanguageResponse>('/v0/language', { value })\n ) as LanguageNamespace;\n\n language.list = () => client.get<LanguageListItem[]>('/v0/language/list');\n\n return language;\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n IataFlightResponse, IataAirlineResponse, IataAirlineListItem, IataAirportResponse,\n} from '../types/iata.js';\n\nexport interface IataAirlineNamespace {\n (value: string): Promise<IataAirlineResponse>;\n list(): Promise<IataAirlineListItem[]>;\n}\n\nexport interface IataNamespace {\n flight(value: string): Promise<IataFlightResponse>;\n airline: IataAirlineNamespace;\n airport(value: string): Promise<IataAirportResponse>;\n}\n\nexport function createIataNamespace(client: HttpClient): IataNamespace {\n const airline = ((value: string) =>\n client.get<IataAirlineResponse>('/v0/iata/airline', { value })\n ) as IataAirlineNamespace;\n\n airline.list = () => client.get<IataAirlineListItem[]>('/v0/iata/airline/list');\n\n return {\n flight: (value: string) =>\n client.get<IataFlightResponse>('/v0/iata/flight', { value }),\n airline,\n airport: (value: string) =>\n client.get<IataAirportResponse>('/v0/iata/airport', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { IpResponse, MacResponse } from '../types/net.js';\n\nexport interface NetNamespace {\n ip(value: string): Promise<IpResponse>;\n mac(value: string): Promise<MacResponse>;\n}\n\nexport function createNetNamespace(client: HttpClient): NetNamespace {\n return {\n ip: (value: string) => client.get<IpResponse>('/v0/net/ip', { value }),\n mac: (value: string) => client.get<MacResponse>('/v0/net/mac', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { PeselResponse, RegonResponse, KrsResponse } from '../types/pl.js';\n\nexport interface PlNamespace {\n pesel(value: string): Promise<PeselResponse>;\n regon(value: string, opts?: { lookup?: boolean }): Promise<RegonResponse>;\n krs(value: string, opts?: { lookup?: boolean }): Promise<KrsResponse>;\n}\n\nexport function createPlNamespace(client: HttpClient): PlNamespace {\n return {\n pesel: (value: string) =>\n client.get<PeselResponse>('/v0/pl/pesel', { value }),\n regon: (value: string, opts?) =>\n client.get<RegonResponse>('/v0/pl/regon', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n krs: (value: string, opts?) =>\n client.get<KrsResponse>('/v0/pl/krs', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { CnpjResponse, CpfResponse } from '../types/br.js';\n\nexport interface BrNamespace {\n cnpj(value: string): Promise<CnpjResponse>;\n cpf(value: string): Promise<CpfResponse>;\n}\n\nexport function createBrNamespace(client: HttpClient): BrNamespace {\n return {\n cnpj: (value: string) => client.get<CnpjResponse>('/v0/br/cnpj', { value }),\n cpf: (value: string) => client.get<CpfResponse>('/v0/br/cpf', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { AbnResponse } from '../types/au.js';\n\nexport interface AuNamespace {\n abn(value: string): Promise<AbnResponse>;\n}\n\nexport function createAuNamespace(client: HttpClient): AuNamespace {\n return {\n abn: (value: string) => client.get<AbnResponse>('/v0/au/abn', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NifResponse } from '../types/es.js';\n\nexport interface EsNamespace {\n nif(value: string): Promise<NifResponse>;\n}\n\nexport function createEsNamespace(client: HttpClient): EsNamespace {\n return {\n nif: (value: string) => client.get<NifResponse>('/v0/es/nif', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { GstinResponse } from '../types/in.js';\n\nexport interface InNamespace {\n gstin(value: string): Promise<GstinResponse>;\n}\n\nexport function createInNamespace(client: HttpClient): InNamespace {\n return {\n gstin: (value: string) => client.get<GstinResponse>('/v0/in/gstin', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NpiResponse } from '../types/us.js';\n\nexport interface UsNamespace {\n npi(value: string): Promise<NpiResponse>;\n}\n\nexport function createUsNamespace(client: HttpClient): UsNamespace {\n return {\n npi: (value: string) => client.get<NpiResponse>('/v0/us/npi', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { SortCodeResponse } from '../types/gb.js';\n\nexport interface GbNamespace {\n sortCode(value: string): Promise<SortCodeResponse>;\n}\n\nexport function createGbNamespace(client: HttpClient): GbNamespace {\n return {\n sortCode: (value: string) => client.get<SortCodeResponse>('/v0/gb/sort-code', { value }),\n };\n}\n","import { HttpClient } from './client.js';\nimport type { IsValidConfig } from './client.js';\nimport { createLeiNamespace } from './namespaces/lei.js';\nimport type { LeiNamespace } from './namespaces/lei.js';\nimport { createCountryNamespace } from './namespaces/country.js';\nimport type { CountryNamespace } from './namespaces/country.js';\nimport { createCurrencyNamespace } from './namespaces/currency.js';\nimport type { CurrencyNamespace } from './namespaces/currency.js';\nimport { createLanguageNamespace } from './namespaces/language.js';\nimport type { LanguageNamespace } from './namespaces/language.js';\nimport { createIataNamespace } from './namespaces/iata.js';\nimport type { IataNamespace } from './namespaces/iata.js';\nimport { createNetNamespace } from './namespaces/net.js';\nimport type { NetNamespace } from './namespaces/net.js';\nimport { createPlNamespace } from './namespaces/pl.js';\nimport type { PlNamespace } from './namespaces/pl.js';\nimport { createBrNamespace } from './namespaces/br.js';\nimport type { BrNamespace } from './namespaces/br.js';\nimport { createAuNamespace } from './namespaces/au.js';\nimport type { AuNamespace } from './namespaces/au.js';\nimport { createEsNamespace } from './namespaces/es.js';\nimport type { EsNamespace } from './namespaces/es.js';\nimport { createInNamespace } from './namespaces/in.js';\nimport type { InNamespace } from './namespaces/in.js';\nimport { createUsNamespace } from './namespaces/us.js';\nimport type { UsNamespace } from './namespaces/us.js';\nimport { createGbNamespace } from './namespaces/gb.js';\nimport type { GbNamespace } from './namespaces/gb.js';\nimport type {\n EmailResponse, IbanResponse, IsinResponse, DtiResponse, VatResponse,\n GpsResponse, PhoneResponse, UrlResponse, EanResponse, IsbnResponse,\n IssnResponse, BicResponse, CusipResponse, CfiResponse, MicResponse,\n NutsResponse, UuidResponse, JwtResponse, VinResponse, ImeiResponse,\n SemverResponse, ColorResponse, BooleanResponse, DateResponse,\n BtcAddressResponse, PostalCodeResponse, AbaResponse, ContainerCodeResponse,\n SsccResponse, GlnResponse, QrResponse, CreditCardResponse,\n} from './types/simple.js';\n\nexport class IsValid {\n private readonly client: HttpClient;\n\n readonly lei: LeiNamespace;\n readonly country: CountryNamespace;\n readonly currency: CurrencyNamespace;\n readonly language: LanguageNamespace;\n readonly iata: IataNamespace;\n readonly net: NetNamespace;\n readonly pl: PlNamespace;\n readonly br: BrNamespace;\n readonly au: AuNamespace;\n readonly es: EsNamespace;\n readonly in: InNamespace;\n readonly us: UsNamespace;\n readonly gb: GbNamespace;\n\n constructor(config: IsValidConfig) {\n this.client = new HttpClient(config);\n\n this.lei = createLeiNamespace(this.client);\n this.country = createCountryNamespace(this.client);\n this.currency = createCurrencyNamespace(this.client);\n this.language = createLanguageNamespace(this.client);\n this.iata = createIataNamespace(this.client);\n this.net = createNetNamespace(this.client);\n this.pl = createPlNamespace(this.client);\n this.br = createBrNamespace(this.client);\n this.au = createAuNamespace(this.client);\n this.es = createEsNamespace(this.client);\n this.in = createInNamespace(this.client);\n this.us = createUsNamespace(this.client);\n this.gb = createGbNamespace(this.client);\n }\n\n // --- Simple endpoints ---\n\n email(value: string, opts?: { checkMx?: boolean }): Promise<EmailResponse> {\n return this.client.get('/v0/email', { value, checkMx: opts?.checkMx?.toString() });\n }\n\n iban(value: string, opts?: { countryCode?: string }): Promise<IbanResponse> {\n return this.client.get('/v0/iban', { value, countryCode: opts?.countryCode });\n }\n\n isin(value: string): Promise<IsinResponse> {\n return this.client.get('/v0/isin', { value });\n }\n\n dti(value: string): Promise<DtiResponse> {\n return this.client.get('/v0/dti', { value });\n }\n\n vat(value: string, opts?: { countryCode?: string; checkVies?: boolean }): Promise<VatResponse> {\n return this.client.get('/v0/vat', {\n value,\n countryCode: opts?.countryCode,\n checkVies: opts?.checkVies?.toString(),\n });\n }\n\n gps(value: string): Promise<GpsResponse> {\n return this.client.get('/v0/gps', { value });\n }\n\n phone(value: string, opts?: { countryCode?: string }): Promise<PhoneResponse> {\n return this.client.get('/v0/phone', { value, countryCode: opts?.countryCode });\n }\n\n url(value: string): Promise<UrlResponse> {\n return this.client.get('/v0/url', { value });\n }\n\n ean(value: string): Promise<EanResponse> {\n return this.client.get('/v0/ean', { value });\n }\n\n isbn(value: string): Promise<IsbnResponse> {\n return this.client.get('/v0/isbn', { value });\n }\n\n issn(value: string): Promise<IssnResponse> {\n return this.client.get('/v0/issn', { value });\n }\n\n bic(value: string): Promise<BicResponse> {\n return this.client.get('/v0/bic', { value });\n }\n\n cusip(value: string): Promise<CusipResponse> {\n return this.client.get('/v0/cusip', { value });\n }\n\n cfi(value: string): Promise<CfiResponse> {\n return this.client.get('/v0/cfi', { value });\n }\n\n mic(value: string): Promise<MicResponse> {\n return this.client.get('/v0/mic', { value });\n }\n\n nuts(value: string): Promise<NutsResponse> {\n return this.client.get('/v0/nuts', { value });\n }\n\n uuid(value: string, opts?: { version?: number }): Promise<UuidResponse> {\n return this.client.get('/v0/uuid', { value, version: opts?.version?.toString() });\n }\n\n jwt(value: string): Promise<JwtResponse> {\n return this.client.get('/v0/jwt', { value });\n }\n\n vin(value: string): Promise<VinResponse> {\n return this.client.get('/v0/vin', { value });\n }\n\n imei(value: string): Promise<ImeiResponse> {\n return this.client.get('/v0/imei', { value });\n }\n\n semver(value: string): Promise<SemverResponse> {\n return this.client.get('/v0/semver', { value });\n }\n\n color(value: string): Promise<ColorResponse> {\n return this.client.get('/v0/color', { value });\n }\n\n boolean(value: string): Promise<BooleanResponse> {\n return this.client.get('/v0/boolean', { value });\n }\n\n date(value: string, opts?: { format?: string }): Promise<DateResponse> {\n return this.client.get('/v0/date', { value, format: opts?.format });\n }\n\n btcAddress(value: string): Promise<BtcAddressResponse> {\n return this.client.get('/v0/btc-address', { value });\n }\n\n postalCode(value: string, opts?: { countryCode?: string }): Promise<PostalCodeResponse> {\n return this.client.get('/v0/postal-code', { value, countryCode: opts?.countryCode });\n }\n\n aba(value: string): Promise<AbaResponse> {\n return this.client.get('/v0/aba', { value });\n }\n\n containerCode(value: string): Promise<ContainerCodeResponse> {\n return this.client.get('/v0/container-code', { value });\n }\n\n sscc(value: string): Promise<SsccResponse> {\n return this.client.get('/v0/sscc', { value });\n }\n\n gln(value: string): Promise<GlnResponse> {\n return this.client.get('/v0/gln', { value });\n }\n\n qr(value: string): Promise<QrResponse> {\n return this.client.get('/v0/qr', { value });\n }\n\n creditCard(number: string): Promise<CreditCardResponse> {\n return this.client.post('/v0/credit-card', { number });\n }\n}\n\nexport function createClient(config: IsValidConfig): IsValid {\n return new IsValid(config);\n}\n\nexport { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\nexport type { IsValidConfig, RetryConfig } from './client.js';\nexport * from './types/index.js';\n\nexport type { LeiNamespace } from './namespaces/lei.js';\nexport type { CountryNamespace } from './namespaces/country.js';\nexport type { CurrencyNamespace } from './namespaces/currency.js';\nexport type { LanguageNamespace } from './namespaces/language.js';\nexport type { IataNamespace, IataAirlineNamespace } from './namespaces/iata.js';\nexport type { NetNamespace } from './namespaces/net.js';\nexport type { PlNamespace } from './namespaces/pl.js';\nexport type { BrNamespace } from './namespaces/br.js';\nexport type { AuNamespace } from './namespaces/au.js';\nexport type { EsNamespace } from './namespaces/es.js';\nexport type { InNamespace } from './namespaces/in.js';\nexport type { UsNamespace } from './namespaces/us.js';\nexport type { GbNamespace } from './namespaces/gb.js';\n"]}
|
package/dist/index.d.cts
CHANGED
|
@@ -675,7 +675,7 @@ type AbaResponse = {
|
|
|
675
675
|
routingNumber: string;
|
|
676
676
|
checkDigit: string;
|
|
677
677
|
};
|
|
678
|
-
type
|
|
678
|
+
type ContainerCodeResponse = {
|
|
679
679
|
valid: false;
|
|
680
680
|
} | {
|
|
681
681
|
valid: true;
|
|
@@ -797,7 +797,7 @@ declare class IsValid {
|
|
|
797
797
|
countryCode?: string;
|
|
798
798
|
}): Promise<PostalCodeResponse>;
|
|
799
799
|
aba(value: string): Promise<AbaResponse>;
|
|
800
|
-
|
|
800
|
+
containerCode(value: string): Promise<ContainerCodeResponse>;
|
|
801
801
|
sscc(value: string): Promise<SsccResponse>;
|
|
802
802
|
gln(value: string): Promise<GlnResponse>;
|
|
803
803
|
qr(value: string): Promise<QrResponse>;
|
|
@@ -805,4 +805,4 @@ declare class IsValid {
|
|
|
805
805
|
}
|
|
806
806
|
declare function createClient(config: IsValidConfig): IsValid;
|
|
807
807
|
|
|
808
|
-
export { type AbaResponse, type AbnResponse, type AuNamespace, type BicResponse, type BooleanResponse, type BrNamespace, type BtcAddressResponse, type CfiResponse, type CnpjResponse, type ColorResponse, type CountryListItem, type CountryNamespace, type CountryResponse, type CpfResponse, type CreditCardResponse, type CurrencyListItem, type CurrencyNamespace, type CurrencyResponse, type CusipResponse, type DateResponse, type DtiResponse, type EanResponse, type EmailResponse, type EsNamespace, type GbNamespace, type GlnResponse, type GpsResponse, type GstinResponse, type IataAirlineListItem, type IataAirlineNamespace, type IataAirlineResponse, type IataAirportResponse, type IataFlightResponse, type IataNamespace, type IbanResponse, type ImeiResponse, type InNamespace, type InvalidResponse, type IpResponse, IsValid, IsValidAuthError, type IsValidConfig, IsValidError, IsValidRateLimitError, type IsbnResponse, type IsinResponse, type
|
|
808
|
+
export { type AbaResponse, type AbnResponse, type AuNamespace, type BicResponse, type BooleanResponse, type BrNamespace, type BtcAddressResponse, type CfiResponse, type CnpjResponse, type ColorResponse, type ContainerCodeResponse, type CountryListItem, type CountryNamespace, type CountryResponse, type CpfResponse, type CreditCardResponse, type CurrencyListItem, type CurrencyNamespace, type CurrencyResponse, type CusipResponse, type DateResponse, type DtiResponse, type EanResponse, type EmailResponse, type EsNamespace, type GbNamespace, type GlnResponse, type GpsResponse, type GstinResponse, type IataAirlineListItem, type IataAirlineNamespace, type IataAirlineResponse, type IataAirportResponse, type IataFlightResponse, type IataNamespace, type IbanResponse, type ImeiResponse, type InNamespace, type InvalidResponse, type IpResponse, IsValid, IsValidAuthError, type IsValidConfig, IsValidError, IsValidRateLimitError, type IsbnResponse, type IsinResponse, type IssnResponse, type JwtResponse, type KrsAddress, type KrsLookup, type KrsResponse, type LanguageListItem, type LanguageNamespace, type LanguageResponse, type LeiEntity, type LeiLou, type LeiLouItem, type LeiLousResponse, type LeiNamespace, type LeiResponse, type LeiSearchOptions, type LeiSearchResponse, type LeiSearchResult, type MacResponse, type MicResponse, type NetNamespace, type NifResponse, type NpiResponse, type NutsResponse, type PeselResponse, type PhoneResponse, type PlNamespace, type PostalCodeResponse, type QrResponse, type RegonLookup, type RegonResponse, type RetryConfig, type SemverResponse, type SortCodeResponse, type SsccResponse, type UrlResponse, type UsNamespace, type UuidResponse, type VatResponse, type VinResponse, createClient };
|
package/dist/index.d.ts
CHANGED
|
@@ -675,7 +675,7 @@ type AbaResponse = {
|
|
|
675
675
|
routingNumber: string;
|
|
676
676
|
checkDigit: string;
|
|
677
677
|
};
|
|
678
|
-
type
|
|
678
|
+
type ContainerCodeResponse = {
|
|
679
679
|
valid: false;
|
|
680
680
|
} | {
|
|
681
681
|
valid: true;
|
|
@@ -797,7 +797,7 @@ declare class IsValid {
|
|
|
797
797
|
countryCode?: string;
|
|
798
798
|
}): Promise<PostalCodeResponse>;
|
|
799
799
|
aba(value: string): Promise<AbaResponse>;
|
|
800
|
-
|
|
800
|
+
containerCode(value: string): Promise<ContainerCodeResponse>;
|
|
801
801
|
sscc(value: string): Promise<SsccResponse>;
|
|
802
802
|
gln(value: string): Promise<GlnResponse>;
|
|
803
803
|
qr(value: string): Promise<QrResponse>;
|
|
@@ -805,4 +805,4 @@ declare class IsValid {
|
|
|
805
805
|
}
|
|
806
806
|
declare function createClient(config: IsValidConfig): IsValid;
|
|
807
807
|
|
|
808
|
-
export { type AbaResponse, type AbnResponse, type AuNamespace, type BicResponse, type BooleanResponse, type BrNamespace, type BtcAddressResponse, type CfiResponse, type CnpjResponse, type ColorResponse, type CountryListItem, type CountryNamespace, type CountryResponse, type CpfResponse, type CreditCardResponse, type CurrencyListItem, type CurrencyNamespace, type CurrencyResponse, type CusipResponse, type DateResponse, type DtiResponse, type EanResponse, type EmailResponse, type EsNamespace, type GbNamespace, type GlnResponse, type GpsResponse, type GstinResponse, type IataAirlineListItem, type IataAirlineNamespace, type IataAirlineResponse, type IataAirportResponse, type IataFlightResponse, type IataNamespace, type IbanResponse, type ImeiResponse, type InNamespace, type InvalidResponse, type IpResponse, IsValid, IsValidAuthError, type IsValidConfig, IsValidError, IsValidRateLimitError, type IsbnResponse, type IsinResponse, type
|
|
808
|
+
export { type AbaResponse, type AbnResponse, type AuNamespace, type BicResponse, type BooleanResponse, type BrNamespace, type BtcAddressResponse, type CfiResponse, type CnpjResponse, type ColorResponse, type ContainerCodeResponse, type CountryListItem, type CountryNamespace, type CountryResponse, type CpfResponse, type CreditCardResponse, type CurrencyListItem, type CurrencyNamespace, type CurrencyResponse, type CusipResponse, type DateResponse, type DtiResponse, type EanResponse, type EmailResponse, type EsNamespace, type GbNamespace, type GlnResponse, type GpsResponse, type GstinResponse, type IataAirlineListItem, type IataAirlineNamespace, type IataAirlineResponse, type IataAirportResponse, type IataFlightResponse, type IataNamespace, type IbanResponse, type ImeiResponse, type InNamespace, type InvalidResponse, type IpResponse, IsValid, IsValidAuthError, type IsValidConfig, IsValidError, IsValidRateLimitError, type IsbnResponse, type IsinResponse, type IssnResponse, type JwtResponse, type KrsAddress, type KrsLookup, type KrsResponse, type LanguageListItem, type LanguageNamespace, type LanguageResponse, type LeiEntity, type LeiLou, type LeiLouItem, type LeiLousResponse, type LeiNamespace, type LeiResponse, type LeiSearchOptions, type LeiSearchResponse, type LeiSearchResult, type MacResponse, type MicResponse, type NetNamespace, type NifResponse, type NpiResponse, type NutsResponse, type PeselResponse, type PhoneResponse, type PlNamespace, type PostalCodeResponse, type QrResponse, type RegonLookup, type RegonResponse, type RetryConfig, type SemverResponse, type SortCodeResponse, type SsccResponse, type UrlResponse, type UsNamespace, type UuidResponse, type VatResponse, type VinResponse, createClient };
|
package/dist/index.js
CHANGED
|
@@ -1,3 +1,351 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
// src/errors.ts
|
|
2
|
+
var IsValidError = class extends Error {
|
|
3
|
+
constructor(status, body) {
|
|
4
|
+
super(body.error);
|
|
5
|
+
this.name = "IsValidError";
|
|
6
|
+
this.status = status;
|
|
7
|
+
this.body = body;
|
|
8
|
+
}
|
|
9
|
+
};
|
|
10
|
+
var IsValidAuthError = class extends IsValidError {
|
|
11
|
+
constructor(body) {
|
|
12
|
+
super(401, body);
|
|
13
|
+
this.name = "IsValidAuthError";
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
var IsValidRateLimitError = class extends IsValidError {
|
|
17
|
+
constructor(body, retryAfter = null) {
|
|
18
|
+
super(429, body);
|
|
19
|
+
this.name = "IsValidRateLimitError";
|
|
20
|
+
this.retryAfter = retryAfter;
|
|
21
|
+
}
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
// src/client.ts
|
|
25
|
+
var DEFAULT_BASE_URL = "https://api.isvalid.dev";
|
|
26
|
+
var DEFAULT_TIMEOUT = 1e4;
|
|
27
|
+
var DEFAULT_RETRY = {
|
|
28
|
+
maxRetries: 3,
|
|
29
|
+
initialDelayMs: 500,
|
|
30
|
+
maxDelayMs: 1e4,
|
|
31
|
+
retryOn: [429, 500, 502, 503]
|
|
32
|
+
};
|
|
33
|
+
function resolveRetry(cfg) {
|
|
34
|
+
if (cfg === false) return false;
|
|
35
|
+
if (!cfg) return DEFAULT_RETRY;
|
|
36
|
+
return {
|
|
37
|
+
maxRetries: cfg.maxRetries ?? DEFAULT_RETRY.maxRetries,
|
|
38
|
+
initialDelayMs: cfg.initialDelayMs ?? DEFAULT_RETRY.initialDelayMs,
|
|
39
|
+
maxDelayMs: cfg.maxDelayMs ?? DEFAULT_RETRY.maxDelayMs,
|
|
40
|
+
retryOn: cfg.retryOn ?? DEFAULT_RETRY.retryOn
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function delay(ms) {
|
|
44
|
+
return new Promise((r) => setTimeout(r, ms));
|
|
45
|
+
}
|
|
46
|
+
function backoffDelay(attempt, initial, max) {
|
|
47
|
+
const base = initial * 2 ** attempt;
|
|
48
|
+
const jitter = Math.random() * initial;
|
|
49
|
+
return Math.min(base + jitter, max);
|
|
50
|
+
}
|
|
51
|
+
var HttpClient = class {
|
|
52
|
+
constructor(config) {
|
|
53
|
+
this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\/+$/, "");
|
|
54
|
+
this.apiKey = config.apiKey;
|
|
55
|
+
this.retry = resolveRetry(config.retry);
|
|
56
|
+
this.timeout = config.timeout ?? DEFAULT_TIMEOUT;
|
|
57
|
+
}
|
|
58
|
+
async get(path, params) {
|
|
59
|
+
const url = this.buildUrl(path, params);
|
|
60
|
+
return this.request(url, { method: "GET" });
|
|
61
|
+
}
|
|
62
|
+
async post(path, body) {
|
|
63
|
+
const url = this.buildUrl(path);
|
|
64
|
+
return this.request(url, {
|
|
65
|
+
method: "POST",
|
|
66
|
+
body: JSON.stringify(body),
|
|
67
|
+
headers: { "Content-Type": "application/json" }
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
buildUrl(path, params) {
|
|
71
|
+
const url = new URL(path, this.baseUrl);
|
|
72
|
+
if (params) {
|
|
73
|
+
for (const [k, v] of Object.entries(params)) {
|
|
74
|
+
if (v !== void 0) url.searchParams.set(k, v);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return url.toString();
|
|
78
|
+
}
|
|
79
|
+
async request(url, init) {
|
|
80
|
+
const headers = {
|
|
81
|
+
Authorization: `Bearer ${this.apiKey}`,
|
|
82
|
+
Accept: "application/json",
|
|
83
|
+
...init.headers
|
|
84
|
+
};
|
|
85
|
+
const maxAttempts = this.retry ? this.retry.maxRetries + 1 : 1;
|
|
86
|
+
for (let attempt = 0; attempt < maxAttempts; attempt++) {
|
|
87
|
+
const res = await fetch(url, {
|
|
88
|
+
...init,
|
|
89
|
+
headers,
|
|
90
|
+
signal: AbortSignal.timeout(this.timeout)
|
|
91
|
+
});
|
|
92
|
+
if (res.ok) {
|
|
93
|
+
return await res.json();
|
|
94
|
+
}
|
|
95
|
+
if (this.retry && attempt < this.retry.maxRetries && this.retry.retryOn.includes(res.status)) {
|
|
96
|
+
const retryAfterHeader = res.headers.get("Retry-After");
|
|
97
|
+
const retryMs = retryAfterHeader ? parseInt(retryAfterHeader, 10) * 1e3 : backoffDelay(attempt, this.retry.initialDelayMs, this.retry.maxDelayMs);
|
|
98
|
+
await delay(retryMs);
|
|
99
|
+
continue;
|
|
100
|
+
}
|
|
101
|
+
const body = await res.json().catch(() => ({ error: res.statusText }));
|
|
102
|
+
if (res.status === 401) throw new IsValidAuthError(body);
|
|
103
|
+
if (res.status === 429) {
|
|
104
|
+
const ra = res.headers.get("Retry-After");
|
|
105
|
+
throw new IsValidRateLimitError(body, ra ? parseInt(ra, 10) : null);
|
|
106
|
+
}
|
|
107
|
+
throw new IsValidError(res.status, body);
|
|
108
|
+
}
|
|
109
|
+
throw new IsValidError(0, { error: "Max retries exceeded" });
|
|
110
|
+
}
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
// src/namespaces/lei.ts
|
|
114
|
+
function createLeiNamespace(client) {
|
|
115
|
+
const lei = ((value) => client.get("/v0/lei", { value }));
|
|
116
|
+
lei.search = (query, opts) => client.get("/v0/lei/search", {
|
|
117
|
+
q: query,
|
|
118
|
+
country: opts?.country,
|
|
119
|
+
entityStatus: opts?.entityStatus,
|
|
120
|
+
page: opts?.page?.toString(),
|
|
121
|
+
limit: opts?.limit?.toString()
|
|
122
|
+
});
|
|
123
|
+
lei.lous = () => client.get("/v0/lei/lous");
|
|
124
|
+
return lei;
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// src/namespaces/country.ts
|
|
128
|
+
function createCountryNamespace(client) {
|
|
129
|
+
const country = ((value) => client.get("/v0/country", { value }));
|
|
130
|
+
country.list = () => client.get("/v0/country/list");
|
|
131
|
+
return country;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
// src/namespaces/currency.ts
|
|
135
|
+
function createCurrencyNamespace(client) {
|
|
136
|
+
const currency = ((value) => client.get("/v0/currency", { value }));
|
|
137
|
+
currency.list = () => client.get("/v0/currency/list");
|
|
138
|
+
return currency;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// src/namespaces/language.ts
|
|
142
|
+
function createLanguageNamespace(client) {
|
|
143
|
+
const language = ((value) => client.get("/v0/language", { value }));
|
|
144
|
+
language.list = () => client.get("/v0/language/list");
|
|
145
|
+
return language;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// src/namespaces/iata.ts
|
|
149
|
+
function createIataNamespace(client) {
|
|
150
|
+
const airline = ((value) => client.get("/v0/iata/airline", { value }));
|
|
151
|
+
airline.list = () => client.get("/v0/iata/airline/list");
|
|
152
|
+
return {
|
|
153
|
+
flight: (value) => client.get("/v0/iata/flight", { value }),
|
|
154
|
+
airline,
|
|
155
|
+
airport: (value) => client.get("/v0/iata/airport", { value })
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
// src/namespaces/net.ts
|
|
160
|
+
function createNetNamespace(client) {
|
|
161
|
+
return {
|
|
162
|
+
ip: (value) => client.get("/v0/net/ip", { value }),
|
|
163
|
+
mac: (value) => client.get("/v0/net/mac", { value })
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
// src/namespaces/pl.ts
|
|
168
|
+
function createPlNamespace(client) {
|
|
169
|
+
return {
|
|
170
|
+
pesel: (value) => client.get("/v0/pl/pesel", { value }),
|
|
171
|
+
regon: (value, opts) => client.get("/v0/pl/regon", {
|
|
172
|
+
value,
|
|
173
|
+
lookup: opts?.lookup?.toString()
|
|
174
|
+
}),
|
|
175
|
+
krs: (value, opts) => client.get("/v0/pl/krs", {
|
|
176
|
+
value,
|
|
177
|
+
lookup: opts?.lookup?.toString()
|
|
178
|
+
})
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
// src/namespaces/br.ts
|
|
183
|
+
function createBrNamespace(client) {
|
|
184
|
+
return {
|
|
185
|
+
cnpj: (value) => client.get("/v0/br/cnpj", { value }),
|
|
186
|
+
cpf: (value) => client.get("/v0/br/cpf", { value })
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// src/namespaces/au.ts
|
|
191
|
+
function createAuNamespace(client) {
|
|
192
|
+
return {
|
|
193
|
+
abn: (value) => client.get("/v0/au/abn", { value })
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// src/namespaces/es.ts
|
|
198
|
+
function createEsNamespace(client) {
|
|
199
|
+
return {
|
|
200
|
+
nif: (value) => client.get("/v0/es/nif", { value })
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
|
|
204
|
+
// src/namespaces/in.ts
|
|
205
|
+
function createInNamespace(client) {
|
|
206
|
+
return {
|
|
207
|
+
gstin: (value) => client.get("/v0/in/gstin", { value })
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
// src/namespaces/us.ts
|
|
212
|
+
function createUsNamespace(client) {
|
|
213
|
+
return {
|
|
214
|
+
npi: (value) => client.get("/v0/us/npi", { value })
|
|
215
|
+
};
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
// src/namespaces/gb.ts
|
|
219
|
+
function createGbNamespace(client) {
|
|
220
|
+
return {
|
|
221
|
+
sortCode: (value) => client.get("/v0/gb/sort-code", { value })
|
|
222
|
+
};
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
// src/index.ts
|
|
226
|
+
var IsValid = class {
|
|
227
|
+
constructor(config) {
|
|
228
|
+
this.client = new HttpClient(config);
|
|
229
|
+
this.lei = createLeiNamespace(this.client);
|
|
230
|
+
this.country = createCountryNamespace(this.client);
|
|
231
|
+
this.currency = createCurrencyNamespace(this.client);
|
|
232
|
+
this.language = createLanguageNamespace(this.client);
|
|
233
|
+
this.iata = createIataNamespace(this.client);
|
|
234
|
+
this.net = createNetNamespace(this.client);
|
|
235
|
+
this.pl = createPlNamespace(this.client);
|
|
236
|
+
this.br = createBrNamespace(this.client);
|
|
237
|
+
this.au = createAuNamespace(this.client);
|
|
238
|
+
this.es = createEsNamespace(this.client);
|
|
239
|
+
this.in = createInNamespace(this.client);
|
|
240
|
+
this.us = createUsNamespace(this.client);
|
|
241
|
+
this.gb = createGbNamespace(this.client);
|
|
242
|
+
}
|
|
243
|
+
// --- Simple endpoints ---
|
|
244
|
+
email(value, opts) {
|
|
245
|
+
return this.client.get("/v0/email", { value, checkMx: opts?.checkMx?.toString() });
|
|
246
|
+
}
|
|
247
|
+
iban(value, opts) {
|
|
248
|
+
return this.client.get("/v0/iban", { value, countryCode: opts?.countryCode });
|
|
249
|
+
}
|
|
250
|
+
isin(value) {
|
|
251
|
+
return this.client.get("/v0/isin", { value });
|
|
252
|
+
}
|
|
253
|
+
dti(value) {
|
|
254
|
+
return this.client.get("/v0/dti", { value });
|
|
255
|
+
}
|
|
256
|
+
vat(value, opts) {
|
|
257
|
+
return this.client.get("/v0/vat", {
|
|
258
|
+
value,
|
|
259
|
+
countryCode: opts?.countryCode,
|
|
260
|
+
checkVies: opts?.checkVies?.toString()
|
|
261
|
+
});
|
|
262
|
+
}
|
|
263
|
+
gps(value) {
|
|
264
|
+
return this.client.get("/v0/gps", { value });
|
|
265
|
+
}
|
|
266
|
+
phone(value, opts) {
|
|
267
|
+
return this.client.get("/v0/phone", { value, countryCode: opts?.countryCode });
|
|
268
|
+
}
|
|
269
|
+
url(value) {
|
|
270
|
+
return this.client.get("/v0/url", { value });
|
|
271
|
+
}
|
|
272
|
+
ean(value) {
|
|
273
|
+
return this.client.get("/v0/ean", { value });
|
|
274
|
+
}
|
|
275
|
+
isbn(value) {
|
|
276
|
+
return this.client.get("/v0/isbn", { value });
|
|
277
|
+
}
|
|
278
|
+
issn(value) {
|
|
279
|
+
return this.client.get("/v0/issn", { value });
|
|
280
|
+
}
|
|
281
|
+
bic(value) {
|
|
282
|
+
return this.client.get("/v0/bic", { value });
|
|
283
|
+
}
|
|
284
|
+
cusip(value) {
|
|
285
|
+
return this.client.get("/v0/cusip", { value });
|
|
286
|
+
}
|
|
287
|
+
cfi(value) {
|
|
288
|
+
return this.client.get("/v0/cfi", { value });
|
|
289
|
+
}
|
|
290
|
+
mic(value) {
|
|
291
|
+
return this.client.get("/v0/mic", { value });
|
|
292
|
+
}
|
|
293
|
+
nuts(value) {
|
|
294
|
+
return this.client.get("/v0/nuts", { value });
|
|
295
|
+
}
|
|
296
|
+
uuid(value, opts) {
|
|
297
|
+
return this.client.get("/v0/uuid", { value, version: opts?.version?.toString() });
|
|
298
|
+
}
|
|
299
|
+
jwt(value) {
|
|
300
|
+
return this.client.get("/v0/jwt", { value });
|
|
301
|
+
}
|
|
302
|
+
vin(value) {
|
|
303
|
+
return this.client.get("/v0/vin", { value });
|
|
304
|
+
}
|
|
305
|
+
imei(value) {
|
|
306
|
+
return this.client.get("/v0/imei", { value });
|
|
307
|
+
}
|
|
308
|
+
semver(value) {
|
|
309
|
+
return this.client.get("/v0/semver", { value });
|
|
310
|
+
}
|
|
311
|
+
color(value) {
|
|
312
|
+
return this.client.get("/v0/color", { value });
|
|
313
|
+
}
|
|
314
|
+
boolean(value) {
|
|
315
|
+
return this.client.get("/v0/boolean", { value });
|
|
316
|
+
}
|
|
317
|
+
date(value, opts) {
|
|
318
|
+
return this.client.get("/v0/date", { value, format: opts?.format });
|
|
319
|
+
}
|
|
320
|
+
btcAddress(value) {
|
|
321
|
+
return this.client.get("/v0/btc-address", { value });
|
|
322
|
+
}
|
|
323
|
+
postalCode(value, opts) {
|
|
324
|
+
return this.client.get("/v0/postal-code", { value, countryCode: opts?.countryCode });
|
|
325
|
+
}
|
|
326
|
+
aba(value) {
|
|
327
|
+
return this.client.get("/v0/aba", { value });
|
|
328
|
+
}
|
|
329
|
+
containerCode(value) {
|
|
330
|
+
return this.client.get("/v0/container-code", { value });
|
|
331
|
+
}
|
|
332
|
+
sscc(value) {
|
|
333
|
+
return this.client.get("/v0/sscc", { value });
|
|
334
|
+
}
|
|
335
|
+
gln(value) {
|
|
336
|
+
return this.client.get("/v0/gln", { value });
|
|
337
|
+
}
|
|
338
|
+
qr(value) {
|
|
339
|
+
return this.client.get("/v0/qr", { value });
|
|
340
|
+
}
|
|
341
|
+
creditCard(number) {
|
|
342
|
+
return this.client.post("/v0/credit-card", { number });
|
|
343
|
+
}
|
|
344
|
+
};
|
|
345
|
+
function createClient(config) {
|
|
346
|
+
return new IsValid(config);
|
|
347
|
+
}
|
|
348
|
+
|
|
349
|
+
export { IsValid, IsValidAuthError, IsValidError, IsValidRateLimitError, createClient };
|
|
350
|
+
//# sourceMappingURL=index.js.map
|
|
3
351
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/namespaces/lei.ts","../src/namespaces/country.ts","../src/namespaces/currency.ts","../src/namespaces/language.ts","../src/namespaces/iata.ts","../src/namespaces/net.ts","../src/namespaces/pl.ts","../src/namespaces/br.ts","../src/namespaces/au.ts","../src/namespaces/es.ts","../src/namespaces/in.ts","../src/namespaces/us.ts","../src/namespaces/gb.ts","../src/index.ts"],"names":["IsValidError","status","body","IsValidAuthError","IsValidRateLimitError","retryAfter","DEFAULT_BASE_URL","DEFAULT_TIMEOUT","DEFAULT_RETRY","resolveRetry","cfg","delay","ms","r","backoffDelay","attempt","initial","max","base","jitter","HttpClient","config","path","params","url","k","v","init","headers","maxAttempts","res","retryAfterHeader","retryMs","ra","createLeiNamespace","client","lei","value","query","opts","createCountryNamespace","country","createCurrencyNamespace","currency","createLanguageNamespace","language","createIataNamespace","airline","createNetNamespace","createPlNamespace","createBrNamespace","createAuNamespace","createEsNamespace","createInNamespace","createUsNamespace","createGbNamespace","IsValid","number","createClient"],"mappings":"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","file":"index.js","sourcesContent":["export class IsValidError extends Error {\n readonly status: number;\n readonly body: { error: string };\n\n constructor(status: number, body: { error: string }) {\n super(body.error);\n this.name = 'IsValidError';\n this.status = status;\n this.body = body;\n }\n}\n\nexport class IsValidAuthError extends IsValidError {\n constructor(body: { error: string }) {\n super(401, body);\n this.name = 'IsValidAuthError';\n }\n}\n\nexport class IsValidRateLimitError extends IsValidError {\n readonly retryAfter: number | null;\n\n constructor(body: { error: string }, retryAfter: number | null = null) {\n super(429, body);\n this.name = 'IsValidRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n","import { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\n\nexport interface RetryConfig {\n maxRetries?: number;\n initialDelayMs?: number;\n maxDelayMs?: number;\n retryOn?: number[];\n}\n\nexport interface IsValidConfig {\n apiKey: string;\n baseUrl?: string;\n timeout?: number;\n retry?: RetryConfig | false;\n}\n\nconst DEFAULT_BASE_URL = 'https://api.isvalid.dev';\nconst DEFAULT_TIMEOUT = 10_000;\nconst DEFAULT_RETRY: Required<RetryConfig> = {\n maxRetries: 3,\n initialDelayMs: 500,\n maxDelayMs: 10_000,\n retryOn: [429, 500, 502, 503],\n};\n\nfunction resolveRetry(cfg: RetryConfig | false | undefined): Required<RetryConfig> | false {\n if (cfg === false) return false;\n if (!cfg) return DEFAULT_RETRY;\n return {\n maxRetries: cfg.maxRetries ?? DEFAULT_RETRY.maxRetries,\n initialDelayMs: cfg.initialDelayMs ?? DEFAULT_RETRY.initialDelayMs,\n maxDelayMs: cfg.maxDelayMs ?? DEFAULT_RETRY.maxDelayMs,\n retryOn: cfg.retryOn ?? DEFAULT_RETRY.retryOn,\n };\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nfunction backoffDelay(attempt: number, initial: number, max: number): number {\n const base = initial * 2 ** attempt;\n const jitter = Math.random() * initial;\n return Math.min(base + jitter, max);\n}\n\nexport class HttpClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly retry: Required<RetryConfig> | false;\n private readonly timeout: number;\n\n constructor(config: IsValidConfig) {\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '');\n this.apiKey = config.apiKey;\n this.retry = resolveRetry(config.retry);\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n }\n\n async get<T>(path: string, params?: Record<string, string | undefined>): Promise<T> {\n const url = this.buildUrl(path, params);\n return this.request<T>(url, { method: 'GET' });\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n const url = this.buildUrl(path);\n return this.request<T>(url, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n private buildUrl(path: string, params?: Record<string, string | undefined>): string {\n const url = new URL(path, this.baseUrl);\n if (params) {\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined) url.searchParams.set(k, v);\n }\n }\n return url.toString();\n }\n\n private async request<T>(url: string, init: RequestInit): Promise<T> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: 'application/json',\n ...(init.headers as Record<string, string> | undefined),\n };\n\n const maxAttempts = this.retry ? this.retry.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const res = await fetch(url, {\n ...init,\n headers,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (res.ok) {\n return (await res.json()) as T;\n }\n\n if (this.retry && attempt < this.retry.maxRetries && this.retry.retryOn.includes(res.status)) {\n const retryAfterHeader = res.headers.get('Retry-After');\n const retryMs = retryAfterHeader\n ? parseInt(retryAfterHeader, 10) * 1000\n : backoffDelay(attempt, this.retry.initialDelayMs, this.retry.maxDelayMs);\n await delay(retryMs);\n continue;\n }\n\n const body = await res.json().catch(() => ({ error: res.statusText })) as { error: string };\n\n if (res.status === 401) throw new IsValidAuthError(body);\n if (res.status === 429) {\n const ra = res.headers.get('Retry-After');\n throw new IsValidRateLimitError(body, ra ? parseInt(ra, 10) : null);\n }\n throw new IsValidError(res.status, body);\n }\n\n throw new IsValidError(0, { error: 'Max retries exceeded' });\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { LeiResponse, LeiSearchOptions, LeiSearchResponse, LeiLousResponse } from '../types/lei.js';\n\nexport interface LeiNamespace {\n (value: string): Promise<LeiResponse>;\n search(query: string, opts?: LeiSearchOptions): Promise<LeiSearchResponse>;\n lous(): Promise<LeiLousResponse>;\n}\n\nexport function createLeiNamespace(client: HttpClient): LeiNamespace {\n const lei = ((value: string) =>\n client.get<LeiResponse>('/v0/lei', { value })\n ) as LeiNamespace;\n\n lei.search = (query: string, opts?: LeiSearchOptions) =>\n client.get<LeiSearchResponse>('/v0/lei/search', {\n q: query,\n country: opts?.country,\n entityStatus: opts?.entityStatus,\n page: opts?.page?.toString(),\n limit: opts?.limit?.toString(),\n });\n\n lei.lous = () => client.get<LeiLousResponse>('/v0/lei/lous');\n\n return lei;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CountryResponse, CountryListItem } from '../types/country.js';\n\nexport interface CountryNamespace {\n (value: string): Promise<CountryResponse>;\n list(): Promise<CountryListItem[]>;\n}\n\nexport function createCountryNamespace(client: HttpClient): CountryNamespace {\n const country = ((value: string) =>\n client.get<CountryResponse>('/v0/country', { value })\n ) as CountryNamespace;\n\n country.list = () => client.get<CountryListItem[]>('/v0/country/list');\n\n return country;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CurrencyResponse, CurrencyListItem } from '../types/currency.js';\n\nexport interface CurrencyNamespace {\n (value: string): Promise<CurrencyResponse>;\n list(): Promise<CurrencyListItem[]>;\n}\n\nexport function createCurrencyNamespace(client: HttpClient): CurrencyNamespace {\n const currency = ((value: string) =>\n client.get<CurrencyResponse>('/v0/currency', { value })\n ) as CurrencyNamespace;\n\n currency.list = () => client.get<CurrencyListItem[]>('/v0/currency/list');\n\n return currency;\n}\n","import type { HttpClient } from '../client.js';\nimport type { LanguageResponse, LanguageListItem } from '../types/language.js';\n\nexport interface LanguageNamespace {\n (value: string): Promise<LanguageResponse>;\n list(): Promise<LanguageListItem[]>;\n}\n\nexport function createLanguageNamespace(client: HttpClient): LanguageNamespace {\n const language = ((value: string) =>\n client.get<LanguageResponse>('/v0/language', { value })\n ) as LanguageNamespace;\n\n language.list = () => client.get<LanguageListItem[]>('/v0/language/list');\n\n return language;\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n IataFlightResponse, IataAirlineResponse, IataAirlineListItem, IataAirportResponse,\n} from '../types/iata.js';\n\nexport interface IataAirlineNamespace {\n (value: string): Promise<IataAirlineResponse>;\n list(): Promise<IataAirlineListItem[]>;\n}\n\nexport interface IataNamespace {\n flight(value: string): Promise<IataFlightResponse>;\n airline: IataAirlineNamespace;\n airport(value: string): Promise<IataAirportResponse>;\n}\n\nexport function createIataNamespace(client: HttpClient): IataNamespace {\n const airline = ((value: string) =>\n client.get<IataAirlineResponse>('/v0/iata/airline', { value })\n ) as IataAirlineNamespace;\n\n airline.list = () => client.get<IataAirlineListItem[]>('/v0/iata/airline/list');\n\n return {\n flight: (value: string) =>\n client.get<IataFlightResponse>('/v0/iata/flight', { value }),\n airline,\n airport: (value: string) =>\n client.get<IataAirportResponse>('/v0/iata/airport', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { IpResponse, MacResponse } from '../types/net.js';\n\nexport interface NetNamespace {\n ip(value: string): Promise<IpResponse>;\n mac(value: string): Promise<MacResponse>;\n}\n\nexport function createNetNamespace(client: HttpClient): NetNamespace {\n return {\n ip: (value: string) => client.get<IpResponse>('/v0/net/ip', { value }),\n mac: (value: string) => client.get<MacResponse>('/v0/net/mac', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { PeselResponse, RegonResponse, KrsResponse } from '../types/pl.js';\n\nexport interface PlNamespace {\n pesel(value: string): Promise<PeselResponse>;\n regon(value: string, opts?: { lookup?: boolean }): Promise<RegonResponse>;\n krs(value: string, opts?: { lookup?: boolean }): Promise<KrsResponse>;\n}\n\nexport function createPlNamespace(client: HttpClient): PlNamespace {\n return {\n pesel: (value: string) =>\n client.get<PeselResponse>('/v0/pl/pesel', { value }),\n regon: (value: string, opts?) =>\n client.get<RegonResponse>('/v0/pl/regon', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n krs: (value: string, opts?) =>\n client.get<KrsResponse>('/v0/pl/krs', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { CnpjResponse, CpfResponse } from '../types/br.js';\n\nexport interface BrNamespace {\n cnpj(value: string): Promise<CnpjResponse>;\n cpf(value: string): Promise<CpfResponse>;\n}\n\nexport function createBrNamespace(client: HttpClient): BrNamespace {\n return {\n cnpj: (value: string) => client.get<CnpjResponse>('/v0/br/cnpj', { value }),\n cpf: (value: string) => client.get<CpfResponse>('/v0/br/cpf', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { AbnResponse } from '../types/au.js';\n\nexport interface AuNamespace {\n abn(value: string): Promise<AbnResponse>;\n}\n\nexport function createAuNamespace(client: HttpClient): AuNamespace {\n return {\n abn: (value: string) => client.get<AbnResponse>('/v0/au/abn', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NifResponse } from '../types/es.js';\n\nexport interface EsNamespace {\n nif(value: string): Promise<NifResponse>;\n}\n\nexport function createEsNamespace(client: HttpClient): EsNamespace {\n return {\n nif: (value: string) => client.get<NifResponse>('/v0/es/nif', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { GstinResponse } from '../types/in.js';\n\nexport interface InNamespace {\n gstin(value: string): Promise<GstinResponse>;\n}\n\nexport function createInNamespace(client: HttpClient): InNamespace {\n return {\n gstin: (value: string) => client.get<GstinResponse>('/v0/in/gstin', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NpiResponse } from '../types/us.js';\n\nexport interface UsNamespace {\n npi(value: string): Promise<NpiResponse>;\n}\n\nexport function createUsNamespace(client: HttpClient): UsNamespace {\n return {\n npi: (value: string) => client.get<NpiResponse>('/v0/us/npi', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { SortCodeResponse } from '../types/gb.js';\n\nexport interface GbNamespace {\n sortCode(value: string): Promise<SortCodeResponse>;\n}\n\nexport function createGbNamespace(client: HttpClient): GbNamespace {\n return {\n sortCode: (value: string) => client.get<SortCodeResponse>('/v0/gb/sort-code', { value }),\n };\n}\n","import { HttpClient } from './client.js';\nimport type { IsValidConfig } from './client.js';\nimport { createLeiNamespace } from './namespaces/lei.js';\nimport type { LeiNamespace } from './namespaces/lei.js';\nimport { createCountryNamespace } from './namespaces/country.js';\nimport type { CountryNamespace } from './namespaces/country.js';\nimport { createCurrencyNamespace } from './namespaces/currency.js';\nimport type { CurrencyNamespace } from './namespaces/currency.js';\nimport { createLanguageNamespace } from './namespaces/language.js';\nimport type { LanguageNamespace } from './namespaces/language.js';\nimport { createIataNamespace } from './namespaces/iata.js';\nimport type { IataNamespace } from './namespaces/iata.js';\nimport { createNetNamespace } from './namespaces/net.js';\nimport type { NetNamespace } from './namespaces/net.js';\nimport { createPlNamespace } from './namespaces/pl.js';\nimport type { PlNamespace } from './namespaces/pl.js';\nimport { createBrNamespace } from './namespaces/br.js';\nimport type { BrNamespace } from './namespaces/br.js';\nimport { createAuNamespace } from './namespaces/au.js';\nimport type { AuNamespace } from './namespaces/au.js';\nimport { createEsNamespace } from './namespaces/es.js';\nimport type { EsNamespace } from './namespaces/es.js';\nimport { createInNamespace } from './namespaces/in.js';\nimport type { InNamespace } from './namespaces/in.js';\nimport { createUsNamespace } from './namespaces/us.js';\nimport type { UsNamespace } from './namespaces/us.js';\nimport { createGbNamespace } from './namespaces/gb.js';\nimport type { GbNamespace } from './namespaces/gb.js';\nimport type {\n EmailResponse, IbanResponse, IsinResponse, DtiResponse, VatResponse,\n GpsResponse, PhoneResponse, UrlResponse, EanResponse, IsbnResponse,\n IssnResponse, BicResponse, CusipResponse, CfiResponse, MicResponse,\n NutsResponse, UuidResponse, JwtResponse, VinResponse, ImeiResponse,\n SemverResponse, ColorResponse, BooleanResponse, DateResponse,\n BtcAddressResponse, PostalCodeResponse, AbaResponse, Iso6346Response,\n SsccResponse, GlnResponse, QrResponse, CreditCardResponse,\n} from './types/simple.js';\n\nexport class IsValid {\n private readonly client: HttpClient;\n\n readonly lei: LeiNamespace;\n readonly country: CountryNamespace;\n readonly currency: CurrencyNamespace;\n readonly language: LanguageNamespace;\n readonly iata: IataNamespace;\n readonly net: NetNamespace;\n readonly pl: PlNamespace;\n readonly br: BrNamespace;\n readonly au: AuNamespace;\n readonly es: EsNamespace;\n readonly in: InNamespace;\n readonly us: UsNamespace;\n readonly gb: GbNamespace;\n\n constructor(config: IsValidConfig) {\n this.client = new HttpClient(config);\n\n this.lei = createLeiNamespace(this.client);\n this.country = createCountryNamespace(this.client);\n this.currency = createCurrencyNamespace(this.client);\n this.language = createLanguageNamespace(this.client);\n this.iata = createIataNamespace(this.client);\n this.net = createNetNamespace(this.client);\n this.pl = createPlNamespace(this.client);\n this.br = createBrNamespace(this.client);\n this.au = createAuNamespace(this.client);\n this.es = createEsNamespace(this.client);\n this.in = createInNamespace(this.client);\n this.us = createUsNamespace(this.client);\n this.gb = createGbNamespace(this.client);\n }\n\n // --- Simple endpoints ---\n\n email(value: string, opts?: { checkMx?: boolean }): Promise<EmailResponse> {\n return this.client.get('/v0/email', { value, checkMx: opts?.checkMx?.toString() });\n }\n\n iban(value: string, opts?: { countryCode?: string }): Promise<IbanResponse> {\n return this.client.get('/v0/iban', { value, countryCode: opts?.countryCode });\n }\n\n isin(value: string): Promise<IsinResponse> {\n return this.client.get('/v0/isin', { value });\n }\n\n dti(value: string): Promise<DtiResponse> {\n return this.client.get('/v0/dti', { value });\n }\n\n vat(value: string, opts?: { countryCode?: string; checkVies?: boolean }): Promise<VatResponse> {\n return this.client.get('/v0/vat', {\n value,\n countryCode: opts?.countryCode,\n checkVies: opts?.checkVies?.toString(),\n });\n }\n\n gps(value: string): Promise<GpsResponse> {\n return this.client.get('/v0/gps', { value });\n }\n\n phone(value: string, opts?: { countryCode?: string }): Promise<PhoneResponse> {\n return this.client.get('/v0/phone', { value, countryCode: opts?.countryCode });\n }\n\n url(value: string): Promise<UrlResponse> {\n return this.client.get('/v0/url', { value });\n }\n\n ean(value: string): Promise<EanResponse> {\n return this.client.get('/v0/ean', { value });\n }\n\n isbn(value: string): Promise<IsbnResponse> {\n return this.client.get('/v0/isbn', { value });\n }\n\n issn(value: string): Promise<IssnResponse> {\n return this.client.get('/v0/issn', { value });\n }\n\n bic(value: string): Promise<BicResponse> {\n return this.client.get('/v0/bic', { value });\n }\n\n cusip(value: string): Promise<CusipResponse> {\n return this.client.get('/v0/cusip', { value });\n }\n\n cfi(value: string): Promise<CfiResponse> {\n return this.client.get('/v0/cfi', { value });\n }\n\n mic(value: string): Promise<MicResponse> {\n return this.client.get('/v0/mic', { value });\n }\n\n nuts(value: string): Promise<NutsResponse> {\n return this.client.get('/v0/nuts', { value });\n }\n\n uuid(value: string, opts?: { version?: number }): Promise<UuidResponse> {\n return this.client.get('/v0/uuid', { value, version: opts?.version?.toString() });\n }\n\n jwt(value: string): Promise<JwtResponse> {\n return this.client.get('/v0/jwt', { value });\n }\n\n vin(value: string): Promise<VinResponse> {\n return this.client.get('/v0/vin', { value });\n }\n\n imei(value: string): Promise<ImeiResponse> {\n return this.client.get('/v0/imei', { value });\n }\n\n semver(value: string): Promise<SemverResponse> {\n return this.client.get('/v0/semver', { value });\n }\n\n color(value: string): Promise<ColorResponse> {\n return this.client.get('/v0/color', { value });\n }\n\n boolean(value: string): Promise<BooleanResponse> {\n return this.client.get('/v0/boolean', { value });\n }\n\n date(value: string, opts?: { format?: string }): Promise<DateResponse> {\n return this.client.get('/v0/date', { value, format: opts?.format });\n }\n\n btcAddress(value: string): Promise<BtcAddressResponse> {\n return this.client.get('/v0/btc-address', { value });\n }\n\n postalCode(value: string, opts?: { countryCode?: string }): Promise<PostalCodeResponse> {\n return this.client.get('/v0/postal-code', { value, countryCode: opts?.countryCode });\n }\n\n aba(value: string): Promise<AbaResponse> {\n return this.client.get('/v0/aba', { value });\n }\n\n iso6346(value: string): Promise<Iso6346Response> {\n return this.client.get('/v0/iso6346', { value });\n }\n\n sscc(value: string): Promise<SsccResponse> {\n return this.client.get('/v0/sscc', { value });\n }\n\n gln(value: string): Promise<GlnResponse> {\n return this.client.get('/v0/gln', { value });\n }\n\n qr(value: string): Promise<QrResponse> {\n return this.client.get('/v0/qr', { value });\n }\n\n creditCard(number: string): Promise<CreditCardResponse> {\n return this.client.post('/v0/credit-card', { number });\n }\n}\n\nexport function createClient(config: IsValidConfig): IsValid {\n return new IsValid(config);\n}\n\nexport { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\nexport type { IsValidConfig, RetryConfig } from './client.js';\nexport * from './types/index.js';\n\nexport type { LeiNamespace } from './namespaces/lei.js';\nexport type { CountryNamespace } from './namespaces/country.js';\nexport type { CurrencyNamespace } from './namespaces/currency.js';\nexport type { LanguageNamespace } from './namespaces/language.js';\nexport type { IataNamespace, IataAirlineNamespace } from './namespaces/iata.js';\nexport type { NetNamespace } from './namespaces/net.js';\nexport type { PlNamespace } from './namespaces/pl.js';\nexport type { BrNamespace } from './namespaces/br.js';\nexport type { AuNamespace } from './namespaces/au.js';\nexport type { EsNamespace } from './namespaces/es.js';\nexport type { InNamespace } from './namespaces/in.js';\nexport type { UsNamespace } from './namespaces/us.js';\nexport type { GbNamespace } from './namespaces/gb.js';\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/errors.ts","../src/client.ts","../src/namespaces/lei.ts","../src/namespaces/country.ts","../src/namespaces/currency.ts","../src/namespaces/language.ts","../src/namespaces/iata.ts","../src/namespaces/net.ts","../src/namespaces/pl.ts","../src/namespaces/br.ts","../src/namespaces/au.ts","../src/namespaces/es.ts","../src/namespaces/in.ts","../src/namespaces/us.ts","../src/namespaces/gb.ts","../src/index.ts"],"names":[],"mappings":"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","file":"index.js","sourcesContent":["export class IsValidError extends Error {\n readonly status: number;\n readonly body: { error: string };\n\n constructor(status: number, body: { error: string }) {\n super(body.error);\n this.name = 'IsValidError';\n this.status = status;\n this.body = body;\n }\n}\n\nexport class IsValidAuthError extends IsValidError {\n constructor(body: { error: string }) {\n super(401, body);\n this.name = 'IsValidAuthError';\n }\n}\n\nexport class IsValidRateLimitError extends IsValidError {\n readonly retryAfter: number | null;\n\n constructor(body: { error: string }, retryAfter: number | null = null) {\n super(429, body);\n this.name = 'IsValidRateLimitError';\n this.retryAfter = retryAfter;\n }\n}\n","import { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\n\nexport interface RetryConfig {\n maxRetries?: number;\n initialDelayMs?: number;\n maxDelayMs?: number;\n retryOn?: number[];\n}\n\nexport interface IsValidConfig {\n apiKey: string;\n baseUrl?: string;\n timeout?: number;\n retry?: RetryConfig | false;\n}\n\nconst DEFAULT_BASE_URL = 'https://api.isvalid.dev';\nconst DEFAULT_TIMEOUT = 10_000;\nconst DEFAULT_RETRY: Required<RetryConfig> = {\n maxRetries: 3,\n initialDelayMs: 500,\n maxDelayMs: 10_000,\n retryOn: [429, 500, 502, 503],\n};\n\nfunction resolveRetry(cfg: RetryConfig | false | undefined): Required<RetryConfig> | false {\n if (cfg === false) return false;\n if (!cfg) return DEFAULT_RETRY;\n return {\n maxRetries: cfg.maxRetries ?? DEFAULT_RETRY.maxRetries,\n initialDelayMs: cfg.initialDelayMs ?? DEFAULT_RETRY.initialDelayMs,\n maxDelayMs: cfg.maxDelayMs ?? DEFAULT_RETRY.maxDelayMs,\n retryOn: cfg.retryOn ?? DEFAULT_RETRY.retryOn,\n };\n}\n\nfunction delay(ms: number): Promise<void> {\n return new Promise((r) => setTimeout(r, ms));\n}\n\nfunction backoffDelay(attempt: number, initial: number, max: number): number {\n const base = initial * 2 ** attempt;\n const jitter = Math.random() * initial;\n return Math.min(base + jitter, max);\n}\n\nexport class HttpClient {\n private readonly baseUrl: string;\n private readonly apiKey: string;\n private readonly retry: Required<RetryConfig> | false;\n private readonly timeout: number;\n\n constructor(config: IsValidConfig) {\n this.baseUrl = (config.baseUrl ?? DEFAULT_BASE_URL).replace(/\\/+$/, '');\n this.apiKey = config.apiKey;\n this.retry = resolveRetry(config.retry);\n this.timeout = config.timeout ?? DEFAULT_TIMEOUT;\n }\n\n async get<T>(path: string, params?: Record<string, string | undefined>): Promise<T> {\n const url = this.buildUrl(path, params);\n return this.request<T>(url, { method: 'GET' });\n }\n\n async post<T>(path: string, body: unknown): Promise<T> {\n const url = this.buildUrl(path);\n return this.request<T>(url, {\n method: 'POST',\n body: JSON.stringify(body),\n headers: { 'Content-Type': 'application/json' },\n });\n }\n\n private buildUrl(path: string, params?: Record<string, string | undefined>): string {\n const url = new URL(path, this.baseUrl);\n if (params) {\n for (const [k, v] of Object.entries(params)) {\n if (v !== undefined) url.searchParams.set(k, v);\n }\n }\n return url.toString();\n }\n\n private async request<T>(url: string, init: RequestInit): Promise<T> {\n const headers: Record<string, string> = {\n Authorization: `Bearer ${this.apiKey}`,\n Accept: 'application/json',\n ...(init.headers as Record<string, string> | undefined),\n };\n\n const maxAttempts = this.retry ? this.retry.maxRetries + 1 : 1;\n\n for (let attempt = 0; attempt < maxAttempts; attempt++) {\n const res = await fetch(url, {\n ...init,\n headers,\n signal: AbortSignal.timeout(this.timeout),\n });\n\n if (res.ok) {\n return (await res.json()) as T;\n }\n\n if (this.retry && attempt < this.retry.maxRetries && this.retry.retryOn.includes(res.status)) {\n const retryAfterHeader = res.headers.get('Retry-After');\n const retryMs = retryAfterHeader\n ? parseInt(retryAfterHeader, 10) * 1000\n : backoffDelay(attempt, this.retry.initialDelayMs, this.retry.maxDelayMs);\n await delay(retryMs);\n continue;\n }\n\n const body = await res.json().catch(() => ({ error: res.statusText })) as { error: string };\n\n if (res.status === 401) throw new IsValidAuthError(body);\n if (res.status === 429) {\n const ra = res.headers.get('Retry-After');\n throw new IsValidRateLimitError(body, ra ? parseInt(ra, 10) : null);\n }\n throw new IsValidError(res.status, body);\n }\n\n throw new IsValidError(0, { error: 'Max retries exceeded' });\n }\n}\n","import type { HttpClient } from '../client.js';\nimport type { LeiResponse, LeiSearchOptions, LeiSearchResponse, LeiLousResponse } from '../types/lei.js';\n\nexport interface LeiNamespace {\n (value: string): Promise<LeiResponse>;\n search(query: string, opts?: LeiSearchOptions): Promise<LeiSearchResponse>;\n lous(): Promise<LeiLousResponse>;\n}\n\nexport function createLeiNamespace(client: HttpClient): LeiNamespace {\n const lei = ((value: string) =>\n client.get<LeiResponse>('/v0/lei', { value })\n ) as LeiNamespace;\n\n lei.search = (query: string, opts?: LeiSearchOptions) =>\n client.get<LeiSearchResponse>('/v0/lei/search', {\n q: query,\n country: opts?.country,\n entityStatus: opts?.entityStatus,\n page: opts?.page?.toString(),\n limit: opts?.limit?.toString(),\n });\n\n lei.lous = () => client.get<LeiLousResponse>('/v0/lei/lous');\n\n return lei;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CountryResponse, CountryListItem } from '../types/country.js';\n\nexport interface CountryNamespace {\n (value: string): Promise<CountryResponse>;\n list(): Promise<CountryListItem[]>;\n}\n\nexport function createCountryNamespace(client: HttpClient): CountryNamespace {\n const country = ((value: string) =>\n client.get<CountryResponse>('/v0/country', { value })\n ) as CountryNamespace;\n\n country.list = () => client.get<CountryListItem[]>('/v0/country/list');\n\n return country;\n}\n","import type { HttpClient } from '../client.js';\nimport type { CurrencyResponse, CurrencyListItem } from '../types/currency.js';\n\nexport interface CurrencyNamespace {\n (value: string): Promise<CurrencyResponse>;\n list(): Promise<CurrencyListItem[]>;\n}\n\nexport function createCurrencyNamespace(client: HttpClient): CurrencyNamespace {\n const currency = ((value: string) =>\n client.get<CurrencyResponse>('/v0/currency', { value })\n ) as CurrencyNamespace;\n\n currency.list = () => client.get<CurrencyListItem[]>('/v0/currency/list');\n\n return currency;\n}\n","import type { HttpClient } from '../client.js';\nimport type { LanguageResponse, LanguageListItem } from '../types/language.js';\n\nexport interface LanguageNamespace {\n (value: string): Promise<LanguageResponse>;\n list(): Promise<LanguageListItem[]>;\n}\n\nexport function createLanguageNamespace(client: HttpClient): LanguageNamespace {\n const language = ((value: string) =>\n client.get<LanguageResponse>('/v0/language', { value })\n ) as LanguageNamespace;\n\n language.list = () => client.get<LanguageListItem[]>('/v0/language/list');\n\n return language;\n}\n","import type { HttpClient } from '../client.js';\nimport type {\n IataFlightResponse, IataAirlineResponse, IataAirlineListItem, IataAirportResponse,\n} from '../types/iata.js';\n\nexport interface IataAirlineNamespace {\n (value: string): Promise<IataAirlineResponse>;\n list(): Promise<IataAirlineListItem[]>;\n}\n\nexport interface IataNamespace {\n flight(value: string): Promise<IataFlightResponse>;\n airline: IataAirlineNamespace;\n airport(value: string): Promise<IataAirportResponse>;\n}\n\nexport function createIataNamespace(client: HttpClient): IataNamespace {\n const airline = ((value: string) =>\n client.get<IataAirlineResponse>('/v0/iata/airline', { value })\n ) as IataAirlineNamespace;\n\n airline.list = () => client.get<IataAirlineListItem[]>('/v0/iata/airline/list');\n\n return {\n flight: (value: string) =>\n client.get<IataFlightResponse>('/v0/iata/flight', { value }),\n airline,\n airport: (value: string) =>\n client.get<IataAirportResponse>('/v0/iata/airport', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { IpResponse, MacResponse } from '../types/net.js';\n\nexport interface NetNamespace {\n ip(value: string): Promise<IpResponse>;\n mac(value: string): Promise<MacResponse>;\n}\n\nexport function createNetNamespace(client: HttpClient): NetNamespace {\n return {\n ip: (value: string) => client.get<IpResponse>('/v0/net/ip', { value }),\n mac: (value: string) => client.get<MacResponse>('/v0/net/mac', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { PeselResponse, RegonResponse, KrsResponse } from '../types/pl.js';\n\nexport interface PlNamespace {\n pesel(value: string): Promise<PeselResponse>;\n regon(value: string, opts?: { lookup?: boolean }): Promise<RegonResponse>;\n krs(value: string, opts?: { lookup?: boolean }): Promise<KrsResponse>;\n}\n\nexport function createPlNamespace(client: HttpClient): PlNamespace {\n return {\n pesel: (value: string) =>\n client.get<PeselResponse>('/v0/pl/pesel', { value }),\n regon: (value: string, opts?) =>\n client.get<RegonResponse>('/v0/pl/regon', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n krs: (value: string, opts?) =>\n client.get<KrsResponse>('/v0/pl/krs', {\n value,\n lookup: opts?.lookup?.toString(),\n }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { CnpjResponse, CpfResponse } from '../types/br.js';\n\nexport interface BrNamespace {\n cnpj(value: string): Promise<CnpjResponse>;\n cpf(value: string): Promise<CpfResponse>;\n}\n\nexport function createBrNamespace(client: HttpClient): BrNamespace {\n return {\n cnpj: (value: string) => client.get<CnpjResponse>('/v0/br/cnpj', { value }),\n cpf: (value: string) => client.get<CpfResponse>('/v0/br/cpf', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { AbnResponse } from '../types/au.js';\n\nexport interface AuNamespace {\n abn(value: string): Promise<AbnResponse>;\n}\n\nexport function createAuNamespace(client: HttpClient): AuNamespace {\n return {\n abn: (value: string) => client.get<AbnResponse>('/v0/au/abn', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NifResponse } from '../types/es.js';\n\nexport interface EsNamespace {\n nif(value: string): Promise<NifResponse>;\n}\n\nexport function createEsNamespace(client: HttpClient): EsNamespace {\n return {\n nif: (value: string) => client.get<NifResponse>('/v0/es/nif', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { GstinResponse } from '../types/in.js';\n\nexport interface InNamespace {\n gstin(value: string): Promise<GstinResponse>;\n}\n\nexport function createInNamespace(client: HttpClient): InNamespace {\n return {\n gstin: (value: string) => client.get<GstinResponse>('/v0/in/gstin', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { NpiResponse } from '../types/us.js';\n\nexport interface UsNamespace {\n npi(value: string): Promise<NpiResponse>;\n}\n\nexport function createUsNamespace(client: HttpClient): UsNamespace {\n return {\n npi: (value: string) => client.get<NpiResponse>('/v0/us/npi', { value }),\n };\n}\n","import type { HttpClient } from '../client.js';\nimport type { SortCodeResponse } from '../types/gb.js';\n\nexport interface GbNamespace {\n sortCode(value: string): Promise<SortCodeResponse>;\n}\n\nexport function createGbNamespace(client: HttpClient): GbNamespace {\n return {\n sortCode: (value: string) => client.get<SortCodeResponse>('/v0/gb/sort-code', { value }),\n };\n}\n","import { HttpClient } from './client.js';\nimport type { IsValidConfig } from './client.js';\nimport { createLeiNamespace } from './namespaces/lei.js';\nimport type { LeiNamespace } from './namespaces/lei.js';\nimport { createCountryNamespace } from './namespaces/country.js';\nimport type { CountryNamespace } from './namespaces/country.js';\nimport { createCurrencyNamespace } from './namespaces/currency.js';\nimport type { CurrencyNamespace } from './namespaces/currency.js';\nimport { createLanguageNamespace } from './namespaces/language.js';\nimport type { LanguageNamespace } from './namespaces/language.js';\nimport { createIataNamespace } from './namespaces/iata.js';\nimport type { IataNamespace } from './namespaces/iata.js';\nimport { createNetNamespace } from './namespaces/net.js';\nimport type { NetNamespace } from './namespaces/net.js';\nimport { createPlNamespace } from './namespaces/pl.js';\nimport type { PlNamespace } from './namespaces/pl.js';\nimport { createBrNamespace } from './namespaces/br.js';\nimport type { BrNamespace } from './namespaces/br.js';\nimport { createAuNamespace } from './namespaces/au.js';\nimport type { AuNamespace } from './namespaces/au.js';\nimport { createEsNamespace } from './namespaces/es.js';\nimport type { EsNamespace } from './namespaces/es.js';\nimport { createInNamespace } from './namespaces/in.js';\nimport type { InNamespace } from './namespaces/in.js';\nimport { createUsNamespace } from './namespaces/us.js';\nimport type { UsNamespace } from './namespaces/us.js';\nimport { createGbNamespace } from './namespaces/gb.js';\nimport type { GbNamespace } from './namespaces/gb.js';\nimport type {\n EmailResponse, IbanResponse, IsinResponse, DtiResponse, VatResponse,\n GpsResponse, PhoneResponse, UrlResponse, EanResponse, IsbnResponse,\n IssnResponse, BicResponse, CusipResponse, CfiResponse, MicResponse,\n NutsResponse, UuidResponse, JwtResponse, VinResponse, ImeiResponse,\n SemverResponse, ColorResponse, BooleanResponse, DateResponse,\n BtcAddressResponse, PostalCodeResponse, AbaResponse, ContainerCodeResponse,\n SsccResponse, GlnResponse, QrResponse, CreditCardResponse,\n} from './types/simple.js';\n\nexport class IsValid {\n private readonly client: HttpClient;\n\n readonly lei: LeiNamespace;\n readonly country: CountryNamespace;\n readonly currency: CurrencyNamespace;\n readonly language: LanguageNamespace;\n readonly iata: IataNamespace;\n readonly net: NetNamespace;\n readonly pl: PlNamespace;\n readonly br: BrNamespace;\n readonly au: AuNamespace;\n readonly es: EsNamespace;\n readonly in: InNamespace;\n readonly us: UsNamespace;\n readonly gb: GbNamespace;\n\n constructor(config: IsValidConfig) {\n this.client = new HttpClient(config);\n\n this.lei = createLeiNamespace(this.client);\n this.country = createCountryNamespace(this.client);\n this.currency = createCurrencyNamespace(this.client);\n this.language = createLanguageNamespace(this.client);\n this.iata = createIataNamespace(this.client);\n this.net = createNetNamespace(this.client);\n this.pl = createPlNamespace(this.client);\n this.br = createBrNamespace(this.client);\n this.au = createAuNamespace(this.client);\n this.es = createEsNamespace(this.client);\n this.in = createInNamespace(this.client);\n this.us = createUsNamespace(this.client);\n this.gb = createGbNamespace(this.client);\n }\n\n // --- Simple endpoints ---\n\n email(value: string, opts?: { checkMx?: boolean }): Promise<EmailResponse> {\n return this.client.get('/v0/email', { value, checkMx: opts?.checkMx?.toString() });\n }\n\n iban(value: string, opts?: { countryCode?: string }): Promise<IbanResponse> {\n return this.client.get('/v0/iban', { value, countryCode: opts?.countryCode });\n }\n\n isin(value: string): Promise<IsinResponse> {\n return this.client.get('/v0/isin', { value });\n }\n\n dti(value: string): Promise<DtiResponse> {\n return this.client.get('/v0/dti', { value });\n }\n\n vat(value: string, opts?: { countryCode?: string; checkVies?: boolean }): Promise<VatResponse> {\n return this.client.get('/v0/vat', {\n value,\n countryCode: opts?.countryCode,\n checkVies: opts?.checkVies?.toString(),\n });\n }\n\n gps(value: string): Promise<GpsResponse> {\n return this.client.get('/v0/gps', { value });\n }\n\n phone(value: string, opts?: { countryCode?: string }): Promise<PhoneResponse> {\n return this.client.get('/v0/phone', { value, countryCode: opts?.countryCode });\n }\n\n url(value: string): Promise<UrlResponse> {\n return this.client.get('/v0/url', { value });\n }\n\n ean(value: string): Promise<EanResponse> {\n return this.client.get('/v0/ean', { value });\n }\n\n isbn(value: string): Promise<IsbnResponse> {\n return this.client.get('/v0/isbn', { value });\n }\n\n issn(value: string): Promise<IssnResponse> {\n return this.client.get('/v0/issn', { value });\n }\n\n bic(value: string): Promise<BicResponse> {\n return this.client.get('/v0/bic', { value });\n }\n\n cusip(value: string): Promise<CusipResponse> {\n return this.client.get('/v0/cusip', { value });\n }\n\n cfi(value: string): Promise<CfiResponse> {\n return this.client.get('/v0/cfi', { value });\n }\n\n mic(value: string): Promise<MicResponse> {\n return this.client.get('/v0/mic', { value });\n }\n\n nuts(value: string): Promise<NutsResponse> {\n return this.client.get('/v0/nuts', { value });\n }\n\n uuid(value: string, opts?: { version?: number }): Promise<UuidResponse> {\n return this.client.get('/v0/uuid', { value, version: opts?.version?.toString() });\n }\n\n jwt(value: string): Promise<JwtResponse> {\n return this.client.get('/v0/jwt', { value });\n }\n\n vin(value: string): Promise<VinResponse> {\n return this.client.get('/v0/vin', { value });\n }\n\n imei(value: string): Promise<ImeiResponse> {\n return this.client.get('/v0/imei', { value });\n }\n\n semver(value: string): Promise<SemverResponse> {\n return this.client.get('/v0/semver', { value });\n }\n\n color(value: string): Promise<ColorResponse> {\n return this.client.get('/v0/color', { value });\n }\n\n boolean(value: string): Promise<BooleanResponse> {\n return this.client.get('/v0/boolean', { value });\n }\n\n date(value: string, opts?: { format?: string }): Promise<DateResponse> {\n return this.client.get('/v0/date', { value, format: opts?.format });\n }\n\n btcAddress(value: string): Promise<BtcAddressResponse> {\n return this.client.get('/v0/btc-address', { value });\n }\n\n postalCode(value: string, opts?: { countryCode?: string }): Promise<PostalCodeResponse> {\n return this.client.get('/v0/postal-code', { value, countryCode: opts?.countryCode });\n }\n\n aba(value: string): Promise<AbaResponse> {\n return this.client.get('/v0/aba', { value });\n }\n\n containerCode(value: string): Promise<ContainerCodeResponse> {\n return this.client.get('/v0/container-code', { value });\n }\n\n sscc(value: string): Promise<SsccResponse> {\n return this.client.get('/v0/sscc', { value });\n }\n\n gln(value: string): Promise<GlnResponse> {\n return this.client.get('/v0/gln', { value });\n }\n\n qr(value: string): Promise<QrResponse> {\n return this.client.get('/v0/qr', { value });\n }\n\n creditCard(number: string): Promise<CreditCardResponse> {\n return this.client.post('/v0/credit-card', { number });\n }\n}\n\nexport function createClient(config: IsValidConfig): IsValid {\n return new IsValid(config);\n}\n\nexport { IsValidError, IsValidAuthError, IsValidRateLimitError } from './errors.js';\nexport type { IsValidConfig, RetryConfig } from './client.js';\nexport * from './types/index.js';\n\nexport type { LeiNamespace } from './namespaces/lei.js';\nexport type { CountryNamespace } from './namespaces/country.js';\nexport type { CurrencyNamespace } from './namespaces/currency.js';\nexport type { LanguageNamespace } from './namespaces/language.js';\nexport type { IataNamespace, IataAirlineNamespace } from './namespaces/iata.js';\nexport type { NetNamespace } from './namespaces/net.js';\nexport type { PlNamespace } from './namespaces/pl.js';\nexport type { BrNamespace } from './namespaces/br.js';\nexport type { AuNamespace } from './namespaces/au.js';\nexport type { EsNamespace } from './namespaces/es.js';\nexport type { InNamespace } from './namespaces/in.js';\nexport type { UsNamespace } from './namespaces/us.js';\nexport type { GbNamespace } from './namespaces/gb.js';\n"]}
|