@@ -23,69 +23,76 @@ export class ReactiveSet<T> extends Set<T> {
2323 if ( values ) for ( const v of values ) super . add ( v ) ;
2424 }
2525
26- // reads
26+ [ Symbol . iterator ] ( ) : SetIterator < T > {
27+ return this . values ( ) ;
28+ }
29+
2730 get size ( ) : number {
2831 this . #triggers. track ( $KEYS ) ;
2932 return super . size ;
3033 }
31- has ( v : T ) : boolean {
32- this . #triggers. track ( v ) ;
33- return super . has ( v ) ;
34+
35+ has ( value : T ) : boolean {
36+ this . #triggers. track ( value ) ;
37+ return super . has ( value ) ;
3438 }
3539
36- * keys ( ) : SetIterator < T > {
37- for ( const key of super . keys ( ) ) {
38- this . #triggers. track ( key ) ;
39- yield key ;
40- }
41- this . #triggers. track ( $KEYS ) ;
40+ keys ( ) : SetIterator < T > {
41+ return this . values ( ) ;
4242 }
43- values ( ) : SetIterator < T > {
44- return this . keys ( ) ;
43+
44+ * values ( ) : SetIterator < T > {
45+ this . #triggers. track ( $KEYS ) ;
46+
47+ for ( const value of super . values ( ) ) {
48+ yield value ;
49+ }
4550 }
51+
4652 * entries ( ) : SetIterator < [ T , T ] > {
47- for ( const key of super . keys ( ) ) {
48- this . #triggers. track ( key ) ;
49- yield [ key , key ] ;
50- }
5153 this . #triggers. track ( $KEYS ) ;
52- }
5354
54- [ Symbol . iterator ] ( ) : SetIterator < T > {
55- return this . values ( ) ;
55+ for ( const entry of super . entries ( ) ) {
56+ yield entry ;
57+ }
5658 }
57- forEach ( callbackfn : ( value : T , value2 : T , set : this) => void ) {
59+
60+ forEach ( callbackfn : ( value1 : T , value2 : T , set : Set < T > ) => void , thisArg ?: any ) : void {
5861 this . #triggers. track ( $KEYS ) ;
59- super . forEach ( callbackfn as any ) ;
62+ super . forEach ( callbackfn , thisArg ) ;
6063 }
6164
62- // writes
63- add ( v : T ) : this {
64- if ( ! super . has ( v ) ) {
65- super . add ( v ) ;
65+ add ( value : T ) : this {
66+ if ( ! super . has ( value ) ) {
67+ super . add ( value ) ;
6668 batch ( ( ) => {
67- this . #triggers. dirty ( v ) ;
69+ this . #triggers. dirty ( value ) ;
6870 this . #triggers. dirty ( $KEYS ) ;
6971 } ) ;
7072 }
73+
7174 return this ;
7275 }
73- delete ( v : T ) : boolean {
74- const r = super . delete ( v ) ;
75- if ( r ) {
76+
77+ delete ( value : T ) : boolean {
78+ const result = super . delete ( value ) ;
79+
80+ if ( result ) {
7681 batch ( ( ) => {
77- this . #triggers. dirty ( v ) ;
82+ this . #triggers. dirty ( value ) ;
7883 this . #triggers. dirty ( $KEYS ) ;
7984 } ) ;
8085 }
81- return r ;
86+
87+ return result ;
8288 }
89+
8390 clear ( ) : void {
8491 if ( super . size ) {
92+ super . clear ( ) ;
93+
8594 batch ( ( ) => {
86- for ( const v of super . keys ( ) ) this . #triggers. dirty ( v ) ;
87- super . clear ( ) ;
88- this . #triggers. dirty ( $KEYS ) ;
95+ this . #triggers. dirtyAll ( ) ;
8996 } ) ;
9097 }
9198 }
@@ -109,21 +116,25 @@ export class ReactiveWeakSet<T extends object> extends WeakSet<T> {
109116 if ( values ) for ( const v of values ) super . add ( v ) ;
110117 }
111118
112- has ( v : T ) : boolean {
113- this . #triggers. track ( v ) ;
114- return super . has ( v ) ;
119+ has ( value : T ) : boolean {
120+ this . #triggers. track ( value ) ;
121+ return super . has ( value ) ;
115122 }
116- add ( v : T ) : this {
117- if ( ! super . has ( v ) ) {
118- super . add ( v ) ;
119- this . #triggers. dirty ( v ) ;
123+
124+ add ( value : T ) : this {
125+ if ( ! super . has ( value ) ) {
126+ super . add ( value ) ;
127+ this . #triggers. dirty ( value ) ;
120128 }
121129 return this ;
122130 }
123- delete ( v : T ) : boolean {
124- const deleted = super . delete ( v ) ;
125- deleted && this . #triggers. dirty ( v ) ;
126- return deleted ;
131+
132+ delete ( value : T ) : boolean {
133+ const result = super . delete ( value ) ;
134+
135+ result && this . #triggers. dirty ( value ) ;
136+
137+ return result ;
127138 }
128139}
129140
0 commit comments