20
20
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
21
21
// USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
23
- import type { UrlObject } from "url" ;
24
- import type { ParsedUrlQuery } from "querystring" ;
23
+ import type { UrlObject } from "node: url" ;
24
+ import type { ParsedUrlQuery } from "node: querystring" ;
25
25
26
26
// function searchParamsToUrlQuery(searchParams: URLSearchParams): ParsedUrlQuery {
27
27
// const query: ParsedUrlQuery = {};
@@ -44,16 +44,18 @@ function stringifyUrlQueryParam(param: unknown): string {
44
44
typeof param === "boolean"
45
45
) {
46
46
return String ( param ) ;
47
- } else {
48
- return "" ;
49
47
}
48
+
49
+ return "" ;
50
50
}
51
51
52
52
function urlQueryToSearchParams ( urlQuery : ParsedUrlQuery ) : URLSearchParams {
53
53
const result = new URLSearchParams ( ) ;
54
54
Object . entries ( urlQuery ) . forEach ( ( [ key , value ] ) => {
55
55
if ( Array . isArray ( value ) ) {
56
- value . forEach ( ( item ) => result . append ( key , stringifyUrlQueryParam ( item ) ) ) ;
56
+ value . forEach ( ( item ) => {
57
+ result . append ( key , stringifyUrlQueryParam ( item ) ) ;
58
+ } ) ;
57
59
} else {
58
60
result . set ( key , stringifyUrlQueryParam ( value ) ) ;
59
61
}
@@ -74,22 +76,23 @@ function urlQueryToSearchParams(urlQuery: ParsedUrlQuery): URLSearchParams {
74
76
75
77
const slashedProtocols = / h t t p s ? | f t p | g o p h e r | f i l e / ;
76
78
77
- export function formatUrl ( urlObj : UrlObject ) {
78
- let { auth, hostname } = urlObj ;
79
+ export function formatUrl ( urlObj : UrlObject ) : string {
80
+ let { auth } = urlObj ;
81
+ const { hostname } = urlObj ;
79
82
let protocol = urlObj . protocol || "" ;
80
83
let pathname = urlObj . pathname || "" ;
81
84
let hash = urlObj . hash || "" ;
82
85
let query = urlObj . query || "" ;
83
86
let host : string | false = false ;
84
87
85
- auth = auth ? encodeURIComponent ( auth ) . replace ( / % 3 A / i, ":" ) + "@" : "" ;
88
+ auth = auth ? ` ${ encodeURIComponent ( auth ) . replace ( / % 3 A / i, ":" ) } @` : "" ;
86
89
87
90
if ( urlObj . host ) {
88
91
host = auth + urlObj . host ;
89
92
} else if ( hostname ) {
90
- host = auth + ( ~ hostname . indexOf ( ":" ) ? `[${ hostname } ]` : hostname ) ;
93
+ host = auth + ( hostname . includes ( ":" ) ? `[${ hostname } ]` : hostname ) ;
91
94
if ( urlObj . port ) {
92
- host += ":" + urlObj . port ;
95
+ host += `: ${ urlObj . port } ` ;
93
96
}
94
97
}
95
98
@@ -105,14 +108,16 @@ export function formatUrl(urlObj: UrlObject) {
105
108
urlObj . slashes ||
106
109
( ( ! protocol || slashedProtocols . test ( protocol ) ) && host !== false )
107
110
) {
108
- host = "//" + ( host || "" ) ;
109
- if ( pathname && pathname [ 0 ] !== "/" ) pathname = "/" + pathname ;
111
+ host = `//${ host || "" } ` ;
112
+ if ( pathname && ! pathname . startsWith ( "/" ) ) {
113
+ pathname = `/${ pathname } ` ;
114
+ }
110
115
} else if ( ! host ) {
111
116
host = "" ;
112
117
}
113
118
114
- if ( hash && hash [ 0 ] !== "#" ) hash = "#" + hash ;
115
- if ( search && search [ 0 ] !== "?" ) search = "?" + search ;
119
+ if ( hash && ! hash . startsWith ( "#" ) ) hash = `# ${ hash } ` ;
120
+ if ( search && ! search . startsWith ( "?" ) ) search = `? ${ search } ` ;
116
121
117
122
pathname = pathname . replace ( / [ ? # ] / g, encodeURIComponent ) ;
118
123
search = search . replace ( "#" , "%23" ) ;
0 commit comments