open static method

Opens an existing session file, parsing and validating every line.

Implementation

static Future<JsonlSessionStorage> open(
  FileSystem fs,
  String filePath,
) async {
  final content = _fsOrThrow(
    await fs.readTextFile(filePath),
    'Failed to read session $filePath',
  );
  final lines = [
    for (final line in content.split('\n'))
      if (line.trim().isNotEmpty) line,
  ];
  if (lines.isEmpty) _invalidSession(filePath, 'missing session header');
  final header = _parseHeaderLine(lines.first, filePath);
  final entries = <SessionRecord>[];
  String? leafId;
  for (var i = 1; i < lines.length; i++) {
    final entry = _parseEntryLine(lines[i], filePath, i + 1);
    entries.add(entry);
    leafId = _leafIdAfter(entry);
  }
  return JsonlSessionStorage._(fs, filePath, header, entries, leafId);
}