From 936919acc4de98f2449065fd80787df5691c7104 Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Wed, 31 Jan 2024 02:37:58 +0000 Subject: [PATCH 1/2] fix: improve unstate handling of non enumerable properties --- .changeset/wise-radios-exercise.md | 5 +++++ packages/svelte/src/internal/client/proxy.js | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 .changeset/wise-radios-exercise.md diff --git a/.changeset/wise-radios-exercise.md b/.changeset/wise-radios-exercise.md new file mode 100644 index 000000000000..1d13af7758ee --- /dev/null +++ b/.changeset/wise-radios-exercise.md @@ -0,0 +1,5 @@ +--- +"svelte": patch +--- + +fix: improve unstate handling of non enumerable properties diff --git a/packages/svelte/src/internal/client/proxy.js b/packages/svelte/src/internal/client/proxy.js index 23440a56e4f5..52f7e9de9159 100644 --- a/packages/svelte/src/internal/client/proxy.js +++ b/packages/svelte/src/internal/client/proxy.js @@ -84,7 +84,7 @@ function unwrap(value, already_unwrapped = new Map()) { } else { /** @type {Record} */ const obj = {}; - const keys = object_keys(value); + const keys = Reflect.ownKeys(value); const descriptors = get_descriptors(value); already_unwrapped.set(value, obj); for (const key of keys) { From eb33bd195dedf793c45897b3970b8115fef3281a Mon Sep 17 00:00:00 2001 From: Simon H <5968653+dummdidumm@users.noreply.github.com> Date: Wed, 31 Jan 2024 12:33:38 +0100 Subject: [PATCH 2/2] Update packages/svelte/src/internal/client/proxy.js --- packages/svelte/src/internal/client/proxy.js | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/svelte/src/internal/client/proxy.js b/packages/svelte/src/internal/client/proxy.js index 52f7e9de9159..8add490a10c7 100644 --- a/packages/svelte/src/internal/client/proxy.js +++ b/packages/svelte/src/internal/client/proxy.js @@ -88,6 +88,7 @@ function unwrap(value, already_unwrapped = new Map()) { const descriptors = get_descriptors(value); already_unwrapped.set(value, obj); for (const key of keys) { + if (key === STATE_SYMBOL || (DEV && key === READONLY_SYMBOL)) continue; if (descriptors[key].get) { define_property(obj, key, descriptors[key]); } else {