UNPKG

@fast-check/poisoning

Version:

Set of utilities to ease detection and revert of poisoning

43 lines (42 loc) 1.34 kB
const safeArrayFrom = Array.from; const safeArrayMap = Array.prototype.map; const safeArrayPush = Array.prototype.push; const safeArrayShift = Array.prototype.shift; const safeArraySort = Array.prototype.sort; const safeObjectDefineProperty = Object.defineProperty; export const MapSymbol = Symbol('safe.map'); export const PushSymbol = Symbol('safe.push'); export const ShiftSymbol = Symbol('safe.shift'); export const SortSymbol = Symbol('safe.sort'); function toPoisoningFreeArray(instance) { safeObjectDefineProperty(instance, MapSymbol, { value: safeArrayMap, configurable: false, enumerable: false, writable: false, }); safeObjectDefineProperty(instance, PushSymbol, { value: safeArrayPush, configurable: false, enumerable: false, writable: false, }); safeObjectDefineProperty(instance, ShiftSymbol, { value: safeArrayShift, configurable: false, enumerable: false, writable: false, }); safeObjectDefineProperty(instance, SortSymbol, { value: safeArraySort, configurable: false, enumerable: false, writable: false, }); return instance; } export const PoisoningFreeArray = { from(arrayLike) { return toPoisoningFreeArray(safeArrayFrom(arrayLike)); }, };