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