/// Utilities for handling parsed JSON.
///
/// It is recommended to import this library with a prefix.

/// Expects [map] to contain [key], a String key.
///
/// If [map] has key [key], return the value paired with [key]; otherwise throw
/// a FormatException.
dynamic expectKey(Map<Object?, Object?> map, String key) {
  if (map.containsKey(key)) {
    return map[key];
  }
  throw FormatException(
      'Unexpected `pub outdated` JSON output: missing key ($key)', map);
}

/// Expects [object] to be of type [T].
///
/// If [object] is of type [T], return it; otherwise throw a FormatException
/// with [errorKey] in the message.
T expectType<T>(Object? object, String errorKey) {
  if (object is T) {
    return object;
  }
  throw FormatException(
      'Unexpected `pub outdated` JSON output: expected a '
      '$T at "$errorKey", but got a ${object.runtimeType}',
      object);
}
