/**
  * {@inheritdoc}
  */
 public function whatProvides(Pool $pool, $name, $bypassFilters = false)
 {
     if (null !== ($provides = $this->findWhatProvides($name))) {
         return $provides;
     }
     try {
         $repoName = Util::convertAliasName($name);
         $packageName = Util::cleanPackageName($repoName);
         $packageUrl = str_replace('%package%', $packageName, $this->lazyProvidersUrl);
         $cacheName = $packageName . '-' . sha1($packageName) . '-package.json';
         $data = $this->fetchFile($packageUrl, $cacheName);
         $repo = $this->createVcsRepositoryConfig($data, Util::cleanPackageName($name));
         $repo['vcs-package-filter'] = $this->packageFilter;
         $repo['vcs-driver-options'] = Util::getArrayValue($this->repoConfig, 'vcs-driver-options', array());
         Util::addRepository($this->io, $this->rm, $this->repos, $name, $repo, $pool);
         $this->providers[$name] = array();
     } catch (\Exception $ex) {
         $this->whatProvidesManageException($pool, $name, $ex);
     }
     return $this->providers[$name];
 }
 /**
  * Create the repository config.
  *
  * @param RepositoryManager $rm        The repository manager
  * @param VcsPackageFilter  $filter    The vcs package filter
  * @param array             $extra     The composer extra
  * @param string            $assetType The asset type
  *
  * @return array
  */
 public static function createRepositoryConfig(RepositoryManager $rm, VcsPackageFilter $filter, array $extra, $assetType)
 {
     $opts = Util::getArrayValue($extra, 'asset-registry-options', array());
     return array('repository-manager' => $rm, 'vcs-package-filter' => $filter, 'asset-options' => static::createAssetOptions($opts, $assetType), 'vcs-driver-options' => Util::getArrayValue($extra, 'asset-vcs-driver-options', array()));
 }