99 object_prototype
1010} from '../shared/utils.js' ;
1111import { state as source , set } from './reactivity/sources.js' ;
12- import { STATE_SYMBOL } from '#client/constants' ;
12+ import { PROXY_PATH_SYMBOL , STATE_SYMBOL } from '#client/constants' ;
1313import { UNINITIALIZED } from '../../constants.js' ;
1414import * as e from './errors.js' ;
1515import { get_stack , tag_source } from './dev/tracing.js' ;
@@ -22,6 +22,16 @@ import { tracing_mode_flag } from '../flags/index.js';
2222 * @returns {T }
2323 */
2424export function proxy ( value , path ) {
25+ // if `DEV`, change the proxy `path` since we don't know if its still "owned" by its original source
26+ if (
27+ DEV &&
28+ typeof value === 'object' &&
29+ value !== null &&
30+ STATE_SYMBOL in value &&
31+ PROXY_PATH_SYMBOL in value
32+ ) {
33+ value [ PROXY_PATH_SYMBOL ] = '[$state proxy]' ;
34+ }
2535 // if non-proxyable, or is already a proxy, return `value`
2636 if ( typeof value !== 'object' || value === null || STATE_SYMBOL in value ) {
2737 return value ;
@@ -135,6 +145,9 @@ export function proxy(value, path) {
135145 if ( prop === STATE_SYMBOL ) {
136146 return value ;
137147 }
148+ if ( DEV && prop === PROXY_PATH_SYMBOL ) {
149+ return path ;
150+ }
138151
139152 var s = sources . get ( prop ) ;
140153 var exists = prop in target ;
@@ -180,7 +193,7 @@ export function proxy(value, path) {
180193 } ,
181194
182195 has ( target , prop ) {
183- if ( prop === STATE_SYMBOL ) {
196+ if ( prop === STATE_SYMBOL || ( DEV && prop === PROXY_PATH_SYMBOL ) ) {
184197 return true ;
185198 }
186199
@@ -209,6 +222,9 @@ export function proxy(value, path) {
209222 } ,
210223
211224 set ( target , prop , value , receiver ) {
225+ if ( DEV && prop === PROXY_PATH_SYMBOL ) {
226+ path = value ;
227+ }
212228 var s = sources . get ( prop ) ;
213229 var has = prop in target ;
214230
0 commit comments