1declare module "url" { 2 import { ParsedUrlQuery } from 'querystring'; 3 4 interface UrlObjectCommon { 5 auth?: string; 6 hash?: string; 7 host?: string; 8 hostname?: string; 9 href?: string; 10 pathname?: string; 11 protocol?: string; 12 search?: string; 13 slashes?: boolean; 14 } 15 16 // Input to `url.format` 17 interface UrlObject extends UrlObjectCommon { 18 port?: string | number; 19 query?: string | null | { [key: string]: any }; 20 } 21 22 // Output of `url.parse` 23 interface Url extends UrlObjectCommon { 24 port?: string; 25 query?: string | null | ParsedUrlQuery; 26 path?: string; 27 } 28 29 interface UrlWithParsedQuery extends Url { 30 query: ParsedUrlQuery; 31 } 32 33 interface UrlWithStringQuery extends Url { 34 query: string | null; 35 } 36 37 function parse(urlStr: string): UrlWithStringQuery; 38 function parse(urlStr: string, parseQueryString: false | undefined, slashesDenoteHost?: boolean): UrlWithStringQuery; 39 function parse(urlStr: string, parseQueryString: true, slashesDenoteHost?: boolean): UrlWithParsedQuery; 40 function parse(urlStr: string, parseQueryString: boolean, slashesDenoteHost?: boolean): Url; 41 42 function format(URL: URL, options?: URLFormatOptions): string; 43 function format(urlObject: UrlObject | string): string; 44 function resolve(from: string, to: string): string; 45 46 function domainToASCII(domain: string): string; 47 function domainToUnicode(domain: string): string; 48 49 /** 50 * This function ensures the correct decodings of percent-encoded characters as 51 * well as ensuring a cross-platform valid absolute path string. 52 * @param url The file URL string or URL object to convert to a path. 53 */ 54 function fileURLToPath(url: string | URL): string; 55 56 /** 57 * This function ensures that path is resolved absolutely, and that the URL 58 * control characters are correctly encoded when converting into a File URL. 59 * @param url The path to convert to a File URL. 60 */ 61 function pathToFileURL(url: string): URL; 62 63 interface URLFormatOptions { 64 auth?: boolean; 65 fragment?: boolean; 66 search?: boolean; 67 unicode?: boolean; 68 } 69 70 class URL { 71 constructor(input: string, base?: string | URL); 72 hash: string; 73 host: string; 74 hostname: string; 75 href: string; 76 readonly origin: string; 77 password: string; 78 pathname: string; 79 port: string; 80 protocol: string; 81 search: string; 82 readonly searchParams: URLSearchParams; 83 username: string; 84 toString(): string; 85 toJSON(): string; 86 } 87 88 class URLSearchParams implements Iterable<[string, string]> { 89 constructor(init?: URLSearchParams | string | { [key: string]: string | string[] | undefined } | Iterable<[string, string]> | Array<[string, string]>); 90 append(name: string, value: string): void; 91 delete(name: string): void; 92 entries(): IterableIterator<[string, string]>; 93 forEach(callback: (value: string, name: string, searchParams: this) => void): void; 94 get(name: string): string | null; 95 getAll(name: string): string[]; 96 has(name: string): boolean; 97 keys(): IterableIterator<string>; 98 set(name: string, value: string): void; 99 sort(): void; 100 toString(): string; 101 values(): IterableIterator<string>; 102 [Symbol.iterator](): IterableIterator<[string, string]>; 103 } 104} 105