UNPKG

@gmod/cram

Version:

read CRAM files with pure Javascript

29 lines 1.32 kB
import CramCodec from "./_base.js"; import { CramBufferOverrunError, CramMalformedError } from "../../errors.js"; export default class ByteArrayStopCodec extends CramCodec { decode(_slice, _coreDataBlock, blocksByContentId, cursors) { const { blockContentId } = this.parameters; const contentBlock = blocksByContentId[blockContentId]; if (!contentBlock) { throw new CramMalformedError(`no block found with content ID ${blockContentId}`); } const cursor = cursors.externalBlocks.getCursor(blockContentId); return this._decodeByteArray(contentBlock, cursor); } _decodeByteArray(contentBlock, cursor) { const dataBuffer = contentBlock.content; const { stopByte } = this.parameters; const startPosition = cursor.bytePosition; const len = dataBuffer.length; let stopPosition = startPosition; while (stopPosition < len && dataBuffer[stopPosition] !== stopByte) { stopPosition++; } if (stopPosition >= len) { throw new CramBufferOverrunError('byteArrayStop reading beyond length of data buffer?'); } cursor.bytePosition = stopPosition + 1; return dataBuffer.subarray(startPosition, stopPosition); } } //# sourceMappingURL=byteArrayStop.js.map