UNPKG

@gmod/bbi

Version:

Parser for BigWig/BigBed files

29 lines 1.46 kB
"use strict"; // from https://github.com/yume-chan/ya-webadb/blob/main/libraries/dataview-bigint-polyfill // license:MIT // needed for browsers including safari 14 Object.defineProperty(exports, "__esModule", { value: true }); exports.getBigInt64 = getBigInt64; exports.getBigUint64 = getBigUint64; const BigInt32 = BigInt(32); function getBigInt64(dataView, byteOffset, littleEndian) { const littleEndianMask = Number(!!littleEndian); const bigEndianMask = Number(!littleEndian); return ((BigInt(dataView.getInt32(byteOffset, littleEndian) * bigEndianMask + dataView.getInt32(byteOffset + 4, littleEndian) * littleEndianMask) << BigInt32) | BigInt(dataView.getUint32(byteOffset, littleEndian) * littleEndianMask + dataView.getUint32(byteOffset + 4, littleEndian) * bigEndianMask)); } function getBigUint64(dataView, byteOffset, littleEndian) { const a = dataView.getUint32(byteOffset, littleEndian); const b = dataView.getUint32(byteOffset + 4, littleEndian); const littleEndianMask = Number(!!littleEndian); const bigEndianMask = Number(!littleEndian); // This branch-less optimization is 77x faster than normal ternary operator. // and only 3% slower than native implementation // https://jsbench.me/p8kyhg1eqv/1 return ((BigInt(a * bigEndianMask + b * littleEndianMask) << BigInt32) | BigInt(a * littleEndianMask + b * bigEndianMask)); } //# sourceMappingURL=pure.js.map