import 'client_hash_entry.dart'; import 'client_manifest_file.dart'; final class ClientManifest { final List files; final String buildHash; const ClientManifest({required this.files, required this.buildHash}); factory ClientManifest.fromJson(Map json) { final files = ((json['files'] as List? ?? const []) .whereType>() .map(ClientManifestFile.fromJson) .toList()) .cast(); return ClientManifest(files: files, buildHash: computeBuildHash(files)); } Map get filesByPath => { for (final file in files) normalizeClientPath(file.path): file, }; int get totalSize => files.fold(0, (sum, file) => sum + file.size); }