fix: do not spread non-enumerable symbols (#17097)

pull/15633/merge
7nik 4 days ago committed by GitHub
parent 8ebbb3c7bc
commit b7625fd42c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -778,7 +778,7 @@ export function exclude_from_object(obj, keys) {
}
for (var symbol of Object.getOwnPropertySymbols(obj)) {
if (!keys.includes(symbol)) {
if (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) {
result[symbol] = obj[symbol];
}
}

@ -1,5 +1,5 @@
import { test } from '../../test';
export default test({
html: `<p>42</p>`
html: `<p>true false</p>`
});

@ -1,8 +1,11 @@
<script>
const symbol = Symbol();
const symbol1 = Symbol();
const symbol2 = Symbol();
let a = { [symbol1]: 42 };
Object.defineProperty(a, symbol2, { enumerable: false, value: "nope" })
let a = { [symbol]: 42 };
let { ...b } = $derived(a);
</script>
<p>{b[symbol]}</p>
<p>{symbol1 in b} {symbol2 in b}</p>

Loading…
Cancel
Save