mirror of
				https://gitee.com/zoujingli/ThinkAdmin.git
				synced 2025-10-31 04:02:07 +08:00 
			
		
		
		
	ComposerUpdate
This commit is contained in:
		
							parent
							
								
									612077be96
								
							
						
					
					
						commit
						aa03aa6391
					
				
							
								
								
									
										4
									
								
								vendor/composer/ClassLoader.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/composer/ClassLoader.php
									
									
									
									
										vendored
									
									
								
							| @ -338,7 +338,7 @@ class ClassLoader | ||||
|      * Loads the given class or interface. | ||||
|      * | ||||
|      * @param  string    $class The name of the class | ||||
|      * @return bool|null True if loaded, null otherwise | ||||
|      * @return true|null True if loaded, null otherwise | ||||
|      */ | ||||
|     public function loadClass($class) | ||||
|     { | ||||
| @ -347,6 +347,8 @@ class ClassLoader | ||||
| 
 | ||||
|             return true; | ||||
|         } | ||||
| 
 | ||||
|         return null; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|  | ||||
							
								
								
									
										733
									
								
								vendor/composer/InstalledVersions.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										733
									
								
								vendor/composer/InstalledVersions.php
									
									
									
									
										vendored
									
									
								
							| @ -1,444 +1,325 @@ | ||||
| <?php | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /* | ||||
|  * This file is part of Composer. | ||||
|  * | ||||
|  * (c) Nils Adermann <naderman@naderman.de> | ||||
|  *     Jordi Boggiano <j.boggiano@seld.be> | ||||
|  * | ||||
|  * For the full copyright and license information, please view the LICENSE | ||||
|  * file that was distributed with this source code. | ||||
|  */ | ||||
| 
 | ||||
| namespace Composer; | ||||
| 
 | ||||
| use Composer\Autoload\ClassLoader; | ||||
| use Composer\Semver\VersionParser; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| /** | ||||
|  * This class is copied in every Composer installed project and available to all | ||||
|  * | ||||
|  * See also https://getcomposer.org/doc/07-runtime.md#installed-versions
 | ||||
|  * | ||||
|  * To require it's presence, you can require `composer-runtime-api ^2.0` | ||||
|  */ | ||||
| class InstalledVersions | ||||
| { | ||||
| private static $installed = array ( | ||||
|   'root' =>  | ||||
|   array ( | ||||
|     'pretty_version' => '6.x-dev', | ||||
|     'version' => '6.9999999.9999999.9999999-dev', | ||||
|     'aliases' =>  | ||||
|     array ( | ||||
|     ), | ||||
|     'reference' => 'd53fed33e1f513f043cccc0fbb69b48c0d9fbe41', | ||||
|     'name' => 'zoujingli/thinkadmin', | ||||
|   ), | ||||
|   'versions' =>  | ||||
|   array ( | ||||
|     'endroid/qr-code' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.9.3', | ||||
|       'version' => '1.9.3.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'c9644bec2a9cc9318e98d1437de3c628dcd1ef93', | ||||
|     ), | ||||
|     'league/flysystem' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.70', | ||||
|       'version' => '1.0.70.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '585824702f534f8d3cf7fab7225e8466cc4b7493', | ||||
|     ), | ||||
|     'league/flysystem-cached-adapter' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.1.0', | ||||
|       'version' => '1.1.0.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff', | ||||
|     ), | ||||
|     'psr/cache' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.1', | ||||
|       'version' => '1.0.1.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', | ||||
|     ), | ||||
|     'psr/container' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.0', | ||||
|       'version' => '1.0.0.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f', | ||||
|     ), | ||||
|     'psr/log' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.1.4', | ||||
|       'version' => '1.1.4.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', | ||||
|     ), | ||||
|     'psr/simple-cache' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.1', | ||||
|       'version' => '1.0.1.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', | ||||
|     ), | ||||
|     'symfony/options-resolver' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v3.4.47', | ||||
|       'version' => '3.4.47.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744', | ||||
|     ), | ||||
|     'topthink/framework' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v6.0.8', | ||||
|       'version' => '6.0.8.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '4789343672aef06d571d556da369c0e156609bce', | ||||
|     ), | ||||
|     'topthink/think-helper' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v3.1.4', | ||||
|       'version' => '3.1.4.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'c28d37743bda4a0455286ca85b17b5791d626e10', | ||||
|     ), | ||||
|     'topthink/think-orm' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v2.0.40', | ||||
|       'version' => '2.0.40.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '1119d979b850849f3725856460cf108eec1c3eb8', | ||||
|     ), | ||||
|     'topthink/think-template' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v2.0.8', | ||||
|       'version' => '2.0.8.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'abfc293f74f9ef5127b5c416310a01fe42e59368', | ||||
|     ), | ||||
|     'topthink/think-view' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v1.0.14', | ||||
|       'version' => '1.0.14.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'edce0ae2c9551ab65f9e94a222604b0dead3576d', | ||||
|     ), | ||||
|     'zoujingli/ip2region' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v1.0.10', | ||||
|       'version' => '1.0.10.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '453480d0ab5b6fdbdf4aa400b7598a10ff2dc5c0', | ||||
|     ), | ||||
|     'zoujingli/think-library' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v6.0.x-dev', | ||||
|       'version' => '6.0.9999999.9999999-dev', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|         0 => '9999999-dev', | ||||
|       ), | ||||
|       'reference' => 'dab37cf567def670988c452943022ff1b8bb4176', | ||||
|     ), | ||||
|     'zoujingli/thinkadmin' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '6.x-dev', | ||||
|       'version' => '6.9999999.9999999.9999999-dev', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd53fed33e1f513f043cccc0fbb69b48c0d9fbe41', | ||||
|     ), | ||||
|     'zoujingli/wechat-developer' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v1.2.31', | ||||
|       'version' => '1.2.31.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '0cf699c725f69d66657a50e60d22f71c9e5a5e16', | ||||
|     ), | ||||
|   ), | ||||
| ); | ||||
| private static $canGetVendors; | ||||
| private static $installedByVendor = array(); | ||||
|     private static $installed; | ||||
|     private static $canGetVendors; | ||||
|     private static $installedByVendor = array(); | ||||
| 
 | ||||
|     /** | ||||
|      * Returns a list of all package names which are present, either by being installed, replaced or provided | ||||
|      * | ||||
|      * @return string[] | ||||
|      * @psalm-return list<string> | ||||
|      */ | ||||
|     public static function getInstalledPackages() | ||||
|     { | ||||
|         $packages = array(); | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             $packages[] = array_keys($installed['versions']); | ||||
|         } | ||||
| 
 | ||||
|         if (1 === \count($packages)) { | ||||
|             return $packages[0]; | ||||
|         } | ||||
| 
 | ||||
|         return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns a list of all package names with a specific type e.g. 'library' | ||||
|      * | ||||
|      * @param  string   $type | ||||
|      * @return string[] | ||||
|      * @psalm-return list<string> | ||||
|      */ | ||||
|     public static function getInstalledPackagesByType($type) | ||||
|     { | ||||
|         $packagesByType = array(); | ||||
| 
 | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             foreach ($installed['versions'] as $name => $package) { | ||||
|                 if (isset($package['type']) && $package['type'] === $type) { | ||||
|                     $packagesByType[] = $name; | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return $packagesByType; | ||||
|     } | ||||
| 
 | ||||
| public static function getInstalledPackages() | ||||
| { | ||||
| $packages = array(); | ||||
| foreach (self::getInstalled() as $installed) { | ||||
| $packages[] = array_keys($installed['versions']); | ||||
| } | ||||
| 
 | ||||
| if (1 === \count($packages)) { | ||||
| return $packages[0]; | ||||
| } | ||||
| 
 | ||||
| return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function isInstalled($packageName) | ||||
| { | ||||
| foreach (self::getInstalled() as $installed) { | ||||
| if (isset($installed['versions'][$packageName])) { | ||||
| return true; | ||||
| } | ||||
| } | ||||
| 
 | ||||
| return false; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function satisfies(VersionParser $parser, $packageName, $constraint) | ||||
| { | ||||
| $constraint = $parser->parseConstraints($constraint); | ||||
| $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); | ||||
| 
 | ||||
| return $provided->matches($constraint); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function getVersionRanges($packageName) | ||||
| { | ||||
| foreach (self::getInstalled() as $installed) { | ||||
| if (!isset($installed['versions'][$packageName])) { | ||||
| continue; | ||||
| } | ||||
| 
 | ||||
| $ranges = array(); | ||||
| if (isset($installed['versions'][$packageName]['pretty_version'])) { | ||||
| $ranges[] = $installed['versions'][$packageName]['pretty_version']; | ||||
| } | ||||
| if (array_key_exists('aliases', $installed['versions'][$packageName])) { | ||||
| $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); | ||||
| } | ||||
| if (array_key_exists('replaced', $installed['versions'][$packageName])) { | ||||
| $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); | ||||
| } | ||||
| if (array_key_exists('provided', $installed['versions'][$packageName])) { | ||||
| $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); | ||||
| } | ||||
| 
 | ||||
| return implode(' || ', $ranges); | ||||
| } | ||||
| 
 | ||||
| throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function getVersion($packageName) | ||||
| { | ||||
| foreach (self::getInstalled() as $installed) { | ||||
| if (!isset($installed['versions'][$packageName])) { | ||||
| continue; | ||||
| } | ||||
| 
 | ||||
| if (!isset($installed['versions'][$packageName]['version'])) { | ||||
| return null; | ||||
| } | ||||
| 
 | ||||
| return $installed['versions'][$packageName]['version']; | ||||
| } | ||||
| 
 | ||||
| throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function getPrettyVersion($packageName) | ||||
| { | ||||
| foreach (self::getInstalled() as $installed) { | ||||
| if (!isset($installed['versions'][$packageName])) { | ||||
| continue; | ||||
| } | ||||
| 
 | ||||
| if (!isset($installed['versions'][$packageName]['pretty_version'])) { | ||||
| return null; | ||||
| } | ||||
| 
 | ||||
| return $installed['versions'][$packageName]['pretty_version']; | ||||
| } | ||||
| 
 | ||||
| throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function getReference($packageName) | ||||
| { | ||||
| foreach (self::getInstalled() as $installed) { | ||||
| if (!isset($installed['versions'][$packageName])) { | ||||
| continue; | ||||
| } | ||||
| 
 | ||||
| if (!isset($installed['versions'][$packageName]['reference'])) { | ||||
| return null; | ||||
| } | ||||
| 
 | ||||
| return $installed['versions'][$packageName]['reference']; | ||||
| } | ||||
| 
 | ||||
| throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function getRootPackage() | ||||
| { | ||||
| $installed = self::getInstalled(); | ||||
| 
 | ||||
| return $installed[0]['root']; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function getRawData() | ||||
| { | ||||
| @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); | ||||
| 
 | ||||
| return self::$installed; | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function getAllRawData() | ||||
| { | ||||
| return self::getInstalled(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| public static function reload($data) | ||||
| { | ||||
| self::$installed = $data; | ||||
| self::$installedByVendor = array(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| private static function getInstalled() | ||||
| { | ||||
| if (null === self::$canGetVendors) { | ||||
| self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); | ||||
| } | ||||
| 
 | ||||
| $installed = array(); | ||||
| 
 | ||||
| if (self::$canGetVendors) { | ||||
| foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { | ||||
| if (isset(self::$installedByVendor[$vendorDir])) { | ||||
| $installed[] = self::$installedByVendor[$vendorDir]; | ||||
| } elseif (is_file($vendorDir.'/composer/installed.php')) { | ||||
| $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; | ||||
| } | ||||
| } | ||||
| } | ||||
| 
 | ||||
| $installed[] = self::$installed; | ||||
| 
 | ||||
| return $installed; | ||||
| } | ||||
|     /** | ||||
|      * Checks whether the given package is installed | ||||
|      * | ||||
|      * This also returns true if the package name is provided or replaced by another package | ||||
|      * | ||||
|      * @param  string $packageName | ||||
|      * @param  bool   $includeDevRequirements | ||||
|      * @return bool | ||||
|      */ | ||||
|     public static function isInstalled($packageName, $includeDevRequirements = true) | ||||
|     { | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             if (isset($installed['versions'][$packageName])) { | ||||
|                 return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         return false; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Checks whether the given package satisfies a version constraint | ||||
|      * | ||||
|      * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: | ||||
|      * | ||||
|      *   Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') | ||||
|      * | ||||
|      * @param  VersionParser $parser      Install composer/semver to have access to this class and functionality | ||||
|      * @param  string        $packageName | ||||
|      * @param  string|null   $constraint  A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package | ||||
|      * @return bool | ||||
|      */ | ||||
|     public static function satisfies(VersionParser $parser, $packageName, $constraint) | ||||
|     { | ||||
|         $constraint = $parser->parseConstraints($constraint); | ||||
|         $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); | ||||
| 
 | ||||
|         return $provided->matches($constraint); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns a version constraint representing all the range(s) which are installed for a given package | ||||
|      * | ||||
|      * It is easier to use this via isInstalled() with the $constraint argument if you need to check | ||||
|      * whether a given version of a package is installed, and not just whether it exists | ||||
|      * | ||||
|      * @param  string $packageName | ||||
|      * @return string Version constraint usable with composer/semver | ||||
|      */ | ||||
|     public static function getVersionRanges($packageName) | ||||
|     { | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             if (!isset($installed['versions'][$packageName])) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             $ranges = array(); | ||||
|             if (isset($installed['versions'][$packageName]['pretty_version'])) { | ||||
|                 $ranges[] = $installed['versions'][$packageName]['pretty_version']; | ||||
|             } | ||||
|             if (array_key_exists('aliases', $installed['versions'][$packageName])) { | ||||
|                 $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); | ||||
|             } | ||||
|             if (array_key_exists('replaced', $installed['versions'][$packageName])) { | ||||
|                 $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); | ||||
|             } | ||||
|             if (array_key_exists('provided', $installed['versions'][$packageName])) { | ||||
|                 $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); | ||||
|             } | ||||
| 
 | ||||
|             return implode(' || ', $ranges); | ||||
|         } | ||||
| 
 | ||||
|         throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param  string      $packageName | ||||
|      * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present | ||||
|      */ | ||||
|     public static function getVersion($packageName) | ||||
|     { | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             if (!isset($installed['versions'][$packageName])) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             if (!isset($installed['versions'][$packageName]['version'])) { | ||||
|                 return null; | ||||
|             } | ||||
| 
 | ||||
|             return $installed['versions'][$packageName]['version']; | ||||
|         } | ||||
| 
 | ||||
|         throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param  string      $packageName | ||||
|      * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present | ||||
|      */ | ||||
|     public static function getPrettyVersion($packageName) | ||||
|     { | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             if (!isset($installed['versions'][$packageName])) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             if (!isset($installed['versions'][$packageName]['pretty_version'])) { | ||||
|                 return null; | ||||
|             } | ||||
| 
 | ||||
|             return $installed['versions'][$packageName]['pretty_version']; | ||||
|         } | ||||
| 
 | ||||
|         throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param  string      $packageName | ||||
|      * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference | ||||
|      */ | ||||
|     public static function getReference($packageName) | ||||
|     { | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             if (!isset($installed['versions'][$packageName])) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             if (!isset($installed['versions'][$packageName]['reference'])) { | ||||
|                 return null; | ||||
|             } | ||||
| 
 | ||||
|             return $installed['versions'][$packageName]['reference']; | ||||
|         } | ||||
| 
 | ||||
|         throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param  string      $packageName | ||||
|      * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. | ||||
|      */ | ||||
|     public static function getInstallPath($packageName) | ||||
|     { | ||||
|         foreach (self::getInstalled() as $installed) { | ||||
|             if (!isset($installed['versions'][$packageName])) { | ||||
|                 continue; | ||||
|             } | ||||
| 
 | ||||
|             return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; | ||||
|         } | ||||
| 
 | ||||
|         throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return array | ||||
|      * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string} | ||||
|      */ | ||||
|     public static function getRootPackage() | ||||
|     { | ||||
|         $installed = self::getInstalled(); | ||||
| 
 | ||||
|         return $installed[0]['root']; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns the raw installed.php data for custom implementations | ||||
|      * | ||||
|      * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. | ||||
|      * @return array[] | ||||
|      * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} | ||||
|      */ | ||||
|     public static function getRawData() | ||||
|     { | ||||
|         @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); | ||||
| 
 | ||||
|         if (null === self::$installed) { | ||||
|             self::$installed = include __DIR__ . '/installed.php'; | ||||
|         } | ||||
| 
 | ||||
|         return self::$installed; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Returns the raw data of all installed.php which are currently loaded for custom implementations | ||||
|      * | ||||
|      * @return array[] | ||||
|      * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}> | ||||
|      */ | ||||
|     public static function getAllRawData() | ||||
|     { | ||||
|         return self::getInstalled(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Lets you reload the static array from another file | ||||
|      * | ||||
|      * This is only useful for complex integrations in which a project needs to use | ||||
|      * this class but then also needs to execute another project's autoloader in process, | ||||
|      * and wants to ensure both projects have access to their version of installed.php. | ||||
|      * | ||||
|      * A typical case would be PHPUnit, where it would need to make sure it reads all | ||||
|      * the data it needs from this class, then call reload() with | ||||
|      * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure | ||||
|      * the project in which it runs can then also use this class safely, without | ||||
|      * interference between PHPUnit's dependencies and the project's dependencies. | ||||
|      * | ||||
|      * @param  array[] $data A vendor/composer/installed.php data set | ||||
|      * @return void | ||||
|      * | ||||
|      * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>} $data | ||||
|      */ | ||||
|     public static function reload($data) | ||||
|     { | ||||
|         self::$installed = $data; | ||||
|         self::$installedByVendor = array(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return array[] | ||||
|      * @psalm-return list<array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array<string, array{dev_requirement: bool, pretty_version?: string, version?: string, aliases?: string[], reference?: string, replaced?: string[], provided?: string[], install_path?: string}>}> | ||||
|      */ | ||||
|     private static function getInstalled() | ||||
|     { | ||||
|         if (null === self::$canGetVendors) { | ||||
|             self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); | ||||
|         } | ||||
| 
 | ||||
|         $installed = array(); | ||||
| 
 | ||||
|         if (self::$canGetVendors) { | ||||
|             foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { | ||||
|                 if (isset(self::$installedByVendor[$vendorDir])) { | ||||
|                     $installed[] = self::$installedByVendor[$vendorDir]; | ||||
|                 } elseif (is_file($vendorDir.'/composer/installed.php')) { | ||||
|                     $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; | ||||
|                     if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { | ||||
|                         self::$installed = $installed[count($installed) - 1]; | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if (null === self::$installed) { | ||||
|             self::$installed = require __DIR__ . '/installed.php'; | ||||
|         } | ||||
|         $installed[] = self::$installed; | ||||
| 
 | ||||
|         return $installed; | ||||
|     } | ||||
| } | ||||
|  | ||||
							
								
								
									
										332
									
								
								vendor/composer/installed.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										332
									
								
								vendor/composer/installed.php
									
									
									
									
										vendored
									
									
								
							| @ -1,169 +1,169 @@ | ||||
| <?php return array ( | ||||
|   'root' =>  | ||||
|   array ( | ||||
|     'pretty_version' => '6.x-dev', | ||||
|     'version' => '6.9999999.9999999.9999999-dev', | ||||
|     'aliases' =>  | ||||
|     array ( | ||||
| <?php return array( | ||||
|     'root' => array( | ||||
|         'pretty_version' => '6.x-dev', | ||||
|         'version' => '6.9999999.9999999.9999999-dev', | ||||
|         'type' => 'project', | ||||
|         'install_path' => __DIR__ . '/../../', | ||||
|         'aliases' => array(), | ||||
|         'reference' => '612077be96278a23df4f517da2088fc3147574e0', | ||||
|         'name' => 'zoujingli/thinkadmin', | ||||
|         'dev' => false, | ||||
|     ), | ||||
|     'reference' => 'd53fed33e1f513f043cccc0fbb69b48c0d9fbe41', | ||||
|     'name' => 'zoujingli/thinkadmin', | ||||
|   ), | ||||
|   'versions' =>  | ||||
|   array ( | ||||
|     'endroid/qr-code' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.9.3', | ||||
|       'version' => '1.9.3.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'c9644bec2a9cc9318e98d1437de3c628dcd1ef93', | ||||
|     'versions' => array( | ||||
|         'endroid/qr-code' => array( | ||||
|             'pretty_version' => '1.9.3', | ||||
|             'version' => '1.9.3.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../endroid/qr-code', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'c9644bec2a9cc9318e98d1437de3c628dcd1ef93', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'league/flysystem' => array( | ||||
|             'pretty_version' => '1.0.70', | ||||
|             'version' => '1.0.70.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../league/flysystem', | ||||
|             'aliases' => array(), | ||||
|             'reference' => '585824702f534f8d3cf7fab7225e8466cc4b7493', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'league/flysystem-cached-adapter' => array( | ||||
|             'pretty_version' => '1.1.0', | ||||
|             'version' => '1.1.0.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../league/flysystem-cached-adapter', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'psr/cache' => array( | ||||
|             'pretty_version' => '1.0.1', | ||||
|             'version' => '1.0.1.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../psr/cache', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'psr/container' => array( | ||||
|             'pretty_version' => '1.0.0', | ||||
|             'version' => '1.0.0.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../psr/container', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'psr/log' => array( | ||||
|             'pretty_version' => '1.1.4', | ||||
|             'version' => '1.1.4.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../psr/log', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'psr/simple-cache' => array( | ||||
|             'pretty_version' => '1.0.1', | ||||
|             'version' => '1.0.1.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../psr/simple-cache', | ||||
|             'aliases' => array(), | ||||
|             'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'symfony/options-resolver' => array( | ||||
|             'pretty_version' => 'v3.4.47', | ||||
|             'version' => '3.4.47.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../symfony/options-resolver', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'topthink/framework' => array( | ||||
|             'pretty_version' => 'v6.0.8', | ||||
|             'version' => '6.0.8.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../topthink/framework', | ||||
|             'aliases' => array(), | ||||
|             'reference' => '4789343672aef06d571d556da369c0e156609bce', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'topthink/think-helper' => array( | ||||
|             'pretty_version' => 'v3.1.4', | ||||
|             'version' => '3.1.4.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../topthink/think-helper', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'c28d37743bda4a0455286ca85b17b5791d626e10', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'topthink/think-orm' => array( | ||||
|             'pretty_version' => 'v2.0.40', | ||||
|             'version' => '2.0.40.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../topthink/think-orm', | ||||
|             'aliases' => array(), | ||||
|             'reference' => '1119d979b850849f3725856460cf108eec1c3eb8', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'topthink/think-template' => array( | ||||
|             'pretty_version' => 'v2.0.8', | ||||
|             'version' => '2.0.8.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../topthink/think-template', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'abfc293f74f9ef5127b5c416310a01fe42e59368', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'topthink/think-view' => array( | ||||
|             'pretty_version' => 'v1.0.14', | ||||
|             'version' => '1.0.14.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../topthink/think-view', | ||||
|             'aliases' => array(), | ||||
|             'reference' => 'edce0ae2c9551ab65f9e94a222604b0dead3576d', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'zoujingli/ip2region' => array( | ||||
|             'pretty_version' => 'v1.0.10', | ||||
|             'version' => '1.0.10.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../zoujingli/ip2region', | ||||
|             'aliases' => array(), | ||||
|             'reference' => '453480d0ab5b6fdbdf4aa400b7598a10ff2dc5c0', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'zoujingli/think-library' => array( | ||||
|             'pretty_version' => 'v6.0.x-dev', | ||||
|             'version' => '6.0.9999999.9999999-dev', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../zoujingli/think-library', | ||||
|             'aliases' => array( | ||||
|                 0 => '9999999-dev', | ||||
|             ), | ||||
|             'reference' => 'dab37cf567def670988c452943022ff1b8bb4176', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'zoujingli/thinkadmin' => array( | ||||
|             'pretty_version' => '6.x-dev', | ||||
|             'version' => '6.9999999.9999999.9999999-dev', | ||||
|             'type' => 'project', | ||||
|             'install_path' => __DIR__ . '/../../', | ||||
|             'aliases' => array(), | ||||
|             'reference' => '612077be96278a23df4f517da2088fc3147574e0', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|         'zoujingli/wechat-developer' => array( | ||||
|             'pretty_version' => 'v1.2.31', | ||||
|             'version' => '1.2.31.0', | ||||
|             'type' => 'library', | ||||
|             'install_path' => __DIR__ . '/../zoujingli/wechat-developer', | ||||
|             'aliases' => array(), | ||||
|             'reference' => '0cf699c725f69d66657a50e60d22f71c9e5a5e16', | ||||
|             'dev_requirement' => false, | ||||
|         ), | ||||
|     ), | ||||
|     'league/flysystem' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.70', | ||||
|       'version' => '1.0.70.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '585824702f534f8d3cf7fab7225e8466cc4b7493', | ||||
|     ), | ||||
|     'league/flysystem-cached-adapter' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.1.0', | ||||
|       'version' => '1.1.0.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd1925efb2207ac4be3ad0c40b8277175f99ffaff', | ||||
|     ), | ||||
|     'psr/cache' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.1', | ||||
|       'version' => '1.0.1.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd11b50ad223250cf17b86e38383413f5a6764bf8', | ||||
|     ), | ||||
|     'psr/container' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.0', | ||||
|       'version' => '1.0.0.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f', | ||||
|     ), | ||||
|     'psr/log' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.1.4', | ||||
|       'version' => '1.1.4.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', | ||||
|     ), | ||||
|     'psr/simple-cache' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '1.0.1', | ||||
|       'version' => '1.0.1.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '408d5eafb83c57f6365a3ca330ff23aa4a5fa39b', | ||||
|     ), | ||||
|     'symfony/options-resolver' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v3.4.47', | ||||
|       'version' => '3.4.47.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'c7efc97a47b2ebaabc19d5b6c6b50f5c37c92744', | ||||
|     ), | ||||
|     'topthink/framework' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v6.0.8', | ||||
|       'version' => '6.0.8.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '4789343672aef06d571d556da369c0e156609bce', | ||||
|     ), | ||||
|     'topthink/think-helper' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v3.1.4', | ||||
|       'version' => '3.1.4.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'c28d37743bda4a0455286ca85b17b5791d626e10', | ||||
|     ), | ||||
|     'topthink/think-orm' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v2.0.40', | ||||
|       'version' => '2.0.40.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '1119d979b850849f3725856460cf108eec1c3eb8', | ||||
|     ), | ||||
|     'topthink/think-template' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v2.0.8', | ||||
|       'version' => '2.0.8.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'abfc293f74f9ef5127b5c416310a01fe42e59368', | ||||
|     ), | ||||
|     'topthink/think-view' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v1.0.14', | ||||
|       'version' => '1.0.14.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'edce0ae2c9551ab65f9e94a222604b0dead3576d', | ||||
|     ), | ||||
|     'zoujingli/ip2region' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v1.0.10', | ||||
|       'version' => '1.0.10.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '453480d0ab5b6fdbdf4aa400b7598a10ff2dc5c0', | ||||
|     ), | ||||
|     'zoujingli/think-library' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v6.0.x-dev', | ||||
|       'version' => '6.0.9999999.9999999-dev', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|         0 => '9999999-dev', | ||||
|       ), | ||||
|       'reference' => 'dab37cf567def670988c452943022ff1b8bb4176', | ||||
|     ), | ||||
|     'zoujingli/thinkadmin' =>  | ||||
|     array ( | ||||
|       'pretty_version' => '6.x-dev', | ||||
|       'version' => '6.9999999.9999999.9999999-dev', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => 'd53fed33e1f513f043cccc0fbb69b48c0d9fbe41', | ||||
|     ), | ||||
|     'zoujingli/wechat-developer' =>  | ||||
|     array ( | ||||
|       'pretty_version' => 'v1.2.31', | ||||
|       'version' => '1.2.31.0', | ||||
|       'aliases' =>  | ||||
|       array ( | ||||
|       ), | ||||
|       'reference' => '0cf699c725f69d66657a50e60d22f71c9e5a5e16', | ||||
|     ), | ||||
|   ), | ||||
| ); | ||||
|  | ||||
							
								
								
									
										2
									
								
								vendor/services.php
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/services.php
									
									
									
									
										vendored
									
									
								
							| @ -1,5 +1,5 @@ | ||||
| <?php  | ||||
| // This file is automatically generated at:2021-05-27 10:19:04
 | ||||
| // This file is automatically generated at:2021-06-09 11:20:22
 | ||||
| declare (strict_types = 1); | ||||
| return array ( | ||||
|   0 => 'think\\admin\\Library', | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user