@astro-utils/forms
Version:
Server component for Astro (call server functions from client side with validation and state management)
34 lines (33 loc) • 840 B
JavaScript
export function diffProps(object1, object2, skipKeys = []) {
const diff = {};
for (const [key, value] of Object.entries(object2)) {
if (skipKeys.includes(key))
continue;
if (JSON.stringify(object1[key]) !== JSON.stringify(value)) {
diff[key] = value;
}
}
return diff;
}
export function getSomeProps(object, props) {
if (props === true) {
return object;
}
const result = {};
for (const prop of props) {
result[prop] = object[prop];
}
return result;
}
export function omitProps(object, props) {
if (props === true) {
return {};
}
const result = { ...object };
for (const prop in object) {
if (props.includes(prop) || prop[0] === '_') {
delete result[prop];
}
}
return result;
}