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