UNPKG

@gmod/cram

Version:

read CRAM files with pure Javascript

28 lines (27 loc) 939 B
import { CramFileBlock } from '../file.ts'; import { DataType } from './dataSeriesTypes.ts'; import CramSlice from '../slice/index.ts'; export interface DataTypeMapping { byte: number; int: number; long: number; byteArray: Uint8Array; } export interface Cursor { bitPosition: 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7; bytePosition: number; } export interface Cursors { lastAlignmentStart: number; coreBlock: Cursor; externalBlocks: { map: Map<any, any>; getCursor: (contentId: number) => Cursor; }; } export default abstract class CramCodec<TResult extends DataType = DataType, TParameters = unknown> { parameters: TParameters; dataType: DataType; constructor(parameters: TParameters, dataType: TResult); abstract decode(slice: CramSlice, coreDataBlock: CramFileBlock, blocksByContentId: Record<number, CramFileBlock>, cursors: Cursors): DataTypeMapping[TResult] | undefined; }