Merge branch 'main' into shadow-root-options

pull/17088/head
Bladesheng 2 months ago
commit a30730cf2d

@ -0,0 +1,5 @@
---
'svelte': patch
---
fix: preserve symbols when creating derived rest properties

@ -763,12 +763,12 @@ export function set_signal_status(signal, status) {
}
/**
* @param {Record<string, unknown>} obj
* @param {string[]} keys
* @returns {Record<string, unknown>}
* @param {Record<string | symbol, unknown>} obj
* @param {Array<string | symbol>} keys
* @returns {Record<string | symbol, unknown>}
*/
export function exclude_from_object(obj, keys) {
/** @type {Record<string, unknown>} */
/** @type {Record<string | symbol, unknown>} */
var result = {};
for (var key in obj) {
@ -777,6 +777,12 @@ export function exclude_from_object(obj, keys) {
}
}
for (var symbol of Object.getOwnPropertySymbols(obj)) {
if (Object.propertyIsEnumerable.call(obj, symbol) && !keys.includes(symbol)) {
result[symbol] = obj[symbol];
}
}
return result;
}

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

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