@fast-check/poisoning
Version:
Set of utilities to ease detection and revert of poisoning
46 lines (45 loc) • 1.54 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.PoisoningFreeArray = exports.SortSymbol = exports.ShiftSymbol = exports.PushSymbol = exports.MapSymbol = void 0;
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;
exports.MapSymbol = Symbol('safe.map');
exports.PushSymbol = Symbol('safe.push');
exports.ShiftSymbol = Symbol('safe.shift');
exports.SortSymbol = Symbol('safe.sort');
function toPoisoningFreeArray(instance) {
safeObjectDefineProperty(instance, exports.MapSymbol, {
value: safeArrayMap,
configurable: false,
enumerable: false,
writable: false,
});
safeObjectDefineProperty(instance, exports.PushSymbol, {
value: safeArrayPush,
configurable: false,
enumerable: false,
writable: false,
});
safeObjectDefineProperty(instance, exports.ShiftSymbol, {
value: safeArrayShift,
configurable: false,
enumerable: false,
writable: false,
});
safeObjectDefineProperty(instance, exports.SortSymbol, {
value: safeArraySort,
configurable: false,
enumerable: false,
writable: false,
});
return instance;
}
exports.PoisoningFreeArray = {
from(arrayLike) {
return toPoisoningFreeArray(safeArrayFrom(arrayLike));
},
};