From 533bd9dcdaf1625bbb6522f751d69020eaf49f92 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Thu, 22 Feb 2024 23:16:23 +0000 Subject: [PATCH] fix: better update proxy version (#10614) --- packages/svelte/src/internal/client/proxy.js | 22 +++++++++++-------- .../svelte/src/internal/client/runtime.js | 2 +- 2 files changed, 14 insertions(+), 10 deletions(-) diff --git a/packages/svelte/src/internal/client/proxy.js b/packages/svelte/src/internal/client/proxy.js index 4f26c6bd42..8365fbbeb8 100644 --- a/packages/svelte/src/internal/client/proxy.js +++ b/packages/svelte/src/internal/client/proxy.js @@ -2,12 +2,11 @@ import { DEV } from 'esm-env'; import { get, set, - update, updating_derived, batch_inspect, current_component_context, - set_ignore_mutation_validation, - untrack + untrack, + set_signal_value } from './runtime.js'; import { effect_active } from './reactivity/computations.js'; import { @@ -150,6 +149,15 @@ export function unstate(value) { ); } +/** + * @param {import('./types.js').Signal} signal + * @param {1 | -1} [d] + */ +function update_version(signal, d = 1) { + const value = untrack(() => get(signal)); + set_signal_value(signal, value + d); +} + /** @type {ProxyHandler>} */ const state_proxy_handler = { defineProperty(target, prop, descriptor) { @@ -185,9 +193,7 @@ const state_proxy_handler = { if (s !== undefined) set(s, UNINITIALIZED); if (boolean) { - set_ignore_mutation_validation(true); - update(metadata.v); - set_ignore_mutation_validation(false); + update_version(metadata.v); } return boolean; @@ -308,9 +314,7 @@ const state_proxy_handler = { set(ls, length); } } - set_ignore_mutation_validation(true); - update(metadata.v); - set_ignore_mutation_validation(false); + update_version(metadata.v); } return true; diff --git a/packages/svelte/src/internal/client/runtime.js b/packages/svelte/src/internal/client/runtime.js index 6ecb818210..6aae3eedbb 100644 --- a/packages/svelte/src/internal/client/runtime.js +++ b/packages/svelte/src/internal/client/runtime.js @@ -1332,7 +1332,7 @@ export function inspect(get_value, inspect = console.log) { pre_effect(() => { const fn = () => { - const value = get_value().map((v) => deep_unstate(v)); + const value = untrack(() => get_value().map((v) => deep_unstate(v))); if (value.length === 2 && typeof value[1] === 'function' && !warned_inspect_changed) { // eslint-disable-next-line no-console console.warn(