domainstat 1.0.9 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/altStatusAdapter.d.ts +12 -0
- package/dist/adapters/baseAdapter.d.ts +16 -0
- package/dist/adapters/dohAdapter.d.ts +10 -0
- package/dist/adapters/rdapAdapter.d.ts +11 -0
- package/dist/adapters/whoisApiAdapter.d.ts +13 -0
- package/dist/cli.d.ts +3 -0
- package/dist/index.d.ts +8 -0
- package/dist/rdap-parser.d.ts +74 -0
- package/dist/tldAdapters/index.d.ts +9 -0
- package/dist/tldAdapters/ngAdapter.d.ts +11 -0
- package/dist/types.d.ts +87 -0
- package/dist/validator.d.ts +3 -0
- package/package.json +4 -1
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { AdapterResponse, ParsedDomain } from '../types';
|
|
2
|
+
import { BaseCheckerAdapter } from './baseAdapter';
|
|
3
|
+
export declare class AltStatusAdapter extends BaseCheckerAdapter {
|
|
4
|
+
private domainrKey?;
|
|
5
|
+
constructor(domainrKey?: string);
|
|
6
|
+
private fetchDomainr;
|
|
7
|
+
private fetchMono;
|
|
8
|
+
protected doCheck(domainObj: ParsedDomain, opts?: {
|
|
9
|
+
signal?: AbortSignal;
|
|
10
|
+
}): Promise<AdapterResponse>;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=altStatusAdapter.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { AdapterResponse, AdapterSource, CheckerAdapter, ParsedDomain, TldConfigEntry } from '../types';
|
|
2
|
+
type BaseOpts = {
|
|
3
|
+
tldConfig?: TldConfigEntry;
|
|
4
|
+
signal?: AbortSignal;
|
|
5
|
+
};
|
|
6
|
+
export declare abstract class BaseCheckerAdapter implements CheckerAdapter {
|
|
7
|
+
readonly namespace: AdapterSource;
|
|
8
|
+
constructor(namespace: AdapterSource);
|
|
9
|
+
check(domainObj: ParsedDomain, opts?: BaseOpts): Promise<AdapterResponse>;
|
|
10
|
+
protected abstract doCheck(domainObj: ParsedDomain, opts?: {
|
|
11
|
+
tldConfig?: TldConfigEntry;
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
}): Promise<AdapterResponse>;
|
|
14
|
+
}
|
|
15
|
+
export {};
|
|
16
|
+
//# sourceMappingURL=baseAdapter.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { AdapterResponse, ParsedDomain } from '../types';
|
|
2
|
+
import { BaseCheckerAdapter } from './baseAdapter';
|
|
3
|
+
export declare class DohAdapter extends BaseCheckerAdapter {
|
|
4
|
+
private url;
|
|
5
|
+
constructor(url?: string);
|
|
6
|
+
protected doCheck(domainObj: ParsedDomain, opts?: {
|
|
7
|
+
signal?: AbortSignal;
|
|
8
|
+
}): Promise<AdapterResponse>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=dohAdapter.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { AdapterResponse, ParsedDomain, TldConfigEntry } from '../types';
|
|
2
|
+
import { BaseCheckerAdapter } from './baseAdapter';
|
|
3
|
+
export declare class RdapAdapter extends BaseCheckerAdapter {
|
|
4
|
+
private baseUrl;
|
|
5
|
+
constructor(baseUrl?: string);
|
|
6
|
+
protected doCheck(domainObj: ParsedDomain, opts?: {
|
|
7
|
+
tldConfig?: TldConfigEntry;
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
}): Promise<AdapterResponse>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=rdapAdapter.d.ts.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { AdapterResponse, ParsedDomain } from '../types';
|
|
2
|
+
import { BaseCheckerAdapter } from './baseAdapter';
|
|
3
|
+
export declare class WhoisApiAdapter extends BaseCheckerAdapter {
|
|
4
|
+
private freaksKey?;
|
|
5
|
+
private xmlKey?;
|
|
6
|
+
constructor(freaksKey?: string, xmlKey?: string);
|
|
7
|
+
private fetchFreaks;
|
|
8
|
+
private fetchXml;
|
|
9
|
+
protected doCheck(domainObj: ParsedDomain, opts?: {
|
|
10
|
+
signal?: AbortSignal;
|
|
11
|
+
}): Promise<AdapterResponse>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=whoisApiAdapter.d.ts.map
|
package/dist/cli.d.ts
ADDED
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { CheckOptions, DomainStatus } from "./types";
|
|
2
|
+
export type { DomainStatus } from "./types";
|
|
3
|
+
export declare function checkSerial(domain: string, opts?: CheckOptions): Promise<DomainStatus>;
|
|
4
|
+
export declare function checkParallel(domain: string, opts?: CheckOptions): Promise<DomainStatus>;
|
|
5
|
+
export declare function check(domain: string, opts?: CheckOptions): Promise<DomainStatus>;
|
|
6
|
+
export declare function checkBatchStream(domains: string[], opts?: CheckOptions): AsyncGenerator<DomainStatus>;
|
|
7
|
+
export declare function checkBatch(domains: string[], opts?: CheckOptions): Promise<DomainStatus[]>;
|
|
8
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
type JCardProperty = [string, Record<string, any>, string, string | number];
|
|
2
|
+
type JCard = ["vcard", JCardProperty[]];
|
|
3
|
+
interface RdapLink {
|
|
4
|
+
value?: string;
|
|
5
|
+
rel?: string;
|
|
6
|
+
href?: string;
|
|
7
|
+
type?: string;
|
|
8
|
+
}
|
|
9
|
+
interface RdapEvent {
|
|
10
|
+
eventAction: string;
|
|
11
|
+
eventDate: string;
|
|
12
|
+
}
|
|
13
|
+
interface RdapPublicId {
|
|
14
|
+
type: string;
|
|
15
|
+
identifier: string;
|
|
16
|
+
}
|
|
17
|
+
interface RdapEntity {
|
|
18
|
+
objectClassName?: string;
|
|
19
|
+
handle?: string;
|
|
20
|
+
roles?: string[];
|
|
21
|
+
vcardArray?: JCard;
|
|
22
|
+
entities?: RdapEntity[];
|
|
23
|
+
publicIds?: RdapPublicId[];
|
|
24
|
+
links?: RdapLink[];
|
|
25
|
+
}
|
|
26
|
+
interface RdapNameserver {
|
|
27
|
+
ldhName?: string;
|
|
28
|
+
}
|
|
29
|
+
interface RdapData {
|
|
30
|
+
rdap?: RdapData;
|
|
31
|
+
ldhName?: string;
|
|
32
|
+
status?: string[];
|
|
33
|
+
events?: RdapEvent[];
|
|
34
|
+
entities?: RdapEntity[];
|
|
35
|
+
nameservers?: RdapNameserver[];
|
|
36
|
+
[key: string]: any;
|
|
37
|
+
}
|
|
38
|
+
type Whois = {
|
|
39
|
+
domainInfo: {
|
|
40
|
+
domainName: string;
|
|
41
|
+
registeredDate: string;
|
|
42
|
+
expiryDate: string;
|
|
43
|
+
lastUpdate: string;
|
|
44
|
+
status: string[];
|
|
45
|
+
nameservers?: string[] | undefined;
|
|
46
|
+
};
|
|
47
|
+
registrarInfo: {
|
|
48
|
+
registrar: string;
|
|
49
|
+
iana_id: string;
|
|
50
|
+
url: string;
|
|
51
|
+
abuseEmail: string;
|
|
52
|
+
abusePhone: string;
|
|
53
|
+
};
|
|
54
|
+
registrantInfo: {
|
|
55
|
+
fullName: string;
|
|
56
|
+
phone: string;
|
|
57
|
+
email: string;
|
|
58
|
+
address: {
|
|
59
|
+
street: string;
|
|
60
|
+
city: string;
|
|
61
|
+
zipcode: string;
|
|
62
|
+
country: string;
|
|
63
|
+
state?: string | undefined;
|
|
64
|
+
};
|
|
65
|
+
};
|
|
66
|
+
rawWhoisText?: string | undefined;
|
|
67
|
+
rawWhoisJson?: any;
|
|
68
|
+
};
|
|
69
|
+
/**
|
|
70
|
+
* Parses RDAP JSON data to match the WhoisSchema.
|
|
71
|
+
*/
|
|
72
|
+
export declare function parseRdapToWhois(rdapResponse: RdapData): Whois;
|
|
73
|
+
export {};
|
|
74
|
+
//# sourceMappingURL=rdap-parser.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { CheckerAdapter } from '../types';
|
|
2
|
+
export interface TldAdapter {
|
|
3
|
+
dns?: CheckerAdapter;
|
|
4
|
+
rdap?: CheckerAdapter;
|
|
5
|
+
whois?: CheckerAdapter;
|
|
6
|
+
}
|
|
7
|
+
export declare const tldAdapters: Record<string, TldAdapter>;
|
|
8
|
+
export declare function getTldAdapter(suffix?: string): TldAdapter | undefined;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { BaseCheckerAdapter } from '../adapters/baseAdapter';
|
|
2
|
+
import { AdapterResponse, AdapterSource, ParsedDomain } from '../types';
|
|
3
|
+
export declare class NgAdapter extends BaseCheckerAdapter {
|
|
4
|
+
private source;
|
|
5
|
+
constructor(source: AdapterSource, namespace: AdapterSource);
|
|
6
|
+
private query;
|
|
7
|
+
protected doCheck(domainObj: ParsedDomain, opts?: {
|
|
8
|
+
signal?: AbortSignal;
|
|
9
|
+
}): Promise<AdapterResponse>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ngAdapter.d.ts.map
|
package/dist/types.d.ts
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import type { IResult } from 'tldts-core';
|
|
2
|
+
export type Availability = 'unregistered' | 'registered' | 'unsupported' | 'invalid' | 'unknown';
|
|
3
|
+
export type AdapterSource = 'validator' | 'dns.doh' | 'rdap' | 'rdap.ng' | 'altstatus' | 'altstatus.domainr' | 'altstatus.mono' | 'whois.api' | 'app';
|
|
4
|
+
export interface AdapterError {
|
|
5
|
+
code: string;
|
|
6
|
+
message: string;
|
|
7
|
+
retryable: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface AdapterResponse {
|
|
10
|
+
domain: string;
|
|
11
|
+
availability: Availability;
|
|
12
|
+
fineStatus?: 'expiring_soon' | 'registered_not_in_use' | 'premium' | 'for_sale' | 'reserved';
|
|
13
|
+
source: AdapterSource;
|
|
14
|
+
raw: any;
|
|
15
|
+
/**
|
|
16
|
+
* Time taken for the adapter to produce this response in milliseconds.
|
|
17
|
+
*/
|
|
18
|
+
latency?: number;
|
|
19
|
+
error?: AdapterError;
|
|
20
|
+
}
|
|
21
|
+
export interface DomainStatus {
|
|
22
|
+
domain: string;
|
|
23
|
+
availability: Availability;
|
|
24
|
+
fineStatus?: 'expiring_soon' | 'registered_not_in_use' | 'premium' | 'for_sale' | 'reserved';
|
|
25
|
+
resolver: AdapterSource;
|
|
26
|
+
/**
|
|
27
|
+
* Raw responses from each adapter keyed by its namespace.
|
|
28
|
+
*/
|
|
29
|
+
raw: Record<string, any>;
|
|
30
|
+
/**
|
|
31
|
+
* Parsed responses from each adapter keyed by its namespace.
|
|
32
|
+
*/
|
|
33
|
+
parsed: Record<string, any>;
|
|
34
|
+
/**
|
|
35
|
+
* Latency (in ms) reported by each adapter keyed by its namespace.
|
|
36
|
+
*/
|
|
37
|
+
latencies: Record<string, number>;
|
|
38
|
+
error?: AdapterError;
|
|
39
|
+
}
|
|
40
|
+
export type ParsedDomain = IResult;
|
|
41
|
+
export interface CheckerAdapter {
|
|
42
|
+
/** Unique identifier used to store results for this adapter */
|
|
43
|
+
namespace: string;
|
|
44
|
+
check(domainObj: ParsedDomain, opts?: {
|
|
45
|
+
tldConfig?: TldConfigEntry;
|
|
46
|
+
signal?: AbortSignal;
|
|
47
|
+
}): Promise<AdapterResponse>;
|
|
48
|
+
}
|
|
49
|
+
export interface TldConfigEntry {
|
|
50
|
+
rdapServer?: string;
|
|
51
|
+
skipRdap?: boolean;
|
|
52
|
+
}
|
|
53
|
+
export interface CheckOptions {
|
|
54
|
+
logger?: Console;
|
|
55
|
+
verbose?: boolean;
|
|
56
|
+
concurrency?: number;
|
|
57
|
+
/** Only run adapters whose namespace starts with one of these prefixes */
|
|
58
|
+
only?: string[];
|
|
59
|
+
/** Skip adapters whose namespace starts with one of these prefixes */
|
|
60
|
+
skip?: string[];
|
|
61
|
+
tldConfig?: TldConfigEntry;
|
|
62
|
+
/**
|
|
63
|
+
* Enable or disable caching. Caching is enabled by default.
|
|
64
|
+
*/
|
|
65
|
+
cache?: boolean;
|
|
66
|
+
/**
|
|
67
|
+
* API keys for third-party services.
|
|
68
|
+
*/
|
|
69
|
+
apiKeys?: {
|
|
70
|
+
domainr?: string;
|
|
71
|
+
whoisfreaks?: string;
|
|
72
|
+
whoisxml?: string;
|
|
73
|
+
};
|
|
74
|
+
/** When true, run adapters in parallel */
|
|
75
|
+
burstMode?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Allotted latency before launching the next adapter in serial mode, keyed by adapter namespace.
|
|
78
|
+
* Defaults to 200ms when not specified for an adapter.
|
|
79
|
+
*/
|
|
80
|
+
allottedLatency?: Partial<Record<AdapterSource, number>>;
|
|
81
|
+
/**
|
|
82
|
+
* Maximum execution time per adapter in milliseconds. When exceeded, the adapter is aborted.
|
|
83
|
+
* Provide values keyed by adapter namespace. If not specified, defaults may apply.
|
|
84
|
+
*/
|
|
85
|
+
timeoutConfig?: Partial<Record<AdapterSource, number>>;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=types.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "domainstat",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "Extremely fast domain status checker library using DoH, RDAP and WHOIS API.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -37,6 +37,9 @@
|
|
|
37
37
|
"bin": {
|
|
38
38
|
"domainstat": "./dist/cli.js"
|
|
39
39
|
},
|
|
40
|
+
"files": [
|
|
41
|
+
"dist"
|
|
42
|
+
],
|
|
40
43
|
"license": "MIT",
|
|
41
44
|
"dependencies": {
|
|
42
45
|
"tldts": "^7.0.19"
|