File size: 818 Bytes
4e23b01 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | import { readFile } from 'node:fs/promises';
export interface ContextRecord {
readonly type: string;
readonly [key: string]: unknown;
}
export async function readWireRecords(wirePath: string): Promise<ContextRecord[]> {
const raw = await readFile(wirePath, 'utf8');
const lines = raw.split('\n');
const records: ContextRecord[] = [];
for (let i = 0; i < lines.length; i++) {
let line = lines[i]!;
if (line.endsWith('\r')) line = line.slice(0, -1);
if (line.length === 0) continue;
try {
records.push(JSON.parse(line) as ContextRecord);
} catch (parseError) {
if (i === lines.length - 1) break;
throw new Error(
`wire.jsonl: corrupted line ${i + 1} in ${wirePath}: ${String(parseError)}`,
{ cause: parseError },
);
}
}
return records;
}
|