@fast-check/poisoning
Version:
Set of utilities to ease detection and revert of poisoning
27 lines (26 loc) • 749 B
JavaScript
const SSet = Set;
const safeSetAdd = Set.prototype.add;
const safeSetHas = Set.prototype.has;
const safeObjectDefineProperty = Object.defineProperty;
export const AddSymbol = Symbol('safe.add');
export const HasSymbol = Symbol('safe.has');
function toPoisoningFreeSet(instance) {
safeObjectDefineProperty(instance, AddSymbol, {
value: safeSetAdd,
configurable: false,
enumerable: false,
writable: false,
});
safeObjectDefineProperty(instance, HasSymbol, {
value: safeSetHas,
configurable: false,
enumerable: false,
writable: false,
});
return instance;
}
export const PoisoningFreeSet = {
from(ins) {
return toPoisoningFreeSet(new SSet(ins));
},
};