isVersionRetracted method

Future<bool> isVersionRetracted(
  1. String packageName,
  2. String version
)

Check whether a specific version of a package has been retracted.

Retracted versions include a retracted field set to true in the versions list returned by /api/packages/{package}.

Returns false on failure (assumes not retracted if we cannot verify).

Implementation

Future<bool> isVersionRetracted(
  String packageName,
  String version,
) async {
  try {
    final info = await getPackageInfo(packageName);
    final versions = info['versions'] as List<dynamic>? ?? [];
    for (final v in versions) {
      final versionMap = v as Map<String, dynamic>;
      if (versionMap['version'] == version) {
        return versionMap['retracted'] == true;
      }
    }
    // Version not found in the list — treat as not retracted.
    return false;
  } catch (e, stack) {
    Logger.error(
      'Error checking retraction status for $packageName@$version',
      e,
      stack,
    );
    return false;
  }
}