@@ -11,11 +11,20 @@ export class ReactiveURL extends URL {
11
11
hostname : source ( super . hostname ) ,
12
12
port : source ( super . port ) ,
13
13
pathname : source ( super . pathname ) ,
14
- search : source ( super . search ) ,
15
14
hash : source ( super . hash )
16
15
} ;
17
16
18
- #searchParams = new ReactiveURLSearchParams ( super . searchParams ) ;
17
+ #searchParams = new ReactiveURLSearchParams ( ) ;
18
+
19
+ /**
20
+ * @param {string | URL } url
21
+ * @param {string | URL } [base]
22
+ */
23
+ constructor ( url , base ) {
24
+ url = new URL ( url , base ) ;
25
+ super ( url ) ;
26
+ this . #searchParams[ REPLACE ] ( url . searchParams ) ;
27
+ }
19
28
20
29
get hash ( ) {
21
30
return get ( this . #url. hash ) ;
@@ -54,8 +63,8 @@ export class ReactiveURL extends URL {
54
63
get ( this . #url. hostname ) ;
55
64
get ( this . #url. port ) ;
56
65
get ( this . #url. pathname ) ;
57
- get ( this . #url. search ) ;
58
66
get ( this . #url. hash ) ;
67
+ this . #searchParams. toString ( ) ;
59
68
return super . href ;
60
69
}
61
70
@@ -67,7 +76,6 @@ export class ReactiveURL extends URL {
67
76
set ( this . #url. hostname , super . hostname ) ;
68
77
set ( this . #url. port , super . port ) ;
69
78
set ( this . #url. pathname , super . pathname ) ;
70
- set ( this . #url. search , super . search ) ;
71
79
set ( this . #url. hash , super . hash ) ;
72
80
this . #searchParams[ REPLACE ] ( super . searchParams ) ;
73
81
}
@@ -109,13 +117,12 @@ export class ReactiveURL extends URL {
109
117
}
110
118
111
119
get search ( ) {
112
- const search = this . #searchParams. toString ( ) ;
120
+ const search = this . #searchParams? .toString ( ) ;
113
121
return search ? `?${ search } ` : '' ;
114
122
}
115
123
116
124
set search ( value ) {
117
- super . search = value ;
118
- this . #searchParams[ REPLACE ] ( super . searchParams ) ;
125
+ this . #searchParams[ REPLACE ] ( new URLSearchParams ( value . replace ( / ^ \? / , '' ) ) ) ;
119
126
}
120
127
121
128
get username ( ) {
0 commit comments