@r1tsu/payload
Version:
28 lines (27 loc) • 1.09 kB
JavaScript
/**
* Creates a proxy for the given object that has its own property
*/ export default function isolateObjectProperty(object, key) {
const delegate = {};
const handler = {
deleteProperty (target, p) {
return Reflect.deleteProperty(p === key ? delegate : target, p);
},
get (target, p, receiver) {
return Reflect.get(p === key ? delegate : target, p, receiver);
},
has (target, p) {
return Reflect.has(p === key ? delegate : target, p);
},
set (target, p, newValue, receiver) {
if (p === key) {
// in case of transactionID we must ignore any receiver, because
// "If provided and target does not have a setter for propertyKey, the property will be set on receiver instead."
return Reflect.set(delegate, p, newValue);
} else {
return Reflect.set(target, p, newValue, receiver);
}
}
};
return new Proxy(object, handler);
}
//# sourceMappingURL=isolateObjectProperty.js.map