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