@@ -9,7 +9,13 @@ import {
99 object_prototype
1010} from '../shared/utils.js' ;
1111import { state as source , set } from './reactivity/sources.js' ;
12- import { PROXY_PATH_SYMBOL , STATE_SYMBOL } from '#client/constants' ;
12+ import {
13+ PROXY_CHANGE_PATH ,
14+ PROXY_PATH_SYMBOL ,
15+ PROXY_PRESERVE_PATH ,
16+ PROXY_REMOVE_PATH ,
17+ STATE_SYMBOL
18+ } from '#client/constants' ;
1319import { UNINITIALIZED } from '../../constants.js' ;
1420import * as e from './errors.js' ;
1521import { get_stack , tag_source } from './dev/tracing.js' ;
@@ -19,20 +25,20 @@ import { tracing_mode_flag } from '../flags/index.js';
1925 * @template T
2026 * @param {T } value
2127 * @param {string } [path]
22- * @param {boolean } [preserve_path]
28+ * @param {number } [path_preservation]
2329 * @returns {T }
2430 */
25- export function proxy ( value , path , preserve_path = true ) {
31+ export function proxy ( value , path , path_preservation = PROXY_PRESERVE_PATH ) {
2632 // if `DEV`, change the proxy `path` since we don't know if its still "owned" by its original source
2733 if (
2834 DEV &&
29- ! preserve_path &&
35+ ( path_preservation & PROXY_PRESERVE_PATH ) === 0 &&
3036 typeof value === 'object' &&
3137 value !== null &&
3238 STATE_SYMBOL in value &&
3339 PROXY_PATH_SYMBOL in value
3440 ) {
35- value [ PROXY_PATH_SYMBOL ] = '[$state proxy]' ;
41+ value [ PROXY_PATH_SYMBOL ] = ( path_preservation & PROXY_CHANGE_PATH ) === 0 ? '[$state proxy]' : path ;
3642 }
3743 // if non-proxyable, or is already a proxy, return `value`
3844 if ( typeof value !== 'object' || value === null || STATE_SYMBOL in value ) {
@@ -257,15 +263,15 @@ export function proxy(value, path, preserve_path = true) {
257263 s = DEV ? tag_source ( s , to_trace_name ( prop ) ) : s ;
258264 set (
259265 s ,
260- with_parent ( ( ) => proxy ( value , to_trace_name ( prop ) ) )
266+ with_parent ( ( ) => proxy ( value , to_trace_name ( prop ) , PROXY_CHANGE_PATH ) )
261267 ) ;
262268 sources . set ( prop , s ) ;
263269 }
264270 } else {
265271 has = s . v !== UNINITIALIZED ;
266272 set (
267273 s ,
268- with_parent ( ( ) => proxy ( value , to_trace_name ( prop ) ) )
274+ with_parent ( ( ) => proxy ( value , to_trace_name ( prop ) , PROXY_CHANGE_PATH ) )
269275 ) ;
270276 }
271277
0 commit comments