// Copyright (c) 2023, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. import 'package:pub_semver/pub_semver.dart'; extension VersionConstraintExtension on VersionConstraint { /// The same constraint, but only with major, minor, patch fields. /// /// Excludes pre-release and build fields, useful when developing against /// not yet release version of Dart SDK. VersionConstraint get withoutPreRelease { switch (this) { case Version version: return version.withoutPreRelease; case VersionRange range: return VersionRange( min: range.min?.withoutPreRelease, includeMin: range.includeMin, max: range.max?.withoutPreRelease, includeMax: range.includeMax, ); default: return this; } } bool requiresAtLeast(Version version) { var self = this; if (self is Version) { return self >= version; } if (self is VersionRange) { var min = self.min; if (min == null) { return false; } else { return min >= version; } } // We don't know, but will not complain. return true; } } extension VersionExtension on Version { /// The same version, but only with major, minor, patch fields. /// /// Excludes pre-release and build fields, useful when developing against /// not yet release version of Dart SDK. Version get withoutPreRelease { return Version(major, minor, patch); } }