// A light summary of a .seq file for display (and to validate it parses before // we store it). Built on the parser + reconstruction reused from seqlab. import { parseSeq } from './parseSeq.ts' import { reconstruct } from './reconstruct.ts' export interface SeqSummary { ok: boolean error?: string name?: string version?: string numBlocks: number durationSec: number rfCount: number adcCount: number adcSamples: number signatureValid?: boolean } export function summarizeSeq(text: string): SeqSummary { try { const seq = parseSeq(text) const rec = reconstruct(seq) const nameDef = seq.definitions.get('Name') const name = typeof nameDef === 'string' ? nameDef : undefined return { ok: true, name, version: `${seq.version.major}.${seq.version.minor}.${seq.version.revision}`, numBlocks: seq.blocks.length, durationSec: rec.duration, rfCount: rec.stats.rfCount, adcCount: rec.stats.adcCount, adcSamples: rec.stats.adcSamples, signatureValid: seq.signature?.valid, } } catch (err) { return { ok: false, error: err instanceof Error ? err.message : String(err), numBlocks: 0, durationSec: 0, rfCount: 0, adcCount: 0, adcSamples: 0, } } }