@@ -123,38 +123,41 @@ const createHandlerDefault = <T extends object>(
123123 addPropListener : ( prop : string | symbol , propValue : unknown ) => void ,
124124 removePropListener : ( prop : string | symbol ) => void ,
125125 notifyUpdate : ( op : Op | undefined ) => void ,
126- ) : ProxyHandler < T > => ( {
127- deleteProperty ( target : T , prop : string | symbol ) {
128- const prevValue = Reflect . get ( target , prop )
129- removePropListener ( prop )
130- const deleted = Reflect . deleteProperty ( target , prop )
131- if ( deleted ) {
132- notifyUpdate ( createOp ?.( 'delete' , prop , prevValue ) )
133- }
134- return deleted
135- } ,
136- set ( target : T , prop : string | symbol , value : any , receiver : object ) {
137- const hasPrevValue = ! isInitializing ( ) && Reflect . has ( target , prop )
138- const prevValue = Reflect . get ( target , prop , receiver )
139- if (
140- hasPrevValue &&
141- ( objectIs ( prevValue , value ) ||
142- ( proxyCache . has ( value ) && objectIs ( prevValue , proxyCache . get ( value ) ) ) )
143- ) {
126+ ) : ProxyHandler < T > => {
127+ const createOpHandle = createOp
128+ return {
129+ deleteProperty ( target : T , prop : string | symbol ) {
130+ const prevValue = Reflect . get ( target , prop )
131+ removePropListener ( prop )
132+ const deleted = Reflect . deleteProperty ( target , prop )
133+ if ( deleted ) {
134+ notifyUpdate ( createOpHandle ?.( 'delete' , prop , prevValue ) )
135+ }
136+ return deleted
137+ } ,
138+ set ( target : T , prop : string | symbol , value : any , receiver : object ) {
139+ const hasPrevValue = ! isInitializing ( ) && Reflect . has ( target , prop )
140+ const prevValue = Reflect . get ( target , prop , receiver )
141+ if (
142+ hasPrevValue &&
143+ ( objectIs ( prevValue , value ) ||
144+ ( proxyCache . has ( value ) && objectIs ( prevValue , proxyCache . get ( value ) ) ) )
145+ ) {
146+ return true
147+ }
148+ removePropListener ( prop )
149+ if ( isObject ( value ) ) {
150+ value = getUntracked ( value ) || value
151+ }
152+ const nextValue =
153+ ! proxyStateMap . has ( value ) && canProxy ( value ) ? proxy ( value ) : value
154+ addPropListener ( prop , nextValue )
155+ Reflect . set ( target , prop , nextValue , receiver )
156+ notifyUpdate ( createOpHandle ?.( 'set' , prop , value , prevValue ) )
144157 return true
145- }
146- removePropListener ( prop )
147- if ( isObject ( value ) ) {
148- value = getUntracked ( value ) || value
149- }
150- const nextValue =
151- ! proxyStateMap . has ( value ) && canProxy ( value ) ? proxy ( value ) : value
152- addPropListener ( prop , nextValue )
153- Reflect . set ( target , prop , nextValue , receiver )
154- notifyUpdate ( createOp ?.( 'set' , prop , value , prevValue ) )
155- return true
156- } ,
157- } )
158+ } ,
159+ }
160+ }
158161
159162const createOpDefault = (
160163 type : 'set' | 'delete' ,
0 commit comments