1 | declare 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 |
|
22 | interface 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 |
|
49 | declare 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 |
|
84 | export = URLParse;
|