@@ -29,38 +29,44 @@ export default {
2929      observer  =  new  Observer ( connection ,  opts ) 
3030      Vue . prototype . $socket  =  observer . WebSocket 
3131    } 
32+     const  hasProxy  =  typeof  Proxy  !==  'undefined'  &&  typeof  Proxy  ===  'function'  &&  / n a t i v e   c o d e / . test ( Proxy . toString ( ) ) 
3233
3334    Vue . mixin ( { 
3435      created  ( )  { 
3536        let  vm  =  this 
3637        let  sockets  =  this . $options [ 'sockets' ] 
3738
38-         this . $options . sockets  =  new  Proxy ( { } ,  { 
39-           set  ( target ,  key ,  value )  { 
40-             Emitter . addListener ( key ,  value ,  vm ) 
41-             target [ key ]  =  value 
42-             return  true 
43-           } , 
44-           deleteProperty  ( target ,  key )  { 
45-             Emitter . removeListener ( key ,  vm . $options . sockets [ key ] ,  vm ) 
46-             delete  target . key 
47-             return  true 
48-           } 
49-         } ) 
50- 
51-         if  ( sockets )  { 
52-           Object . keys ( sockets ) . forEach ( ( key )  =>  { 
53-             this . $options . sockets [ key ]  =  sockets [ key ] 
39+         if  ( hasProxy )  { 
40+           this . $options . sockets  =  new  Proxy ( { } ,  { 
41+             set  ( target ,  key ,  value )  { 
42+               Emitter . addListener ( key ,  value ,  vm ) 
43+               target [ key ]  =  value 
44+               return  true 
45+             } , 
46+             deleteProperty  ( target ,  key )  { 
47+               Emitter . removeListener ( key ,  vm . $options . sockets [ key ] ,  vm ) 
48+               delete  target . key 
49+               return  true 
50+             } 
5451          } ) 
52+           if  ( sockets )  { 
53+             Object . keys ( sockets ) . forEach ( ( key )  =>  { 
54+               this . $options . sockets [ key ]  =  sockets [ key ] 
55+             } ) 
56+           } 
57+         }  else  { 
58+           Object . seal ( this . $options . sockets ) 
5559        } 
5660      } , 
5761      beforeDestroy  ( )  { 
58-         let  sockets  =  this . $options [ 'sockets' ] 
62+         if  ( hasProxy )  { 
63+           let  sockets  =  this . $options [ 'sockets' ] 
5964
60-         if  ( sockets )  { 
61-           Object . keys ( sockets ) . forEach ( ( key )  =>  { 
62-             delete  this . $options . sockets [ key ] 
63-           } ) 
65+           if  ( sockets )  { 
66+             Object . keys ( sockets ) . forEach ( ( key )  =>  { 
67+               delete  this . $options . sockets [ key ] 
68+             } ) 
69+           } 
6470        } 
6571      } 
6672    } ) 
0 commit comments