Skip to content

Commit e62c167

Browse files
committed
remove proxy path name when reassigned to a source
1 parent fdfc6ac commit e62c167

File tree

1 file changed

+18
-2
lines changed
  • packages/svelte/src/internal/client

1 file changed

+18
-2
lines changed

packages/svelte/src/internal/client/proxy.js

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import {
99
object_prototype
1010
} from '../shared/utils.js';
1111
import { 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';
1313
import { UNINITIALIZED } from '../../constants.js';
1414
import * as e from './errors.js';
1515
import { get_stack, tag_source } from './dev/tracing.js';
@@ -22,6 +22,16 @@ import { tracing_mode_flag } from '../flags/index.js';
2222
* @returns {T}
2323
*/
2424
export 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

Comments
 (0)