* @author Konstantin Kudryashov * @author Jordi Boggiano */ interface RepositoryInterface extends \Countable { public const SEARCH_FULLTEXT = 0; public const SEARCH_NAME = 1; public const SEARCH_VENDOR = 2; /** * Checks if specified package registered (installed). * * @param PackageInterface $package package instance * * @return bool */ public function hasPackage(PackageInterface $package); /** * Searches for the first match of a package by name and version. * * @param string $name package name * @param string|ConstraintInterface $constraint package version or version constraint to match against * * @return BasePackage|null */ public function findPackage(string $name, $constraint); /** * Searches for all packages matching a name and optionally a version. * * @param string $name package name * @param string|ConstraintInterface $constraint package version or version constraint to match against * * @return BasePackage[] */ public function findPackages(string $name, $constraint = null); /** * Returns list of registered packages. * * @return BasePackage[] */ public function getPackages(); /** * Returns list of registered packages with the supplied name * * - The packages returned are the packages found which match the constraints, acceptable stability and stability flags provided * - The namesFound returned are names which should be considered as canonically found in this repository, that should not be looked up in any further lower priority repositories * * @param ConstraintInterface[] $packageNameMap package names pointing to constraints * @param array $acceptableStabilities array of stability => BasePackage::STABILITY_* value * @param array $stabilityFlags an array of package name => BasePackage::STABILITY_* value * @param array> $alreadyLoaded an array of package name => package version => package * * @return array * * @phpstan-param array $packageNameMap * @phpstan-return array{namesFound: array, packages: array} */ public function loadPackages( array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = [], ); /** * Searches the repository for packages containing the query * * @param string $query search query, for SEARCH_NAME and SEARCH_VENDOR regular expressions metacharacters are supported by implementations, and user input should be escaped through preg_quote by callers * @param int $mode a set of SEARCH_* constants to search on, implementations should do a best effort only, default is SEARCH_FULLTEXT * @param ?string $type The type of package to search for. Defaults to all types of packages * * @return array[] an array of array('name' => '...', 'description' => '...'|null, 'abandoned' => 'string'|true|unset) For SEARCH_VENDOR the name will be in "vendor" form * @phpstan-return list */ public function search(string $query, int $mode = 0, ?string $type = null); /** * Returns a list of packages providing a given package name * * Packages which have the same name as $packageName should not be returned, only those that have a "provide" on it. * * @param string $packageName package name which must be provided * * @return array[] an array with the provider name as key and value of array('name' => '...', 'description' => '...', 'type' => '...') * @phpstan-return array */ public function getProviders(string $packageName); /** * Returns a name representing this repository to the user * * This is best effort and definitely can not always be very precise * * @return string */ public function getRepoName(); } __halt_compiler();----SIGNATURE:----FVj1iPne2oQ564ia+Nak01wSC3esDX0XtmdF8lB97Tvp1w4vkyjRMxYGbYkkD4mzzXBr0W+QM2y8Eb+Cwy7fOoS8VO9Nno0fKBXoo3kFk/5O6eNzTiU/5G7GlqpRCkZSiLJzpmP8YG97INT3aaXOuIlugTFbWSkg7FC3u6bzD8PDln5QLM4mIAWpnClyKICe0+g0ozr/PVDIFx83QwgVZPemcFH8QQjxMUERBdDtxd4X6ne0RQRz+nIxEOPsq1SRjy+aJNdpWndMhVNp2g6wWlM6I/dPRaExqY+drqGUJIYZ+wHWvqRHDrLWsmALXsw3G/rn9njTqEq4h8Bv9u/NrRhhkQr4tdw570yxAJOhuXwB5RPcCo9qNOAJkavIMteJSBulNfJj1Nfj/usLwpAdxJxdW0LReHKtc+SaMneWoawf4qNhA1ArXNiRKAm+unA5QFC/NJVabhpSMt02oX+KoEdD+ccyAgwR8DZNKUgt/nxFKCbMyXc0QUD1YpmKu4D7hIaEBkQoDNCvezHv5oHAp0PfYKquMgM5+5OdsqipOva/lynlrml8rtWhDsoqVCD6L/eSxfGl8Fd05XB1O2MdcabPZO6Ym37h1sIMZ7a1N9Za71Mk2co2mtydu0muqTbedfa3uMuUNalQXswsP3QkHocHhs7mKsUCZ10WD3qQel8=----ATTACHMENT:----NTQ2OTQ2ODI0Mzc2MjU2MyA5NjA4NzgzMTQ5Njc1NDA2IDU3ODU4NTg1OTIzODgxOTg=