UNPKG

2.7 kBTypeScriptView Raw
1declare namespace URLParse {
2 type URLPart =
3 | "auth"
4 | "hash"
5 | "host"
6 | "hostname"
7 | "href"
8 | "origin"
9 | "password"
10 | "pathname"
11 | "port"
12 | "protocol"
13 | "query"
14 | "slashes"
15 | "username";
16
17 type QueryParser<T = Record<string, string | undefined>> = (query: string) => T;
18
19 type StringifyQuery = (query: object) => string;
20}
21
22interface URLParse<Query> {
23 readonly auth: string;
24 readonly hash: string;
25 readonly host: string;
26 readonly hostname: string;
27 readonly href: string;
28 readonly origin: string;
29 readonly password: string;
30 readonly pathname: string;
31 readonly port: string;
32 readonly protocol: string;
33 readonly query: Query;
34 readonly slashes: boolean;
35 readonly username: string;
36 set<Part extends URLParse.URLPart>(
37 part: Part,
38 value: URLParse<Query>[Part] | undefined,
39 fn?: false,
40 ): URLParse<Query>;
41 set<Part extends URLParse.URLPart, T>(
42 part: Part,
43 value: URLParse<T>[Part] | undefined,
44 fn?: URLParse.QueryParser<T>,
45 ): 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(
55 address: string,
56 location: string | object | undefined,
57 parser: true,
58 ): URLParse<Record<string, string | undefined>>;
59 new<T>(address: string, location: string | object | undefined, parser: URLParse.QueryParser<T>): URLParse<T>;
60 (address: string, parser?: false): URLParse<string>;
61 (address: string, parser: true): URLParse<Record<string, string | undefined>>;
62 <T>(address: string, parser: URLParse.QueryParser<T>): URLParse<T>;
63 (address: string, location?: string | object, parser?: false): URLParse<string>;
64 (
65 address: string,
66 location: string | object | undefined,
67 parser: true,
68 ): URLParse<Record<string, string | undefined>>;
69 <T>(address: string, location: string | object | undefined, parser: URLParse.QueryParser<T>): URLParse<T>;
70
71 extractProtocol(url: string): {
72 slashes: boolean;
73 protocol: string;
74 rest: string;
75 };
76 location(url: string): object;
77 qs: {
78 parse: URLParse.QueryParser;
79 stringify: URLParse.StringifyQuery;
80 };
81 trimLeft(url: string): string;
82};
83
84export = URLParse;