UNPKG

@fast-check/poisoning

Version:

Set of utilities to ease detection and revert of poisoning

43 lines (42 loc) 1.27 kB
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; export const GetSymbol = Symbol('safe.get'); export const HasSymbol = Symbol('safe.has'); export const EntriesSymbol = Symbol('safe.entries'); export const SetSymbol = Symbol('safe.set'); function toPoisoningFreeMap(instance) { safeObjectDefineProperty(instance, GetSymbol, { value: safeMapGet, configurable: false, enumerable: false, writable: false, }); safeObjectDefineProperty(instance, HasSymbol, { value: safeMapHas, configurable: false, enumerable: false, writable: false, }); safeObjectDefineProperty(instance, EntriesSymbol, { value: safeMapEntries, configurable: false, enumerable: false, writable: false, }); safeObjectDefineProperty(instance, SetSymbol, { value: safeMapSet, configurable: false, enumerable: false, writable: false, }); return instance; } export const PoisoningFreeMap = { from(ins) { return toPoisoningFreeMap(new SMap(ins)); }, };