UNPKG

2.97 kBTypeScriptView Raw
1// Type definitions for url-parse 1.4
2// Project: https://github.com/unshiftio/url-parse
3// Definitions by: Hari Sivaramakrishnan <https://github.com/harisiva>
4// Dmitry Dushkin <https://github.com/DimitryDushkin>
5// David Golightly <https://github.com/davidgoli>
6// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
7// TypeScript Version: 2.2
8
9declare namespace URLParse {
10 type URLPart =
11 | 'auth'
12 | 'hash'
13 | 'host'
14 | 'hostname'
15 | 'href'
16 | 'origin'
17 | 'password'
18 | 'pathname'
19 | 'port'
20 | 'protocol'
21 | 'query'
22 | 'slashes'
23 | 'username';
24
25 type QueryParser<T = Record<string, string | undefined>> = (query: string) => T;
26
27 type StringifyQuery = (query: object) => string;
28}
29
30interface URLParse<Query> {
31 readonly auth: string;
32 readonly hash: string;
33 readonly host: string;
34 readonly hostname: string;
35 readonly href: string;
36 readonly origin: string;
37 readonly password: string;
38 readonly pathname: string;
39 readonly port: string;
40 readonly protocol: string;
41 readonly query: Query;
42 readonly slashes: boolean;
43 readonly username: string;
44 set<Part extends URLParse.URLPart>(part: Part, value: URLParse<string>[Part] | undefined, fn?: false): URLParse<string>;
45 set<Part extends URLParse.URLPart, T>(part: Part, value: URLParse<T>[Part] | undefined, fn?: URLParse.QueryParser<T>): URLParse<T>;
46 toString(stringify?: URLParse.StringifyQuery): string;
47}
48
49declare const URLParse: {
50 new(address: string, parser?: false): URLParse<string>;
51 new(address: string, parser: true): URLParse<Record<string, string | undefined>>;
52 new <T>(address: string, parser?: URLParse.QueryParser<T>): URLParse<T>;
53 new(address: string, location?: string | object, parser?: false): URLParse<string>;
54 new(address: string, location: string | object | undefined, parser: true): URLParse<Record<string, string | undefined>>;
55 new <T>(address: string, location: string | object | undefined, parser: URLParse.QueryParser<T>): URLParse<T>;
56 (address: string, parser?: false): URLParse<string>;
57 (address: string, parser: true): URLParse<Record<string, string | undefined>>;
58 <T>(address: string, parser: URLParse.QueryParser<T>): URLParse<T>;
59 (address: string, location?: string | object, parser?: false): URLParse<string>;
60 (address: string, location: string | object | undefined, parser: true): URLParse<Record<string, string | undefined>>;
61 <T>(address: string, location: string | object | undefined, parser: URLParse.QueryParser<T>): URLParse<T>;
62
63 extractProtocol(url: string): {
64 slashes: boolean;
65 protocol: string;
66 rest: string;
67 };
68 location(url: string): object;
69 qs: {
70 parse: URLParse.QueryParser;
71 stringify: URLParse.StringifyQuery;
72 };
73 trimLeft(url: string): string;
74};
75
76export = URLParse;