Create type definition for 'lookup-dns-cache' (#4051)
This commit is contained in:
		
							parent
							
								
									bbcdf1bb8a
								
							
						
					
					
						commit
						76569bfb08
					
				|  | @ -0,0 +1,17 @@ | ||||||
|  | declare module 'lookup-dns-cache' { | ||||||
|  | 	type IPv4 = 4; | ||||||
|  | 
 | ||||||
|  | 	type IPv6 = 6; | ||||||
|  | 
 | ||||||
|  | 	type Family = IPv4 | IPv6 | undefined; | ||||||
|  | 
 | ||||||
|  | 	interface IRunOptions { | ||||||
|  | 		family?: Family; | ||||||
|  | 		all?: boolean; | ||||||
|  | 	} | ||||||
|  | 
 | ||||||
|  | 	type RunCallback = (error: Error | null, address?: string | string[], family?: Family) => void; | ||||||
|  | 
 | ||||||
|  | 	export function lookup(hostname: string, options: IRunOptions | Family, callback: RunCallback): {} | undefined; | ||||||
|  | 	export function lookup(hostname: string, callback: RunCallback): {} | undefined; | ||||||
|  | } | ||||||
|  | @ -3,7 +3,7 @@ const { sign } = require('http-signature'); | ||||||
| import { URL } from 'url'; | import { URL } from 'url'; | ||||||
| import * as debug from 'debug'; | import * as debug from 'debug'; | ||||||
| import * as crypto from 'crypto'; | import * as crypto from 'crypto'; | ||||||
| const { lookup } = require('lookup-dns-cache'); | import { lookup, IRunOptions } from 'lookup-dns-cache'; | ||||||
| import * as promiseAny from 'promise-any'; | import * as promiseAny from 'promise-any'; | ||||||
| 
 | 
 | ||||||
| import config from '../../config'; | import config from '../../config'; | ||||||
|  | @ -89,16 +89,16 @@ export default (user: ILocalUser, url: string, object: any) => new Promise(async | ||||||
| async function resolveAddr(domain: string) { | async function resolveAddr(domain: string) { | ||||||
| 	// v4/v6で先に取得できた方を採用する
 | 	// v4/v6で先に取得できた方を採用する
 | ||||||
| 	return await promiseAny([ | 	return await promiseAny([ | ||||||
| 		resolveAddrInner(domain, { ipv6: false }), | 		resolveAddrInner(domain, { family: 4 }), | ||||||
| 		resolveAddrInner(domain, { ipv6: true  }) | 		resolveAddrInner(domain, { family: 6 }) | ||||||
| 	]); | 	]); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| function resolveAddrInner(domain: string, options = { }): Promise<string> { | function resolveAddrInner(domain: string, options: IRunOptions = {}): Promise<string> { | ||||||
| 	return new Promise((res, rej) => { | 	return new Promise((res, rej) => { | ||||||
| 		lookup(domain, options, (error: any, address: string) => { | 		lookup(domain, options, (error: any, address: string | string[]) => { | ||||||
| 			if (error) return rej(error); | 			if (error) return rej(error); | ||||||
| 			return res(address); | 			return res(Array.isArray(address) ? address[0] : address); | ||||||
| 		}); | 		}); | ||||||
| 	}); | 	}); | ||||||
| } | } | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue