From edf468a912bd3aa0f15d19a36134b0259839f34a Mon Sep 17 00:00:00 2001 From: Dominic Gannaway Date: Tue, 10 Dec 2024 17:16:43 +0000 Subject: [PATCH] fix: ensure $state.snapshot clones holey arrays correctly --- packages/svelte/src/internal/shared/clone.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/packages/svelte/src/internal/shared/clone.js b/packages/svelte/src/internal/shared/clone.js index a388ea10fa..030a95e4b1 100644 --- a/packages/svelte/src/internal/shared/clone.js +++ b/packages/svelte/src/internal/shared/clone.js @@ -54,23 +54,24 @@ export function snapshot(value, skip_warning = false) { */ function clone(value, cloned, path, paths, original = null) { if (typeof value === 'object' && value !== null) { - const unwrapped = cloned.get(value); + var unwrapped = cloned.get(value); if (unwrapped !== undefined) return unwrapped; if (value instanceof Map) return /** @type {Snapshot} */ (new Map(value)); if (value instanceof Set) return /** @type {Snapshot} */ (new Set(value)); if (is_array(value)) { - const copy = /** @type {Snapshot} */ (Array(value.length)); + var copy = /** @type {Snapshot} */ (Array(value.length)); cloned.set(value, copy); if (original !== null) { cloned.set(original, copy); } - for (let i = 0; i < value.length; i += 1) { - if (value[i] !== undefined) { - copy[i] = clone(value[i], cloned, DEV ? `${path}[${i}]` : path, paths); + for (var i = 0; i < value.length; i += 1) { + var element = value[i]; + if (element !== undefined) { + copy[i] = clone(element, cloned, DEV ? `${path}[${i}]` : path, paths); } } @@ -79,7 +80,7 @@ function clone(value, cloned, path, paths, original = null) { if (get_prototype_of(value) === object_prototype) { /** @type {Snapshot} */ - const copy = {}; + copy = {}; cloned.set(value, copy); if (original !== null) {