|
|
|
@ -96,11 +96,11 @@ export function rest_props(props, exclude, name) {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* The proxy handler for legacy $$restProps and $$props
|
|
|
|
* The proxy handler for legacy $$restProps and $$props
|
|
|
|
* @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Array<string | symbol>, special: Record<string | symbol, (v?: unknown) => unknown>, version: Source<number>, parent_effect: Effect }>}}
|
|
|
|
* @type {ProxyHandler<{ props: Record<string | symbol, unknown>, exclude: Set<string | symbol>, special: Record<string | symbol, (v?: unknown) => unknown>, version: Source<number>, parent_effect: Effect }>}}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
const legacy_rest_props_handler = {
|
|
|
|
const legacy_rest_props_handler = {
|
|
|
|
get(target, key) {
|
|
|
|
get(target, key) {
|
|
|
|
if (target.exclude.includes(key)) return;
|
|
|
|
if (target.exclude.has(key)) return;
|
|
|
|
get(target.version);
|
|
|
|
get(target.version);
|
|
|
|
return key in target.special ? target.special[key]() : target.props[key];
|
|
|
|
return key in target.special ? target.special[key]() : target.props[key];
|
|
|
|
},
|
|
|
|
},
|
|
|
|
@ -132,7 +132,7 @@ const legacy_rest_props_handler = {
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
getOwnPropertyDescriptor(target, key) {
|
|
|
|
getOwnPropertyDescriptor(target, key) {
|
|
|
|
if (target.exclude.includes(key)) return;
|
|
|
|
if (target.exclude.has(key)) return;
|
|
|
|
if (key in target.props) {
|
|
|
|
if (key in target.props) {
|
|
|
|
return {
|
|
|
|
return {
|
|
|
|
enumerable: true,
|
|
|
|
enumerable: true,
|
|
|
|
@ -143,23 +143,23 @@ const legacy_rest_props_handler = {
|
|
|
|
},
|
|
|
|
},
|
|
|
|
deleteProperty(target, key) {
|
|
|
|
deleteProperty(target, key) {
|
|
|
|
// Svelte 4 allowed for deletions on $$restProps
|
|
|
|
// Svelte 4 allowed for deletions on $$restProps
|
|
|
|
if (target.exclude.includes(key)) return true;
|
|
|
|
if (target.exclude.has(key)) return true;
|
|
|
|
target.exclude.push(key);
|
|
|
|
target.exclude.add(key);
|
|
|
|
update(target.version);
|
|
|
|
update(target.version);
|
|
|
|
return true;
|
|
|
|
return true;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
has(target, key) {
|
|
|
|
has(target, key) {
|
|
|
|
if (target.exclude.includes(key)) return false;
|
|
|
|
if (target.exclude.has(key)) return false;
|
|
|
|
return key in target.props;
|
|
|
|
return key in target.props;
|
|
|
|
},
|
|
|
|
},
|
|
|
|
ownKeys(target) {
|
|
|
|
ownKeys(target) {
|
|
|
|
return Reflect.ownKeys(target.props).filter((key) => !target.exclude.includes(key));
|
|
|
|
return Reflect.ownKeys(target.props).filter((key) => !target.exclude.has(key));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @param {Record<string, unknown>} props
|
|
|
|
* @param {Record<string, unknown>} props
|
|
|
|
* @param {string[]} exclude
|
|
|
|
* @param {Set<string>} exclude
|
|
|
|
* @returns {Record<string, unknown>}
|
|
|
|
* @returns {Record<string, unknown>}
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
export function legacy_rest_props(props, exclude) {
|
|
|
|
export function legacy_rest_props(props, exclude) {
|
|
|
|
|