@@ -23,17 +23,23 @@ function encode(value: mixed, disallowObjects: boolean, forcePointers: boolean,
2323 if ( disallowObjects ) {
2424 throw new Error ( 'Parse Objects not allowed here' ) ;
2525 }
26+ var seenEntry = value . id ? value . className + ':' + value . id : value ;
2627 if ( forcePointers ||
2728 ! seen ||
28- seen . indexOf ( value ) > - 1 ||
29+ seen . indexOf ( seenEntry ) > - 1 ||
2930 value . dirty ( ) ||
3031 Object . keys ( value . _getServerData ( ) ) . length < 1
3132 ) {
3233 return value . toPointer ( ) ;
3334 }
34- seen = seen . concat ( value ) ;
35- var json = value . _toFullJSON ( seen ) ;
36- return encode ( json , disallowObjects , forcePointers , seen ) ;
35+ seen = seen . concat ( seenEntry ) ;
36+ var json = encode ( value . attributes , disallowObjects , forcePointers , seen ) ;
37+ json . className = value . className ;
38+ json . __type = 'Object' ;
39+ if ( value . id ) {
40+ json . objectId = value . id ;
41+ }
42+ return json ;
3743 }
3844 if ( value instanceof Op ||
3945 value instanceof ParseACL ||
@@ -75,6 +81,6 @@ function encode(value: mixed, disallowObjects: boolean, forcePointers: boolean,
7581 return value ;
7682}
7783
78- export default function ( value : mixed , disallowObjects ?: boolean , forcePointers ?: boolean ) {
79- return encode ( value , ! ! disallowObjects , ! ! forcePointers , [ ] ) ;
84+ export default function ( value : mixed , disallowObjects ?: boolean , forcePointers ?: boolean , seen ?: Array < mixed > ) {
85+ return encode ( value , ! ! disallowObjects , ! ! forcePointers , seen || [ ] ) ;
8086}
0 commit comments