Completed
Push — master ( cdadad...8d09a6 )
by Dimas
36:02 queued 17:12
created

libs/typings/node/dns.d.ts   F

Complexity

Total Complexity 102
Complexity/F 1

Size

Lines of Code 372
Function Count 102

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 309
dl 0
loc 372
rs 2
c 0
b 0
f 0
wmc 102
mnd 0
bc 0
fnc 102
bpm 0
cpm 1
noi 0

19 Functions

Rating   Name   Duplication   Size   Complexity  
A dns.d.ts ➔ getServers 0 1 1
A dns.d.ts ➔ resolveCname 0 2 1
A dns.d.ts ➔ reverse 0 2 1
A dns.d.ts ➔ resolveNaptr 0 2 1
A dns.d.ts ➔ resolve4 0 2 1
A dns.d.ts ➔ setServers 0 1 1
A dns.d.ts ➔ resolvePtr 0 2 1
A dns.d.ts ➔ lookupService 0 2 1
A dns.d.ts ➔ ___promisify__ 0 1 1
A dns.d.ts ➔ resolveTxt 0 2 1
A dns.d.ts ➔ resolve6 0 2 1
A dns.d.ts ➔ resolveNs 0 2 1
A dns.d.ts ➔ resolveAny 0 2 1
A dns.d.ts ➔ resolveSoa 0 2 1
A Resolver.cancel 0 1 1
A dns.d.ts ➔ lookup 0 2 1
A dns.d.ts ➔ resolve 0 2 1
A dns.d.ts ➔ resolveSrv 0 2 1
A dns.d.ts ➔ resolveMx 0 2 1

How to fix   Complexity   

Complexity

Complex classes like libs/typings/node/dns.d.ts often do a lot of different things. To break such a class down, we need to identify a cohesive component within that class. A common approach to find such a component is to look for fields/methods that share the same prefixes, or suffixes.

Once you have determined the fields that belong together, you can apply the Extract Class refactoring. If the component makes sense as a sub-class, Extract Subclass is also a candidate, and is often faster.

1
declare module "dns" {
2
    // Supported getaddrinfo flags.
3
    const ADDRCONFIG: number;
4
    const V4MAPPED: number;
5
    /**
6
     * If `dns.V4MAPPED` is specified, return resolved IPv6 addresses as
7
     * well as IPv4 mapped IPv6 addresses.
8
     */
9
    const ALL: number;
10
11
    interface LookupOptions {
12
        family?: number;
13
        hints?: number;
14
        all?: boolean;
15
        verbatim?: boolean;
16
    }
17
18
    interface LookupOneOptions extends LookupOptions {
19
        all?: false;
20
    }
21
22
    interface LookupAllOptions extends LookupOptions {
23
        all: true;
24
    }
25
26
    interface LookupAddress {
27
        address: string;
28
        family: number;
29
    }
30
31
    function lookup(hostname: string, family: number, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
32
    function lookup(hostname: string, options: LookupOneOptions, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
33
    function lookup(hostname: string, options: LookupAllOptions, callback: (err: NodeJS.ErrnoException | null, addresses: LookupAddress[]) => void): void;
34
    function lookup(hostname: string, options: LookupOptions, callback: (err: NodeJS.ErrnoException | null, address: string | LookupAddress[], family: number) => void): void;
35
    function lookup(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: string, family: number) => void): void;
36
37
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
38
    namespace lookup {
39
        function __promisify__(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
40
        function __promisify__(hostname: string, options?: LookupOneOptions | number): Promise<LookupAddress>;
41
        function __promisify__(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
42
    }
43
44
    function lookupService(address: string, port: number, callback: (err: NodeJS.ErrnoException | null, hostname: string, service: string) => void): void;
45
46
    namespace lookupService {
47
        function __promisify__(address: string, port: number): Promise<{ hostname: string, service: string }>;
48
    }
49
50
    interface ResolveOptions {
51
        ttl: boolean;
52
    }
53
54
    interface ResolveWithTtlOptions extends ResolveOptions {
55
        ttl: true;
56
    }
57
58
    interface RecordWithTtl {
59
        address: string;
60
        ttl: number;
61
    }
62
63
    /** @deprecated Use AnyARecord or AnyAaaaRecord instead. */
64
    type AnyRecordWithTtl = AnyARecord | AnyAaaaRecord;
65
66
    interface AnyARecord extends RecordWithTtl {
67
        type: "A";
68
    }
69
70
    interface AnyAaaaRecord extends RecordWithTtl {
71
        type: "AAAA";
72
    }
73
74
    interface MxRecord {
75
        priority: number;
76
        exchange: string;
77
    }
78
79
    interface AnyMxRecord extends MxRecord {
80
        type: "MX";
81
    }
82
83
    interface NaptrRecord {
84
        flags: string;
85
        service: string;
86
        regexp: string;
87
        replacement: string;
88
        order: number;
89
        preference: number;
90
    }
91
92
    interface AnyNaptrRecord extends NaptrRecord {
93
        type: "NAPTR";
94
    }
95
96
    interface SoaRecord {
97
        nsname: string;
98
        hostmaster: string;
99
        serial: number;
100
        refresh: number;
101
        retry: number;
102
        expire: number;
103
        minttl: number;
104
    }
105
106
    interface AnySoaRecord extends SoaRecord {
107
        type: "SOA";
108
    }
109
110
    interface SrvRecord {
111
        priority: number;
112
        weight: number;
113
        port: number;
114
        name: string;
115
    }
116
117
    interface AnySrvRecord extends SrvRecord {
118
        type: "SRV";
119
    }
120
121
    interface AnyTxtRecord {
122
        type: "TXT";
123
        entries: string[];
124
    }
125
126
    interface AnyNsRecord {
127
        type: "NS";
128
        value: string;
129
    }
130
131
    interface AnyPtrRecord {
132
        type: "PTR";
133
        value: string;
134
    }
135
136
    interface AnyCnameRecord {
137
        type: "CNAME";
138
        value: string;
139
    }
140
141
    type AnyRecord = AnyARecord |
142
        AnyAaaaRecord |
143
        AnyCnameRecord |
144
        AnyMxRecord |
145
        AnyNaptrRecord |
146
        AnyNsRecord |
147
        AnyPtrRecord |
148
        AnySoaRecord |
149
        AnySrvRecord |
150
        AnyTxtRecord;
151
152
    function resolve(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
153
    function resolve(hostname: string, rrtype: "A", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
154
    function resolve(hostname: string, rrtype: "AAAA", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
155
    function resolve(hostname: string, rrtype: "ANY", callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
156
    function resolve(hostname: string, rrtype: "CNAME", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
157
    function resolve(hostname: string, rrtype: "MX", callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
158
    function resolve(hostname: string, rrtype: "NAPTR", callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
159
    function resolve(hostname: string, rrtype: "NS", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
160
    function resolve(hostname: string, rrtype: "PTR", callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
161
    function resolve(hostname: string, rrtype: "SOA", callback: (err: NodeJS.ErrnoException | null, addresses: SoaRecord) => void): void;
162
    function resolve(hostname: string, rrtype: "SRV", callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
163
    function resolve(hostname: string, rrtype: "TXT", callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
164
    function resolve(
165
        hostname: string,
166
        rrtype: string,
167
        callback: (err: NodeJS.ErrnoException | null, addresses: string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]) => void,
168
    ): void;
169
170
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
171
    namespace resolve {
172
        function __promisify__(hostname: string, rrtype?: "A" | "AAAA" | "CNAME" | "NS" | "PTR"): Promise<string[]>;
173
        function __promisify__(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
174
        function __promisify__(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
175
        function __promisify__(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
176
        function __promisify__(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
177
        function __promisify__(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
178
        function __promisify__(hostname: string, rrtype: "TXT"): Promise<string[][]>;
179
        function __promisify__(hostname: string, rrtype: string): Promise<string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]>;
180
    }
181
182
    function resolve4(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
183
    function resolve4(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
184
    function resolve4(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
185
186
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
187
    namespace resolve4 {
188
        function __promisify__(hostname: string): Promise<string[]>;
189
        function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
190
        function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
191
    }
192
193
    function resolve6(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
194
    function resolve6(hostname: string, options: ResolveWithTtlOptions, callback: (err: NodeJS.ErrnoException | null, addresses: RecordWithTtl[]) => void): void;
195
    function resolve6(hostname: string, options: ResolveOptions, callback: (err: NodeJS.ErrnoException | null, addresses: string[] | RecordWithTtl[]) => void): void;
196
197
    // NOTE: This namespace provides design-time support for util.promisify. Exported members do not exist at runtime.
198
    namespace resolve6 {
199
        function __promisify__(hostname: string): Promise<string[]>;
200
        function __promisify__(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
201
        function __promisify__(hostname: string, options?: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
202
    }
203
204
    function resolveCname(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
205
    namespace resolveCname {
206
        function __promisify__(hostname: string): Promise<string[]>;
207
    }
208
209
    function resolveMx(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: MxRecord[]) => void): void;
210
    namespace resolveMx {
211
        function __promisify__(hostname: string): Promise<MxRecord[]>;
212
    }
213
214
    function resolveNaptr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: NaptrRecord[]) => void): void;
215
    namespace resolveNaptr {
216
        function __promisify__(hostname: string): Promise<NaptrRecord[]>;
217
    }
218
219
    function resolveNs(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
220
    namespace resolveNs {
221
        function __promisify__(hostname: string): Promise<string[]>;
222
    }
223
224
    function resolvePtr(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[]) => void): void;
225
    namespace resolvePtr {
226
        function __promisify__(hostname: string): Promise<string[]>;
227
    }
228
229
    function resolveSoa(hostname: string, callback: (err: NodeJS.ErrnoException | null, address: SoaRecord) => void): void;
230
    namespace resolveSoa {
231
        function __promisify__(hostname: string): Promise<SoaRecord>;
232
    }
233
234
    function resolveSrv(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: SrvRecord[]) => void): void;
235
    namespace resolveSrv {
236
        function __promisify__(hostname: string): Promise<SrvRecord[]>;
237
    }
238
239
    function resolveTxt(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: string[][]) => void): void;
240
    namespace resolveTxt {
241
        function __promisify__(hostname: string): Promise<string[][]>;
242
    }
243
244
    function resolveAny(hostname: string, callback: (err: NodeJS.ErrnoException | null, addresses: AnyRecord[]) => void): void;
245
    namespace resolveAny {
246
        function __promisify__(hostname: string): Promise<AnyRecord[]>;
247
    }
248
249
    function reverse(ip: string, callback: (err: NodeJS.ErrnoException | null, hostnames: string[]) => void): void;
250
    function setServers(servers: ReadonlyArray<string>): void;
251
    function getServers(): string[];
252
253
    // Error codes
254
    const NODATA: string;
255
    const FORMERR: string;
256
    const SERVFAIL: string;
257
    const NOTFOUND: string;
258
    const NOTIMP: string;
259
    const REFUSED: string;
260
    const BADQUERY: string;
261
    const BADNAME: string;
262
    const BADFAMILY: string;
263
    const BADRESP: string;
264
    const CONNREFUSED: string;
265
    const TIMEOUT: string;
266
    const EOF: string;
267
    const FILE: string;
268
    const NOMEM: string;
269
    const DESTRUCTION: string;
270
    const BADSTR: string;
271
    const BADFLAGS: string;
272
    const NONAME: string;
273
    const BADHINTS: string;
274
    const NOTINITIALIZED: string;
275
    const LOADIPHLPAPI: string;
276
    const ADDRGETNETWORKPARAMS: string;
277
    const CANCELLED: string;
278
279
    class Resolver {
280
        getServers: typeof getServers;
281
        setServers: typeof setServers;
282
        resolve: typeof resolve;
283
        resolve4: typeof resolve4;
284
        resolve6: typeof resolve6;
285
        resolveAny: typeof resolveAny;
286
        resolveCname: typeof resolveCname;
287
        resolveMx: typeof resolveMx;
288
        resolveNaptr: typeof resolveNaptr;
289
        resolveNs: typeof resolveNs;
290
        resolvePtr: typeof resolvePtr;
291
        resolveSoa: typeof resolveSoa;
292
        resolveSrv: typeof resolveSrv;
293
        resolveTxt: typeof resolveTxt;
294
        reverse: typeof reverse;
295
        cancel(): void;
296
    }
297
298
    namespace promises {
299
        function getServers(): string[];
300
301
        function lookup(hostname: string, family: number): Promise<LookupAddress>;
302
        function lookup(hostname: string, options: LookupOneOptions): Promise<LookupAddress>;
303
        function lookup(hostname: string, options: LookupAllOptions): Promise<LookupAddress[]>;
304
        function lookup(hostname: string, options: LookupOptions): Promise<LookupAddress | LookupAddress[]>;
305
        function lookup(hostname: string): Promise<LookupAddress>;
306
307
        function lookupService(address: string, port: number): Promise<{ hostname: string, service: string }>;
308
309
        function resolve(hostname: string): Promise<string[]>;
310
        function resolve(hostname: string, rrtype: "A"): Promise<string[]>;
311
        function resolve(hostname: string, rrtype: "AAAA"): Promise<string[]>;
312
        function resolve(hostname: string, rrtype: "ANY"): Promise<AnyRecord[]>;
313
        function resolve(hostname: string, rrtype: "CNAME"): Promise<string[]>;
314
        function resolve(hostname: string, rrtype: "MX"): Promise<MxRecord[]>;
315
        function resolve(hostname: string, rrtype: "NAPTR"): Promise<NaptrRecord[]>;
316
        function resolve(hostname: string, rrtype: "NS"): Promise<string[]>;
317
        function resolve(hostname: string, rrtype: "PTR"): Promise<string[]>;
318
        function resolve(hostname: string, rrtype: "SOA"): Promise<SoaRecord>;
319
        function resolve(hostname: string, rrtype: "SRV"): Promise<SrvRecord[]>;
320
        function resolve(hostname: string, rrtype: "TXT"): Promise<string[][]>;
321
        function resolve(hostname: string, rrtype: string): Promise<string[] | MxRecord[] | NaptrRecord[] | SoaRecord | SrvRecord[] | string[][] | AnyRecord[]>;
322
323
        function resolve4(hostname: string): Promise<string[]>;
324
        function resolve4(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
325
        function resolve4(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
326
327
        function resolve6(hostname: string): Promise<string[]>;
328
        function resolve6(hostname: string, options: ResolveWithTtlOptions): Promise<RecordWithTtl[]>;
329
        function resolve6(hostname: string, options: ResolveOptions): Promise<string[] | RecordWithTtl[]>;
330
331
        function resolveAny(hostname: string): Promise<AnyRecord[]>;
332
333
        function resolveCname(hostname: string): Promise<string[]>;
334
335
        function resolveMx(hostname: string): Promise<MxRecord[]>;
336
337
        function resolveNaptr(hostname: string): Promise<NaptrRecord[]>;
338
339
        function resolveNs(hostname: string): Promise<string[]>;
340
341
        function resolvePtr(hostname: string): Promise<string[]>;
342
343
        function resolveSoa(hostname: string): Promise<SoaRecord>;
344
345
        function resolveSrv(hostname: string): Promise<SrvRecord[]>;
346
347
        function resolveTxt(hostname: string): Promise<string[][]>;
348
349
        function reverse(ip: string): Promise<string[]>;
350
351
        function setServers(servers: ReadonlyArray<string>): void;
352
353
        class Resolver {
354
            getServers: typeof getServers;
355
            resolve: typeof resolve;
356
            resolve4: typeof resolve4;
357
            resolve6: typeof resolve6;
358
            resolveAny: typeof resolveAny;
359
            resolveCname: typeof resolveCname;
360
            resolveMx: typeof resolveMx;
361
            resolveNaptr: typeof resolveNaptr;
362
            resolveNs: typeof resolveNs;
363
            resolvePtr: typeof resolvePtr;
364
            resolveSoa: typeof resolveSoa;
365
            resolveSrv: typeof resolveSrv;
366
            resolveTxt: typeof resolveTxt;
367
            reverse: typeof reverse;
368
            setServers: typeof setServers;
369
        }
370
    }
371
}
372