Constraint parsing cache */ private static $constraints = []; /** * @inheritDoc */ public function parseConstraints($constraints): ConstraintInterface { if (!isset(self::$constraints[$constraints])) { self::$constraints[$constraints] = parent::parseConstraints($constraints); } return self::$constraints[$constraints]; } /** * Parses an array of strings representing package/version pairs. * * The parsing results in an array of arrays, each of which * contain a 'name' key with value and optionally a 'version' key with value. * * @param string[] $pairs a set of package/version pairs separated by ":", "=" or " " * * @return list */ public function parseNameVersionPairs(array $pairs): array { $pairs = array_values($pairs); $result = []; for ($i = 0, $count = count($pairs); $i < $count; $i++) { $pair = Preg::replace('{^([^=: ]+)[=: ](.*)$}', '$1 $2', trim($pairs[$i])); if (false === strpos($pair, ' ') && isset($pairs[$i + 1]) && false === strpos($pairs[$i + 1], '/') && !Preg::isMatch('{(?<=[a-z0-9_/-])\*|\*(?=[a-z0-9_/-])}i', $pairs[$i + 1]) && !PlatformRepository::isPlatformPackage($pairs[$i + 1])) { $pair .= ' '.$pairs[$i + 1]; $i++; } if (strpos($pair, ' ')) { [$name, $version] = explode(' ', $pair, 2); $result[] = ['name' => $name, 'version' => $version]; } else { $result[] = ['name' => $pair]; } } return $result; } public static function isUpgrade(string $normalizedFrom, string $normalizedTo): bool { if ($normalizedFrom === $normalizedTo) { return true; } if (in_array($normalizedFrom, ['dev-master', 'dev-trunk', 'dev-default'], true)) { $normalizedFrom = VersionParser::DEFAULT_BRANCH_ALIAS; } if (in_array($normalizedTo, ['dev-master', 'dev-trunk', 'dev-default'], true)) { $normalizedTo = VersionParser::DEFAULT_BRANCH_ALIAS; } if (strpos($normalizedFrom, 'dev-') === 0 || strpos($normalizedTo, 'dev-') === 0) { return true; } $sorted = Semver::sort([$normalizedTo, $normalizedFrom]); return $sorted[0] === $normalizedFrom; } } __halt_compiler();----SIGNATURE:----xIVUE22iQKU9R28BHvWZZdFxRMou/6QgnuE2VMV9jHbA35ziYouhfWFDNdYJRbThM63ZV5PjXcRAFJrQlMH+qh3R+cxPRgWYRgzxy65gybfMvgU5BZo2X2LJCOpu8QD1vt4zoqJ2585Nwc6/SjTvrxiM6gTPnalau0v0yWlZdSm1FOa3xaR8TLVWIXPkX0oItd9kFN+qCPllnALFiVK+5HwAn4UcH8F+7NALG7rqTrRinG48n9baU2JoRpNdD5kJC7Jf1CXq+PZs4kpSz+GQe3R5QOno8m1PqlN7+3lc7tL3uZLFylQ8P5oFyUUgAF9/oCB+7LkfWNME21BG/2bnjEiJE6cbcZWLg6qpZvE48LriTbPt/mGpkhcmwbCRt2ojR4suc0DWDWOCkXiLxBvMJdbEm5CJj9PO3dySH1EIU6pPxIx4JEGSxLews9X8vpYGFafH4AEIOdGPnDEHm/qI90buALGiYzMkDfeIyLAiaM1nyBe6cfIdWVkS2CzCBKC4V18Kwvgol8iz/bW2C+msBfgsvazgWizL2Nu1rH0reTpDovuBSHW91YvsGKtzi1YR0f0rsZDk1V9IYsuDOkfHf05nwizekKhPIK7hA/PZ0UPtNWXT+vk8mtbddPvBVn/HDOJlW6vSz7aEG+UJg/r4A7BYuTNb4UfRjVilwSj6qVU=----ATTACHMENT:----MzMyNDk5NjU4ODIxODA4OSA1MjExMDg4MjY0OTY3Mzk3IDg3MzA3MTQ2NzU1Mjk0Mg==