@fast-check/poisoning
Version:
Set of utilities to ease detection and revert of poisoning
46 lines (45 loc) • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PoisoningFreeMap = exports.SetSymbol = exports.EntriesSymbol = exports.HasSymbol = exports.GetSymbol = void 0;
const SMap = Map;
const safeMapGet = Map.prototype.get;
const safeMapHas = Map.prototype.has;
const safeMapEntries = Map.prototype.entries;
const safeMapSet = Map.prototype.set;
const safeObjectDefineProperty = Object.defineProperty;
exports.GetSymbol = Symbol('safe.get');
exports.HasSymbol = Symbol('safe.has');
exports.EntriesSymbol = Symbol('safe.entries');
exports.SetSymbol = Symbol('safe.set');
function toPoisoningFreeMap(instance) {
safeObjectDefineProperty(instance, exports.GetSymbol, {
value: safeMapGet,
configurable: false,
enumerable: false,
writable: false,
});
safeObjectDefineProperty(instance, exports.HasSymbol, {
value: safeMapHas,
configurable: false,
enumerable: false,
writable: false,
});
safeObjectDefineProperty(instance, exports.EntriesSymbol, {
value: safeMapEntries,
configurable: false,
enumerable: false,
writable: false,
});
safeObjectDefineProperty(instance, exports.SetSymbol, {
value: safeMapSet,
configurable: false,
enumerable: false,
writable: false,
});
return instance;
}
exports.PoisoningFreeMap = {
from(ins) {
return toPoisoningFreeMap(new SMap(ins));
},
};