mirror of
				https://gitee.com/technical-laohu/mpay.git
				synced 2025-11-04 16:53:44 +08:00 
			
		
		
		
	框架更新
This commit is contained in:
		
							
								
								
									
										0
									
								
								vendor/.gitignore → vendor/!.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								vendor/.gitignore → vendor/!.gitignore
									
									
									
									
										vendored
									
									
								
							
							
								
								
									
										25
									
								
								vendor/autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										25
									
								
								vendor/autoload.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,25 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// autoload.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
if (PHP_VERSION_ID < 50600) {
 | 
			
		||||
    if (!headers_sent()) {
 | 
			
		||||
        header('HTTP/1.1 500 Internal Server Error');
 | 
			
		||||
    }
 | 
			
		||||
    $err = 'Composer 2.3.0 dropped support for autoloading on PHP <5.6 and you are running '.PHP_VERSION.', please upgrade PHP or use Composer 2.2 LTS via "composer self-update --2.2". Aborting.'.PHP_EOL;
 | 
			
		||||
    if (!ini_get('display_errors')) {
 | 
			
		||||
        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
 | 
			
		||||
            fwrite(STDERR, $err);
 | 
			
		||||
        } elseif (!headers_sent()) {
 | 
			
		||||
            echo $err;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    trigger_error(
 | 
			
		||||
        $err,
 | 
			
		||||
        E_USER_ERROR
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
require_once __DIR__ . '/composer/autoload_real.php';
 | 
			
		||||
 | 
			
		||||
return ComposerAutoloaderInit4e6f1e8c0e4175887b7668bfe95e8f5a::getLoader();
 | 
			
		||||
							
								
								
									
										119
									
								
								vendor/bin/var-dump-server
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										119
									
								
								vendor/bin/var-dump-server
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,119 @@
 | 
			
		||||
#!/usr/bin/env php
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Proxy PHP file generated by Composer
 | 
			
		||||
 *
 | 
			
		||||
 * This file includes the referenced bin path (../symfony/var-dumper/Resources/bin/var-dump-server)
 | 
			
		||||
 * using a stream wrapper to prevent the shebang from being output on PHP<8
 | 
			
		||||
 *
 | 
			
		||||
 * @generated
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
namespace Composer;
 | 
			
		||||
 | 
			
		||||
$GLOBALS['_composer_bin_dir'] = __DIR__;
 | 
			
		||||
$GLOBALS['_composer_autoload_path'] = __DIR__ . '/..'.'/autoload.php';
 | 
			
		||||
 | 
			
		||||
if (PHP_VERSION_ID < 80000) {
 | 
			
		||||
    if (!class_exists('Composer\BinProxyWrapper')) {
 | 
			
		||||
        /**
 | 
			
		||||
         * @internal
 | 
			
		||||
         */
 | 
			
		||||
        final class BinProxyWrapper
 | 
			
		||||
        {
 | 
			
		||||
            private $handle;
 | 
			
		||||
            private $position;
 | 
			
		||||
            private $realpath;
 | 
			
		||||
 | 
			
		||||
            public function stream_open($path, $mode, $options, &$opened_path)
 | 
			
		||||
            {
 | 
			
		||||
                // get rid of phpvfscomposer:// prefix for __FILE__ & __DIR__ resolution
 | 
			
		||||
                $opened_path = substr($path, 17);
 | 
			
		||||
                $this->realpath = realpath($opened_path) ?: $opened_path;
 | 
			
		||||
                $opened_path = $this->realpath;
 | 
			
		||||
                $this->handle = fopen($this->realpath, $mode);
 | 
			
		||||
                $this->position = 0;
 | 
			
		||||
 | 
			
		||||
                return (bool) $this->handle;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_read($count)
 | 
			
		||||
            {
 | 
			
		||||
                $data = fread($this->handle, $count);
 | 
			
		||||
 | 
			
		||||
                if ($this->position === 0) {
 | 
			
		||||
                    $data = preg_replace('{^#!.*\r?\n}', '', $data);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                $this->position += strlen($data);
 | 
			
		||||
 | 
			
		||||
                return $data;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_cast($castAs)
 | 
			
		||||
            {
 | 
			
		||||
                return $this->handle;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_close()
 | 
			
		||||
            {
 | 
			
		||||
                fclose($this->handle);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_lock($operation)
 | 
			
		||||
            {
 | 
			
		||||
                return $operation ? flock($this->handle, $operation) : true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_seek($offset, $whence)
 | 
			
		||||
            {
 | 
			
		||||
                if (0 === fseek($this->handle, $offset, $whence)) {
 | 
			
		||||
                    $this->position = ftell($this->handle);
 | 
			
		||||
                    return true;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_tell()
 | 
			
		||||
            {
 | 
			
		||||
                return $this->position;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_eof()
 | 
			
		||||
            {
 | 
			
		||||
                return feof($this->handle);
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_stat()
 | 
			
		||||
            {
 | 
			
		||||
                return array();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function stream_set_option($option, $arg1, $arg2)
 | 
			
		||||
            {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            public function url_stat($path, $flags)
 | 
			
		||||
            {
 | 
			
		||||
                $path = substr($path, 17);
 | 
			
		||||
                if (file_exists($path)) {
 | 
			
		||||
                    return stat($path);
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    if (
 | 
			
		||||
        (function_exists('stream_get_wrappers') && in_array('phpvfscomposer', stream_get_wrappers(), true))
 | 
			
		||||
        || (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper'))
 | 
			
		||||
    ) {
 | 
			
		||||
        return include("phpvfscomposer://" . __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
return include __DIR__ . '/..'.'/symfony/var-dumper/Resources/bin/var-dump-server';
 | 
			
		||||
							
								
								
									
										5
									
								
								vendor/bin/var-dump-server.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										5
									
								
								vendor/bin/var-dump-server.bat
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,5 @@
 | 
			
		||||
@ECHO OFF
 | 
			
		||||
setlocal DISABLEDELAYEDEXPANSION
 | 
			
		||||
SET BIN_TARGET=%~dp0/var-dump-server
 | 
			
		||||
SET COMPOSER_RUNTIME_BIN_DIR=%~dp0
 | 
			
		||||
php "%BIN_TARGET%" %*
 | 
			
		||||
							
								
								
									
										579
									
								
								vendor/composer/ClassLoader.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										579
									
								
								vendor/composer/ClassLoader.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,579 @@
 | 
			
		||||
<?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\Autoload;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * ClassLoader implements a PSR-0, PSR-4 and classmap class loader.
 | 
			
		||||
 *
 | 
			
		||||
 *     $loader = new \Composer\Autoload\ClassLoader();
 | 
			
		||||
 *
 | 
			
		||||
 *     // register classes with namespaces
 | 
			
		||||
 *     $loader->add('Symfony\Component', __DIR__.'/component');
 | 
			
		||||
 *     $loader->add('Symfony',           __DIR__.'/framework');
 | 
			
		||||
 *
 | 
			
		||||
 *     // activate the autoloader
 | 
			
		||||
 *     $loader->register();
 | 
			
		||||
 *
 | 
			
		||||
 *     // to enable searching the include path (eg. for PEAR packages)
 | 
			
		||||
 *     $loader->setUseIncludePath(true);
 | 
			
		||||
 *
 | 
			
		||||
 * In this example, if you try to use a class in the Symfony\Component
 | 
			
		||||
 * namespace or one of its children (Symfony\Component\Console for instance),
 | 
			
		||||
 * the autoloader will first look for the class under the component/
 | 
			
		||||
 * directory, and it will then fallback to the framework/ directory if not
 | 
			
		||||
 * found before giving up.
 | 
			
		||||
 *
 | 
			
		||||
 * This class is loosely based on the Symfony UniversalClassLoader.
 | 
			
		||||
 *
 | 
			
		||||
 * @author Fabien Potencier <fabien@symfony.com>
 | 
			
		||||
 * @author Jordi Boggiano <j.boggiano@seld.be>
 | 
			
		||||
 * @see    https://www.php-fig.org/psr/psr-0/
 | 
			
		||||
 * @see    https://www.php-fig.org/psr/psr-4/
 | 
			
		||||
 */
 | 
			
		||||
class ClassLoader
 | 
			
		||||
{
 | 
			
		||||
    /** @var \Closure(string):void */
 | 
			
		||||
    private static $includeFile;
 | 
			
		||||
 | 
			
		||||
    /** @var string|null */
 | 
			
		||||
    private $vendorDir;
 | 
			
		||||
 | 
			
		||||
    // PSR-4
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<string, array<string, int>>
 | 
			
		||||
     */
 | 
			
		||||
    private $prefixLengthsPsr4 = array();
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<string, list<string>>
 | 
			
		||||
     */
 | 
			
		||||
    private $prefixDirsPsr4 = array();
 | 
			
		||||
    /**
 | 
			
		||||
     * @var list<string>
 | 
			
		||||
     */
 | 
			
		||||
    private $fallbackDirsPsr4 = array();
 | 
			
		||||
 | 
			
		||||
    // PSR-0
 | 
			
		||||
    /**
 | 
			
		||||
     * List of PSR-0 prefixes
 | 
			
		||||
     *
 | 
			
		||||
     * Structured as array('F (first letter)' => array('Foo\Bar (full prefix)' => array('path', 'path2')))
 | 
			
		||||
     *
 | 
			
		||||
     * @var array<string, array<string, list<string>>>
 | 
			
		||||
     */
 | 
			
		||||
    private $prefixesPsr0 = array();
 | 
			
		||||
    /**
 | 
			
		||||
     * @var list<string>
 | 
			
		||||
     */
 | 
			
		||||
    private $fallbackDirsPsr0 = array();
 | 
			
		||||
 | 
			
		||||
    /** @var bool */
 | 
			
		||||
    private $useIncludePath = false;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<string, string>
 | 
			
		||||
     */
 | 
			
		||||
    private $classMap = array();
 | 
			
		||||
 | 
			
		||||
    /** @var bool */
 | 
			
		||||
    private $classMapAuthoritative = false;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<string, bool>
 | 
			
		||||
     */
 | 
			
		||||
    private $missingClasses = array();
 | 
			
		||||
 | 
			
		||||
    /** @var string|null */
 | 
			
		||||
    private $apcuPrefix;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<string, self>
 | 
			
		||||
     */
 | 
			
		||||
    private static $registeredLoaders = array();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string|null $vendorDir
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct($vendorDir = null)
 | 
			
		||||
    {
 | 
			
		||||
        $this->vendorDir = $vendorDir;
 | 
			
		||||
        self::initializeIncludeClosure();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return array<string, list<string>>
 | 
			
		||||
     */
 | 
			
		||||
    public function getPrefixes()
 | 
			
		||||
    {
 | 
			
		||||
        if (!empty($this->prefixesPsr0)) {
 | 
			
		||||
            return call_user_func_array('array_merge', array_values($this->prefixesPsr0));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return array();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return array<string, list<string>>
 | 
			
		||||
     */
 | 
			
		||||
    public function getPrefixesPsr4()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->prefixDirsPsr4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return list<string>
 | 
			
		||||
     */
 | 
			
		||||
    public function getFallbackDirs()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->fallbackDirsPsr0;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return list<string>
 | 
			
		||||
     */
 | 
			
		||||
    public function getFallbackDirsPsr4()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->fallbackDirsPsr4;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return array<string, string> Array of classname => path
 | 
			
		||||
     */
 | 
			
		||||
    public function getClassMap()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->classMap;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param array<string, string> $classMap Class to filename map
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function addClassMap(array $classMap)
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->classMap) {
 | 
			
		||||
            $this->classMap = array_merge($this->classMap, $classMap);
 | 
			
		||||
        } else {
 | 
			
		||||
            $this->classMap = $classMap;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Registers a set of PSR-0 directories for a given prefix, either
 | 
			
		||||
     * appending or prepending to the ones previously set for this prefix.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string              $prefix  The prefix
 | 
			
		||||
     * @param list<string>|string $paths   The PSR-0 root directories
 | 
			
		||||
     * @param bool                $prepend Whether to prepend the directories
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function add($prefix, $paths, $prepend = false)
 | 
			
		||||
    {
 | 
			
		||||
        $paths = (array) $paths;
 | 
			
		||||
        if (!$prefix) {
 | 
			
		||||
            if ($prepend) {
 | 
			
		||||
                $this->fallbackDirsPsr0 = array_merge(
 | 
			
		||||
                    $paths,
 | 
			
		||||
                    $this->fallbackDirsPsr0
 | 
			
		||||
                );
 | 
			
		||||
            } else {
 | 
			
		||||
                $this->fallbackDirsPsr0 = array_merge(
 | 
			
		||||
                    $this->fallbackDirsPsr0,
 | 
			
		||||
                    $paths
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $first = $prefix[0];
 | 
			
		||||
        if (!isset($this->prefixesPsr0[$first][$prefix])) {
 | 
			
		||||
            $this->prefixesPsr0[$first][$prefix] = $paths;
 | 
			
		||||
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        if ($prepend) {
 | 
			
		||||
            $this->prefixesPsr0[$first][$prefix] = array_merge(
 | 
			
		||||
                $paths,
 | 
			
		||||
                $this->prefixesPsr0[$first][$prefix]
 | 
			
		||||
            );
 | 
			
		||||
        } else {
 | 
			
		||||
            $this->prefixesPsr0[$first][$prefix] = array_merge(
 | 
			
		||||
                $this->prefixesPsr0[$first][$prefix],
 | 
			
		||||
                $paths
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Registers a set of PSR-4 directories for a given namespace, either
 | 
			
		||||
     * appending or prepending to the ones previously set for this namespace.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string              $prefix  The prefix/namespace, with trailing '\\'
 | 
			
		||||
     * @param list<string>|string $paths   The PSR-4 base directories
 | 
			
		||||
     * @param bool                $prepend Whether to prepend the directories
 | 
			
		||||
     *
 | 
			
		||||
     * @throws \InvalidArgumentException
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function addPsr4($prefix, $paths, $prepend = false)
 | 
			
		||||
    {
 | 
			
		||||
        $paths = (array) $paths;
 | 
			
		||||
        if (!$prefix) {
 | 
			
		||||
            // Register directories for the root namespace.
 | 
			
		||||
            if ($prepend) {
 | 
			
		||||
                $this->fallbackDirsPsr4 = array_merge(
 | 
			
		||||
                    $paths,
 | 
			
		||||
                    $this->fallbackDirsPsr4
 | 
			
		||||
                );
 | 
			
		||||
            } else {
 | 
			
		||||
                $this->fallbackDirsPsr4 = array_merge(
 | 
			
		||||
                    $this->fallbackDirsPsr4,
 | 
			
		||||
                    $paths
 | 
			
		||||
                );
 | 
			
		||||
            }
 | 
			
		||||
        } elseif (!isset($this->prefixDirsPsr4[$prefix])) {
 | 
			
		||||
            // Register directories for a new namespace.
 | 
			
		||||
            $length = strlen($prefix);
 | 
			
		||||
            if ('\\' !== $prefix[$length - 1]) {
 | 
			
		||||
                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
 | 
			
		||||
            }
 | 
			
		||||
            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
 | 
			
		||||
            $this->prefixDirsPsr4[$prefix] = $paths;
 | 
			
		||||
        } elseif ($prepend) {
 | 
			
		||||
            // Prepend directories for an already registered namespace.
 | 
			
		||||
            $this->prefixDirsPsr4[$prefix] = array_merge(
 | 
			
		||||
                $paths,
 | 
			
		||||
                $this->prefixDirsPsr4[$prefix]
 | 
			
		||||
            );
 | 
			
		||||
        } else {
 | 
			
		||||
            // Append directories for an already registered namespace.
 | 
			
		||||
            $this->prefixDirsPsr4[$prefix] = array_merge(
 | 
			
		||||
                $this->prefixDirsPsr4[$prefix],
 | 
			
		||||
                $paths
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Registers a set of PSR-0 directories for a given prefix,
 | 
			
		||||
     * replacing any others previously set for this prefix.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string              $prefix The prefix
 | 
			
		||||
     * @param list<string>|string $paths  The PSR-0 base directories
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function set($prefix, $paths)
 | 
			
		||||
    {
 | 
			
		||||
        if (!$prefix) {
 | 
			
		||||
            $this->fallbackDirsPsr0 = (array) $paths;
 | 
			
		||||
        } else {
 | 
			
		||||
            $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Registers a set of PSR-4 directories for a given namespace,
 | 
			
		||||
     * replacing any others previously set for this namespace.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string              $prefix The prefix/namespace, with trailing '\\'
 | 
			
		||||
     * @param list<string>|string $paths  The PSR-4 base directories
 | 
			
		||||
     *
 | 
			
		||||
     * @throws \InvalidArgumentException
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function setPsr4($prefix, $paths)
 | 
			
		||||
    {
 | 
			
		||||
        if (!$prefix) {
 | 
			
		||||
            $this->fallbackDirsPsr4 = (array) $paths;
 | 
			
		||||
        } else {
 | 
			
		||||
            $length = strlen($prefix);
 | 
			
		||||
            if ('\\' !== $prefix[$length - 1]) {
 | 
			
		||||
                throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator.");
 | 
			
		||||
            }
 | 
			
		||||
            $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length;
 | 
			
		||||
            $this->prefixDirsPsr4[$prefix] = (array) $paths;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Turns on searching the include path for class files.
 | 
			
		||||
     *
 | 
			
		||||
     * @param bool $useIncludePath
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function setUseIncludePath($useIncludePath)
 | 
			
		||||
    {
 | 
			
		||||
        $this->useIncludePath = $useIncludePath;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Can be used to check if the autoloader uses the include path to check
 | 
			
		||||
     * for classes.
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function getUseIncludePath()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->useIncludePath;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Turns off searching the prefix and fallback directories for classes
 | 
			
		||||
     * that have not been registered with the class map.
 | 
			
		||||
     *
 | 
			
		||||
     * @param bool $classMapAuthoritative
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function setClassMapAuthoritative($classMapAuthoritative)
 | 
			
		||||
    {
 | 
			
		||||
        $this->classMapAuthoritative = $classMapAuthoritative;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Should class lookup fail if not found in the current class map?
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function isClassMapAuthoritative()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->classMapAuthoritative;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * APCu prefix to use to cache found/not-found classes, if the extension is enabled.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string|null $apcuPrefix
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function setApcuPrefix($apcuPrefix)
 | 
			
		||||
    {
 | 
			
		||||
        $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * The APCu prefix in use, or null if APCu caching is not enabled.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string|null
 | 
			
		||||
     */
 | 
			
		||||
    public function getApcuPrefix()
 | 
			
		||||
    {
 | 
			
		||||
        return $this->apcuPrefix;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Registers this instance as an autoloader.
 | 
			
		||||
     *
 | 
			
		||||
     * @param bool $prepend Whether to prepend the autoloader or not
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function register($prepend = false)
 | 
			
		||||
    {
 | 
			
		||||
        spl_autoload_register(array($this, 'loadClass'), true, $prepend);
 | 
			
		||||
 | 
			
		||||
        if (null === $this->vendorDir) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($prepend) {
 | 
			
		||||
            self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders;
 | 
			
		||||
        } else {
 | 
			
		||||
            unset(self::$registeredLoaders[$this->vendorDir]);
 | 
			
		||||
            self::$registeredLoaders[$this->vendorDir] = $this;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Unregisters this instance as an autoloader.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function unregister()
 | 
			
		||||
    {
 | 
			
		||||
        spl_autoload_unregister(array($this, 'loadClass'));
 | 
			
		||||
 | 
			
		||||
        if (null !== $this->vendorDir) {
 | 
			
		||||
            unset(self::$registeredLoaders[$this->vendorDir]);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Loads the given class or interface.
 | 
			
		||||
     *
 | 
			
		||||
     * @param  string    $class The name of the class
 | 
			
		||||
     * @return true|null True if loaded, null otherwise
 | 
			
		||||
     */
 | 
			
		||||
    public function loadClass($class)
 | 
			
		||||
    {
 | 
			
		||||
        if ($file = $this->findFile($class)) {
 | 
			
		||||
            $includeFile = self::$includeFile;
 | 
			
		||||
            $includeFile($file);
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Finds the path to the file where the class is defined.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $class The name of the class
 | 
			
		||||
     *
 | 
			
		||||
     * @return string|false The path if found, false otherwise
 | 
			
		||||
     */
 | 
			
		||||
    public function findFile($class)
 | 
			
		||||
    {
 | 
			
		||||
        // class map lookup
 | 
			
		||||
        if (isset($this->classMap[$class])) {
 | 
			
		||||
            return $this->classMap[$class];
 | 
			
		||||
        }
 | 
			
		||||
        if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) {
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
        if (null !== $this->apcuPrefix) {
 | 
			
		||||
            $file = apcu_fetch($this->apcuPrefix.$class, $hit);
 | 
			
		||||
            if ($hit) {
 | 
			
		||||
                return $file;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $file = $this->findFileWithExtension($class, '.php');
 | 
			
		||||
 | 
			
		||||
        // Search for Hack files if we are running on HHVM
 | 
			
		||||
        if (false === $file && defined('HHVM_VERSION')) {
 | 
			
		||||
            $file = $this->findFileWithExtension($class, '.hh');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (null !== $this->apcuPrefix) {
 | 
			
		||||
            apcu_add($this->apcuPrefix.$class, $file);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (false === $file) {
 | 
			
		||||
            // Remember that this class does not exist.
 | 
			
		||||
            $this->missingClasses[$class] = true;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $file;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the currently registered loaders keyed by their corresponding vendor directories.
 | 
			
		||||
     *
 | 
			
		||||
     * @return array<string, self>
 | 
			
		||||
     */
 | 
			
		||||
    public static function getRegisteredLoaders()
 | 
			
		||||
    {
 | 
			
		||||
        return self::$registeredLoaders;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param  string       $class
 | 
			
		||||
     * @param  string       $ext
 | 
			
		||||
     * @return string|false
 | 
			
		||||
     */
 | 
			
		||||
    private function findFileWithExtension($class, $ext)
 | 
			
		||||
    {
 | 
			
		||||
        // PSR-4 lookup
 | 
			
		||||
        $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext;
 | 
			
		||||
 | 
			
		||||
        $first = $class[0];
 | 
			
		||||
        if (isset($this->prefixLengthsPsr4[$first])) {
 | 
			
		||||
            $subPath = $class;
 | 
			
		||||
            while (false !== $lastPos = strrpos($subPath, '\\')) {
 | 
			
		||||
                $subPath = substr($subPath, 0, $lastPos);
 | 
			
		||||
                $search = $subPath . '\\';
 | 
			
		||||
                if (isset($this->prefixDirsPsr4[$search])) {
 | 
			
		||||
                    $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1);
 | 
			
		||||
                    foreach ($this->prefixDirsPsr4[$search] as $dir) {
 | 
			
		||||
                        if (file_exists($file = $dir . $pathEnd)) {
 | 
			
		||||
                            return $file;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // PSR-4 fallback dirs
 | 
			
		||||
        foreach ($this->fallbackDirsPsr4 as $dir) {
 | 
			
		||||
            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) {
 | 
			
		||||
                return $file;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // PSR-0 lookup
 | 
			
		||||
        if (false !== $pos = strrpos($class, '\\')) {
 | 
			
		||||
            // namespaced class name
 | 
			
		||||
            $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1)
 | 
			
		||||
                . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR);
 | 
			
		||||
        } else {
 | 
			
		||||
            // PEAR-like class name
 | 
			
		||||
            $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (isset($this->prefixesPsr0[$first])) {
 | 
			
		||||
            foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) {
 | 
			
		||||
                if (0 === strpos($class, $prefix)) {
 | 
			
		||||
                    foreach ($dirs as $dir) {
 | 
			
		||||
                        if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
 | 
			
		||||
                            return $file;
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // PSR-0 fallback dirs
 | 
			
		||||
        foreach ($this->fallbackDirsPsr0 as $dir) {
 | 
			
		||||
            if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) {
 | 
			
		||||
                return $file;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // PSR-0 include paths.
 | 
			
		||||
        if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) {
 | 
			
		||||
            return $file;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    private static function initializeIncludeClosure()
 | 
			
		||||
    {
 | 
			
		||||
        if (self::$includeFile !== null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /**
 | 
			
		||||
         * Scope isolated include.
 | 
			
		||||
         *
 | 
			
		||||
         * Prevents access to $this/self from included files.
 | 
			
		||||
         *
 | 
			
		||||
         * @param  string $file
 | 
			
		||||
         * @return void
 | 
			
		||||
         */
 | 
			
		||||
        self::$includeFile = \Closure::bind(static function($file) {
 | 
			
		||||
            include $file;
 | 
			
		||||
        }, null, null);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										359
									
								
								vendor/composer/InstalledVersions.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										359
									
								
								vendor/composer/InstalledVersions.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,359 @@
 | 
			
		||||
<?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 its presence, you can require `composer-runtime-api ^2.0`
 | 
			
		||||
 *
 | 
			
		||||
 * @final
 | 
			
		||||
 */
 | 
			
		||||
class InstalledVersions
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var mixed[]|null
 | 
			
		||||
     * @psalm-var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}|array{}|null
 | 
			
		||||
     */
 | 
			
		||||
    private static $installed;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var bool|null
 | 
			
		||||
     */
 | 
			
		||||
    private static $canGetVendors;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array[]
 | 
			
		||||
     * @psalm-var array<string, array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>}>
 | 
			
		||||
     */
 | 
			
		||||
    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;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * 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 || !isset($installed['versions'][$packageName]['dev_requirement']) || $installed['versions'][$packageName]['dev_requirement'] === false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        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((string) $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, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}
 | 
			
		||||
     */
 | 
			
		||||
    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, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: 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) {
 | 
			
		||||
            // only require the installed.php file if this file is loaded from its dumped location,
 | 
			
		||||
            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
 | 
			
		||||
            if (substr(__DIR__, -8, 1) !== 'C') {
 | 
			
		||||
                self::$installed = include __DIR__ . '/installed.php';
 | 
			
		||||
            } else {
 | 
			
		||||
                self::$installed = array();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        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, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: 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, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $data
 | 
			
		||||
     */
 | 
			
		||||
    public static function reload($data)
 | 
			
		||||
    {
 | 
			
		||||
        self::$installed = $data;
 | 
			
		||||
        self::$installedByVendor = array();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return array[]
 | 
			
		||||
     * @psalm-return list<array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: 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')) {
 | 
			
		||||
                    /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
 | 
			
		||||
                    $required = require $vendorDir.'/composer/installed.php';
 | 
			
		||||
                    $installed[] = self::$installedByVendor[$vendorDir] = $required;
 | 
			
		||||
                    if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) {
 | 
			
		||||
                        self::$installed = $installed[count($installed) - 1];
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (null === self::$installed) {
 | 
			
		||||
            // only require the installed.php file if this file is loaded from its dumped location,
 | 
			
		||||
            // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937
 | 
			
		||||
            if (substr(__DIR__, -8, 1) !== 'C') {
 | 
			
		||||
                /** @var array{root: array{name: string, pretty_version: string, version: string, reference: string|null, type: string, install_path: string, aliases: string[], dev: bool}, versions: array<string, array{pretty_version?: string, version?: string, reference?: string|null, type?: string, install_path?: string, aliases?: string[], dev_requirement: bool, replaced?: string[], provided?: string[]}>} $required */
 | 
			
		||||
                $required = require __DIR__ . '/installed.php';
 | 
			
		||||
                self::$installed = $required;
 | 
			
		||||
            } else {
 | 
			
		||||
                self::$installed = array();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (self::$installed !== array()) {
 | 
			
		||||
            $installed[] = self::$installed;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $installed;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								vendor/composer/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/composer/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
 | 
			
		||||
Copyright (c) Nils Adermann, Jordi Boggiano
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is furnished
 | 
			
		||||
to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/composer/autoload_classmap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/composer/autoload_classmap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// autoload_classmap.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
$vendorDir = dirname(__DIR__);
 | 
			
		||||
$baseDir = dirname($vendorDir);
 | 
			
		||||
 | 
			
		||||
return array(
 | 
			
		||||
    'Composer\\InstalledVersions' => $vendorDir . '/composer/InstalledVersions.php',
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										13
									
								
								vendor/composer/autoload_files.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/composer/autoload_files.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// autoload_files.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
$vendorDir = dirname(__DIR__);
 | 
			
		||||
$baseDir = dirname($vendorDir);
 | 
			
		||||
 | 
			
		||||
return array(
 | 
			
		||||
    '9b552a3cc426e3287cc811caefa3cf53' => $vendorDir . '/topthink/think-helper/src/helper.php',
 | 
			
		||||
    '35fab96057f1bf5e7aba31a8a6d5fdde' => $vendorDir . '/topthink/think-orm/stubs/load_stubs.php',
 | 
			
		||||
    '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php',
 | 
			
		||||
    '667aeda72477189d0494fecd327c3641' => $vendorDir . '/symfony/var-dumper/Resources/functions/dump.php',
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/composer/autoload_namespaces.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/composer/autoload_namespaces.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// autoload_namespaces.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
$vendorDir = dirname(__DIR__);
 | 
			
		||||
$baseDir = dirname($vendorDir);
 | 
			
		||||
 | 
			
		||||
return array(
 | 
			
		||||
    '' => array($baseDir . '/extend'),
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										20
									
								
								vendor/composer/autoload_psr4.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/composer/autoload_psr4.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// autoload_psr4.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
$vendorDir = dirname(__DIR__);
 | 
			
		||||
$baseDir = dirname($vendorDir);
 | 
			
		||||
 | 
			
		||||
return array(
 | 
			
		||||
    'think\\trace\\' => array($vendorDir . '/topthink/think-trace/src'),
 | 
			
		||||
    'think\\' => array($vendorDir . '/topthink/think-helper/src', $vendorDir . '/topthink/think-orm/src', $vendorDir . '/topthink/framework/src/think', $vendorDir . '/topthink/think-filesystem/src'),
 | 
			
		||||
    'app\\' => array($baseDir . '/app'),
 | 
			
		||||
    'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'),
 | 
			
		||||
    'Symfony\\Component\\VarDumper\\' => array($vendorDir . '/symfony/var-dumper'),
 | 
			
		||||
    'Psr\\SimpleCache\\' => array($vendorDir . '/psr/simple-cache/src'),
 | 
			
		||||
    'Psr\\Log\\' => array($vendorDir . '/psr/log/src'),
 | 
			
		||||
    'Psr\\Http\\Message\\' => array($vendorDir . '/psr/http-message/src'),
 | 
			
		||||
    'Psr\\Container\\' => array($vendorDir . '/psr/container/src'),
 | 
			
		||||
    'League\\MimeTypeDetection\\' => array($vendorDir . '/league/mime-type-detection/src'),
 | 
			
		||||
    'League\\Flysystem\\' => array($vendorDir . '/league/flysystem/src'),
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										50
									
								
								vendor/composer/autoload_real.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								vendor/composer/autoload_real.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// autoload_real.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
class ComposerAutoloaderInit4e6f1e8c0e4175887b7668bfe95e8f5a
 | 
			
		||||
{
 | 
			
		||||
    private static $loader;
 | 
			
		||||
 | 
			
		||||
    public static function loadClassLoader($class)
 | 
			
		||||
    {
 | 
			
		||||
        if ('Composer\Autoload\ClassLoader' === $class) {
 | 
			
		||||
            require __DIR__ . '/ClassLoader.php';
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return \Composer\Autoload\ClassLoader
 | 
			
		||||
     */
 | 
			
		||||
    public static function getLoader()
 | 
			
		||||
    {
 | 
			
		||||
        if (null !== self::$loader) {
 | 
			
		||||
            return self::$loader;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        require __DIR__ . '/platform_check.php';
 | 
			
		||||
 | 
			
		||||
        spl_autoload_register(array('ComposerAutoloaderInit4e6f1e8c0e4175887b7668bfe95e8f5a', 'loadClassLoader'), true, true);
 | 
			
		||||
        self::$loader = $loader = new \Composer\Autoload\ClassLoader(\dirname(__DIR__));
 | 
			
		||||
        spl_autoload_unregister(array('ComposerAutoloaderInit4e6f1e8c0e4175887b7668bfe95e8f5a', 'loadClassLoader'));
 | 
			
		||||
 | 
			
		||||
        require __DIR__ . '/autoload_static.php';
 | 
			
		||||
        call_user_func(\Composer\Autoload\ComposerStaticInit4e6f1e8c0e4175887b7668bfe95e8f5a::getInitializer($loader));
 | 
			
		||||
 | 
			
		||||
        $loader->register(true);
 | 
			
		||||
 | 
			
		||||
        $filesToLoad = \Composer\Autoload\ComposerStaticInit4e6f1e8c0e4175887b7668bfe95e8f5a::$files;
 | 
			
		||||
        $requireFile = \Closure::bind(static function ($fileIdentifier, $file) {
 | 
			
		||||
            if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
 | 
			
		||||
                $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
 | 
			
		||||
 | 
			
		||||
                require $file;
 | 
			
		||||
            }
 | 
			
		||||
        }, null, null);
 | 
			
		||||
        foreach ($filesToLoad as $fileIdentifier => $file) {
 | 
			
		||||
            $requireFile($fileIdentifier, $file);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $loader;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										113
									
								
								vendor/composer/autoload_static.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										113
									
								
								vendor/composer/autoload_static.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,113 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// autoload_static.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
namespace Composer\Autoload;
 | 
			
		||||
 | 
			
		||||
class ComposerStaticInit4e6f1e8c0e4175887b7668bfe95e8f5a
 | 
			
		||||
{
 | 
			
		||||
    public static $files = array (
 | 
			
		||||
        '9b552a3cc426e3287cc811caefa3cf53' => __DIR__ . '/..' . '/topthink/think-helper/src/helper.php',
 | 
			
		||||
        '35fab96057f1bf5e7aba31a8a6d5fdde' => __DIR__ . '/..' . '/topthink/think-orm/stubs/load_stubs.php',
 | 
			
		||||
        '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php',
 | 
			
		||||
        '667aeda72477189d0494fecd327c3641' => __DIR__ . '/..' . '/symfony/var-dumper/Resources/functions/dump.php',
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    public static $prefixLengthsPsr4 = array (
 | 
			
		||||
        't' => 
 | 
			
		||||
        array (
 | 
			
		||||
            'think\\trace\\' => 12,
 | 
			
		||||
            'think\\' => 6,
 | 
			
		||||
        ),
 | 
			
		||||
        'a' => 
 | 
			
		||||
        array (
 | 
			
		||||
            'app\\' => 4,
 | 
			
		||||
        ),
 | 
			
		||||
        'S' => 
 | 
			
		||||
        array (
 | 
			
		||||
            'Symfony\\Polyfill\\Mbstring\\' => 26,
 | 
			
		||||
            'Symfony\\Component\\VarDumper\\' => 28,
 | 
			
		||||
        ),
 | 
			
		||||
        'P' => 
 | 
			
		||||
        array (
 | 
			
		||||
            'Psr\\SimpleCache\\' => 16,
 | 
			
		||||
            'Psr\\Log\\' => 8,
 | 
			
		||||
            'Psr\\Http\\Message\\' => 17,
 | 
			
		||||
            'Psr\\Container\\' => 14,
 | 
			
		||||
        ),
 | 
			
		||||
        'L' => 
 | 
			
		||||
        array (
 | 
			
		||||
            'League\\MimeTypeDetection\\' => 25,
 | 
			
		||||
            'League\\Flysystem\\' => 17,
 | 
			
		||||
        ),
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    public static $prefixDirsPsr4 = array (
 | 
			
		||||
        'think\\trace\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/topthink/think-trace/src',
 | 
			
		||||
        ),
 | 
			
		||||
        'think\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/topthink/think-helper/src',
 | 
			
		||||
            1 => __DIR__ . '/..' . '/topthink/think-orm/src',
 | 
			
		||||
            2 => __DIR__ . '/..' . '/topthink/framework/src/think',
 | 
			
		||||
            3 => __DIR__ . '/..' . '/topthink/think-filesystem/src',
 | 
			
		||||
        ),
 | 
			
		||||
        'app\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/../..' . '/app',
 | 
			
		||||
        ),
 | 
			
		||||
        'Symfony\\Polyfill\\Mbstring\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring',
 | 
			
		||||
        ),
 | 
			
		||||
        'Symfony\\Component\\VarDumper\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/symfony/var-dumper',
 | 
			
		||||
        ),
 | 
			
		||||
        'Psr\\SimpleCache\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/psr/simple-cache/src',
 | 
			
		||||
        ),
 | 
			
		||||
        'Psr\\Log\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/psr/log/src',
 | 
			
		||||
        ),
 | 
			
		||||
        'Psr\\Http\\Message\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/psr/http-message/src',
 | 
			
		||||
        ),
 | 
			
		||||
        'Psr\\Container\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/psr/container/src',
 | 
			
		||||
        ),
 | 
			
		||||
        'League\\MimeTypeDetection\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/league/mime-type-detection/src',
 | 
			
		||||
        ),
 | 
			
		||||
        'League\\Flysystem\\' => 
 | 
			
		||||
        array (
 | 
			
		||||
            0 => __DIR__ . '/..' . '/league/flysystem/src',
 | 
			
		||||
        ),
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    public static $fallbackDirsPsr0 = array (
 | 
			
		||||
        0 => __DIR__ . '/../..' . '/extend',
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    public static $classMap = array (
 | 
			
		||||
        'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php',
 | 
			
		||||
    );
 | 
			
		||||
 | 
			
		||||
    public static function getInitializer(ClassLoader $loader)
 | 
			
		||||
    {
 | 
			
		||||
        return \Closure::bind(function () use ($loader) {
 | 
			
		||||
            $loader->prefixLengthsPsr4 = ComposerStaticInit4e6f1e8c0e4175887b7668bfe95e8f5a::$prefixLengthsPsr4;
 | 
			
		||||
            $loader->prefixDirsPsr4 = ComposerStaticInit4e6f1e8c0e4175887b7668bfe95e8f5a::$prefixDirsPsr4;
 | 
			
		||||
            $loader->fallbackDirsPsr0 = ComposerStaticInit4e6f1e8c0e4175887b7668bfe95e8f5a::$fallbackDirsPsr0;
 | 
			
		||||
            $loader->classMap = ComposerStaticInit4e6f1e8c0e4175887b7668bfe95e8f5a::$classMap;
 | 
			
		||||
 | 
			
		||||
        }, null, ClassLoader::class);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										832
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										832
									
								
								vendor/composer/installed.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,832 @@
 | 
			
		||||
{
 | 
			
		||||
    "packages": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "league/flysystem",
 | 
			
		||||
            "version": "2.5.0",
 | 
			
		||||
            "version_normalized": "2.5.0.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/thephpleague/flysystem.git",
 | 
			
		||||
                "reference": "8aaffb653c5777781b0f7f69a5d937baf7ab6cdb"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/8aaffb653c5777781b0f7f69a5d937baf7ab6cdb",
 | 
			
		||||
                "reference": "8aaffb653c5777781b0f7f69a5d937baf7ab6cdb",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "ext-json": "*",
 | 
			
		||||
                "league/mime-type-detection": "^1.0.0",
 | 
			
		||||
                "php": "^7.2 || ^8.0"
 | 
			
		||||
            },
 | 
			
		||||
            "conflict": {
 | 
			
		||||
                "guzzlehttp/ringphp": "<1.1.1"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "async-aws/s3": "^1.5",
 | 
			
		||||
                "async-aws/simple-s3": "^1.0",
 | 
			
		||||
                "aws/aws-sdk-php": "^3.132.4",
 | 
			
		||||
                "composer/semver": "^3.0",
 | 
			
		||||
                "ext-fileinfo": "*",
 | 
			
		||||
                "ext-ftp": "*",
 | 
			
		||||
                "friendsofphp/php-cs-fixer": "^3.2",
 | 
			
		||||
                "google/cloud-storage": "^1.23",
 | 
			
		||||
                "phpseclib/phpseclib": "^2.0",
 | 
			
		||||
                "phpstan/phpstan": "^0.12.26",
 | 
			
		||||
                "phpunit/phpunit": "^8.5 || ^9.4",
 | 
			
		||||
                "sabre/dav": "^4.1"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2022-09-17T21:02:32+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "League\\Flysystem\\": "src"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Frank de Jonge",
 | 
			
		||||
                    "email": "info@frankdejonge.nl"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "File storage abstraction for PHP",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "WebDAV",
 | 
			
		||||
                "aws",
 | 
			
		||||
                "cloud",
 | 
			
		||||
                "file",
 | 
			
		||||
                "files",
 | 
			
		||||
                "filesystem",
 | 
			
		||||
                "filesystems",
 | 
			
		||||
                "ftp",
 | 
			
		||||
                "s3",
 | 
			
		||||
                "sftp",
 | 
			
		||||
                "storage"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/thephpleague/flysystem/issues",
 | 
			
		||||
                "source": "https://github.com/thephpleague/flysystem/tree/2.5.0"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": [
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://ecologi.com/frankdejonge",
 | 
			
		||||
                    "type": "custom"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://github.com/frankdejonge",
 | 
			
		||||
                    "type": "github"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
 | 
			
		||||
                    "type": "tidelift"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "install-path": "../league/flysystem"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "league/mime-type-detection",
 | 
			
		||||
            "version": "1.15.0",
 | 
			
		||||
            "version_normalized": "1.15.0.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/thephpleague/mime-type-detection.git",
 | 
			
		||||
                "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
 | 
			
		||||
                "reference": "ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "ext-fileinfo": "*",
 | 
			
		||||
                "php": "^7.4 || ^8.0"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "friendsofphp/php-cs-fixer": "^3.2",
 | 
			
		||||
                "phpstan/phpstan": "^0.12.68",
 | 
			
		||||
                "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2024-01-28T23:22:08+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "League\\MimeTypeDetection\\": "src"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Frank de Jonge",
 | 
			
		||||
                    "email": "info@frankdejonge.nl"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Mime-type detection for Flysystem",
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/thephpleague/mime-type-detection/issues",
 | 
			
		||||
                "source": "https://github.com/thephpleague/mime-type-detection/tree/1.15.0"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": [
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://github.com/frankdejonge",
 | 
			
		||||
                    "type": "github"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://tidelift.com/funding/github/packagist/league/flysystem",
 | 
			
		||||
                    "type": "tidelift"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "install-path": "../league/mime-type-detection"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "psr/container",
 | 
			
		||||
            "version": "2.0.2",
 | 
			
		||||
            "version_normalized": "2.0.2.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/php-fig/container.git",
 | 
			
		||||
                "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963",
 | 
			
		||||
                "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=7.4.0"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2021-11-05T16:47:00+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "extra": {
 | 
			
		||||
                "branch-alias": {
 | 
			
		||||
                    "dev-master": "2.0.x-dev"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "Psr\\Container\\": "src/"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "PHP-FIG",
 | 
			
		||||
                    "homepage": "https://www.php-fig.org/"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Common Container Interface (PHP FIG PSR-11)",
 | 
			
		||||
            "homepage": "https://github.com/php-fig/container",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "PSR-11",
 | 
			
		||||
                "container",
 | 
			
		||||
                "container-interface",
 | 
			
		||||
                "container-interop",
 | 
			
		||||
                "psr"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/php-fig/container/issues",
 | 
			
		||||
                "source": "https://github.com/php-fig/container/tree/2.0.2"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../psr/container"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "psr/http-message",
 | 
			
		||||
            "version": "1.1",
 | 
			
		||||
            "version_normalized": "1.1.0.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/php-fig/http-message.git",
 | 
			
		||||
                "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
 | 
			
		||||
                "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": "^7.2 || ^8.0"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2023-04-04T09:50:52+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "extra": {
 | 
			
		||||
                "branch-alias": {
 | 
			
		||||
                    "dev-master": "1.1.x-dev"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "Psr\\Http\\Message\\": "src/"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "PHP-FIG",
 | 
			
		||||
                    "homepage": "http://www.php-fig.org/"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Common interface for HTTP messages",
 | 
			
		||||
            "homepage": "https://github.com/php-fig/http-message",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "http",
 | 
			
		||||
                "http-message",
 | 
			
		||||
                "psr",
 | 
			
		||||
                "psr-7",
 | 
			
		||||
                "request",
 | 
			
		||||
                "response"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "source": "https://github.com/php-fig/http-message/tree/1.1"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../psr/http-message"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "psr/log",
 | 
			
		||||
            "version": "3.0.0",
 | 
			
		||||
            "version_normalized": "3.0.0.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/php-fig/log.git",
 | 
			
		||||
                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001",
 | 
			
		||||
                "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=8.0.0"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2021-07-14T16:46:02+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "extra": {
 | 
			
		||||
                "branch-alias": {
 | 
			
		||||
                    "dev-master": "3.x-dev"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "Psr\\Log\\": "src"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "PHP-FIG",
 | 
			
		||||
                    "homepage": "https://www.php-fig.org/"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Common interface for logging libraries",
 | 
			
		||||
            "homepage": "https://github.com/php-fig/log",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "log",
 | 
			
		||||
                "psr",
 | 
			
		||||
                "psr-3"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "source": "https://github.com/php-fig/log/tree/3.0.0"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../psr/log"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "psr/simple-cache",
 | 
			
		||||
            "version": "3.0.0",
 | 
			
		||||
            "version_normalized": "3.0.0.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/php-fig/simple-cache.git",
 | 
			
		||||
                "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865",
 | 
			
		||||
                "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=8.0.0"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2021-10-29T13:26:27+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "extra": {
 | 
			
		||||
                "branch-alias": {
 | 
			
		||||
                    "dev-master": "3.0.x-dev"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "Psr\\SimpleCache\\": "src/"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "PHP-FIG",
 | 
			
		||||
                    "homepage": "https://www.php-fig.org/"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Common interfaces for simple caching",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "cache",
 | 
			
		||||
                "caching",
 | 
			
		||||
                "psr",
 | 
			
		||||
                "psr-16",
 | 
			
		||||
                "simple-cache"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "source": "https://github.com/php-fig/simple-cache/tree/3.0.0"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../psr/simple-cache"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "symfony/polyfill-mbstring",
 | 
			
		||||
            "version": "v1.30.0",
 | 
			
		||||
            "version_normalized": "1.30.0.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/symfony/polyfill-mbstring.git",
 | 
			
		||||
                "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fd22ab50000ef01661e2a31d850ebaa297f8e03c",
 | 
			
		||||
                "reference": "fd22ab50000ef01661e2a31d850ebaa297f8e03c",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=7.1"
 | 
			
		||||
            },
 | 
			
		||||
            "provide": {
 | 
			
		||||
                "ext-mbstring": "*"
 | 
			
		||||
            },
 | 
			
		||||
            "suggest": {
 | 
			
		||||
                "ext-mbstring": "For best performance"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2024-06-19T12:30:46+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "extra": {
 | 
			
		||||
                "thanks": {
 | 
			
		||||
                    "name": "symfony/polyfill",
 | 
			
		||||
                    "url": "https://github.com/symfony/polyfill"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "files": [
 | 
			
		||||
                    "bootstrap.php"
 | 
			
		||||
                ],
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "Symfony\\Polyfill\\Mbstring\\": ""
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Nicolas Grekas",
 | 
			
		||||
                    "email": "p@tchwork.com"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Symfony Community",
 | 
			
		||||
                    "homepage": "https://symfony.com/contributors"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Symfony polyfill for the Mbstring extension",
 | 
			
		||||
            "homepage": "https://symfony.com",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "compatibility",
 | 
			
		||||
                "mbstring",
 | 
			
		||||
                "polyfill",
 | 
			
		||||
                "portable",
 | 
			
		||||
                "shim"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.30.0"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": [
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://symfony.com/sponsor",
 | 
			
		||||
                    "type": "custom"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://github.com/fabpot",
 | 
			
		||||
                    "type": "github"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
 | 
			
		||||
                    "type": "tidelift"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "install-path": "../symfony/polyfill-mbstring"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "symfony/var-dumper",
 | 
			
		||||
            "version": "v6.0.19",
 | 
			
		||||
            "version_normalized": "6.0.19.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/symfony/var-dumper.git",
 | 
			
		||||
                "reference": "eb980457fa6899840fe1687e8627a03a7d8a3d52"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/symfony/var-dumper/zipball/eb980457fa6899840fe1687e8627a03a7d8a3d52",
 | 
			
		||||
                "reference": "eb980457fa6899840fe1687e8627a03a7d8a3d52",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=8.0.2",
 | 
			
		||||
                "symfony/polyfill-mbstring": "~1.0"
 | 
			
		||||
            },
 | 
			
		||||
            "conflict": {
 | 
			
		||||
                "phpunit/phpunit": "<5.4.3",
 | 
			
		||||
                "symfony/console": "<5.4"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "ext-iconv": "*",
 | 
			
		||||
                "symfony/console": "^5.4|^6.0",
 | 
			
		||||
                "symfony/process": "^5.4|^6.0",
 | 
			
		||||
                "symfony/uid": "^5.4|^6.0",
 | 
			
		||||
                "twig/twig": "^2.13|^3.0.4"
 | 
			
		||||
            },
 | 
			
		||||
            "suggest": {
 | 
			
		||||
                "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).",
 | 
			
		||||
                "ext-intl": "To show region name in time zone dump",
 | 
			
		||||
                "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2023-01-20T17:44:14+00:00",
 | 
			
		||||
            "bin": [
 | 
			
		||||
                "Resources/bin/var-dump-server"
 | 
			
		||||
            ],
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "files": [
 | 
			
		||||
                    "Resources/functions/dump.php"
 | 
			
		||||
                ],
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "Symfony\\Component\\VarDumper\\": ""
 | 
			
		||||
                },
 | 
			
		||||
                "exclude-from-classmap": [
 | 
			
		||||
                    "/Tests/"
 | 
			
		||||
                ]
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "MIT"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Nicolas Grekas",
 | 
			
		||||
                    "email": "p@tchwork.com"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "Symfony Community",
 | 
			
		||||
                    "homepage": "https://symfony.com/contributors"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "Provides mechanisms for walking through any arbitrary PHP variable",
 | 
			
		||||
            "homepage": "https://symfony.com",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "debug",
 | 
			
		||||
                "dump"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "source": "https://github.com/symfony/var-dumper/tree/v6.0.19"
 | 
			
		||||
            },
 | 
			
		||||
            "funding": [
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://symfony.com/sponsor",
 | 
			
		||||
                    "type": "custom"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://github.com/fabpot",
 | 
			
		||||
                    "type": "github"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
 | 
			
		||||
                    "type": "tidelift"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "install-path": "../symfony/var-dumper"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "topthink/framework",
 | 
			
		||||
            "version": "v8.0.4",
 | 
			
		||||
            "version_normalized": "8.0.4.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/top-think/framework.git",
 | 
			
		||||
                "reference": "846432655a82614a874cdaaac7be6870940b14d2"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/top-think/framework/zipball/846432655a82614a874cdaaac7be6870940b14d2",
 | 
			
		||||
                "reference": "846432655a82614a874cdaaac7be6870940b14d2",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "ext-json": "*",
 | 
			
		||||
                "ext-mbstring": "*",
 | 
			
		||||
                "php": ">=8.0.0",
 | 
			
		||||
                "psr/container": "^2.0",
 | 
			
		||||
                "psr/http-message": "^1.0",
 | 
			
		||||
                "psr/log": "^1.0|^2.0|^3.0",
 | 
			
		||||
                "psr/simple-cache": "^1.0|^2.0|^3.0",
 | 
			
		||||
                "topthink/think-helper": "^3.1",
 | 
			
		||||
                "topthink/think-orm": "^3.0"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "guzzlehttp/psr7": "^2.1.0",
 | 
			
		||||
                "mikey179/vfsstream": "^1.6",
 | 
			
		||||
                "mockery/mockery": "^1.2",
 | 
			
		||||
                "phpunit/phpunit": "^9.5"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2024-07-29T03:24:24+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "files": [],
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "think\\": "src/think/"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "Apache-2.0"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "liu21st",
 | 
			
		||||
                    "email": "liu21st@gmail.com"
 | 
			
		||||
                },
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "yunwuxin",
 | 
			
		||||
                    "email": "448901948@qq.com"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "The ThinkPHP Framework.",
 | 
			
		||||
            "homepage": "http://thinkphp.cn/",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "framework",
 | 
			
		||||
                "orm",
 | 
			
		||||
                "thinkphp"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/top-think/framework/issues",
 | 
			
		||||
                "source": "https://github.com/top-think/framework/tree/v8.0.4"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../topthink/framework"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "topthink/think-filesystem",
 | 
			
		||||
            "version": "v2.0.2",
 | 
			
		||||
            "version_normalized": "2.0.2.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/top-think/think-filesystem.git",
 | 
			
		||||
                "reference": "c08503232fcae0c3c7fefae5e6b5c841ffe09f2f"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/top-think/think-filesystem/zipball/c08503232fcae0c3c7fefae5e6b5c841ffe09f2f",
 | 
			
		||||
                "reference": "c08503232fcae0c3c7fefae5e6b5c841ffe09f2f",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "league/flysystem": "^2.0",
 | 
			
		||||
                "topthink/framework": "^6.1|^8.0"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "mikey179/vfsstream": "^1.6",
 | 
			
		||||
                "mockery/mockery": "^1.2",
 | 
			
		||||
                "phpunit/phpunit": "^8.0"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2023-02-08T01:23:42+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "think\\": "src"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "Apache-2.0"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "yunwuxin",
 | 
			
		||||
                    "email": "448901948@qq.com"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "The ThinkPHP6.1 Filesystem Package",
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/top-think/think-filesystem/issues",
 | 
			
		||||
                "source": "https://github.com/top-think/think-filesystem/tree/v2.0.2"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../topthink/think-filesystem"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "topthink/think-helper",
 | 
			
		||||
            "version": "v3.1.6",
 | 
			
		||||
            "version_normalized": "3.1.6.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/top-think/think-helper.git",
 | 
			
		||||
                "reference": "769acbe50a4274327162f9c68ec2e89a38eb2aff"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/top-think/think-helper/zipball/769acbe50a4274327162f9c68ec2e89a38eb2aff",
 | 
			
		||||
                "reference": "769acbe50a4274327162f9c68ec2e89a38eb2aff",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=7.1.0"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "phpunit/phpunit": "^9.5"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2021-12-15T04:27:55+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "files": [
 | 
			
		||||
                    "src/helper.php"
 | 
			
		||||
                ],
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "think\\": "src"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "Apache-2.0"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "yunwuxin",
 | 
			
		||||
                    "email": "448901948@qq.com"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "The ThinkPHP6 Helper Package",
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/top-think/think-helper/issues",
 | 
			
		||||
                "source": "https://github.com/top-think/think-helper/tree/v3.1.6"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../topthink/think-helper"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "topthink/think-orm",
 | 
			
		||||
            "version": "v3.0.20",
 | 
			
		||||
            "version_normalized": "3.0.20.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/top-think/think-orm.git",
 | 
			
		||||
                "reference": "f9fc4f110bbc8ccbf325903ca95ac77fb6523e2b"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/top-think/think-orm/zipball/f9fc4f110bbc8ccbf325903ca95ac77fb6523e2b",
 | 
			
		||||
                "reference": "f9fc4f110bbc8ccbf325903ca95ac77fb6523e2b",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "ext-json": "*",
 | 
			
		||||
                "ext-pdo": "*",
 | 
			
		||||
                "php": ">=8.0.0",
 | 
			
		||||
                "psr/log": ">=1.0",
 | 
			
		||||
                "psr/simple-cache": ">=1.0",
 | 
			
		||||
                "topthink/think-helper": "^3.1"
 | 
			
		||||
            },
 | 
			
		||||
            "require-dev": {
 | 
			
		||||
                "phpunit/phpunit": "^9.6|^10"
 | 
			
		||||
            },
 | 
			
		||||
            "suggest": {
 | 
			
		||||
                "ext-mongodb": "provide mongodb support"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2024-08-05T09:54:58+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "files": [
 | 
			
		||||
                    "stubs/load_stubs.php"
 | 
			
		||||
                ],
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "think\\": "src"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "Apache-2.0"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "liu21st",
 | 
			
		||||
                    "email": "liu21st@gmail.com"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "the PHP Database&ORM Framework",
 | 
			
		||||
            "keywords": [
 | 
			
		||||
                "database",
 | 
			
		||||
                "orm"
 | 
			
		||||
            ],
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/top-think/think-orm/issues",
 | 
			
		||||
                "source": "https://github.com/top-think/think-orm/tree/v3.0.20"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../topthink/think-orm"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "topthink/think-trace",
 | 
			
		||||
            "version": "v1.6",
 | 
			
		||||
            "version_normalized": "1.6.0.0",
 | 
			
		||||
            "source": {
 | 
			
		||||
                "type": "git",
 | 
			
		||||
                "url": "https://github.com/top-think/think-trace.git",
 | 
			
		||||
                "reference": "136cd5d97e8bdb780e4b5c1637c588ed7ca3e142"
 | 
			
		||||
            },
 | 
			
		||||
            "dist": {
 | 
			
		||||
                "type": "zip",
 | 
			
		||||
                "url": "https://api.github.com/repos/top-think/think-trace/zipball/136cd5d97e8bdb780e4b5c1637c588ed7ca3e142",
 | 
			
		||||
                "reference": "136cd5d97e8bdb780e4b5c1637c588ed7ca3e142",
 | 
			
		||||
                "shasum": ""
 | 
			
		||||
            },
 | 
			
		||||
            "require": {
 | 
			
		||||
                "php": ">=7.1.0",
 | 
			
		||||
                "topthink/framework": "^6.0|^8.0"
 | 
			
		||||
            },
 | 
			
		||||
            "time": "2023-02-07T08:36:32+00:00",
 | 
			
		||||
            "type": "library",
 | 
			
		||||
            "extra": {
 | 
			
		||||
                "think": {
 | 
			
		||||
                    "services": [
 | 
			
		||||
                        "think\\trace\\Service"
 | 
			
		||||
                    ],
 | 
			
		||||
                    "config": {
 | 
			
		||||
                        "trace": "src/config.php"
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "installation-source": "dist",
 | 
			
		||||
            "autoload": {
 | 
			
		||||
                "psr-4": {
 | 
			
		||||
                    "think\\trace\\": "src"
 | 
			
		||||
                }
 | 
			
		||||
            },
 | 
			
		||||
            "notification-url": "https://packagist.org/downloads/",
 | 
			
		||||
            "license": [
 | 
			
		||||
                "Apache-2.0"
 | 
			
		||||
            ],
 | 
			
		||||
            "authors": [
 | 
			
		||||
                {
 | 
			
		||||
                    "name": "liu21st",
 | 
			
		||||
                    "email": "liu21st@gmail.com"
 | 
			
		||||
                }
 | 
			
		||||
            ],
 | 
			
		||||
            "description": "thinkphp debug trace",
 | 
			
		||||
            "support": {
 | 
			
		||||
                "issues": "https://github.com/top-think/think-trace/issues",
 | 
			
		||||
                "source": "https://github.com/top-think/think-trace/tree/v1.6"
 | 
			
		||||
            },
 | 
			
		||||
            "install-path": "../topthink/think-trace"
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "dev": true,
 | 
			
		||||
    "dev-package-names": [
 | 
			
		||||
        "symfony/polyfill-mbstring",
 | 
			
		||||
        "symfony/var-dumper",
 | 
			
		||||
        "topthink/think-trace"
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										140
									
								
								vendor/composer/installed.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										140
									
								
								vendor/composer/installed.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,140 @@
 | 
			
		||||
<?php return array(
 | 
			
		||||
    'root' => array(
 | 
			
		||||
        'name' => 'topthink/think',
 | 
			
		||||
        'pretty_version' => 'v8.0.0',
 | 
			
		||||
        'version' => '8.0.0.0',
 | 
			
		||||
        'reference' => NULL,
 | 
			
		||||
        'type' => 'project',
 | 
			
		||||
        'install_path' => __DIR__ . '/../../',
 | 
			
		||||
        'aliases' => array(),
 | 
			
		||||
        'dev' => true,
 | 
			
		||||
    ),
 | 
			
		||||
    'versions' => array(
 | 
			
		||||
        'league/flysystem' => array(
 | 
			
		||||
            'pretty_version' => '2.5.0',
 | 
			
		||||
            'version' => '2.5.0.0',
 | 
			
		||||
            'reference' => '8aaffb653c5777781b0f7f69a5d937baf7ab6cdb',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../league/flysystem',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'league/mime-type-detection' => array(
 | 
			
		||||
            'pretty_version' => '1.15.0',
 | 
			
		||||
            'version' => '1.15.0.0',
 | 
			
		||||
            'reference' => 'ce0f4d1e8a6f4eb0ddff33f57c69c50fd09f4301',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../league/mime-type-detection',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'psr/container' => array(
 | 
			
		||||
            'pretty_version' => '2.0.2',
 | 
			
		||||
            'version' => '2.0.2.0',
 | 
			
		||||
            'reference' => 'c71ecc56dfe541dbd90c5360474fbc405f8d5963',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../psr/container',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'psr/http-message' => array(
 | 
			
		||||
            'pretty_version' => '1.1',
 | 
			
		||||
            'version' => '1.1.0.0',
 | 
			
		||||
            'reference' => 'cb6ce4845ce34a8ad9e68117c10ee90a29919eba',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../psr/http-message',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'psr/log' => array(
 | 
			
		||||
            'pretty_version' => '3.0.0',
 | 
			
		||||
            'version' => '3.0.0.0',
 | 
			
		||||
            'reference' => 'fe5ea303b0887d5caefd3d431c3e61ad47037001',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../psr/log',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'psr/simple-cache' => array(
 | 
			
		||||
            'pretty_version' => '3.0.0',
 | 
			
		||||
            'version' => '3.0.0.0',
 | 
			
		||||
            'reference' => '764e0b3939f5ca87cb904f570ef9be2d78a07865',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../psr/simple-cache',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'symfony/polyfill-mbstring' => array(
 | 
			
		||||
            'pretty_version' => 'v1.30.0',
 | 
			
		||||
            'version' => '1.30.0.0',
 | 
			
		||||
            'reference' => 'fd22ab50000ef01661e2a31d850ebaa297f8e03c',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../symfony/polyfill-mbstring',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => true,
 | 
			
		||||
        ),
 | 
			
		||||
        'symfony/var-dumper' => array(
 | 
			
		||||
            'pretty_version' => 'v6.0.19',
 | 
			
		||||
            'version' => '6.0.19.0',
 | 
			
		||||
            'reference' => 'eb980457fa6899840fe1687e8627a03a7d8a3d52',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../symfony/var-dumper',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => true,
 | 
			
		||||
        ),
 | 
			
		||||
        'topthink/framework' => array(
 | 
			
		||||
            'pretty_version' => 'v8.0.4',
 | 
			
		||||
            'version' => '8.0.4.0',
 | 
			
		||||
            'reference' => '846432655a82614a874cdaaac7be6870940b14d2',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../topthink/framework',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'topthink/think' => array(
 | 
			
		||||
            'pretty_version' => 'v8.0.0',
 | 
			
		||||
            'version' => '8.0.0.0',
 | 
			
		||||
            'reference' => NULL,
 | 
			
		||||
            'type' => 'project',
 | 
			
		||||
            'install_path' => __DIR__ . '/../../',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'topthink/think-filesystem' => array(
 | 
			
		||||
            'pretty_version' => 'v2.0.2',
 | 
			
		||||
            'version' => '2.0.2.0',
 | 
			
		||||
            'reference' => 'c08503232fcae0c3c7fefae5e6b5c841ffe09f2f',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../topthink/think-filesystem',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'topthink/think-helper' => array(
 | 
			
		||||
            'pretty_version' => 'v3.1.6',
 | 
			
		||||
            'version' => '3.1.6.0',
 | 
			
		||||
            'reference' => '769acbe50a4274327162f9c68ec2e89a38eb2aff',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../topthink/think-helper',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'topthink/think-orm' => array(
 | 
			
		||||
            'pretty_version' => 'v3.0.20',
 | 
			
		||||
            'version' => '3.0.20.0',
 | 
			
		||||
            'reference' => 'f9fc4f110bbc8ccbf325903ca95ac77fb6523e2b',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../topthink/think-orm',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => false,
 | 
			
		||||
        ),
 | 
			
		||||
        'topthink/think-trace' => array(
 | 
			
		||||
            'pretty_version' => 'v1.6',
 | 
			
		||||
            'version' => '1.6.0.0',
 | 
			
		||||
            'reference' => '136cd5d97e8bdb780e4b5c1637c588ed7ca3e142',
 | 
			
		||||
            'type' => 'library',
 | 
			
		||||
            'install_path' => __DIR__ . '/../topthink/think-trace',
 | 
			
		||||
            'aliases' => array(),
 | 
			
		||||
            'dev_requirement' => true,
 | 
			
		||||
        ),
 | 
			
		||||
    ),
 | 
			
		||||
);
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/composer/platform_check.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/composer/platform_check.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
// platform_check.php @generated by Composer
 | 
			
		||||
 | 
			
		||||
$issues = array();
 | 
			
		||||
 | 
			
		||||
if (!(PHP_VERSION_ID >= 80000)) {
 | 
			
		||||
    $issues[] = 'Your Composer dependencies require a PHP version ">= 8.0.0". You are running ' . PHP_VERSION . '.';
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
if ($issues) {
 | 
			
		||||
    if (!headers_sent()) {
 | 
			
		||||
        header('HTTP/1.1 500 Internal Server Error');
 | 
			
		||||
    }
 | 
			
		||||
    if (!ini_get('display_errors')) {
 | 
			
		||||
        if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') {
 | 
			
		||||
            fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL);
 | 
			
		||||
        } elseif (!headers_sent()) {
 | 
			
		||||
            echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
    trigger_error(
 | 
			
		||||
        'Composer detected issues in your platform: ' . implode(' ', $issues),
 | 
			
		||||
        E_USER_ERROR
 | 
			
		||||
    );
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2
									
								
								vendor/league/flysystem/INFO.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2
									
								
								vendor/league/flysystem/INFO.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,2 @@
 | 
			
		||||
View the docs at: https://flysystem.thephpleague.com/v2/  
 | 
			
		||||
Changelog at: https://github.com/thephpleague/flysystem/blob/2.x/CHANGELOG.md
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/league/flysystem/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/league/flysystem/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
Copyright (c) 2013-2022 Frank de Jonge
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is furnished
 | 
			
		||||
to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										48
									
								
								vendor/league/flysystem/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/league/flysystem/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "league/flysystem",
 | 
			
		||||
    "description": "File storage abstraction for PHP",
 | 
			
		||||
    "keywords": [
 | 
			
		||||
        "filesystem", "filesystems", "files", "storage", "aws",
 | 
			
		||||
        "s3", "ftp", "sftp", "webdav", "file", "cloud"
 | 
			
		||||
    ],
 | 
			
		||||
    "scripts": {
 | 
			
		||||
        "phpstan": "vendor/bin/phpstan analyse -l 6 src"
 | 
			
		||||
    },
 | 
			
		||||
    "type": "library",
 | 
			
		||||
    "minimum-stability": "dev",
 | 
			
		||||
    "prefer-stable": true,
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "League\\Flysystem\\": "src"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": "^7.2 || ^8.0",
 | 
			
		||||
        "ext-json": "*",
 | 
			
		||||
        "league/mime-type-detection": "^1.0.0"
 | 
			
		||||
    },
 | 
			
		||||
    "require-dev": {
 | 
			
		||||
        "ext-fileinfo": "*",
 | 
			
		||||
        "ext-ftp": "*",
 | 
			
		||||
        "phpunit/phpunit": "^8.5 || ^9.4",
 | 
			
		||||
        "phpstan/phpstan": "^0.12.26",
 | 
			
		||||
        "phpseclib/phpseclib": "^2.0",
 | 
			
		||||
        "aws/aws-sdk-php": "^3.132.4",
 | 
			
		||||
        "composer/semver": "^3.0",
 | 
			
		||||
        "friendsofphp/php-cs-fixer": "^3.2",
 | 
			
		||||
        "google/cloud-storage": "^1.23",
 | 
			
		||||
        "async-aws/s3": "^1.5",
 | 
			
		||||
        "async-aws/simple-s3": "^1.0",
 | 
			
		||||
        "sabre/dav": "^4.1"
 | 
			
		||||
    },
 | 
			
		||||
    "conflict": {
 | 
			
		||||
        "guzzlehttp/ringphp": "<1.1.1"
 | 
			
		||||
    },
 | 
			
		||||
    "license": "MIT",
 | 
			
		||||
    "authors": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "Frank de Jonge",
 | 
			
		||||
            "email": "info@frankdejonge.nl"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										49
									
								
								vendor/league/flysystem/config.subsplit-publish.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								vendor/league/flysystem/config.subsplit-publish.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
{
 | 
			
		||||
    "sub-splits": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "ftp",
 | 
			
		||||
            "directory": "src/Ftp",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-ftp.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "sftp",
 | 
			
		||||
            "directory": "src/PhpseclibV2",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-sftp.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "sftp-v3",
 | 
			
		||||
            "directory": "src/PhpseclibV3",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-sftp-v3.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "memory",
 | 
			
		||||
            "directory": "src/InMemory",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-memory.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "ziparchive",
 | 
			
		||||
            "directory": "src/ZipArchive",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-ziparchive.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "aws-s3-v3",
 | 
			
		||||
            "directory": "src/AwsS3V3",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-aws-s3-v3.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "async-aws-s3",
 | 
			
		||||
            "directory": "src/AsyncAwsS3",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-async-aws-s3.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "google-cloud-storage",
 | 
			
		||||
            "directory": "src/GoogleCloudStorage",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-google-cloud-storage.git"
 | 
			
		||||
        },
 | 
			
		||||
        {
 | 
			
		||||
            "name": "adapter-test-utilities",
 | 
			
		||||
            "directory": "src/AdapterTestUtilities",
 | 
			
		||||
            "target": "git@github.com:thephpleague/flysystem-adapter-test-utilities.git"
 | 
			
		||||
        }
 | 
			
		||||
    ]
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										58
									
								
								vendor/league/flysystem/docker-compose.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								vendor/league/flysystem/docker-compose.yml
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
---
 | 
			
		||||
version: "3"
 | 
			
		||||
services:
 | 
			
		||||
  webdav:
 | 
			
		||||
    image: bytemark/webdav
 | 
			
		||||
    restart: always
 | 
			
		||||
    ports:
 | 
			
		||||
      - "80:80"
 | 
			
		||||
    environment:
 | 
			
		||||
      AUTH_TYPE: Digest
 | 
			
		||||
      USERNAME: alice
 | 
			
		||||
      PASSWORD: secret1234
 | 
			
		||||
  sftp:
 | 
			
		||||
    container_name: sftp
 | 
			
		||||
    restart: always
 | 
			
		||||
    image: atmoz/sftp
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./test_files/sftp/users.conf:/etc/sftp/users.conf
 | 
			
		||||
      - ./test_files/sftp/ssh_host_ed25519_key:/etc/ssh/ssh_host_ed25519_key
 | 
			
		||||
      - ./test_files/sftp/ssh_host_rsa_key:/etc/ssh/ssh_host_rsa_key
 | 
			
		||||
      - ./test_files/sftp/id_rsa.pub:/home/bar/.ssh/keys/id_rsa.pub
 | 
			
		||||
    ports:
 | 
			
		||||
      - "2222:22"
 | 
			
		||||
  ftp:
 | 
			
		||||
    container_name: ftp
 | 
			
		||||
    restart: always
 | 
			
		||||
    image: delfer/alpine-ftp-server
 | 
			
		||||
    environment:
 | 
			
		||||
      USERS: 'foo|pass|/home/foo/upload'
 | 
			
		||||
      ADDRESS: 'localhost'
 | 
			
		||||
    ports:
 | 
			
		||||
      - "2121:21"
 | 
			
		||||
      - "21000-21010:21000-21010"
 | 
			
		||||
  ftpd:
 | 
			
		||||
    container_name: ftpd
 | 
			
		||||
    restart: always
 | 
			
		||||
    environment:
 | 
			
		||||
      PUBLICHOST: localhost
 | 
			
		||||
      FTP_USER_NAME: foo
 | 
			
		||||
      FTP_USER_PASS: pass
 | 
			
		||||
      FTP_USER_HOME: /home/foo
 | 
			
		||||
    image: stilliard/pure-ftpd
 | 
			
		||||
    ports:
 | 
			
		||||
      - "2122:21"
 | 
			
		||||
      - "30000-30009:30000-30009"
 | 
			
		||||
    command: "/run.sh -l puredb:/etc/pure-ftpd/pureftpd.pdb -E -j -P localhost"
 | 
			
		||||
  toxiproxy:
 | 
			
		||||
    container_name: toxiproxy
 | 
			
		||||
    restart: unless-stopped
 | 
			
		||||
    image: ghcr.io/shopify/toxiproxy
 | 
			
		||||
    command: "-host 0.0.0.0 -config /opt/toxiproxy/config.json"
 | 
			
		||||
    volumes:
 | 
			
		||||
      - ./test_files/toxiproxy/toxiproxy.json:/opt/toxiproxy/config.json:ro
 | 
			
		||||
    ports:
 | 
			
		||||
      - "8474:8474" # HTTP API
 | 
			
		||||
      - "8222:8222" # SFTP
 | 
			
		||||
      - "8121:8121" # FTP
 | 
			
		||||
      - "8122:8122" # FTPD
 | 
			
		||||
							
								
								
									
										45
									
								
								vendor/league/flysystem/readme.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/league/flysystem/readme.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
# League\Flysystem
 | 
			
		||||
 | 
			
		||||
[](https://twitter.com/frankdejonge)
 | 
			
		||||
[](https://github.com/thephpleague/flysystem)
 | 
			
		||||
[](https://github.com/thephpleague/flysystem/releases)
 | 
			
		||||
[](https://github.com/thephpleague/flysystem/blob/master/LICENSE)
 | 
			
		||||
[](https://github.com/thephpleague/flysystem/actions?query=workflow%3A%22Quality+Assurance%22)
 | 
			
		||||
[](https://packagist.org/packages/league/flysystem)
 | 
			
		||||

 | 
			
		||||
 | 
			
		||||
## About Flysystem
 | 
			
		||||
 | 
			
		||||
Flysystem is a file storage library for PHP. It provides one interface to
 | 
			
		||||
interact with many types of filesystems. When you use Flysystem, you're
 | 
			
		||||
not only protected from vendor lock-in, you'll also have a consistent experience
 | 
			
		||||
for which ever storage is right for you. 
 | 
			
		||||
 | 
			
		||||
## Getting Started
 | 
			
		||||
 | 
			
		||||
* **[New in V2](https://flysystem.thephpleague.com/v2/docs/what-is-new/)**: What it new in Flysystem V2?
 | 
			
		||||
* **[Architecture](https://flysystem.thephpleague.com/v2/docs/architecture/)**: Flysystem's internal architecture
 | 
			
		||||
* **[Flysystem API](https://flysystem.thephpleague.com/v2/docs/usage/filesystem-api/)**: How to interact with your Flysystem instance
 | 
			
		||||
* **[Upgrade to V2](https://flysystem.thephpleague.com/v2/docs/advanced/upgrade-to-2.0.0/)**: How to upgrade your Flysystem V1 instance to V2
 | 
			
		||||
 | 
			
		||||
### Commonly-Used Adapters
 | 
			
		||||
 | 
			
		||||
* **[AsyncAws S3](https://flysystem.thephpleague.com/v2/docs/adapter/async-aws-s3/)**
 | 
			
		||||
* **[AWS S3](https://flysystem.thephpleague.com/v2/docs/adapter/aws-s3-v3/)**
 | 
			
		||||
* **[Local](https://flysystem.thephpleague.com/v2/docs/adapter/local/)**
 | 
			
		||||
* **[Memory](https://flysystem.thephpleague.com/v2/docs/adapter/in-memory/)**
 | 
			
		||||
 | 
			
		||||
### Third party Adapters
 | 
			
		||||
 | 
			
		||||
* **[Gitlab](https://github.com/RoyVoetman/flysystem-gitlab-storage)**
 | 
			
		||||
* **[Google Drive (using regular paths)](https://github.com/masbug/flysystem-google-drive-ext)**
 | 
			
		||||
 | 
			
		||||
You can always [create an adapter](https://flysystem.thephpleague.com/v2/docs/advanced/creating-an-adapter/) yourself.
 | 
			
		||||
 | 
			
		||||
## Security
 | 
			
		||||
 | 
			
		||||
If you discover any security related issues, please email info@frankdejonge.nl instead of using the issue tracker.
 | 
			
		||||
 | 
			
		||||
## Enjoy
 | 
			
		||||
 | 
			
		||||
Oh, and if you've come down this far, you might as well follow me on [twitter](https://twitter.com/frankdejonge).
 | 
			
		||||
							
								
								
									
										43
									
								
								vendor/league/flysystem/src/Config.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								vendor/league/flysystem/src/Config.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,43 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use function array_merge;
 | 
			
		||||
 | 
			
		||||
class Config
 | 
			
		||||
{
 | 
			
		||||
    public const OPTION_VISIBILITY = 'visibility';
 | 
			
		||||
    public const OPTION_DIRECTORY_VISIBILITY = 'directory_visibility';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    private $options;
 | 
			
		||||
 | 
			
		||||
    public function __construct(array $options = [])
 | 
			
		||||
    {
 | 
			
		||||
        $this->options = $options;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $default
 | 
			
		||||
     *
 | 
			
		||||
     * @return mixed
 | 
			
		||||
     */
 | 
			
		||||
    public function get(string $property, $default = null)
 | 
			
		||||
    {
 | 
			
		||||
        return $this->options[$property] ?? $default;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function extend(array $options): Config
 | 
			
		||||
    {
 | 
			
		||||
        return new Config(array_merge($this->options, $options));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function withDefaults(array $defaults): Config
 | 
			
		||||
    {
 | 
			
		||||
        return new Config($this->options + $defaults);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								vendor/league/flysystem/src/CorruptedPathDetected.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/league/flysystem/src/CorruptedPathDetected.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
final class CorruptedPathDetected extends RuntimeException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    public static function forPath(string $path): CorruptedPathDetected
 | 
			
		||||
    {
 | 
			
		||||
        return new CorruptedPathDetected("Corrupted path detected: " . $path);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										110
									
								
								vendor/league/flysystem/src/DirectoryAttributes.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										110
									
								
								vendor/league/flysystem/src/DirectoryAttributes.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,110 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
class DirectoryAttributes implements StorageAttributes
 | 
			
		||||
{
 | 
			
		||||
    use ProxyArrayAccessToProperties;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $type = StorageAttributes::TYPE_DIRECTORY;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $path;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string|null
 | 
			
		||||
     */
 | 
			
		||||
    private $visibility;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int|null
 | 
			
		||||
     */
 | 
			
		||||
    private $lastModified;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    private $extraMetadata;
 | 
			
		||||
 | 
			
		||||
    public function __construct(string $path, ?string $visibility = null, ?int $lastModified = null, array $extraMetadata = [])
 | 
			
		||||
    {
 | 
			
		||||
        $this->path = $path;
 | 
			
		||||
        $this->visibility = $visibility;
 | 
			
		||||
        $this->lastModified = $lastModified;
 | 
			
		||||
        $this->extraMetadata = $extraMetadata;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function path(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->path;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function type(): string
 | 
			
		||||
    {
 | 
			
		||||
        return StorageAttributes::TYPE_DIRECTORY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function visibility(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->visibility;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lastModified(): ?int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->lastModified;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function extraMetadata(): array
 | 
			
		||||
    {
 | 
			
		||||
        return $this->extraMetadata;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function isFile(): bool
 | 
			
		||||
    {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function isDir(): bool
 | 
			
		||||
    {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function withPath(string $path): StorageAttributes
 | 
			
		||||
    {
 | 
			
		||||
        $clone = clone $this;
 | 
			
		||||
        $clone->path = $path;
 | 
			
		||||
 | 
			
		||||
        return $clone;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function fromArray(array $attributes): StorageAttributes
 | 
			
		||||
    {
 | 
			
		||||
        return new DirectoryAttributes(
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_PATH],
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_VISIBILITY] ?? null,
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_LAST_MODIFIED] ?? null,
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_EXTRA_METADATA] ?? []
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @inheritDoc
 | 
			
		||||
     */
 | 
			
		||||
    public function jsonSerialize(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_TYPE => $this->type,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_PATH => $this->path,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_VISIBILITY => $this->visibility,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_LAST_MODIFIED => $this->lastModified,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_EXTRA_METADATA => $this->extraMetadata,
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										84
									
								
								vendor/league/flysystem/src/DirectoryListing.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										84
									
								
								vendor/league/flysystem/src/DirectoryListing.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,84 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use ArrayIterator;
 | 
			
		||||
use Generator;
 | 
			
		||||
use IteratorAggregate;
 | 
			
		||||
use Traversable;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @template T
 | 
			
		||||
 */
 | 
			
		||||
class DirectoryListing implements IteratorAggregate
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var iterable<T>
 | 
			
		||||
     */
 | 
			
		||||
    private $listing;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param iterable<T> $listing
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(iterable $listing)
 | 
			
		||||
    {
 | 
			
		||||
        $this->listing = $listing;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function filter(callable $filter): DirectoryListing
 | 
			
		||||
    {
 | 
			
		||||
        $generator = (static function (iterable $listing) use ($filter): Generator {
 | 
			
		||||
            foreach ($listing as $item) {
 | 
			
		||||
                if ($filter($item)) {
 | 
			
		||||
                    yield $item;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        })($this->listing);
 | 
			
		||||
 | 
			
		||||
        return new DirectoryListing($generator);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function map(callable $mapper): DirectoryListing
 | 
			
		||||
    {
 | 
			
		||||
        $generator = (static function (iterable $listing) use ($mapper): Generator {
 | 
			
		||||
            foreach ($listing as $item) {
 | 
			
		||||
                yield $mapper($item);
 | 
			
		||||
            }
 | 
			
		||||
        })($this->listing);
 | 
			
		||||
 | 
			
		||||
        return new DirectoryListing($generator);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function sortByPath(): DirectoryListing
 | 
			
		||||
    {
 | 
			
		||||
        $listing = $this->toArray();
 | 
			
		||||
 | 
			
		||||
        usort($listing, function (StorageAttributes $a, StorageAttributes $b) {
 | 
			
		||||
            return $a->path() <=> $b->path();
 | 
			
		||||
        });
 | 
			
		||||
 | 
			
		||||
        return new DirectoryListing($listing);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return Traversable<T>
 | 
			
		||||
     */
 | 
			
		||||
    public function getIterator(): Traversable
 | 
			
		||||
    {
 | 
			
		||||
        return $this->listing instanceof Traversable
 | 
			
		||||
            ? $this->listing
 | 
			
		||||
            : new ArrayIterator($this->listing);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return T[]
 | 
			
		||||
     */
 | 
			
		||||
    public function toArray(): array
 | 
			
		||||
    {
 | 
			
		||||
        return $this->listing instanceof Traversable
 | 
			
		||||
            ? iterator_to_array($this->listing, false)
 | 
			
		||||
            : (array) $this->listing;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										139
									
								
								vendor/league/flysystem/src/FileAttributes.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										139
									
								
								vendor/league/flysystem/src/FileAttributes.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,139 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
class FileAttributes implements StorageAttributes
 | 
			
		||||
{
 | 
			
		||||
    use ProxyArrayAccessToProperties;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $type = StorageAttributes::TYPE_FILE;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $path;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int|null
 | 
			
		||||
     */
 | 
			
		||||
    private $fileSize;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string|null
 | 
			
		||||
     */
 | 
			
		||||
    private $visibility;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int|null
 | 
			
		||||
     */
 | 
			
		||||
    private $lastModified;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string|null
 | 
			
		||||
     */
 | 
			
		||||
    private $mimeType;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array
 | 
			
		||||
     */
 | 
			
		||||
    private $extraMetadata;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        string $path,
 | 
			
		||||
        ?int $fileSize = null,
 | 
			
		||||
        ?string $visibility = null,
 | 
			
		||||
        ?int $lastModified = null,
 | 
			
		||||
        ?string $mimeType = null,
 | 
			
		||||
        array $extraMetadata = []
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->path = $path;
 | 
			
		||||
        $this->fileSize = $fileSize;
 | 
			
		||||
        $this->visibility = $visibility;
 | 
			
		||||
        $this->lastModified = $lastModified;
 | 
			
		||||
        $this->mimeType = $mimeType;
 | 
			
		||||
        $this->extraMetadata = $extraMetadata;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function type(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->type;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function path(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->path;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function fileSize(): ?int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->fileSize;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function visibility(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->visibility;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lastModified(): ?int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->lastModified;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function mimeType(): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->mimeType;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function extraMetadata(): array
 | 
			
		||||
    {
 | 
			
		||||
        return $this->extraMetadata;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function isFile(): bool
 | 
			
		||||
    {
 | 
			
		||||
        return true;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function isDir(): bool
 | 
			
		||||
    {
 | 
			
		||||
        return false;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function withPath(string $path): StorageAttributes
 | 
			
		||||
    {
 | 
			
		||||
        $clone = clone $this;
 | 
			
		||||
        $clone->path = $path;
 | 
			
		||||
 | 
			
		||||
        return $clone;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function fromArray(array $attributes): StorageAttributes
 | 
			
		||||
    {
 | 
			
		||||
        return new FileAttributes(
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_PATH],
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_FILE_SIZE] ?? null,
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_VISIBILITY] ?? null,
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_LAST_MODIFIED] ?? null,
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_MIME_TYPE] ?? null,
 | 
			
		||||
            $attributes[StorageAttributes::ATTRIBUTE_EXTRA_METADATA] ?? []
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function jsonSerialize(): array
 | 
			
		||||
    {
 | 
			
		||||
        return [
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_TYPE => self::TYPE_FILE,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_PATH => $this->path,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_FILE_SIZE => $this->fileSize,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_VISIBILITY => $this->visibility,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_LAST_MODIFIED => $this->lastModified,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_MIME_TYPE => $this->mimeType,
 | 
			
		||||
            StorageAttributes::ATTRIBUTE_EXTRA_METADATA => $this->extraMetadata,
 | 
			
		||||
        ];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										163
									
								
								vendor/league/flysystem/src/Filesystem.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										163
									
								
								vendor/league/flysystem/src/Filesystem.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,163 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
class Filesystem implements FilesystemOperator
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var FilesystemAdapter
 | 
			
		||||
     */
 | 
			
		||||
    private $adapter;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var Config
 | 
			
		||||
     */
 | 
			
		||||
    private $config;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var PathNormalizer
 | 
			
		||||
     */
 | 
			
		||||
    private $pathNormalizer;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        FilesystemAdapter $adapter,
 | 
			
		||||
        array $config = [],
 | 
			
		||||
        PathNormalizer $pathNormalizer = null
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->adapter = $adapter;
 | 
			
		||||
        $this->config = new Config($config);
 | 
			
		||||
        $this->pathNormalizer = $pathNormalizer ?: new WhitespacePathNormalizer();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function fileExists(string $location): bool
 | 
			
		||||
    {
 | 
			
		||||
        return $this->adapter->fileExists($this->pathNormalizer->normalizePath($location));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function write(string $location, string $contents, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->adapter->write(
 | 
			
		||||
            $this->pathNormalizer->normalizePath($location),
 | 
			
		||||
            $contents,
 | 
			
		||||
            $this->config->extend($config)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function writeStream(string $location, $contents, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        /* @var resource $contents */
 | 
			
		||||
        $this->assertIsResource($contents);
 | 
			
		||||
        $this->rewindStream($contents);
 | 
			
		||||
        $this->adapter->writeStream(
 | 
			
		||||
            $this->pathNormalizer->normalizePath($location),
 | 
			
		||||
            $contents,
 | 
			
		||||
            $this->config->extend($config)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function read(string $location): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->adapter->read($this->pathNormalizer->normalizePath($location));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function readStream(string $location)
 | 
			
		||||
    {
 | 
			
		||||
        return $this->adapter->readStream($this->pathNormalizer->normalizePath($location));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function delete(string $location): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->adapter->delete($this->pathNormalizer->normalizePath($location));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function deleteDirectory(string $location): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->adapter->deleteDirectory($this->pathNormalizer->normalizePath($location));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function createDirectory(string $location, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->adapter->createDirectory(
 | 
			
		||||
            $this->pathNormalizer->normalizePath($location),
 | 
			
		||||
            $this->config->extend($config)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function listContents(string $location, bool $deep = self::LIST_SHALLOW): DirectoryListing
 | 
			
		||||
    {
 | 
			
		||||
        $path = $this->pathNormalizer->normalizePath($location);
 | 
			
		||||
 | 
			
		||||
        return new DirectoryListing($this->adapter->listContents($path, $deep));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function move(string $source, string $destination, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->adapter->move(
 | 
			
		||||
            $this->pathNormalizer->normalizePath($source),
 | 
			
		||||
            $this->pathNormalizer->normalizePath($destination),
 | 
			
		||||
            $this->config->extend($config)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function copy(string $source, string $destination, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->adapter->copy(
 | 
			
		||||
            $this->pathNormalizer->normalizePath($source),
 | 
			
		||||
            $this->pathNormalizer->normalizePath($destination),
 | 
			
		||||
            $this->config->extend($config)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lastModified(string $path): int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->adapter->lastModified($this->pathNormalizer->normalizePath($path))->lastModified();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function fileSize(string $path): int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->adapter->fileSize($this->pathNormalizer->normalizePath($path))->fileSize();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function mimeType(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->adapter->mimeType($this->pathNormalizer->normalizePath($path))->mimeType();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setVisibility(string $path, string $visibility): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->adapter->setVisibility($this->pathNormalizer->normalizePath($path), $visibility);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function visibility(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->adapter->visibility($this->pathNormalizer->normalizePath($path))->visibility();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $contents
 | 
			
		||||
     */
 | 
			
		||||
    private function assertIsResource($contents): void
 | 
			
		||||
    {
 | 
			
		||||
        if (is_resource($contents) === false) {
 | 
			
		||||
            throw new InvalidStreamProvided(
 | 
			
		||||
                "Invalid stream provided, expected stream resource, received " . gettype($contents)
 | 
			
		||||
            );
 | 
			
		||||
        } elseif ($type = get_resource_type($contents) !== 'stream') {
 | 
			
		||||
            throw new InvalidStreamProvided(
 | 
			
		||||
                "Invalid stream provided, expected stream resource, received resource of type " . $type
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param resource $resource
 | 
			
		||||
     */
 | 
			
		||||
    private function rewindStream($resource): void
 | 
			
		||||
    {
 | 
			
		||||
        if (ftell($resource) !== 0 && stream_get_meta_data($resource)['seekable']) {
 | 
			
		||||
            rewind($resource);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										108
									
								
								vendor/league/flysystem/src/FilesystemAdapter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										108
									
								
								vendor/league/flysystem/src/FilesystemAdapter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,108 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
interface FilesystemAdapter
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function fileExists(string $path): bool;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToWriteFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function write(string $path, string $contents, Config $config): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param resource $contents
 | 
			
		||||
     *
 | 
			
		||||
     * @throws UnableToWriteFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function writeStream(string $path, $contents, Config $config): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToReadFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function read(string $path): string;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return resource
 | 
			
		||||
     *
 | 
			
		||||
     * @throws UnableToReadFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function readStream(string $path);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToDeleteFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function delete(string $path): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToDeleteDirectory
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function deleteDirectory(string $path): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToCreateDirectory
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function createDirectory(string $path, Config $config): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws InvalidVisibilityProvided
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function setVisibility(string $path, string $visibility): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function visibility(string $path): FileAttributes;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function mimeType(string $path): FileAttributes;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function lastModified(string $path): FileAttributes;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function fileSize(string $path): FileAttributes;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return iterable<StorageAttributes>
 | 
			
		||||
     *
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function listContents(string $path, bool $deep): iterable;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToMoveFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function move(string $source, string $destination, Config $config): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToCopyFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function copy(string $source, string $destination, Config $config): void;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								vendor/league/flysystem/src/FilesystemException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/league/flysystem/src/FilesystemException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
interface FilesystemException extends Throwable
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										22
									
								
								vendor/league/flysystem/src/FilesystemOperationFailed.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								vendor/league/flysystem/src/FilesystemOperationFailed.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,22 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
interface FilesystemOperationFailed extends FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    public const OPERATION_WRITE = 'WRITE';
 | 
			
		||||
    public const OPERATION_UPDATE = 'UPDATE';
 | 
			
		||||
    public const OPERATION_FILE_EXISTS = 'FILE_EXISTS';
 | 
			
		||||
    public const OPERATION_CREATE_DIRECTORY = 'CREATE_DIRECTORY';
 | 
			
		||||
    public const OPERATION_DELETE = 'DELETE';
 | 
			
		||||
    public const OPERATION_DELETE_DIRECTORY = 'DELETE_DIRECTORY';
 | 
			
		||||
    public const OPERATION_MOVE = 'MOVE';
 | 
			
		||||
    public const OPERATION_RETRIEVE_METADATA = 'RETRIEVE_METADATA';
 | 
			
		||||
    public const OPERATION_COPY = 'COPY';
 | 
			
		||||
    public const OPERATION_READ = 'READ';
 | 
			
		||||
    public const OPERATION_SET_VISIBILITY = 'SET_VISIBILITY';
 | 
			
		||||
 | 
			
		||||
    public function operation(): string;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										9
									
								
								vendor/league/flysystem/src/FilesystemOperator.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								vendor/league/flysystem/src/FilesystemOperator.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,9 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
interface FilesystemOperator extends FilesystemReader, FilesystemWriter
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										66
									
								
								vendor/league/flysystem/src/FilesystemReader.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								vendor/league/flysystem/src/FilesystemReader.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This interface contains everything to read from and inspect
 | 
			
		||||
 * a filesystem. All methods containing are non-destructive.
 | 
			
		||||
 */
 | 
			
		||||
interface FilesystemReader
 | 
			
		||||
{
 | 
			
		||||
    public const LIST_SHALLOW = false;
 | 
			
		||||
    public const LIST_DEEP = true;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     * @throws UnableToCheckFileExistence
 | 
			
		||||
     */
 | 
			
		||||
    public function fileExists(string $location): bool;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToReadFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function read(string $location): string;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return resource
 | 
			
		||||
     *
 | 
			
		||||
     * @throws UnableToReadFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function readStream(string $location);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return DirectoryListing<StorageAttributes>
 | 
			
		||||
     *
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function listContents(string $location, bool $deep = self::LIST_SHALLOW): DirectoryListing;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function lastModified(string $path): int;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function fileSize(string $path): int;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function mimeType(string $path): string;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToRetrieveMetadata
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function visibility(string $path): string;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										58
									
								
								vendor/league/flysystem/src/FilesystemWriter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								vendor/league/flysystem/src/FilesystemWriter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
interface FilesystemWriter
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToWriteFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function write(string $location, string $contents, array $config = []): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $contents
 | 
			
		||||
     *
 | 
			
		||||
     * @throws UnableToWriteFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function writeStream(string $location, $contents, array $config = []): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToSetVisibility
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function setVisibility(string $path, string $visibility): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToDeleteFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function delete(string $location): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToDeleteDirectory
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function deleteDirectory(string $location): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToCreateDirectory
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function createDirectory(string $location, array $config = []): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToMoveFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function move(string $source, string $destination, array $config = []): void;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @throws UnableToCopyFile
 | 
			
		||||
     * @throws FilesystemException
 | 
			
		||||
     */
 | 
			
		||||
    public function copy(string $source, string $destination, array $config = []): void;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								vendor/league/flysystem/src/InvalidStreamProvided.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/league/flysystem/src/InvalidStreamProvided.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use InvalidArgumentException as BaseInvalidArgumentException;
 | 
			
		||||
 | 
			
		||||
class InvalidStreamProvided extends BaseInvalidArgumentException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								vendor/league/flysystem/src/InvalidVisibilityProvided.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/league/flysystem/src/InvalidVisibilityProvided.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use InvalidArgumentException;
 | 
			
		||||
 | 
			
		||||
use function var_export;
 | 
			
		||||
 | 
			
		||||
class InvalidVisibilityProvided extends InvalidArgumentException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    public static function withVisibility(string $visibility, string $expectedMessage): InvalidVisibilityProvided
 | 
			
		||||
    {
 | 
			
		||||
        $provided = var_export($visibility, true);
 | 
			
		||||
        $message = "Invalid visibility provided. Expected {$expectedMessage}, received {$provided}";
 | 
			
		||||
 | 
			
		||||
        throw new InvalidVisibilityProvided($message);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										419
									
								
								vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										419
									
								
								vendor/league/flysystem/src/Local/LocalFilesystemAdapter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,419 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem\Local;
 | 
			
		||||
 | 
			
		||||
use function file_put_contents;
 | 
			
		||||
use const DIRECTORY_SEPARATOR;
 | 
			
		||||
use const LOCK_EX;
 | 
			
		||||
use DirectoryIterator;
 | 
			
		||||
use FilesystemIterator;
 | 
			
		||||
use Generator;
 | 
			
		||||
use League\Flysystem\Config;
 | 
			
		||||
use League\Flysystem\DirectoryAttributes;
 | 
			
		||||
use League\Flysystem\FileAttributes;
 | 
			
		||||
use League\Flysystem\FilesystemAdapter;
 | 
			
		||||
use League\Flysystem\PathPrefixer;
 | 
			
		||||
use League\Flysystem\SymbolicLinkEncountered;
 | 
			
		||||
use League\Flysystem\UnableToCopyFile;
 | 
			
		||||
use League\Flysystem\UnableToCreateDirectory;
 | 
			
		||||
use League\Flysystem\UnableToDeleteDirectory;
 | 
			
		||||
use League\Flysystem\UnableToDeleteFile;
 | 
			
		||||
use League\Flysystem\UnableToMoveFile;
 | 
			
		||||
use League\Flysystem\UnableToReadFile;
 | 
			
		||||
use League\Flysystem\UnableToRetrieveMetadata;
 | 
			
		||||
use League\Flysystem\UnableToSetVisibility;
 | 
			
		||||
use League\Flysystem\UnableToWriteFile;
 | 
			
		||||
use League\Flysystem\UnixVisibility\PortableVisibilityConverter;
 | 
			
		||||
use League\Flysystem\UnixVisibility\VisibilityConverter;
 | 
			
		||||
use League\MimeTypeDetection\FinfoMimeTypeDetector;
 | 
			
		||||
use League\MimeTypeDetection\MimeTypeDetector;
 | 
			
		||||
use RecursiveDirectoryIterator;
 | 
			
		||||
use RecursiveIteratorIterator;
 | 
			
		||||
use SplFileInfo;
 | 
			
		||||
use function chmod;
 | 
			
		||||
use function clearstatcache;
 | 
			
		||||
use function dirname;
 | 
			
		||||
use function error_clear_last;
 | 
			
		||||
use function error_get_last;
 | 
			
		||||
use function file_exists;
 | 
			
		||||
use function is_dir;
 | 
			
		||||
use function is_file;
 | 
			
		||||
use function mkdir;
 | 
			
		||||
use function rename;
 | 
			
		||||
use function stream_copy_to_stream;
 | 
			
		||||
 | 
			
		||||
class LocalFilesystemAdapter implements FilesystemAdapter
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    public const SKIP_LINKS = 0001;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    public const DISALLOW_LINKS = 0002;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var PathPrefixer
 | 
			
		||||
     */
 | 
			
		||||
    private $prefixer;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    private $writeFlags;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    private $linkHandling;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var VisibilityConverter
 | 
			
		||||
     */
 | 
			
		||||
    private $visibility;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var MimeTypeDetector
 | 
			
		||||
     */
 | 
			
		||||
    private $mimeTypeDetector;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        string $location,
 | 
			
		||||
        VisibilityConverter $visibility = null,
 | 
			
		||||
        int $writeFlags = LOCK_EX,
 | 
			
		||||
        int $linkHandling = self::DISALLOW_LINKS,
 | 
			
		||||
        MimeTypeDetector $mimeTypeDetector = null
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->prefixer = new PathPrefixer($location, DIRECTORY_SEPARATOR);
 | 
			
		||||
        $this->writeFlags = $writeFlags;
 | 
			
		||||
        $this->linkHandling = $linkHandling;
 | 
			
		||||
        $this->visibility = $visibility ?: new PortableVisibilityConverter();
 | 
			
		||||
        $this->ensureDirectoryExists($location, $this->visibility->defaultForDirectories());
 | 
			
		||||
        $this->mimeTypeDetector = $mimeTypeDetector ?: new FinfoMimeTypeDetector();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function write(string $path, string $contents, Config $config): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->writeToFile($path, $contents, $config);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function writeStream(string $path, $contents, Config $config): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->writeToFile($path, $contents, $config);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param resource|string $contents
 | 
			
		||||
     */
 | 
			
		||||
    private function writeToFile(string $path, $contents, Config $config): void
 | 
			
		||||
    {
 | 
			
		||||
        $prefixedLocation = $this->prefixer->prefixPath($path);
 | 
			
		||||
        $this->ensureDirectoryExists(
 | 
			
		||||
            dirname($prefixedLocation),
 | 
			
		||||
            $this->resolveDirectoryVisibility($config->get(Config::OPTION_DIRECTORY_VISIBILITY))
 | 
			
		||||
        );
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
 | 
			
		||||
        if (@file_put_contents($prefixedLocation, $contents, $this->writeFlags) === false) {
 | 
			
		||||
            throw UnableToWriteFile::atLocation($path, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ($visibility = $config->get(Config::OPTION_VISIBILITY)) {
 | 
			
		||||
            $this->setVisibility($path, (string) $visibility);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function delete(string $path): void
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
 | 
			
		||||
        if ( ! file_exists($location)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
 | 
			
		||||
        if ( ! @unlink($location)) {
 | 
			
		||||
            throw UnableToDeleteFile::atLocation($location, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function deleteDirectory(string $prefix): void
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($prefix);
 | 
			
		||||
 | 
			
		||||
        if ( ! is_dir($location)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $contents = $this->listDirectoryRecursively($location, RecursiveIteratorIterator::CHILD_FIRST);
 | 
			
		||||
 | 
			
		||||
        /** @var SplFileInfo $file */
 | 
			
		||||
        foreach ($contents as $file) {
 | 
			
		||||
            if ( ! $this->deleteFileInfoObject($file)) {
 | 
			
		||||
                throw UnableToDeleteDirectory::atLocation($prefix, "Unable to delete file at " . $file->getPathname());
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        unset($contents);
 | 
			
		||||
 | 
			
		||||
        if ( ! @rmdir($location)) {
 | 
			
		||||
            throw UnableToDeleteDirectory::atLocation($prefix, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function listDirectoryRecursively(
 | 
			
		||||
        string $path,
 | 
			
		||||
        int $mode = RecursiveIteratorIterator::SELF_FIRST
 | 
			
		||||
    ): Generator {
 | 
			
		||||
        yield from new RecursiveIteratorIterator(
 | 
			
		||||
            new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS),
 | 
			
		||||
            $mode
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function deleteFileInfoObject(SplFileInfo $file): bool
 | 
			
		||||
    {
 | 
			
		||||
        switch ($file->getType()) {
 | 
			
		||||
            case 'dir':
 | 
			
		||||
                return @rmdir((string) $file->getRealPath());
 | 
			
		||||
            case 'link':
 | 
			
		||||
                return @unlink((string) $file->getPathname());
 | 
			
		||||
            default:
 | 
			
		||||
                return @unlink((string) $file->getRealPath());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function listContents(string $path, bool $deep): iterable
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
 | 
			
		||||
        if ( ! is_dir($location)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /** @var SplFileInfo[] $iterator */
 | 
			
		||||
        $iterator = $deep ? $this->listDirectoryRecursively($location) : $this->listDirectory($location);
 | 
			
		||||
 | 
			
		||||
        foreach ($iterator as $fileInfo) {
 | 
			
		||||
            if ($fileInfo->isLink()) {
 | 
			
		||||
                if ($this->linkHandling & self::SKIP_LINKS) {
 | 
			
		||||
                    continue;
 | 
			
		||||
                }
 | 
			
		||||
                throw SymbolicLinkEncountered::atLocation($fileInfo->getPathname());
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            $path = $this->prefixer->stripPrefix($fileInfo->getPathname());
 | 
			
		||||
            $lastModified = $fileInfo->getMTime();
 | 
			
		||||
            $isDirectory = $fileInfo->isDir();
 | 
			
		||||
            $permissions = octdec(substr(sprintf('%o', $fileInfo->getPerms()), -4));
 | 
			
		||||
            $visibility = $isDirectory ? $this->visibility->inverseForDirectory($permissions) : $this->visibility->inverseForFile($permissions);
 | 
			
		||||
 | 
			
		||||
            yield $isDirectory ? new DirectoryAttributes($path, $visibility, $lastModified) : new FileAttributes(
 | 
			
		||||
                str_replace('\\', '/', $path),
 | 
			
		||||
                $fileInfo->getSize(),
 | 
			
		||||
                $visibility,
 | 
			
		||||
                $lastModified
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function move(string $source, string $destination, Config $config): void
 | 
			
		||||
    {
 | 
			
		||||
        $sourcePath = $this->prefixer->prefixPath($source);
 | 
			
		||||
        $destinationPath = $this->prefixer->prefixPath($destination);
 | 
			
		||||
        $this->ensureDirectoryExists(
 | 
			
		||||
            dirname($destinationPath),
 | 
			
		||||
            $this->resolveDirectoryVisibility($config->get(Config::OPTION_DIRECTORY_VISIBILITY))
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        if ( ! @rename($sourcePath, $destinationPath)) {
 | 
			
		||||
            throw UnableToMoveFile::fromLocationTo($sourcePath, $destinationPath);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function copy(string $source, string $destination, Config $config): void
 | 
			
		||||
    {
 | 
			
		||||
        $sourcePath = $this->prefixer->prefixPath($source);
 | 
			
		||||
        $destinationPath = $this->prefixer->prefixPath($destination);
 | 
			
		||||
        $this->ensureDirectoryExists(
 | 
			
		||||
            dirname($destinationPath),
 | 
			
		||||
            $this->resolveDirectoryVisibility($config->get(Config::OPTION_DIRECTORY_VISIBILITY))
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        if ( ! @copy($sourcePath, $destinationPath)) {
 | 
			
		||||
            throw UnableToCopyFile::fromLocationTo($sourcePath, $destinationPath);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function read(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
        $contents = @file_get_contents($location);
 | 
			
		||||
 | 
			
		||||
        if ($contents === false) {
 | 
			
		||||
            throw UnableToReadFile::fromLocation($path, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $contents;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function readStream(string $path)
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
        $contents = @fopen($location, 'rb');
 | 
			
		||||
 | 
			
		||||
        if ($contents === false) {
 | 
			
		||||
            throw UnableToReadFile::fromLocation($path, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $contents;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected function ensureDirectoryExists(string $dirname, int $visibility): void
 | 
			
		||||
    {
 | 
			
		||||
        if (is_dir($dirname)) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
 | 
			
		||||
        if ( ! @mkdir($dirname, $visibility, true)) {
 | 
			
		||||
            $mkdirError = error_get_last();
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        clearstatcache(true, $dirname);
 | 
			
		||||
 | 
			
		||||
        if ( ! is_dir($dirname)) {
 | 
			
		||||
            $errorMessage = isset($mkdirError['message']) ? $mkdirError['message'] : '';
 | 
			
		||||
 | 
			
		||||
            throw UnableToCreateDirectory::atLocation($dirname, $errorMessage);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function fileExists(string $location): bool
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($location);
 | 
			
		||||
 | 
			
		||||
        return is_file($location);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function createDirectory(string $path, Config $config): void
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
        $visibility = $config->get(Config::OPTION_VISIBILITY, $config->get(Config::OPTION_DIRECTORY_VISIBILITY));
 | 
			
		||||
        $permissions = $this->resolveDirectoryVisibility($visibility);
 | 
			
		||||
 | 
			
		||||
        if (is_dir($location)) {
 | 
			
		||||
            $this->setPermissions($location, $permissions);
 | 
			
		||||
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
 | 
			
		||||
        if ( ! @mkdir($location, $permissions, true)) {
 | 
			
		||||
            throw UnableToCreateDirectory::atLocation($path, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setVisibility(string $path, string $visibility): void
 | 
			
		||||
    {
 | 
			
		||||
        $path = $this->prefixer->prefixPath($path);
 | 
			
		||||
        $visibility = is_dir($path) ? $this->visibility->forDirectory($visibility) : $this->visibility->forFile(
 | 
			
		||||
            $visibility
 | 
			
		||||
        );
 | 
			
		||||
 | 
			
		||||
        $this->setPermissions($path, $visibility);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function visibility(string $path): FileAttributes
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
        clearstatcache(false, $location);
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
        $fileperms = @fileperms($location);
 | 
			
		||||
 | 
			
		||||
        if ($fileperms === false) {
 | 
			
		||||
            throw UnableToRetrieveMetadata::visibility($path, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $permissions = $fileperms & 0777;
 | 
			
		||||
        $visibility = $this->visibility->inverseForFile($permissions);
 | 
			
		||||
 | 
			
		||||
        return new FileAttributes($path, null, $visibility);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function resolveDirectoryVisibility(?string $visibility): int
 | 
			
		||||
    {
 | 
			
		||||
        return $visibility === null ? $this->visibility->defaultForDirectories() : $this->visibility->forDirectory(
 | 
			
		||||
            $visibility
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function mimeType(string $path): FileAttributes
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
        $mimeType = $this->mimeTypeDetector->detectMimeTypeFromFile($location);
 | 
			
		||||
 | 
			
		||||
        if ($mimeType === null) {
 | 
			
		||||
            throw UnableToRetrieveMetadata::mimeType($path, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return new FileAttributes($path, null, null, null, $mimeType);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lastModified(string $path): FileAttributes
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
        $lastModified = @filemtime($location);
 | 
			
		||||
 | 
			
		||||
        if ($lastModified === false) {
 | 
			
		||||
            throw UnableToRetrieveMetadata::lastModified($path, error_get_last()['message'] ?? '');
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return new FileAttributes($path, null, null, $lastModified);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function fileSize(string $path): FileAttributes
 | 
			
		||||
    {
 | 
			
		||||
        $location = $this->prefixer->prefixPath($path);
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
 | 
			
		||||
        if (is_file($location) && ($fileSize = @filesize($location)) !== false) {
 | 
			
		||||
            return new FileAttributes($path, $fileSize);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        throw UnableToRetrieveMetadata::fileSize($path, error_get_last()['message'] ?? '');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function listDirectory(string $location): Generator
 | 
			
		||||
    {
 | 
			
		||||
        $iterator = new DirectoryIterator($location);
 | 
			
		||||
 | 
			
		||||
        foreach ($iterator as $item) {
 | 
			
		||||
            if ($item->isDot()) {
 | 
			
		||||
                continue;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            yield $item;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function setPermissions(string $location, int $visibility): void
 | 
			
		||||
    {
 | 
			
		||||
        error_clear_last();
 | 
			
		||||
        if ( ! @chmod($location, $visibility)) {
 | 
			
		||||
            $extraMessage = error_get_last()['message'] ?? '';
 | 
			
		||||
            throw UnableToSetVisibility::atLocation($this->prefixer->stripPrefix($location), $extraMessage);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										334
									
								
								vendor/league/flysystem/src/MountManager.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										334
									
								
								vendor/league/flysystem/src/MountManager.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,334 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use function sprintf;
 | 
			
		||||
 | 
			
		||||
class MountManager implements FilesystemOperator
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<string, FilesystemOperator>
 | 
			
		||||
     */
 | 
			
		||||
    private $filesystems = [];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * MountManager constructor.
 | 
			
		||||
     *
 | 
			
		||||
     * @param array<string,FilesystemOperator> $filesystems
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(array $filesystems = [])
 | 
			
		||||
    {
 | 
			
		||||
        $this->mountFilesystems($filesystems);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function fileExists(string $location): bool
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return $filesystem->fileExists($path);
 | 
			
		||||
        } catch (UnableToCheckFileExistence $exception) {
 | 
			
		||||
            throw UnableToCheckFileExistence::forLocation($location, $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function read(string $location): string
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return $filesystem->read($path);
 | 
			
		||||
        } catch (UnableToReadFile $exception) {
 | 
			
		||||
            throw UnableToReadFile::fromLocation($location, $exception->reason(), $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function readStream(string $location)
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return $filesystem->readStream($path);
 | 
			
		||||
        } catch (UnableToReadFile $exception) {
 | 
			
		||||
            throw UnableToReadFile::fromLocation($location, $exception->reason(), $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function listContents(string $location, bool $deep = self::LIST_SHALLOW): DirectoryListing
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path, $mountIdentifier] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        return
 | 
			
		||||
            $filesystem
 | 
			
		||||
                ->listContents($path, $deep)
 | 
			
		||||
                ->map(
 | 
			
		||||
                    function (StorageAttributes $attributes) use ($mountIdentifier) {
 | 
			
		||||
                        return $attributes->withPath(sprintf('%s://%s', $mountIdentifier, $attributes->path()));
 | 
			
		||||
                    }
 | 
			
		||||
                );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lastModified(string $location): int
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return $filesystem->lastModified($path);
 | 
			
		||||
        } catch (UnableToRetrieveMetadata $exception) {
 | 
			
		||||
            throw UnableToRetrieveMetadata::lastModified($location, $exception->reason(), $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function fileSize(string $location): int
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return $filesystem->fileSize($path);
 | 
			
		||||
        } catch (UnableToRetrieveMetadata $exception) {
 | 
			
		||||
            throw UnableToRetrieveMetadata::fileSize($location, $exception->reason(), $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function mimeType(string $location): string
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return $filesystem->mimeType($path);
 | 
			
		||||
        } catch (UnableToRetrieveMetadata $exception) {
 | 
			
		||||
            throw UnableToRetrieveMetadata::mimeType($location, $exception->reason(), $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function visibility(string $location): string
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            return $filesystem->visibility($path);
 | 
			
		||||
        } catch (UnableToRetrieveMetadata $exception) {
 | 
			
		||||
            throw UnableToRetrieveMetadata::visibility($location, $exception->reason(), $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function write(string $location, string $contents, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            $filesystem->write($path, $contents, $config);
 | 
			
		||||
        } catch (UnableToWriteFile $exception) {
 | 
			
		||||
            throw UnableToWriteFile::atLocation($location, $exception->reason(), $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function writeStream(string $location, $contents, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
        $filesystem->writeStream($path, $contents, $config);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function setVisibility(string $path, string $visibility): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($path);
 | 
			
		||||
        $filesystem->setVisibility($path, $visibility);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function delete(string $location): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            $filesystem->delete($path);
 | 
			
		||||
        } catch (UnableToDeleteFile $exception) {
 | 
			
		||||
            throw UnableToDeleteFile::atLocation($location, '', $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function deleteDirectory(string $location): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            $filesystem->deleteDirectory($path);
 | 
			
		||||
        } catch (UnableToDeleteDirectory $exception) {
 | 
			
		||||
            throw UnableToDeleteDirectory::atLocation($location, '', $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function createDirectory(string $location, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $filesystem */
 | 
			
		||||
        [$filesystem, $path] = $this->determineFilesystemAndPath($location);
 | 
			
		||||
 | 
			
		||||
        try {
 | 
			
		||||
            $filesystem->createDirectory($path, $config);
 | 
			
		||||
        } catch (UnableToCreateDirectory $exception) {
 | 
			
		||||
            throw UnableToCreateDirectory::dueToFailure($location, $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function move(string $source, string $destination, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $sourceFilesystem */
 | 
			
		||||
        /* @var FilesystemOperator $destinationFilesystem */
 | 
			
		||||
        [$sourceFilesystem, $sourcePath] = $this->determineFilesystemAndPath($source);
 | 
			
		||||
        [$destinationFilesystem, $destinationPath] = $this->determineFilesystemAndPath($destination);
 | 
			
		||||
 | 
			
		||||
        $sourceFilesystem === $destinationFilesystem ? $this->moveInTheSameFilesystem(
 | 
			
		||||
            $sourceFilesystem,
 | 
			
		||||
            $sourcePath,
 | 
			
		||||
            $destinationPath,
 | 
			
		||||
            $source,
 | 
			
		||||
            $destination
 | 
			
		||||
        ) : $this->moveAcrossFilesystems($source, $destination);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function copy(string $source, string $destination, array $config = []): void
 | 
			
		||||
    {
 | 
			
		||||
        /** @var FilesystemOperator $sourceFilesystem */
 | 
			
		||||
        /* @var FilesystemOperator $destinationFilesystem */
 | 
			
		||||
        [$sourceFilesystem, $sourcePath] = $this->determineFilesystemAndPath($source);
 | 
			
		||||
        [$destinationFilesystem, $destinationPath] = $this->determineFilesystemAndPath($destination);
 | 
			
		||||
 | 
			
		||||
        $sourceFilesystem === $destinationFilesystem ? $this->copyInSameFilesystem(
 | 
			
		||||
            $sourceFilesystem,
 | 
			
		||||
            $sourcePath,
 | 
			
		||||
            $destinationPath,
 | 
			
		||||
            $source,
 | 
			
		||||
            $destination
 | 
			
		||||
        ) : $this->copyAcrossFilesystem(
 | 
			
		||||
            $config['visibility'] ?? null,
 | 
			
		||||
            $sourceFilesystem,
 | 
			
		||||
            $sourcePath,
 | 
			
		||||
            $destinationFilesystem,
 | 
			
		||||
            $destinationPath,
 | 
			
		||||
            $source,
 | 
			
		||||
            $destination
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function mountFilesystems(array $filesystems): void
 | 
			
		||||
    {
 | 
			
		||||
        foreach ($filesystems as $key => $filesystem) {
 | 
			
		||||
            $this->guardAgainstInvalidMount($key, $filesystem);
 | 
			
		||||
            /* @var string $key */
 | 
			
		||||
            /* @var FilesystemOperator $filesystem */
 | 
			
		||||
            $this->mountFilesystem($key, $filesystem);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $key
 | 
			
		||||
     * @param mixed $filesystem
 | 
			
		||||
     */
 | 
			
		||||
    private function guardAgainstInvalidMount($key, $filesystem): void
 | 
			
		||||
    {
 | 
			
		||||
        if ( ! is_string($key)) {
 | 
			
		||||
            throw UnableToMountFilesystem::becauseTheKeyIsNotValid($key);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if ( ! $filesystem instanceof FilesystemOperator) {
 | 
			
		||||
            throw UnableToMountFilesystem::becauseTheFilesystemWasNotValid($filesystem);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function mountFilesystem(string $key, FilesystemOperator $filesystem): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->filesystems[$key] = $filesystem;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string $path
 | 
			
		||||
     *
 | 
			
		||||
     * @return array{0:FilesystemOperator, 1:string}
 | 
			
		||||
     */
 | 
			
		||||
    private function determineFilesystemAndPath(string $path): array
 | 
			
		||||
    {
 | 
			
		||||
        if (strpos($path, '://') < 1) {
 | 
			
		||||
            throw UnableToResolveFilesystemMount::becauseTheSeparatorIsMissing($path);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        /** @var string $mountIdentifier */
 | 
			
		||||
        /** @var string $mountPath */
 | 
			
		||||
        [$mountIdentifier, $mountPath] = explode('://', $path, 2);
 | 
			
		||||
 | 
			
		||||
        if ( ! array_key_exists($mountIdentifier, $this->filesystems)) {
 | 
			
		||||
            throw UnableToResolveFilesystemMount::becauseTheMountWasNotRegistered($mountIdentifier);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return [$this->filesystems[$mountIdentifier], $mountPath, $mountIdentifier];
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function copyInSameFilesystem(
 | 
			
		||||
        FilesystemOperator $sourceFilesystem,
 | 
			
		||||
        string $sourcePath,
 | 
			
		||||
        string $destinationPath,
 | 
			
		||||
        string $source,
 | 
			
		||||
        string $destination
 | 
			
		||||
    ): void {
 | 
			
		||||
        try {
 | 
			
		||||
            $sourceFilesystem->copy($sourcePath, $destinationPath);
 | 
			
		||||
        } catch (UnableToCopyFile $exception) {
 | 
			
		||||
            throw UnableToCopyFile::fromLocationTo($source, $destination, $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function copyAcrossFilesystem(
 | 
			
		||||
        ?string $visibility,
 | 
			
		||||
        FilesystemOperator $sourceFilesystem,
 | 
			
		||||
        string $sourcePath,
 | 
			
		||||
        FilesystemOperator $destinationFilesystem,
 | 
			
		||||
        string $destinationPath,
 | 
			
		||||
        string $source,
 | 
			
		||||
        string $destination
 | 
			
		||||
    ): void {
 | 
			
		||||
        try {
 | 
			
		||||
            $visibility = $visibility ?? $sourceFilesystem->visibility($sourcePath);
 | 
			
		||||
            $stream = $sourceFilesystem->readStream($sourcePath);
 | 
			
		||||
            $destinationFilesystem->writeStream($destinationPath, $stream, compact('visibility'));
 | 
			
		||||
        } catch (UnableToRetrieveMetadata | UnableToReadFile | UnableToWriteFile $exception) {
 | 
			
		||||
            throw UnableToCopyFile::fromLocationTo($source, $destination, $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function moveInTheSameFilesystem(
 | 
			
		||||
        FilesystemOperator $sourceFilesystem,
 | 
			
		||||
        string $sourcePath,
 | 
			
		||||
        string $destinationPath,
 | 
			
		||||
        string $source,
 | 
			
		||||
        string $destination
 | 
			
		||||
    ): void {
 | 
			
		||||
        try {
 | 
			
		||||
            $sourceFilesystem->move($sourcePath, $destinationPath);
 | 
			
		||||
        } catch (UnableToMoveFile $exception) {
 | 
			
		||||
            throw UnableToMoveFile::fromLocationTo($source, $destination, $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function moveAcrossFilesystems(string $source, string $destination): void
 | 
			
		||||
    {
 | 
			
		||||
        try {
 | 
			
		||||
            $this->copy($source, $destination);
 | 
			
		||||
            $this->delete($source);
 | 
			
		||||
        } catch (UnableToCopyFile | UnableToDeleteFile $exception) {
 | 
			
		||||
            throw UnableToMoveFile::fromLocationTo($source, $destination, $exception);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/league/flysystem/src/PathNormalizer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/league/flysystem/src/PathNormalizer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
interface PathNormalizer
 | 
			
		||||
{
 | 
			
		||||
    public function normalizePath(string $path): string;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										60
									
								
								vendor/league/flysystem/src/PathPrefixer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										60
									
								
								vendor/league/flysystem/src/PathPrefixer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,60 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use function rtrim;
 | 
			
		||||
use function strlen;
 | 
			
		||||
use function substr;
 | 
			
		||||
 | 
			
		||||
final class PathPrefixer
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $prefix = '';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $separator = '/';
 | 
			
		||||
 | 
			
		||||
    public function __construct(string $prefix, string $separator = '/')
 | 
			
		||||
    {
 | 
			
		||||
        $this->prefix = rtrim($prefix, '\\/');
 | 
			
		||||
 | 
			
		||||
        if ($this->prefix !== '' || $prefix === $separator) {
 | 
			
		||||
            $this->prefix .= $separator;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        $this->separator = $separator;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function prefixPath(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->prefix . ltrim($path, '\\/');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function stripPrefix(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        /* @var string */
 | 
			
		||||
        return substr($path, strlen($this->prefix));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function stripDirectoryPrefix(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        return rtrim($this->stripPrefix($path), '\\/');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function prefixDirectoryPath(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        $prefixedPath = $this->prefixPath(rtrim($path, '\\/'));
 | 
			
		||||
 | 
			
		||||
        if ((substr($prefixedPath, -1) === $this->separator) || $prefixedPath === '') {
 | 
			
		||||
            return $prefixedPath;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $prefixedPath . $this->separator;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/league/flysystem/src/PathTraversalDetected.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/league/flysystem/src/PathTraversalDetected.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
class PathTraversalDetected extends RuntimeException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $path;
 | 
			
		||||
 | 
			
		||||
    public function path(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->path;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function forPath(string $path): PathTraversalDetected
 | 
			
		||||
    {
 | 
			
		||||
        $e = new PathTraversalDetected("Path traversal detected: {$path}");
 | 
			
		||||
        $e->path = $path;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/league/flysystem/src/PortableVisibilityGuard.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/league/flysystem/src/PortableVisibilityGuard.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
final class PortableVisibilityGuard
 | 
			
		||||
{
 | 
			
		||||
    public static function guardAgainstInvalidInput(string $visibility): void
 | 
			
		||||
    {
 | 
			
		||||
        if ($visibility !== Visibility::PUBLIC && $visibility !== Visibility::PRIVATE) {
 | 
			
		||||
            $className = Visibility::class;
 | 
			
		||||
            throw InvalidVisibilityProvided::withVisibility(
 | 
			
		||||
                $visibility,
 | 
			
		||||
                "either {$className}::PUBLIC or {$className}::PRIVATE"
 | 
			
		||||
            );
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										62
									
								
								vendor/league/flysystem/src/ProxyArrayAccessToProperties.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										62
									
								
								vendor/league/flysystem/src/ProxyArrayAccessToProperties.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,62 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @internal
 | 
			
		||||
 */
 | 
			
		||||
trait ProxyArrayAccessToProperties
 | 
			
		||||
{
 | 
			
		||||
    private function formatPropertyName(string $offset): string
 | 
			
		||||
    {
 | 
			
		||||
        return str_replace('_', '', lcfirst(ucwords($offset, '_')));
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $offset
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function offsetExists($offset): bool
 | 
			
		||||
    {
 | 
			
		||||
        $property = $this->formatPropertyName((string) $offset);
 | 
			
		||||
 | 
			
		||||
        return isset($this->{$property});
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $offset
 | 
			
		||||
     *
 | 
			
		||||
     * @return mixed
 | 
			
		||||
     */
 | 
			
		||||
    #[\ReturnTypeWillChange]
 | 
			
		||||
    public function offsetGet($offset)
 | 
			
		||||
    {
 | 
			
		||||
        $property = $this->formatPropertyName((string) $offset);
 | 
			
		||||
 | 
			
		||||
        return $this->{$property};
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $offset
 | 
			
		||||
     * @param mixed $value
 | 
			
		||||
     */
 | 
			
		||||
    #[\ReturnTypeWillChange]
 | 
			
		||||
    public function offsetSet($offset, $value): void
 | 
			
		||||
    {
 | 
			
		||||
        throw new RuntimeException('Properties can not be manipulated');
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $offset
 | 
			
		||||
     */
 | 
			
		||||
    #[\ReturnTypeWillChange]
 | 
			
		||||
    public function offsetUnset($offset): void
 | 
			
		||||
    {
 | 
			
		||||
        throw new RuntimeException('Properties can not be manipulated');
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										40
									
								
								vendor/league/flysystem/src/StorageAttributes.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										40
									
								
								vendor/league/flysystem/src/StorageAttributes.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,40 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use ArrayAccess;
 | 
			
		||||
use JsonSerializable;
 | 
			
		||||
 | 
			
		||||
interface StorageAttributes extends JsonSerializable, ArrayAccess
 | 
			
		||||
{
 | 
			
		||||
    public const ATTRIBUTE_PATH = 'path';
 | 
			
		||||
    public const ATTRIBUTE_TYPE = 'type';
 | 
			
		||||
    public const ATTRIBUTE_FILE_SIZE = 'file_size';
 | 
			
		||||
    public const ATTRIBUTE_VISIBILITY = 'visibility';
 | 
			
		||||
    public const ATTRIBUTE_LAST_MODIFIED = 'last_modified';
 | 
			
		||||
    public const ATTRIBUTE_MIME_TYPE = 'mime_type';
 | 
			
		||||
    public const ATTRIBUTE_EXTRA_METADATA = 'extra_metadata';
 | 
			
		||||
 | 
			
		||||
    public const TYPE_FILE = 'file';
 | 
			
		||||
    public const TYPE_DIRECTORY = 'dir';
 | 
			
		||||
 | 
			
		||||
    public function path(): string;
 | 
			
		||||
 | 
			
		||||
    public function type(): string;
 | 
			
		||||
 | 
			
		||||
    public function visibility(): ?string;
 | 
			
		||||
 | 
			
		||||
    public function lastModified(): ?int;
 | 
			
		||||
 | 
			
		||||
    public static function fromArray(array $attributes): StorageAttributes;
 | 
			
		||||
 | 
			
		||||
    public function isFile(): bool;
 | 
			
		||||
 | 
			
		||||
    public function isDir(): bool;
 | 
			
		||||
 | 
			
		||||
    public function withPath(string $path): StorageAttributes;
 | 
			
		||||
 | 
			
		||||
    public function extraMetadata(): array;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/league/flysystem/src/SymbolicLinkEncountered.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/league/flysystem/src/SymbolicLinkEncountered.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
final class SymbolicLinkEncountered extends RuntimeException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location;
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function atLocation(string $pathName): SymbolicLinkEncountered
 | 
			
		||||
    {
 | 
			
		||||
        $e = new static("Unsupported symbolic link encountered at location $pathName");
 | 
			
		||||
        $e->location = $pathName;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								vendor/league/flysystem/src/UnableToCheckFileExistence.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/league/flysystem/src/UnableToCheckFileExistence.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
class UnableToCheckFileExistence extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    public static function forLocation(string $path, Throwable $exception = null): UnableToCheckFileExistence
 | 
			
		||||
    {
 | 
			
		||||
        return new UnableToCheckFileExistence("Unable to check file existence for: ${path}", 0, $exception);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_FILE_EXISTS;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								vendor/league/flysystem/src/UnableToCopyFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/league/flysystem/src/UnableToCopyFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToCopyFile extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $source;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $destination;
 | 
			
		||||
 | 
			
		||||
    public function source(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->source;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function destination(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->destination;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function fromLocationTo(
 | 
			
		||||
        string $sourcePath,
 | 
			
		||||
        string $destinationPath,
 | 
			
		||||
        Throwable $previous = null
 | 
			
		||||
    ): UnableToCopyFile {
 | 
			
		||||
        $e = new static("Unable to copy file from $sourcePath to $destinationPath", 0 , $previous);
 | 
			
		||||
        $e->source = $sourcePath;
 | 
			
		||||
        $e->destination = $destinationPath;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_COPY;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										44
									
								
								vendor/league/flysystem/src/UnableToCreateDirectory.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										44
									
								
								vendor/league/flysystem/src/UnableToCreateDirectory.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,44 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToCreateDirectory extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location;
 | 
			
		||||
 | 
			
		||||
    public static function atLocation(string $dirname, string $errorMessage = ''): UnableToCreateDirectory
 | 
			
		||||
    {
 | 
			
		||||
        $message = "Unable to create a directory at {$dirname}. ${errorMessage}";
 | 
			
		||||
        $e = new static(rtrim($message));
 | 
			
		||||
        $e->location = $dirname;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function dueToFailure(string $dirname, Throwable $previous): UnableToCreateDirectory
 | 
			
		||||
    {
 | 
			
		||||
        $message = "Unable to create a directory at {$dirname}";
 | 
			
		||||
        $e = new static($message, 0, $previous);
 | 
			
		||||
        $e->location = $dirname;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_CREATE_DIRECTORY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								vendor/league/flysystem/src/UnableToDeleteDirectory.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/league/flysystem/src/UnableToDeleteDirectory.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToDeleteDirectory extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location = '';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $reason;
 | 
			
		||||
 | 
			
		||||
    public static function atLocation(
 | 
			
		||||
        string $location,
 | 
			
		||||
        string $reason = '',
 | 
			
		||||
        Throwable $previous = null
 | 
			
		||||
    ): UnableToDeleteDirectory {
 | 
			
		||||
        $e = new static(rtrim("Unable to delete directory located at: {$location}. {$reason}"), 0, $previous);
 | 
			
		||||
        $e->location = $location;
 | 
			
		||||
        $e->reason = $reason;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_DELETE_DIRECTORY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function reason(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										45
									
								
								vendor/league/flysystem/src/UnableToDeleteFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/league/flysystem/src/UnableToDeleteFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToDeleteFile extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location = '';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $reason;
 | 
			
		||||
 | 
			
		||||
    public static function atLocation(string $location, string $reason = '', Throwable $previous = null): UnableToDeleteFile
 | 
			
		||||
    {
 | 
			
		||||
        $e = new static(rtrim("Unable to delete file located at: {$location}. {$reason}"), 0, $previous);
 | 
			
		||||
        $e->location = $location;
 | 
			
		||||
        $e->reason = $reason;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_DELETE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function reason(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										32
									
								
								vendor/league/flysystem/src/UnableToMountFilesystem.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								vendor/league/flysystem/src/UnableToMountFilesystem.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,32 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use LogicException;
 | 
			
		||||
 | 
			
		||||
class UnableToMountFilesystem extends LogicException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $key
 | 
			
		||||
     */
 | 
			
		||||
    public static function becauseTheKeyIsNotValid($key): UnableToMountFilesystem
 | 
			
		||||
    {
 | 
			
		||||
        return new UnableToMountFilesystem(
 | 
			
		||||
            'Unable to mount filesystem, key was invalid. String expected, received: ' . gettype($key)
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param mixed $filesystem
 | 
			
		||||
     */
 | 
			
		||||
    public static function becauseTheFilesystemWasNotValid($filesystem): UnableToMountFilesystem
 | 
			
		||||
    {
 | 
			
		||||
        $received = is_object($filesystem) ? get_class($filesystem) : gettype($filesystem);
 | 
			
		||||
 | 
			
		||||
        return new UnableToMountFilesystem(
 | 
			
		||||
            'Unable to mount filesystem, filesystem was invalid. Instance of ' . FilesystemOperator::class . ' expected, received: ' . $received
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										48
									
								
								vendor/league/flysystem/src/UnableToMoveFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										48
									
								
								vendor/league/flysystem/src/UnableToMoveFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,48 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToMoveFile extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $source;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $destination;
 | 
			
		||||
 | 
			
		||||
    public function source(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->source;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function destination(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->destination;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function fromLocationTo(
 | 
			
		||||
        string $sourcePath,
 | 
			
		||||
        string $destinationPath,
 | 
			
		||||
        Throwable $previous = null
 | 
			
		||||
    ): UnableToMoveFile {
 | 
			
		||||
        $e = new static("Unable to move file from $sourcePath to $destinationPath", 0, $previous);
 | 
			
		||||
        $e->source = $sourcePath;
 | 
			
		||||
        $e->destination = $destinationPath;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_MOVE;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										45
									
								
								vendor/league/flysystem/src/UnableToReadFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/league/flysystem/src/UnableToReadFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToReadFile extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location = '';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $reason = '';
 | 
			
		||||
 | 
			
		||||
    public static function fromLocation(string $location, string $reason = '', Throwable $previous = null): UnableToReadFile
 | 
			
		||||
    {
 | 
			
		||||
        $e = new static(rtrim("Unable to read file from location: {$location}. {$reason}"), 0, $previous);
 | 
			
		||||
        $e->location = $location;
 | 
			
		||||
        $e->reason = $reason;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_READ;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function reason(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										20
									
								
								vendor/league/flysystem/src/UnableToResolveFilesystemMount.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										20
									
								
								vendor/league/flysystem/src/UnableToResolveFilesystemMount.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,20 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
class UnableToResolveFilesystemMount extends RuntimeException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    public static function becauseTheSeparatorIsMissing(string $path): UnableToResolveFilesystemMount
 | 
			
		||||
    {
 | 
			
		||||
        return new UnableToResolveFilesystemMount("Unable to resolve the filesystem mount because the path ($path) is missing a separator (://).");
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function becauseTheMountWasNotRegistered(string $mountIdentifier): UnableToResolveFilesystemMount
 | 
			
		||||
    {
 | 
			
		||||
        return new UnableToResolveFilesystemMount("Unable to resolve the filesystem mount because the mount ($mountIdentifier) was not registered.");
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										76
									
								
								vendor/league/flysystem/src/UnableToRetrieveMetadata.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										76
									
								
								vendor/league/flysystem/src/UnableToRetrieveMetadata.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,76 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToRetrieveMetadata extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $metadataType;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $reason;
 | 
			
		||||
 | 
			
		||||
    public static function lastModified(string $location, string $reason = '', Throwable $previous = null): self
 | 
			
		||||
    {
 | 
			
		||||
        return static::create($location, FileAttributes::ATTRIBUTE_LAST_MODIFIED, $reason, $previous);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function visibility(string $location, string $reason = '', Throwable $previous = null): self
 | 
			
		||||
    {
 | 
			
		||||
        return static::create($location, FileAttributes::ATTRIBUTE_VISIBILITY, $reason, $previous);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function fileSize(string $location, string $reason = '', Throwable $previous = null): self
 | 
			
		||||
    {
 | 
			
		||||
        return static::create($location, FileAttributes::ATTRIBUTE_FILE_SIZE, $reason, $previous);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function mimeType(string $location, string $reason = '', Throwable $previous = null): self
 | 
			
		||||
    {
 | 
			
		||||
        return static::create($location, FileAttributes::ATTRIBUTE_MIME_TYPE, $reason, $previous);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function create(string $location, string $type, string $reason = '', Throwable $previous = null): self
 | 
			
		||||
    {
 | 
			
		||||
        $e = new static("Unable to retrieve the $type for file at location: $location. {$reason}", 0, $previous);
 | 
			
		||||
        $e->reason = $reason;
 | 
			
		||||
        $e->location = $location;
 | 
			
		||||
        $e->metadataType = $type;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function reason(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function metadataType(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->metadataType;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_RETRIEVE_METADATA;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										49
									
								
								vendor/league/flysystem/src/UnableToSetVisibility.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								vendor/league/flysystem/src/UnableToSetVisibility.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
use function rtrim;
 | 
			
		||||
 | 
			
		||||
final class UnableToSetVisibility extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $reason;
 | 
			
		||||
 | 
			
		||||
    public function reason(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function atLocation(string $filename, string $extraMessage = '', Throwable $previous = null): self
 | 
			
		||||
    {
 | 
			
		||||
        $message = "Unable to set visibility for file {$filename}. $extraMessage";
 | 
			
		||||
        $e = new static(rtrim($message), 0, $previous);
 | 
			
		||||
        $e->reason = $extraMessage;
 | 
			
		||||
        $e->location = $filename;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_SET_VISIBILITY;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										45
									
								
								vendor/league/flysystem/src/UnableToWriteFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								vendor/league/flysystem/src/UnableToWriteFile.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,45 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
final class UnableToWriteFile extends RuntimeException implements FilesystemOperationFailed
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location = '';
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $reason;
 | 
			
		||||
 | 
			
		||||
    public static function atLocation(string $location, string $reason = '', Throwable $previous = null): UnableToWriteFile
 | 
			
		||||
    {
 | 
			
		||||
        $e = new static(rtrim("Unable to write file at location: {$location}. {$reason}"), 0, $previous);
 | 
			
		||||
        $e->location = $location;
 | 
			
		||||
        $e->reason = $reason;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function operation(): string
 | 
			
		||||
    {
 | 
			
		||||
        return FilesystemOperationFailed::OPERATION_WRITE;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function reason(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->reason;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										109
									
								
								vendor/league/flysystem/src/UnixVisibility/PortableVisibilityConverter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										109
									
								
								vendor/league/flysystem/src/UnixVisibility/PortableVisibilityConverter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,109 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem\UnixVisibility;
 | 
			
		||||
 | 
			
		||||
use League\Flysystem\PortableVisibilityGuard;
 | 
			
		||||
use League\Flysystem\Visibility;
 | 
			
		||||
 | 
			
		||||
class PortableVisibilityConverter implements VisibilityConverter
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    private $filePublic;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    private $filePrivate;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    private $directoryPublic;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int
 | 
			
		||||
     */
 | 
			
		||||
    private $directoryPrivate;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $defaultForDirectories;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        int $filePublic = 0644,
 | 
			
		||||
        int $filePrivate = 0600,
 | 
			
		||||
        int $directoryPublic = 0755,
 | 
			
		||||
        int $directoryPrivate = 0700,
 | 
			
		||||
        string $defaultForDirectories = Visibility::PRIVATE
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->filePublic = $filePublic;
 | 
			
		||||
        $this->filePrivate = $filePrivate;
 | 
			
		||||
        $this->directoryPublic = $directoryPublic;
 | 
			
		||||
        $this->directoryPrivate = $directoryPrivate;
 | 
			
		||||
        $this->defaultForDirectories = $defaultForDirectories;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function forFile(string $visibility): int
 | 
			
		||||
    {
 | 
			
		||||
        PortableVisibilityGuard::guardAgainstInvalidInput($visibility);
 | 
			
		||||
 | 
			
		||||
        return $visibility === Visibility::PUBLIC
 | 
			
		||||
            ? $this->filePublic
 | 
			
		||||
            : $this->filePrivate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function forDirectory(string $visibility): int
 | 
			
		||||
    {
 | 
			
		||||
        PortableVisibilityGuard::guardAgainstInvalidInput($visibility);
 | 
			
		||||
 | 
			
		||||
        return $visibility === Visibility::PUBLIC
 | 
			
		||||
            ? $this->directoryPublic
 | 
			
		||||
            : $this->directoryPrivate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function inverseForFile(int $visibility): string
 | 
			
		||||
    {
 | 
			
		||||
        if ($visibility === $this->filePublic) {
 | 
			
		||||
            return Visibility::PUBLIC;
 | 
			
		||||
        } elseif ($visibility === $this->filePrivate) {
 | 
			
		||||
            return Visibility::PRIVATE;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return Visibility::PUBLIC; // default
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function inverseForDirectory(int $visibility): string
 | 
			
		||||
    {
 | 
			
		||||
        if ($visibility === $this->directoryPublic) {
 | 
			
		||||
            return Visibility::PUBLIC;
 | 
			
		||||
        } elseif ($visibility === $this->directoryPrivate) {
 | 
			
		||||
            return Visibility::PRIVATE;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return Visibility::PUBLIC; // default
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function defaultForDirectories(): int
 | 
			
		||||
    {
 | 
			
		||||
        return $this->defaultForDirectories === Visibility::PUBLIC ? $this->directoryPublic : $this->directoryPrivate;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param array<mixed>  $permissionMap
 | 
			
		||||
     */
 | 
			
		||||
    public static function fromArray(array $permissionMap, string $defaultForDirectories = Visibility::PRIVATE): PortableVisibilityConverter
 | 
			
		||||
    {
 | 
			
		||||
        return new PortableVisibilityConverter(
 | 
			
		||||
            $permissionMap['file']['public'] ?? 0644,
 | 
			
		||||
            $permissionMap['file']['private'] ?? 0600,
 | 
			
		||||
            $permissionMap['dir']['public'] ?? 0755,
 | 
			
		||||
            $permissionMap['dir']['private'] ?? 0700,
 | 
			
		||||
            $defaultForDirectories
 | 
			
		||||
        );
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								vendor/league/flysystem/src/UnixVisibility/VisibilityConverter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/league/flysystem/src/UnixVisibility/VisibilityConverter.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem\UnixVisibility;
 | 
			
		||||
 | 
			
		||||
interface VisibilityConverter
 | 
			
		||||
{
 | 
			
		||||
    public function forFile(string $visibility): int;
 | 
			
		||||
    public function forDirectory(string $visibility): int;
 | 
			
		||||
    public function inverseForFile(int $visibility): string;
 | 
			
		||||
    public function inverseForDirectory(int $visibility): string;
 | 
			
		||||
    public function defaultForDirectories(): int;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										28
									
								
								vendor/league/flysystem/src/UnreadableFileEncountered.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										28
									
								
								vendor/league/flysystem/src/UnreadableFileEncountered.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,28 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
use RuntimeException;
 | 
			
		||||
 | 
			
		||||
final class UnreadableFileEncountered extends RuntimeException implements FilesystemException
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string
 | 
			
		||||
     */
 | 
			
		||||
    private $location;
 | 
			
		||||
 | 
			
		||||
    public function location(): string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->location;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static function atLocation(string $location): UnreadableFileEncountered
 | 
			
		||||
    {
 | 
			
		||||
        $e = new static("Unreadable file encountered at location {$location}.");
 | 
			
		||||
        $e->location = $location;
 | 
			
		||||
 | 
			
		||||
        return $e;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										11
									
								
								vendor/league/flysystem/src/Visibility.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								vendor/league/flysystem/src/Visibility.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,11 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
final class Visibility
 | 
			
		||||
{
 | 
			
		||||
    public const PUBLIC = 'public';
 | 
			
		||||
    public const PRIVATE = 'private';
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										49
									
								
								vendor/league/flysystem/src/WhitespacePathNormalizer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										49
									
								
								vendor/league/flysystem/src/WhitespacePathNormalizer.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,49 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\Flysystem;
 | 
			
		||||
 | 
			
		||||
class WhitespacePathNormalizer implements PathNormalizer
 | 
			
		||||
{
 | 
			
		||||
    public function normalizePath(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        $path = str_replace('\\', '/', $path);
 | 
			
		||||
        $this->rejectFunkyWhiteSpace($path);
 | 
			
		||||
 | 
			
		||||
        return $this->normalizeRelativePath($path);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function rejectFunkyWhiteSpace(string $path): void
 | 
			
		||||
    {
 | 
			
		||||
        if (preg_match('#\p{C}+#u', $path)) {
 | 
			
		||||
            throw CorruptedPathDetected::forPath($path);
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function normalizeRelativePath(string $path): string
 | 
			
		||||
    {
 | 
			
		||||
        $parts = [];
 | 
			
		||||
 | 
			
		||||
        foreach (explode('/', $path) as $part) {
 | 
			
		||||
            switch ($part) {
 | 
			
		||||
                case '':
 | 
			
		||||
                case '.':
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                case '..':
 | 
			
		||||
                    if (empty($parts)) {
 | 
			
		||||
                        throw PathTraversalDetected::forPath($path);
 | 
			
		||||
                    }
 | 
			
		||||
                    array_pop($parts);
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                default:
 | 
			
		||||
                    $parts[] = $part;
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return implode('/', $parts);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										59
									
								
								vendor/league/mime-type-detection/CHANGELOG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										59
									
								
								vendor/league/mime-type-detection/CHANGELOG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,59 @@
 | 
			
		||||
# Changelog
 | 
			
		||||
 | 
			
		||||
## 1.15.0 - 2024-01-28
 | 
			
		||||
 | 
			
		||||
- Updated lookup
 | 
			
		||||
 | 
			
		||||
## 1.14.0 - 2022-10-17
 | 
			
		||||
 | 
			
		||||
### Updated
 | 
			
		||||
 | 
			
		||||
- Updated lookup
 | 
			
		||||
 | 
			
		||||
## 1.13.0 - 2023-08-05
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
- A reverse lookup mechanism to fetch one or all extensions for a given mimetype
 | 
			
		||||
 | 
			
		||||
## 1.12.0 - 2023-08-03
 | 
			
		||||
 | 
			
		||||
### Updated
 | 
			
		||||
 | 
			
		||||
- Updated lookup
 | 
			
		||||
 | 
			
		||||
## 1.11.0 - 2023-04-17
 | 
			
		||||
 | 
			
		||||
### Updated
 | 
			
		||||
 | 
			
		||||
- Updated lookup
 | 
			
		||||
 | 
			
		||||
## 1.10.0 - 2022-04-11
 | 
			
		||||
 | 
			
		||||
### Fixed
 | 
			
		||||
 | 
			
		||||
- Added Flysystem v1 inconclusive mime-types and made it configurable as a constructor parameter.
 | 
			
		||||
 | 
			
		||||
## 1.9.0 - 2021-11-21
 | 
			
		||||
 | 
			
		||||
### Updated
 | 
			
		||||
 | 
			
		||||
- Updated lookup
 | 
			
		||||
 | 
			
		||||
## 1.8.0 - 2021-09-25
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
- Added the decorator `OverridingExtensionToMimeTypeMap` which allows you to override values.
 | 
			
		||||
 | 
			
		||||
## 1.7.0 - 2021-01-18
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
- Added a `bufferSampleSize` parameter to the `FinfoMimeTypeDetector` class that allows you to send a reduced content sample which costs less memory.
 | 
			
		||||
 | 
			
		||||
## 1.6.0 - 2021-01-18
 | 
			
		||||
 | 
			
		||||
### Changes
 | 
			
		||||
 | 
			
		||||
- Updated generated mime-type map
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/league/mime-type-detection/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/league/mime-type-detection/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
Copyright (c) 2013-2023 Frank de Jonge
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is furnished
 | 
			
		||||
to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										34
									
								
								vendor/league/mime-type-detection/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								vendor/league/mime-type-detection/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,34 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "league/mime-type-detection",
 | 
			
		||||
    "description": "Mime-type detection for Flysystem",
 | 
			
		||||
    "license": "MIT",
 | 
			
		||||
    "authors": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "Frank de Jonge",
 | 
			
		||||
            "email": "info@frankdejonge.nl"
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "scripts": {
 | 
			
		||||
        "test": "vendor/bin/phpunit",
 | 
			
		||||
        "phpstan": "vendor/bin/phpstan analyse -l 6 src"
 | 
			
		||||
    },
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": "^7.4 || ^8.0",
 | 
			
		||||
        "ext-fileinfo": "*"
 | 
			
		||||
    },
 | 
			
		||||
    "require-dev": {
 | 
			
		||||
        "phpunit/phpunit": "^8.5.8 || ^9.3 || ^10.0",
 | 
			
		||||
        "phpstan/phpstan": "^0.12.68",
 | 
			
		||||
        "friendsofphp/php-cs-fixer": "^3.2"
 | 
			
		||||
    },
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "League\\MimeTypeDetection\\": "src"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "config": {
 | 
			
		||||
        "platform": {
 | 
			
		||||
            "php": "7.4.0"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										13
									
								
								vendor/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/league/mime-type-detection/src/EmptyExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\MimeTypeDetection;
 | 
			
		||||
 | 
			
		||||
class EmptyExtensionToMimeTypeMap implements ExtensionToMimeTypeMap
 | 
			
		||||
{
 | 
			
		||||
    public function lookupMimeType(string $extension): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										14
									
								
								vendor/league/mime-type-detection/src/ExtensionLookup.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										14
									
								
								vendor/league/mime-type-detection/src/ExtensionLookup.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,14 @@
 | 
			
		||||
<?php
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\MimeTypeDetection;
 | 
			
		||||
 | 
			
		||||
interface ExtensionLookup
 | 
			
		||||
{
 | 
			
		||||
    public function lookupExtension(string $mimetype): ?string;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @return string[]
 | 
			
		||||
     */
 | 
			
		||||
    public function lookupAllExtensions(string $mimetype): array;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										56
									
								
								vendor/league/mime-type-detection/src/ExtensionMimeTypeDetector.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								vendor/league/mime-type-detection/src/ExtensionMimeTypeDetector.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,56 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\MimeTypeDetection;
 | 
			
		||||
 | 
			
		||||
use const PATHINFO_EXTENSION;
 | 
			
		||||
 | 
			
		||||
class ExtensionMimeTypeDetector implements MimeTypeDetector, ExtensionLookup
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var ExtensionToMimeTypeMap
 | 
			
		||||
     */
 | 
			
		||||
    private $extensions;
 | 
			
		||||
 | 
			
		||||
    public function __construct(ExtensionToMimeTypeMap $extensions = null)
 | 
			
		||||
    {
 | 
			
		||||
        $this->extensions = $extensions ?: new GeneratedExtensionToMimeTypeMap();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeType(string $path, $contents): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->detectMimeTypeFromPath($path);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromPath(string $path): ?string
 | 
			
		||||
    {
 | 
			
		||||
        $extension = strtolower(pathinfo($path, PATHINFO_EXTENSION));
 | 
			
		||||
 | 
			
		||||
        return $this->extensions->lookupMimeType($extension);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromFile(string $path): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->detectMimeTypeFromPath($path);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromBuffer(string $contents): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lookupExtension(string $mimetype): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->extensions instanceof ExtensionLookup
 | 
			
		||||
            ? $this->extensions->lookupExtension($mimetype)
 | 
			
		||||
            : null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lookupAllExtensions(string $mimetype): array
 | 
			
		||||
    {
 | 
			
		||||
        return $this->extensions instanceof ExtensionLookup
 | 
			
		||||
            ? $this->extensions->lookupAllExtensions($mimetype)
 | 
			
		||||
            : [];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/league/mime-type-detection/src/ExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/league/mime-type-detection/src/ExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\MimeTypeDetection;
 | 
			
		||||
 | 
			
		||||
interface ExtensionToMimeTypeMap
 | 
			
		||||
{
 | 
			
		||||
    public function lookupMimeType(string $extension): ?string;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										106
									
								
								vendor/league/mime-type-detection/src/FinfoMimeTypeDetector.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										106
									
								
								vendor/league/mime-type-detection/src/FinfoMimeTypeDetector.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,106 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\MimeTypeDetection;
 | 
			
		||||
 | 
			
		||||
use const FILEINFO_MIME_TYPE;
 | 
			
		||||
 | 
			
		||||
use const PATHINFO_EXTENSION;
 | 
			
		||||
use finfo;
 | 
			
		||||
 | 
			
		||||
class FinfoMimeTypeDetector implements MimeTypeDetector, ExtensionLookup
 | 
			
		||||
{
 | 
			
		||||
    private const INCONCLUSIVE_MIME_TYPES = [
 | 
			
		||||
        'application/x-empty',
 | 
			
		||||
        'text/plain',
 | 
			
		||||
        'text/x-asm',
 | 
			
		||||
        'application/octet-stream',
 | 
			
		||||
        'inode/x-empty',
 | 
			
		||||
    ];
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var finfo
 | 
			
		||||
     */
 | 
			
		||||
    private $finfo;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var ExtensionToMimeTypeMap
 | 
			
		||||
     */
 | 
			
		||||
    private $extensionMap;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var int|null
 | 
			
		||||
     */
 | 
			
		||||
    private $bufferSampleSize;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var array<string>
 | 
			
		||||
     */
 | 
			
		||||
    private $inconclusiveMimetypes;
 | 
			
		||||
 | 
			
		||||
    public function __construct(
 | 
			
		||||
        string $magicFile = '',
 | 
			
		||||
        ExtensionToMimeTypeMap $extensionMap = null,
 | 
			
		||||
        ?int $bufferSampleSize = null,
 | 
			
		||||
        array $inconclusiveMimetypes = self::INCONCLUSIVE_MIME_TYPES
 | 
			
		||||
    ) {
 | 
			
		||||
        $this->finfo = new finfo(FILEINFO_MIME_TYPE, $magicFile);
 | 
			
		||||
        $this->extensionMap = $extensionMap ?: new GeneratedExtensionToMimeTypeMap();
 | 
			
		||||
        $this->bufferSampleSize = $bufferSampleSize;
 | 
			
		||||
        $this->inconclusiveMimetypes = $inconclusiveMimetypes;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeType(string $path, $contents): ?string
 | 
			
		||||
    {
 | 
			
		||||
        $mimeType = is_string($contents)
 | 
			
		||||
            ? (@$this->finfo->buffer($this->takeSample($contents)) ?: null)
 | 
			
		||||
            : null;
 | 
			
		||||
 | 
			
		||||
        if ($mimeType !== null && ! in_array($mimeType, $this->inconclusiveMimetypes)) {
 | 
			
		||||
            return $mimeType;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return $this->detectMimeTypeFromPath($path);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromPath(string $path): ?string
 | 
			
		||||
    {
 | 
			
		||||
        $extension = strtolower(pathinfo($path, PATHINFO_EXTENSION));
 | 
			
		||||
 | 
			
		||||
        return $this->extensionMap->lookupMimeType($extension);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromFile(string $path): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return @$this->finfo->file($path) ?: null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromBuffer(string $contents): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return @$this->finfo->buffer($this->takeSample($contents)) ?: null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private function takeSample(string $contents): string
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->bufferSampleSize === null) {
 | 
			
		||||
            return $contents;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        return (string) substr($contents, 0, $this->bufferSampleSize);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lookupExtension(string $mimetype): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->extensionMap instanceof ExtensionLookup
 | 
			
		||||
            ? $this->extensionMap->lookupExtension($mimetype)
 | 
			
		||||
            : null;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lookupAllExtensions(string $mimetype): array
 | 
			
		||||
    {
 | 
			
		||||
        return $this->extensionMap instanceof ExtensionLookup
 | 
			
		||||
            ? $this->extensionMap->lookupAllExtensions($mimetype)
 | 
			
		||||
            : [];
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										2298
									
								
								vendor/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										2298
									
								
								vendor/league/mime-type-detection/src/GeneratedExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										19
									
								
								vendor/league/mime-type-detection/src/MimeTypeDetector.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/league/mime-type-detection/src/MimeTypeDetector.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace League\MimeTypeDetection;
 | 
			
		||||
 | 
			
		||||
interface MimeTypeDetector
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @param string|resource $contents
 | 
			
		||||
     */
 | 
			
		||||
    public function detectMimeType(string $path, $contents): ?string;
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromBuffer(string $contents): ?string;
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromPath(string $path): ?string;
 | 
			
		||||
 | 
			
		||||
    public function detectMimeTypeFromFile(string $path): ?string;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										30
									
								
								vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										30
									
								
								vendor/league/mime-type-detection/src/OverridingExtensionToMimeTypeMap.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,30 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace League\MimeTypeDetection;
 | 
			
		||||
 | 
			
		||||
class OverridingExtensionToMimeTypeMap implements ExtensionToMimeTypeMap
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * @var ExtensionToMimeTypeMap
 | 
			
		||||
     */
 | 
			
		||||
    private $innerMap;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @var string[]
 | 
			
		||||
     */
 | 
			
		||||
    private $overrides;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * @param array<string, string>  $overrides
 | 
			
		||||
     */
 | 
			
		||||
    public function __construct(ExtensionToMimeTypeMap $innerMap, array $overrides)
 | 
			
		||||
    {
 | 
			
		||||
        $this->innerMap = $innerMap;
 | 
			
		||||
        $this->overrides = $overrides;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function lookupMimeType(string $extension): ?string
 | 
			
		||||
    {
 | 
			
		||||
        return $this->overrides[$extension] ?? $this->innerMap->lookupMimeType($extension);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										21
									
								
								vendor/psr/container/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								vendor/psr/container/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,21 @@
 | 
			
		||||
The MIT License (MIT)
 | 
			
		||||
 | 
			
		||||
Copyright (c) 2013-2016 container-interop
 | 
			
		||||
Copyright (c) 2016 PHP Framework Interoperability Group
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
 | 
			
		||||
this software and associated documentation files (the "Software"), to deal in
 | 
			
		||||
the Software without restriction, including without limitation the rights to
 | 
			
		||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 | 
			
		||||
the Software, and to permit persons to whom the Software is furnished to do so,
 | 
			
		||||
subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in all
 | 
			
		||||
copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 | 
			
		||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 | 
			
		||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 | 
			
		||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 | 
			
		||||
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										13
									
								
								vendor/psr/container/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/psr/container/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,13 @@
 | 
			
		||||
Container interface
 | 
			
		||||
==============
 | 
			
		||||
 | 
			
		||||
This repository holds all interfaces related to [PSR-11 (Container Interface)][psr-url].
 | 
			
		||||
 | 
			
		||||
Note that this is not a Container implementation of its own. It is merely abstractions that describe the components of a Dependency Injection Container.
 | 
			
		||||
 | 
			
		||||
The installable [package][package-url] and [implementations][implementation-url] are listed on Packagist.
 | 
			
		||||
 | 
			
		||||
[psr-url]: https://www.php-fig.org/psr/psr-11/
 | 
			
		||||
[package-url]: https://packagist.org/packages/psr/container
 | 
			
		||||
[implementation-url]: https://packagist.org/providers/psr/container-implementation
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										27
									
								
								vendor/psr/container/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/psr/container/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "psr/container",
 | 
			
		||||
    "type": "library",
 | 
			
		||||
    "description": "Common Container Interface (PHP FIG PSR-11)",
 | 
			
		||||
    "keywords": ["psr", "psr-11", "container", "container-interop", "container-interface"],
 | 
			
		||||
    "homepage": "https://github.com/php-fig/container",
 | 
			
		||||
    "license": "MIT",
 | 
			
		||||
    "authors": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "PHP-FIG",
 | 
			
		||||
            "homepage": "https://www.php-fig.org/"
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": ">=7.4.0"
 | 
			
		||||
    },
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "Psr\\Container\\": "src/"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "extra": {
 | 
			
		||||
        "branch-alias": {
 | 
			
		||||
            "dev-master": "2.0.x-dev"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										12
									
								
								vendor/psr/container/src/ContainerExceptionInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								vendor/psr/container/src/ContainerExceptionInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,12 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Psr\Container;
 | 
			
		||||
 | 
			
		||||
use Throwable;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Base interface representing a generic exception in a container.
 | 
			
		||||
 */
 | 
			
		||||
interface ContainerExceptionInterface extends Throwable
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								vendor/psr/container/src/ContainerInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								vendor/psr/container/src/ContainerInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Container;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Describes the interface of a container that exposes methods to read its entries.
 | 
			
		||||
 */
 | 
			
		||||
interface ContainerInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Finds an entry of the container by its identifier and returns it.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $id Identifier of the entry to look for.
 | 
			
		||||
     *
 | 
			
		||||
     * @throws NotFoundExceptionInterface  No entry was found for **this** identifier.
 | 
			
		||||
     * @throws ContainerExceptionInterface Error while retrieving the entry.
 | 
			
		||||
     *
 | 
			
		||||
     * @return mixed Entry.
 | 
			
		||||
     */
 | 
			
		||||
    public function get(string $id);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns true if the container can return an entry for the given identifier.
 | 
			
		||||
     * Returns false otherwise.
 | 
			
		||||
     *
 | 
			
		||||
     * `has($id)` returning true does not mean that `get($id)` will not throw an exception.
 | 
			
		||||
     * It does however mean that `get($id)` will not throw a `NotFoundExceptionInterface`.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $id Identifier of the entry to look for.
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function has(string $id): bool;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										10
									
								
								vendor/psr/container/src/NotFoundExceptionInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								vendor/psr/container/src/NotFoundExceptionInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,10 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Psr\Container;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * No entry was found in the container.
 | 
			
		||||
 */
 | 
			
		||||
interface NotFoundExceptionInterface extends ContainerExceptionInterface
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								vendor/psr/http-message/CHANGELOG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								vendor/psr/http-message/CHANGELOG.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,36 @@
 | 
			
		||||
# Changelog
 | 
			
		||||
 | 
			
		||||
All notable changes to this project will be documented in this file, in reverse chronological order by release.
 | 
			
		||||
 | 
			
		||||
## 1.0.1 - 2016-08-06
 | 
			
		||||
 | 
			
		||||
### Added
 | 
			
		||||
 | 
			
		||||
- Nothing.
 | 
			
		||||
 | 
			
		||||
### Deprecated
 | 
			
		||||
 | 
			
		||||
- Nothing.
 | 
			
		||||
 | 
			
		||||
### Removed
 | 
			
		||||
 | 
			
		||||
- Nothing.
 | 
			
		||||
 | 
			
		||||
### Fixed
 | 
			
		||||
 | 
			
		||||
- Updated all `@return self` annotation references in interfaces to use
 | 
			
		||||
  `@return static`, which more closelly follows the semantics of the
 | 
			
		||||
  specification.
 | 
			
		||||
- Updated the `MessageInterface::getHeaders()` return annotation to use the
 | 
			
		||||
  value `string[][]`, indicating the format is a nested array of strings.
 | 
			
		||||
- Updated the `@link` annotation for `RequestInterface::withRequestTarget()`
 | 
			
		||||
  to point to the correct section of RFC 7230.
 | 
			
		||||
- Updated the `ServerRequestInterface::withUploadedFiles()` parameter annotation
 | 
			
		||||
  to add the parameter name (`$uploadedFiles`).
 | 
			
		||||
- Updated a `@throws` annotation for the `UploadedFileInterface::moveTo()`
 | 
			
		||||
  method to correctly reference the method parameter (it was referencing an
 | 
			
		||||
  incorrect parameter name previously).
 | 
			
		||||
 | 
			
		||||
## 1.0.0 - 2016-05-18
 | 
			
		||||
 | 
			
		||||
Initial stable release; reflects accepted PSR-7 specification.
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/psr/http-message/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/psr/http-message/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
Copyright (c) 2014 PHP Framework Interoperability Group
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy 
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights 
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is 
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in 
 | 
			
		||||
all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										16
									
								
								vendor/psr/http-message/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										16
									
								
								vendor/psr/http-message/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,16 @@
 | 
			
		||||
PSR Http Message
 | 
			
		||||
================
 | 
			
		||||
 | 
			
		||||
This repository holds all interfaces/classes/traits related to
 | 
			
		||||
[PSR-7](http://www.php-fig.org/psr/psr-7/).
 | 
			
		||||
 | 
			
		||||
Note that this is not a HTTP message implementation of its own. It is merely an
 | 
			
		||||
interface that describes a HTTP message. See the specification for more details.
 | 
			
		||||
 | 
			
		||||
Usage
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
Before reading the usage guide we recommend reading the PSR-7 interfaces method list:
 | 
			
		||||
 | 
			
		||||
* [`PSR-7 Interfaces Method List`](docs/PSR7-Interfaces.md)
 | 
			
		||||
* [`PSR-7 Usage Guide`](docs/PSR7-Usage.md)
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/psr/http-message/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/psr/http-message/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "psr/http-message",
 | 
			
		||||
    "description": "Common interface for HTTP messages",
 | 
			
		||||
    "keywords": ["psr", "psr-7", "http", "http-message", "request", "response"],
 | 
			
		||||
    "homepage": "https://github.com/php-fig/http-message",
 | 
			
		||||
    "license": "MIT",
 | 
			
		||||
    "authors": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "PHP-FIG",
 | 
			
		||||
            "homepage": "http://www.php-fig.org/"
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": "^7.2 || ^8.0"
 | 
			
		||||
    },
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "Psr\\Http\\Message\\": "src/"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "extra": {
 | 
			
		||||
        "branch-alias": {
 | 
			
		||||
            "dev-master": "1.1.x-dev"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										130
									
								
								vendor/psr/http-message/docs/PSR7-Interfaces.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										130
									
								
								vendor/psr/http-message/docs/PSR7-Interfaces.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,130 @@
 | 
			
		||||
# Interfaces
 | 
			
		||||
 | 
			
		||||
The purpose of this list is to help in finding the methods when working with PSR-7. This can be considered as a cheatsheet for PSR-7 interfaces.
 | 
			
		||||
 | 
			
		||||
The interfaces defined in PSR-7 are the following:
 | 
			
		||||
 | 
			
		||||
| Class Name | Description |
 | 
			
		||||
|---|---|
 | 
			
		||||
| [Psr\Http\Message\MessageInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessagemessageinterface) | Representation of a HTTP message |
 | 
			
		||||
| [Psr\Http\Message\RequestInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessagerequestinterface) | Representation of an outgoing, client-side request. |
 | 
			
		||||
| [Psr\Http\Message\ServerRequestInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageserverrequestinterface) | Representation of an incoming, server-side HTTP request. | 
 | 
			
		||||
| [Psr\Http\Message\ResponseInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageresponseinterface) | Representation of an outgoing, server-side response. |
 | 
			
		||||
| [Psr\Http\Message\StreamInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessagestreaminterface) | Describes a data stream |
 | 
			
		||||
| [Psr\Http\Message\UriInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageuriinterface) | Value object representing a URI. |
 | 
			
		||||
| [Psr\Http\Message\UploadedFileInterface](http://www.php-fig.org/psr/psr-7/#psrhttpmessageuploadedfileinterface) | Value object representing a file uploaded through an HTTP request. |
 | 
			
		||||
 | 
			
		||||
## `Psr\Http\Message\MessageInterface` Methods
 | 
			
		||||
 | 
			
		||||
| Method Name                        | Description | Notes |
 | 
			
		||||
|------------------------------------| ----------- | ----- |
 | 
			
		||||
| `getProtocolVersion()`             | Retrieve HTTP protocol version          |  1.0 or 1.1 |
 | 
			
		||||
| `withProtocolVersion($version)`    | Returns new message instance with given HTTP protocol version          |      |
 | 
			
		||||
| `getHeaders()`                     | Retrieve all HTTP Headers               | [Request Header List](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Request_fields), [Response Header List](https://en.wikipedia.org/wiki/List_of_HTTP_header_fields#Response_fields)      |
 | 
			
		||||
| `hasHeader($name)`                 | Checks if HTTP Header with given name exists  | |
 | 
			
		||||
| `getHeader($name)`                 | Retrieves a array with the values for a single header | |
 | 
			
		||||
| `getHeaderLine($name)`             | Retrieves a comma-separated string of the values for a single header |  |
 | 
			
		||||
| `withHeader($name, $value)`        | Returns new message instance with given HTTP Header | if the header existed in the original instance, replaces the header value from the original message with the value provided when creating the new instance. |
 | 
			
		||||
| `withAddedHeader($name, $value)`   | Returns new message instance with appended value to given header | If header already exists value will be appended, if not a new header will be created |
 | 
			
		||||
| `withoutHeader($name)`             | Removes HTTP Header with given name| |
 | 
			
		||||
| `getBody()`                        | Retrieves the HTTP Message Body | Returns object implementing `StreamInterface`|
 | 
			
		||||
| `withBody(StreamInterface $body)`  | Returns new message instance with given HTTP Message Body | |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## `Psr\Http\Message\RequestInterface` Methods
 | 
			
		||||
 | 
			
		||||
Same methods as `Psr\Http\Message\MessageInterface`  + the following methods:
 | 
			
		||||
 | 
			
		||||
| Method Name                        | Description | Notes |
 | 
			
		||||
|------------------------------------| ----------- | ----- |
 | 
			
		||||
| `getRequestTarget()`                | Retrieves the message's request target              | origin-form, absolute-form, authority-form, asterisk-form ([RFC7230](https://www.rfc-editor.org/rfc/rfc7230.txt)) |
 | 
			
		||||
| `withRequestTarget($requestTarget)` | Return a new message instance with the specific request-target |      |
 | 
			
		||||
| `getMethod()`                       | Retrieves the HTTP method of the request.  |  GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACE (defined in [RFC7231](https://tools.ietf.org/html/rfc7231)), PATCH (defined in [RFC5789](https://tools.ietf.org/html/rfc5789)) |
 | 
			
		||||
| `withMethod($method)`               | Returns a new message instance with the provided HTTP method  | |
 | 
			
		||||
| `getUri()`                 | Retrieves the URI instance | |
 | 
			
		||||
| `withUri(UriInterface $uri, $preserveHost = false)` | Returns a new message instance with the provided URI |  |
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
## `Psr\Http\Message\ServerRequestInterface` Methods
 | 
			
		||||
 | 
			
		||||
Same methods as `Psr\Http\Message\RequestInterface`  + the following methods:
 | 
			
		||||
 | 
			
		||||
| Method Name                        | Description | Notes |
 | 
			
		||||
|------------------------------------| ----------- | ----- |
 | 
			
		||||
| `getServerParams() `               | Retrieve server parameters  | Typically derived from `$_SERVER`  |
 | 
			
		||||
| `getCookieParams()`                | Retrieves cookies sent by the client to the server. | Typically derived from `$_COOKIES` |
 | 
			
		||||
| `withCookieParams(array $cookies)` |  Returns a new request instance with the specified cookies      |   | 
 | 
			
		||||
| `withQueryParams(array $query)` | Returns a new request instance with the specified query string arguments  |  |
 | 
			
		||||
| `getUploadedFiles()` | Retrieve normalized file upload data  |  |
 | 
			
		||||
| `withUploadedFiles(array $uploadedFiles)` | Returns a new request instance with the specified uploaded files  |  |
 | 
			
		||||
| `getParsedBody()` | Retrieve any parameters provided in the request body  |  |
 | 
			
		||||
| `withParsedBody($data)` | Returns a new request instance with the specified body parameters  |  |
 | 
			
		||||
| `getAttributes()` | Retrieve attributes derived from the request  |  |
 | 
			
		||||
| `getAttribute($name, $default = null)` | Retrieve a single derived request attribute  |  |
 | 
			
		||||
| `withAttribute($name, $value)` | Returns a new request instance with the specified derived request attribute  |  |
 | 
			
		||||
| `withoutAttribute($name)` | Returns a new request instance that without the specified derived request attribute  |  |
 | 
			
		||||
 | 
			
		||||
## `Psr\Http\Message\ResponseInterface` Methods:
 | 
			
		||||
 | 
			
		||||
Same methods as `Psr\Http\Message\MessageInterface`  + the following methods:
 | 
			
		||||
 | 
			
		||||
| Method Name                        | Description | Notes |
 | 
			
		||||
|------------------------------------| ----------- | ----- |
 | 
			
		||||
| `getStatusCode()` | Gets the response status code. | |
 | 
			
		||||
| `withStatus($code, $reasonPhrase = '')` | Returns a new response instance with the specified status code and, optionally, reason phrase. | |
 | 
			
		||||
| `getReasonPhrase()` | Gets the response reason phrase associated with the status code. | |
 | 
			
		||||
 | 
			
		||||
##  `Psr\Http\Message\StreamInterface` Methods
 | 
			
		||||
 | 
			
		||||
| Method Name                        | Description | Notes |
 | 
			
		||||
|------------------------------------| ----------- | ----- |
 | 
			
		||||
| `__toString()` | Reads all data from the stream into a string, from the beginning to end. | |
 | 
			
		||||
| `close()` | Closes the stream and any underlying resources. | |
 | 
			
		||||
| `detach()` | Separates any underlying resources from the stream. | |
 | 
			
		||||
| `getSize()` | Get the size of the stream if known. | |
 | 
			
		||||
| `eof()` | Returns true if the stream is at the end of the stream.| |
 | 
			
		||||
| `isSeekable()` |  Returns whether or not the stream is seekable. | |
 | 
			
		||||
| `seek($offset, $whence = SEEK_SET)` | Seek to a position in the stream. | |
 | 
			
		||||
| `rewind()` | Seek to the beginning of the stream. | |
 | 
			
		||||
| `isWritable()` | Returns whether or not the stream is writable. | |
 | 
			
		||||
| `write($string)` | Write data to the stream. | |
 | 
			
		||||
| `isReadable()` | Returns whether or not the stream is readable. | |
 | 
			
		||||
| `read($length)` | Read data from the stream. | |
 | 
			
		||||
| `getContents()` | Returns the remaining contents in a string | |
 | 
			
		||||
| `getMetadata($key = null)()` | Get stream metadata as an associative array or retrieve a specific key. | |
 | 
			
		||||
 | 
			
		||||
## `Psr\Http\Message\UriInterface` Methods
 | 
			
		||||
 | 
			
		||||
| Method Name                        | Description | Notes |
 | 
			
		||||
|------------------------------------| ----------- | ----- |
 | 
			
		||||
| `getScheme()` | Retrieve the scheme component of the URI. | |
 | 
			
		||||
| `getAuthority()` | Retrieve the authority component of the URI. | |
 | 
			
		||||
| `getUserInfo()` | Retrieve the user information component of the URI. | |
 | 
			
		||||
| `getHost()` | Retrieve the host component of the URI. | |
 | 
			
		||||
| `getPort()` | Retrieve the port component of the URI. | |
 | 
			
		||||
| `getPath()` | Retrieve the path component of the URI. | |
 | 
			
		||||
| `getQuery()` | Retrieve the query string of the URI. | |
 | 
			
		||||
| `getFragment()` | Retrieve the fragment component of the URI. | |
 | 
			
		||||
| `withScheme($scheme)` | Return an instance with the specified scheme. | |
 | 
			
		||||
| `withUserInfo($user, $password = null)` | Return an instance with the specified user information. | |
 | 
			
		||||
| `withHost($host)` | Return an instance with the specified host. | |
 | 
			
		||||
| `withPort($port)` | Return an instance with the specified port. | |
 | 
			
		||||
| `withPath($path)` | Return an instance with the specified path. | |
 | 
			
		||||
| `withQuery($query)` | Return an instance with the specified query string. | |
 | 
			
		||||
| `withFragment($fragment)` | Return an instance with the specified URI fragment. | |
 | 
			
		||||
| `__toString()` | Return the string representation as a URI reference. | |
 | 
			
		||||
 | 
			
		||||
## `Psr\Http\Message\UploadedFileInterface` Methods
 | 
			
		||||
 | 
			
		||||
| Method Name                        | Description | Notes |
 | 
			
		||||
|------------------------------------| ----------- | ----- |
 | 
			
		||||
| `getStream()` | Retrieve a stream representing the uploaded file. | |
 | 
			
		||||
| `moveTo($targetPath)` | Move the uploaded file to a new location. | |
 | 
			
		||||
| `getSize()` | Retrieve the file size. | |
 | 
			
		||||
| `getError()` | Retrieve the error associated with the uploaded file. | |
 | 
			
		||||
| `getClientFilename()` | Retrieve the filename sent by the client. | |
 | 
			
		||||
| `getClientMediaType()` | Retrieve the media type sent by the client. | |
 | 
			
		||||
 | 
			
		||||
> `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface`  because the `Request` and the `Response` are `HTTP Messages`.
 | 
			
		||||
> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered.
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										159
									
								
								vendor/psr/http-message/docs/PSR7-Usage.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								vendor/psr/http-message/docs/PSR7-Usage.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,159 @@
 | 
			
		||||
### PSR-7 Usage
 | 
			
		||||
 | 
			
		||||
All PSR-7 applications comply with these interfaces 
 | 
			
		||||
They were created to establish a standard between middleware implementations.
 | 
			
		||||
 | 
			
		||||
> `RequestInterface`, `ServerRequestInterface`, `ResponseInterface` extend `MessageInterface`  because the `Request` and the `Response` are `HTTP Messages`.
 | 
			
		||||
> When using `ServerRequestInterface`, both `RequestInterface` and `Psr\Http\Message\MessageInterface` methods are considered.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
The following examples will illustrate how basic operations are done in PSR-7.
 | 
			
		||||
 | 
			
		||||
##### Examples
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
For this examples to work (at least) a PSR-7 implementation package is required. (eg: zendframework/zend-diactoros, guzzlehttp/psr7, slim/slim, etc)
 | 
			
		||||
All PSR-7 implementations should have the same behaviour.
 | 
			
		||||
 | 
			
		||||
The following will be assumed: 
 | 
			
		||||
`$request` is an object of `Psr\Http\Message\RequestInterface` and
 | 
			
		||||
 | 
			
		||||
`$response` is an object implementing `Psr\Http\Message\RequestInterface`
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
### Working with HTTP Headers
 | 
			
		||||
 | 
			
		||||
#### Adding headers to response:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$response->withHeader('My-Custom-Header', 'My Custom Message');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Appending values to headers
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$response->withAddedHeader('My-Custom-Header', 'The second message');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Checking if header exists:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$request->hasHeader('My-Custom-Header'); // will return false
 | 
			
		||||
$response->hasHeader('My-Custom-Header'); // will return true
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> Note: My-Custom-Header was only added in the Response
 | 
			
		||||
 | 
			
		||||
#### Getting comma-separated values from a header (also applies to request)
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
// getting value from request headers
 | 
			
		||||
$request->getHeaderLine('Content-Type'); // will return: "text/html; charset=UTF-8"
 | 
			
		||||
// getting value from response headers
 | 
			
		||||
$response->getHeaderLine('My-Custom-Header'); // will return:  "My Custom Message; The second message"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Getting array of value from a header (also applies to request)
 | 
			
		||||
```php
 | 
			
		||||
// getting value from request headers
 | 
			
		||||
$request->getHeader('Content-Type'); // will return: ["text/html", "charset=UTF-8"]
 | 
			
		||||
// getting value from response headers
 | 
			
		||||
$response->getHeader('My-Custom-Header'); // will return:  ["My Custom Message",  "The second message"]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Removing headers from HTTP Messages
 | 
			
		||||
```php
 | 
			
		||||
// removing a header from Request, removing deprecated "Content-MD5" header
 | 
			
		||||
$request->withoutHeader('Content-MD5'); 
 | 
			
		||||
 | 
			
		||||
// removing a header from Response
 | 
			
		||||
// effect: the browser won't know the size of the stream
 | 
			
		||||
// the browser will download the stream till it ends
 | 
			
		||||
$response->withoutHeader('Content-Length');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Working with HTTP Message Body
 | 
			
		||||
 | 
			
		||||
When working with the PSR-7 there are two methods of implementation:
 | 
			
		||||
#### 1. Getting the body separately
 | 
			
		||||
 | 
			
		||||
> This method makes the body handling easier to understand and is useful when repeatedly calling body methods. (You only call `getBody()` once). Using this method mistakes like `$response->write()` are also prevented.
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$body = $response->getBody();
 | 
			
		||||
// operations on body, eg. read, write, seek
 | 
			
		||||
// ...
 | 
			
		||||
// replacing the old body
 | 
			
		||||
$response->withBody($body); 
 | 
			
		||||
// this last statement is optional as we working with objects
 | 
			
		||||
// in this case the "new" body is same with the "old" one
 | 
			
		||||
// the $body variable has the same value as the one in $request, only the reference is passed
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### 2. Working directly on response
 | 
			
		||||
 | 
			
		||||
> This method is useful when only performing few operations as the `$request->getBody()` statement fragment is required
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$response->getBody()->write('hello');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Getting the body contents
 | 
			
		||||
 | 
			
		||||
The following snippet gets the contents of a stream contents.
 | 
			
		||||
> Note: Streams must be rewinded, if content was written into streams, it will be ignored when calling `getContents()` because the stream pointer is set to the last character, which is `\0` - meaning end of stream.
 | 
			
		||||
```php 
 | 
			
		||||
$body = $response->getBody();
 | 
			
		||||
$body->rewind(); // or $body->seek(0);
 | 
			
		||||
$bodyText = $body->getContents();
 | 
			
		||||
```
 | 
			
		||||
> Note: If `$body->seek(1)` is called before `$body->getContents()`, the first character will be ommited as the starting pointer is set to `1`, not `0`. This is why using `$body->rewind()` is recommended.
 | 
			
		||||
 | 
			
		||||
### Append to body
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
$response->getBody()->write('Hello'); // writing directly
 | 
			
		||||
$body = $request->getBody(); // which is a `StreamInterface`
 | 
			
		||||
$body->write('xxxxx');
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Prepend to body
 | 
			
		||||
Prepending is different when it comes to streams. The content must be copied before writing the content to be prepended.
 | 
			
		||||
The following example will explain the behaviour of streams.
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
// assuming our response is initially empty
 | 
			
		||||
$body = $repsonse->getBody();
 | 
			
		||||
// writing the string "abcd"
 | 
			
		||||
$body->write('abcd');
 | 
			
		||||
 | 
			
		||||
// seeking to start of stream
 | 
			
		||||
$body->seek(0);
 | 
			
		||||
// writing 'ef'
 | 
			
		||||
$body->write('ef'); // at this point the stream contains "efcd"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
#### Prepending by rewriting separately
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
// assuming our response body stream only contains: "abcd"
 | 
			
		||||
$body = $response->getBody();
 | 
			
		||||
$body->rewind();
 | 
			
		||||
$contents = $body->getContents(); // abcd
 | 
			
		||||
// seeking the stream to beginning
 | 
			
		||||
$body->rewind();
 | 
			
		||||
$body->write('ef'); // stream contains "efcd"
 | 
			
		||||
$body->write($contents); // stream contains "efabcd"
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
> Note: `getContents()` seeks the stream while reading it, therefore if the second `rewind()` method call was not present the stream would have resulted in `abcdefabcd` because the `write()` method appends to stream if not preceeded by `rewind()` or `seek(0)`.
 | 
			
		||||
 | 
			
		||||
#### Prepending by using contents as a string
 | 
			
		||||
```php
 | 
			
		||||
$body = $response->getBody();
 | 
			
		||||
$body->rewind();
 | 
			
		||||
$contents = $body->getContents(); // efabcd
 | 
			
		||||
$contents = 'ef'.$contents;
 | 
			
		||||
$body->rewind();
 | 
			
		||||
$body->write($contents);
 | 
			
		||||
```
 | 
			
		||||
							
								
								
									
										189
									
								
								vendor/psr/http-message/src/MessageInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										189
									
								
								vendor/psr/http-message/src/MessageInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,189 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Http\Message;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * HTTP messages consist of requests from a client to a server and responses
 | 
			
		||||
 * from a server to a client. This interface defines the methods common to
 | 
			
		||||
 * each.
 | 
			
		||||
 *
 | 
			
		||||
 * Messages are considered immutable; all methods that might change state MUST
 | 
			
		||||
 * be implemented such that they retain the internal state of the current
 | 
			
		||||
 * message and return an instance that contains the changed state.
 | 
			
		||||
 *
 | 
			
		||||
 * @link http://www.ietf.org/rfc/rfc7230.txt
 | 
			
		||||
 * @link http://www.ietf.org/rfc/rfc7231.txt
 | 
			
		||||
 */
 | 
			
		||||
interface MessageInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieves the HTTP protocol version as a string.
 | 
			
		||||
     *
 | 
			
		||||
     * The string MUST contain only the HTTP version number (e.g., "1.1", "1.0").
 | 
			
		||||
     *
 | 
			
		||||
     * @return string HTTP protocol version.
 | 
			
		||||
     */
 | 
			
		||||
    public function getProtocolVersion();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified HTTP protocol version.
 | 
			
		||||
     *
 | 
			
		||||
     * The version string MUST contain only the HTTP version number (e.g.,
 | 
			
		||||
     * "1.1", "1.0").
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * new protocol version.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $version HTTP protocol version
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withProtocolVersion(string $version);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieves all message header values.
 | 
			
		||||
     *
 | 
			
		||||
     * The keys represent the header name as it will be sent over the wire, and
 | 
			
		||||
     * each value is an array of strings associated with the header.
 | 
			
		||||
     *
 | 
			
		||||
     *     // Represent the headers as a string
 | 
			
		||||
     *     foreach ($message->getHeaders() as $name => $values) {
 | 
			
		||||
     *         echo $name . ": " . implode(", ", $values);
 | 
			
		||||
     *     }
 | 
			
		||||
     *
 | 
			
		||||
     *     // Emit headers iteratively:
 | 
			
		||||
     *     foreach ($message->getHeaders() as $name => $values) {
 | 
			
		||||
     *         foreach ($values as $value) {
 | 
			
		||||
     *             header(sprintf('%s: %s', $name, $value), false);
 | 
			
		||||
     *         }
 | 
			
		||||
     *     }
 | 
			
		||||
     *
 | 
			
		||||
     * While header names are not case-sensitive, getHeaders() will preserve the
 | 
			
		||||
     * exact case in which headers were originally specified.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string[][] Returns an associative array of the message's headers. Each
 | 
			
		||||
     *     key MUST be a header name, and each value MUST be an array of strings
 | 
			
		||||
     *     for that header.
 | 
			
		||||
     */
 | 
			
		||||
    public function getHeaders();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Checks if a header exists by the given case-insensitive name.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $name Case-insensitive header field name.
 | 
			
		||||
     * @return bool Returns true if any header names match the given header
 | 
			
		||||
     *     name using a case-insensitive string comparison. Returns false if
 | 
			
		||||
     *     no matching header name is found in the message.
 | 
			
		||||
     */
 | 
			
		||||
    public function hasHeader(string $name);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieves a message header value by the given case-insensitive name.
 | 
			
		||||
     *
 | 
			
		||||
     * This method returns an array of all the header values of the given
 | 
			
		||||
     * case-insensitive header name.
 | 
			
		||||
     *
 | 
			
		||||
     * If the header does not appear in the message, this method MUST return an
 | 
			
		||||
     * empty array.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $name Case-insensitive header field name.
 | 
			
		||||
     * @return string[] An array of string values as provided for the given
 | 
			
		||||
     *    header. If the header does not appear in the message, this method MUST
 | 
			
		||||
     *    return an empty array.
 | 
			
		||||
     */
 | 
			
		||||
    public function getHeader(string $name);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieves a comma-separated string of the values for a single header.
 | 
			
		||||
     *
 | 
			
		||||
     * This method returns all of the header values of the given
 | 
			
		||||
     * case-insensitive header name as a string concatenated together using
 | 
			
		||||
     * a comma.
 | 
			
		||||
     *
 | 
			
		||||
     * NOTE: Not all header values may be appropriately represented using
 | 
			
		||||
     * comma concatenation. For such headers, use getHeader() instead
 | 
			
		||||
     * and supply your own delimiter when concatenating.
 | 
			
		||||
     *
 | 
			
		||||
     * If the header does not appear in the message, this method MUST return
 | 
			
		||||
     * an empty string.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $name Case-insensitive header field name.
 | 
			
		||||
     * @return string A string of values as provided for the given header
 | 
			
		||||
     *    concatenated together using a comma. If the header does not appear in
 | 
			
		||||
     *    the message, this method MUST return an empty string.
 | 
			
		||||
     */
 | 
			
		||||
    public function getHeaderLine(string $name);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the provided value replacing the specified header.
 | 
			
		||||
     *
 | 
			
		||||
     * While header names are case-insensitive, the casing of the header will
 | 
			
		||||
     * be preserved by this function, and returned from getHeaders().
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * new and/or updated header and value.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $name Case-insensitive header field name.
 | 
			
		||||
     * @param string|string[] $value Header value(s).
 | 
			
		||||
     * @return static
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid header names or values.
 | 
			
		||||
     */
 | 
			
		||||
    public function withHeader(string $name, $value);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified header appended with the given value.
 | 
			
		||||
     *
 | 
			
		||||
     * Existing values for the specified header will be maintained. The new
 | 
			
		||||
     * value(s) will be appended to the existing list. If the header did not
 | 
			
		||||
     * exist previously, it will be added.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * new header and/or value.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $name Case-insensitive header field name to add.
 | 
			
		||||
     * @param string|string[] $value Header value(s).
 | 
			
		||||
     * @return static
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid header names or values.
 | 
			
		||||
     */
 | 
			
		||||
    public function withAddedHeader(string $name, $value);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance without the specified header.
 | 
			
		||||
     *
 | 
			
		||||
     * Header resolution MUST be done without case-sensitivity.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that removes
 | 
			
		||||
     * the named header.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $name Case-insensitive header field name to remove.
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withoutHeader(string $name);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the body of the message.
 | 
			
		||||
     *
 | 
			
		||||
     * @return StreamInterface Returns the body as a stream.
 | 
			
		||||
     */
 | 
			
		||||
    public function getBody();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified message body.
 | 
			
		||||
     *
 | 
			
		||||
     * The body MUST be a StreamInterface object.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return a new instance that has the
 | 
			
		||||
     * new body stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @param StreamInterface $body Body.
 | 
			
		||||
     * @return static
 | 
			
		||||
     * @throws \InvalidArgumentException When the body is not valid.
 | 
			
		||||
     */
 | 
			
		||||
    public function withBody(StreamInterface $body);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										131
									
								
								vendor/psr/http-message/src/RequestInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										131
									
								
								vendor/psr/http-message/src/RequestInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,131 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Http\Message;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Representation of an outgoing, client-side request.
 | 
			
		||||
 *
 | 
			
		||||
 * Per the HTTP specification, this interface includes properties for
 | 
			
		||||
 * each of the following:
 | 
			
		||||
 *
 | 
			
		||||
 * - Protocol version
 | 
			
		||||
 * - HTTP method
 | 
			
		||||
 * - URI
 | 
			
		||||
 * - Headers
 | 
			
		||||
 * - Message body
 | 
			
		||||
 *
 | 
			
		||||
 * During construction, implementations MUST attempt to set the Host header from
 | 
			
		||||
 * a provided URI if no Host header is provided.
 | 
			
		||||
 *
 | 
			
		||||
 * Requests are considered immutable; all methods that might change state MUST
 | 
			
		||||
 * be implemented such that they retain the internal state of the current
 | 
			
		||||
 * message and return an instance that contains the changed state.
 | 
			
		||||
 */
 | 
			
		||||
interface RequestInterface extends MessageInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieves the message's request target.
 | 
			
		||||
     *
 | 
			
		||||
     * Retrieves the message's request-target either as it will appear (for
 | 
			
		||||
     * clients), as it appeared at request (for servers), or as it was
 | 
			
		||||
     * specified for the instance (see withRequestTarget()).
 | 
			
		||||
     *
 | 
			
		||||
     * In most cases, this will be the origin-form of the composed URI,
 | 
			
		||||
     * unless a value was provided to the concrete implementation (see
 | 
			
		||||
     * withRequestTarget() below).
 | 
			
		||||
     *
 | 
			
		||||
     * If no URI is available, and no request-target has been specifically
 | 
			
		||||
     * provided, this method MUST return the string "/".
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function getRequestTarget();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specific request-target.
 | 
			
		||||
     *
 | 
			
		||||
     * If the request needs a non-origin-form request-target — e.g., for
 | 
			
		||||
     * specifying an absolute-form, authority-form, or asterisk-form —
 | 
			
		||||
     * this method may be used to create an instance with the specified
 | 
			
		||||
     * request-target, verbatim.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * changed request target.
 | 
			
		||||
     *
 | 
			
		||||
     * @link http://tools.ietf.org/html/rfc7230#section-5.3 (for the various
 | 
			
		||||
     *     request-target forms allowed in request messages)
 | 
			
		||||
     * @param string $requestTarget
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withRequestTarget(string $requestTarget);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieves the HTTP method of the request.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string Returns the request method.
 | 
			
		||||
     */
 | 
			
		||||
    public function getMethod();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the provided HTTP method.
 | 
			
		||||
     *
 | 
			
		||||
     * While HTTP method names are typically all uppercase characters, HTTP
 | 
			
		||||
     * method names are case-sensitive and thus implementations SHOULD NOT
 | 
			
		||||
     * modify the given string.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * changed request method.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $method Case-sensitive method.
 | 
			
		||||
     * @return static
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid HTTP methods.
 | 
			
		||||
     */
 | 
			
		||||
    public function withMethod(string $method);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieves the URI instance.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST return a UriInterface instance.
 | 
			
		||||
     *
 | 
			
		||||
     * @link http://tools.ietf.org/html/rfc3986#section-4.3
 | 
			
		||||
     * @return UriInterface Returns a UriInterface instance
 | 
			
		||||
     *     representing the URI of the request.
 | 
			
		||||
     */
 | 
			
		||||
    public function getUri();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns an instance with the provided URI.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST update the Host header of the returned request by
 | 
			
		||||
     * default if the URI contains a host component. If the URI does not
 | 
			
		||||
     * contain a host component, any pre-existing Host header MUST be carried
 | 
			
		||||
     * over to the returned request.
 | 
			
		||||
     *
 | 
			
		||||
     * You can opt-in to preserving the original state of the Host header by
 | 
			
		||||
     * setting `$preserveHost` to `true`. When `$preserveHost` is set to
 | 
			
		||||
     * `true`, this method interacts with the Host header in the following ways:
 | 
			
		||||
     *
 | 
			
		||||
     * - If the Host header is missing or empty, and the new URI contains
 | 
			
		||||
     *   a host component, this method MUST update the Host header in the returned
 | 
			
		||||
     *   request.
 | 
			
		||||
     * - If the Host header is missing or empty, and the new URI does not contain a
 | 
			
		||||
     *   host component, this method MUST NOT update the Host header in the returned
 | 
			
		||||
     *   request.
 | 
			
		||||
     * - If a Host header is present and non-empty, this method MUST NOT update
 | 
			
		||||
     *   the Host header in the returned request.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * new UriInterface instance.
 | 
			
		||||
     *
 | 
			
		||||
     * @link http://tools.ietf.org/html/rfc3986#section-4.3
 | 
			
		||||
     * @param UriInterface $uri New request URI to use.
 | 
			
		||||
     * @param bool $preserveHost Preserve the original state of the Host header.
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withUri(UriInterface $uri, bool $preserveHost = false);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										70
									
								
								vendor/psr/http-message/src/ResponseInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								vendor/psr/http-message/src/ResponseInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,70 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Http\Message;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Representation of an outgoing, server-side response.
 | 
			
		||||
 *
 | 
			
		||||
 * Per the HTTP specification, this interface includes properties for
 | 
			
		||||
 * each of the following:
 | 
			
		||||
 *
 | 
			
		||||
 * - Protocol version
 | 
			
		||||
 * - Status code and reason phrase
 | 
			
		||||
 * - Headers
 | 
			
		||||
 * - Message body
 | 
			
		||||
 *
 | 
			
		||||
 * Responses are considered immutable; all methods that might change state MUST
 | 
			
		||||
 * be implemented such that they retain the internal state of the current
 | 
			
		||||
 * message and return an instance that contains the changed state.
 | 
			
		||||
 */
 | 
			
		||||
interface ResponseInterface extends MessageInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the response status code.
 | 
			
		||||
     *
 | 
			
		||||
     * The status code is a 3-digit integer result code of the server's attempt
 | 
			
		||||
     * to understand and satisfy the request.
 | 
			
		||||
     *
 | 
			
		||||
     * @return int Status code.
 | 
			
		||||
     */
 | 
			
		||||
    public function getStatusCode();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified status code and, optionally, reason phrase.
 | 
			
		||||
     *
 | 
			
		||||
     * If no reason phrase is specified, implementations MAY choose to default
 | 
			
		||||
     * to the RFC 7231 or IANA recommended reason phrase for the response's
 | 
			
		||||
     * status code.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * updated status and reason phrase.
 | 
			
		||||
     *
 | 
			
		||||
     * @link http://tools.ietf.org/html/rfc7231#section-6
 | 
			
		||||
     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
 | 
			
		||||
     * @param int $code The 3-digit integer result code to set.
 | 
			
		||||
     * @param string $reasonPhrase The reason phrase to use with the
 | 
			
		||||
     *     provided status code; if none is provided, implementations MAY
 | 
			
		||||
     *     use the defaults as suggested in the HTTP specification.
 | 
			
		||||
     * @return static
 | 
			
		||||
     * @throws \InvalidArgumentException For invalid status code arguments.
 | 
			
		||||
     */
 | 
			
		||||
    public function withStatus(int $code, string $reasonPhrase = '');
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Gets the response reason phrase associated with the status code.
 | 
			
		||||
     *
 | 
			
		||||
     * Because a reason phrase is not a required element in a response
 | 
			
		||||
     * status line, the reason phrase value MAY be null. Implementations MAY
 | 
			
		||||
     * choose to return the default RFC 7231 recommended reason phrase (or those
 | 
			
		||||
     * listed in the IANA HTTP Status Code Registry) for the response's
 | 
			
		||||
     * status code.
 | 
			
		||||
     *
 | 
			
		||||
     * @link http://tools.ietf.org/html/rfc7231#section-6
 | 
			
		||||
     * @link http://www.iana.org/assignments/http-status-codes/http-status-codes.xhtml
 | 
			
		||||
     * @return string Reason phrase; must return an empty string if none present.
 | 
			
		||||
     */
 | 
			
		||||
    public function getReasonPhrase();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										263
									
								
								vendor/psr/http-message/src/ServerRequestInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										263
									
								
								vendor/psr/http-message/src/ServerRequestInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,263 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Http\Message;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Representation of an incoming, server-side HTTP request.
 | 
			
		||||
 *
 | 
			
		||||
 * Per the HTTP specification, this interface includes properties for
 | 
			
		||||
 * each of the following:
 | 
			
		||||
 *
 | 
			
		||||
 * - Protocol version
 | 
			
		||||
 * - HTTP method
 | 
			
		||||
 * - URI
 | 
			
		||||
 * - Headers
 | 
			
		||||
 * - Message body
 | 
			
		||||
 *
 | 
			
		||||
 * Additionally, it encapsulates all data as it has arrived to the
 | 
			
		||||
 * application from the CGI and/or PHP environment, including:
 | 
			
		||||
 *
 | 
			
		||||
 * - The values represented in $_SERVER.
 | 
			
		||||
 * - Any cookies provided (generally via $_COOKIE)
 | 
			
		||||
 * - Query string arguments (generally via $_GET, or as parsed via parse_str())
 | 
			
		||||
 * - Upload files, if any (as represented by $_FILES)
 | 
			
		||||
 * - Deserialized body parameters (generally from $_POST)
 | 
			
		||||
 *
 | 
			
		||||
 * $_SERVER values MUST be treated as immutable, as they represent application
 | 
			
		||||
 * state at the time of request; as such, no methods are provided to allow
 | 
			
		||||
 * modification of those values. The other values provide such methods, as they
 | 
			
		||||
 * can be restored from $_SERVER or the request body, and may need treatment
 | 
			
		||||
 * during the application (e.g., body parameters may be deserialized based on
 | 
			
		||||
 * content type).
 | 
			
		||||
 *
 | 
			
		||||
 * Additionally, this interface recognizes the utility of introspecting a
 | 
			
		||||
 * request to derive and match additional parameters (e.g., via URI path
 | 
			
		||||
 * matching, decrypting cookie values, deserializing non-form-encoded body
 | 
			
		||||
 * content, matching authorization headers to users, etc). These parameters
 | 
			
		||||
 * are stored in an "attributes" property.
 | 
			
		||||
 *
 | 
			
		||||
 * Requests are considered immutable; all methods that might change state MUST
 | 
			
		||||
 * be implemented such that they retain the internal state of the current
 | 
			
		||||
 * message and return an instance that contains the changed state.
 | 
			
		||||
 */
 | 
			
		||||
interface ServerRequestInterface extends RequestInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve server parameters.
 | 
			
		||||
     *
 | 
			
		||||
     * Retrieves data related to the incoming request environment,
 | 
			
		||||
     * typically derived from PHP's $_SERVER superglobal. The data IS NOT
 | 
			
		||||
     * REQUIRED to originate from $_SERVER.
 | 
			
		||||
     *
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    public function getServerParams();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve cookies.
 | 
			
		||||
     *
 | 
			
		||||
     * Retrieves cookies sent by the client to the server.
 | 
			
		||||
     *
 | 
			
		||||
     * The data MUST be compatible with the structure of the $_COOKIE
 | 
			
		||||
     * superglobal.
 | 
			
		||||
     *
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    public function getCookieParams();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified cookies.
 | 
			
		||||
     *
 | 
			
		||||
     * The data IS NOT REQUIRED to come from the $_COOKIE superglobal, but MUST
 | 
			
		||||
     * be compatible with the structure of $_COOKIE. Typically, this data will
 | 
			
		||||
     * be injected at instantiation.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST NOT update the related Cookie header of the request
 | 
			
		||||
     * instance, nor related values in the server params.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * updated cookie values.
 | 
			
		||||
     *
 | 
			
		||||
     * @param array $cookies Array of key/value pairs representing cookies.
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withCookieParams(array $cookies);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve query string arguments.
 | 
			
		||||
     *
 | 
			
		||||
     * Retrieves the deserialized query string arguments, if any.
 | 
			
		||||
     *
 | 
			
		||||
     * Note: the query params might not be in sync with the URI or server
 | 
			
		||||
     * params. If you need to ensure you are only getting the original
 | 
			
		||||
     * values, you may need to parse the query string from `getUri()->getQuery()`
 | 
			
		||||
     * or from the `QUERY_STRING` server param.
 | 
			
		||||
     *
 | 
			
		||||
     * @return array
 | 
			
		||||
     */
 | 
			
		||||
    public function getQueryParams();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified query string arguments.
 | 
			
		||||
     *
 | 
			
		||||
     * These values SHOULD remain immutable over the course of the incoming
 | 
			
		||||
     * request. They MAY be injected during instantiation, such as from PHP's
 | 
			
		||||
     * $_GET superglobal, or MAY be derived from some other value such as the
 | 
			
		||||
     * URI. In cases where the arguments are parsed from the URI, the data
 | 
			
		||||
     * MUST be compatible with what PHP's parse_str() would return for
 | 
			
		||||
     * purposes of how duplicate query parameters are handled, and how nested
 | 
			
		||||
     * sets are handled.
 | 
			
		||||
     *
 | 
			
		||||
     * Setting query string arguments MUST NOT change the URI stored by the
 | 
			
		||||
     * request, nor the values in the server params.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * updated query string arguments.
 | 
			
		||||
     *
 | 
			
		||||
     * @param array $query Array of query string arguments, typically from
 | 
			
		||||
     *     $_GET.
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withQueryParams(array $query);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve normalized file upload data.
 | 
			
		||||
     *
 | 
			
		||||
     * This method returns upload metadata in a normalized tree, with each leaf
 | 
			
		||||
     * an instance of Psr\Http\Message\UploadedFileInterface.
 | 
			
		||||
     *
 | 
			
		||||
     * These values MAY be prepared from $_FILES or the message body during
 | 
			
		||||
     * instantiation, or MAY be injected via withUploadedFiles().
 | 
			
		||||
     *
 | 
			
		||||
     * @return array An array tree of UploadedFileInterface instances; an empty
 | 
			
		||||
     *     array MUST be returned if no data is present.
 | 
			
		||||
     */
 | 
			
		||||
    public function getUploadedFiles();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Create a new instance with the specified uploaded files.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * updated body parameters.
 | 
			
		||||
     *
 | 
			
		||||
     * @param array $uploadedFiles An array tree of UploadedFileInterface instances.
 | 
			
		||||
     * @return static
 | 
			
		||||
     * @throws \InvalidArgumentException if an invalid structure is provided.
 | 
			
		||||
     */
 | 
			
		||||
    public function withUploadedFiles(array $uploadedFiles);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve any parameters provided in the request body.
 | 
			
		||||
     *
 | 
			
		||||
     * If the request Content-Type is either application/x-www-form-urlencoded
 | 
			
		||||
     * or multipart/form-data, and the request method is POST, this method MUST
 | 
			
		||||
     * return the contents of $_POST.
 | 
			
		||||
     *
 | 
			
		||||
     * Otherwise, this method may return any results of deserializing
 | 
			
		||||
     * the request body content; as parsing returns structured content, the
 | 
			
		||||
     * potential types MUST be arrays or objects only. A null value indicates
 | 
			
		||||
     * the absence of body content.
 | 
			
		||||
     *
 | 
			
		||||
     * @return null|array|object The deserialized body parameters, if any.
 | 
			
		||||
     *     These will typically be an array or object.
 | 
			
		||||
     */
 | 
			
		||||
    public function getParsedBody();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified body parameters.
 | 
			
		||||
     *
 | 
			
		||||
     * These MAY be injected during instantiation.
 | 
			
		||||
     *
 | 
			
		||||
     * If the request Content-Type is either application/x-www-form-urlencoded
 | 
			
		||||
     * or multipart/form-data, and the request method is POST, use this method
 | 
			
		||||
     * ONLY to inject the contents of $_POST.
 | 
			
		||||
     *
 | 
			
		||||
     * The data IS NOT REQUIRED to come from $_POST, but MUST be the results of
 | 
			
		||||
     * deserializing the request body content. Deserialization/parsing returns
 | 
			
		||||
     * structured data, and, as such, this method ONLY accepts arrays or objects,
 | 
			
		||||
     * or a null value if nothing was available to parse.
 | 
			
		||||
     *
 | 
			
		||||
     * As an example, if content negotiation determines that the request data
 | 
			
		||||
     * is a JSON payload, this method could be used to create a request
 | 
			
		||||
     * instance with the deserialized parameters.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * updated body parameters.
 | 
			
		||||
     *
 | 
			
		||||
     * @param null|array|object $data The deserialized body data. This will
 | 
			
		||||
     *     typically be in an array or object.
 | 
			
		||||
     * @return static
 | 
			
		||||
     * @throws \InvalidArgumentException if an unsupported argument type is
 | 
			
		||||
     *     provided.
 | 
			
		||||
     */
 | 
			
		||||
    public function withParsedBody($data);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve attributes derived from the request.
 | 
			
		||||
     *
 | 
			
		||||
     * The request "attributes" may be used to allow injection of any
 | 
			
		||||
     * parameters derived from the request: e.g., the results of path
 | 
			
		||||
     * match operations; the results of decrypting cookies; the results of
 | 
			
		||||
     * deserializing non-form-encoded message bodies; etc. Attributes
 | 
			
		||||
     * will be application and request specific, and CAN be mutable.
 | 
			
		||||
     *
 | 
			
		||||
     * @return array Attributes derived from the request.
 | 
			
		||||
     */
 | 
			
		||||
    public function getAttributes();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve a single derived request attribute.
 | 
			
		||||
     *
 | 
			
		||||
     * Retrieves a single derived request attribute as described in
 | 
			
		||||
     * getAttributes(). If the attribute has not been previously set, returns
 | 
			
		||||
     * the default value as provided.
 | 
			
		||||
     *
 | 
			
		||||
     * This method obviates the need for a hasAttribute() method, as it allows
 | 
			
		||||
     * specifying a default value to return if the attribute is not found.
 | 
			
		||||
     *
 | 
			
		||||
     * @see getAttributes()
 | 
			
		||||
     * @param string $name The attribute name.
 | 
			
		||||
     * @param mixed $default Default value to return if the attribute does not exist.
 | 
			
		||||
     * @return mixed
 | 
			
		||||
     */
 | 
			
		||||
    public function getAttribute(string $name, $default = null);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified derived request attribute.
 | 
			
		||||
     *
 | 
			
		||||
     * This method allows setting a single derived request attribute as
 | 
			
		||||
     * described in getAttributes().
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that has the
 | 
			
		||||
     * updated attribute.
 | 
			
		||||
     *
 | 
			
		||||
     * @see getAttributes()
 | 
			
		||||
     * @param string $name The attribute name.
 | 
			
		||||
     * @param mixed $value The value of the attribute.
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withAttribute(string $name, $value);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance that removes the specified derived request attribute.
 | 
			
		||||
     *
 | 
			
		||||
     * This method allows removing a single derived request attribute as
 | 
			
		||||
     * described in getAttributes().
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST be implemented in such a way as to retain the
 | 
			
		||||
     * immutability of the message, and MUST return an instance that removes
 | 
			
		||||
     * the attribute.
 | 
			
		||||
     *
 | 
			
		||||
     * @see getAttributes()
 | 
			
		||||
     * @param string $name The attribute name.
 | 
			
		||||
     * @return static
 | 
			
		||||
     */
 | 
			
		||||
    public function withoutAttribute(string $name);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										160
									
								
								vendor/psr/http-message/src/StreamInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										160
									
								
								vendor/psr/http-message/src/StreamInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,160 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Http\Message;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Describes a data stream.
 | 
			
		||||
 *
 | 
			
		||||
 * Typically, an instance will wrap a PHP stream; this interface provides
 | 
			
		||||
 * a wrapper around the most common operations, including serialization of
 | 
			
		||||
 * the entire stream to a string.
 | 
			
		||||
 */
 | 
			
		||||
interface StreamInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Reads all data from the stream into a string, from the beginning to end.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST attempt to seek to the beginning of the stream before
 | 
			
		||||
     * reading data and read the stream until the end is reached.
 | 
			
		||||
     *
 | 
			
		||||
     * Warning: This could attempt to load a large amount of data into memory.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST NOT raise an exception in order to conform with PHP's
 | 
			
		||||
     * string casting operations.
 | 
			
		||||
     *
 | 
			
		||||
     * @see http://php.net/manual/en/language.oop5.magic.php#object.tostring
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function __toString();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Closes the stream and any underlying resources.
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function close();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Separates any underlying resources from the stream.
 | 
			
		||||
     *
 | 
			
		||||
     * After the stream has been detached, the stream is in an unusable state.
 | 
			
		||||
     *
 | 
			
		||||
     * @return resource|null Underlying PHP stream, if any
 | 
			
		||||
     */
 | 
			
		||||
    public function detach();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get the size of the stream if known.
 | 
			
		||||
     *
 | 
			
		||||
     * @return int|null Returns the size in bytes if known, or null if unknown.
 | 
			
		||||
     */
 | 
			
		||||
    public function getSize();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the current position of the file read/write pointer
 | 
			
		||||
     *
 | 
			
		||||
     * @return int Position of the file pointer
 | 
			
		||||
     * @throws \RuntimeException on error.
 | 
			
		||||
     */
 | 
			
		||||
    public function tell();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns true if the stream is at the end of the stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function eof();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns whether or not the stream is seekable.
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function isSeekable();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Seek to a position in the stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @link http://www.php.net/manual/en/function.fseek.php
 | 
			
		||||
     * @param int $offset Stream offset
 | 
			
		||||
     * @param int $whence Specifies how the cursor position will be calculated
 | 
			
		||||
     *     based on the seek offset. Valid values are identical to the built-in
 | 
			
		||||
     *     PHP $whence values for `fseek()`.  SEEK_SET: Set position equal to
 | 
			
		||||
     *     offset bytes SEEK_CUR: Set position to current location plus offset
 | 
			
		||||
     *     SEEK_END: Set position to end-of-stream plus offset.
 | 
			
		||||
     * @throws \RuntimeException on failure.
 | 
			
		||||
     */
 | 
			
		||||
    public function seek(int $offset, int $whence = SEEK_SET);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Seek to the beginning of the stream.
 | 
			
		||||
     *
 | 
			
		||||
     * If the stream is not seekable, this method will raise an exception;
 | 
			
		||||
     * otherwise, it will perform a seek(0).
 | 
			
		||||
     *
 | 
			
		||||
     * @see seek()
 | 
			
		||||
     * @link http://www.php.net/manual/en/function.fseek.php
 | 
			
		||||
     * @throws \RuntimeException on failure.
 | 
			
		||||
     */
 | 
			
		||||
    public function rewind();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns whether or not the stream is writable.
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function isWritable();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Write data to the stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $string The string that is to be written.
 | 
			
		||||
     * @return int Returns the number of bytes written to the stream.
 | 
			
		||||
     * @throws \RuntimeException on failure.
 | 
			
		||||
     */
 | 
			
		||||
    public function write(string $string);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns whether or not the stream is readable.
 | 
			
		||||
     *
 | 
			
		||||
     * @return bool
 | 
			
		||||
     */
 | 
			
		||||
    public function isReadable();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Read data from the stream.
 | 
			
		||||
     *
 | 
			
		||||
     * @param int $length Read up to $length bytes from the object and return
 | 
			
		||||
     *     them. Fewer than $length bytes may be returned if underlying stream
 | 
			
		||||
     *     call returns fewer bytes.
 | 
			
		||||
     * @return string Returns the data read from the stream, or an empty string
 | 
			
		||||
     *     if no bytes are available.
 | 
			
		||||
     * @throws \RuntimeException if an error occurs.
 | 
			
		||||
     */
 | 
			
		||||
    public function read(int $length);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Returns the remaining contents in a string
 | 
			
		||||
     *
 | 
			
		||||
     * @return string
 | 
			
		||||
     * @throws \RuntimeException if unable to read or an error occurs while
 | 
			
		||||
     *     reading.
 | 
			
		||||
     */
 | 
			
		||||
    public function getContents();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Get stream metadata as an associative array or retrieve a specific key.
 | 
			
		||||
     *
 | 
			
		||||
     * The keys returned are identical to the keys returned from PHP's
 | 
			
		||||
     * stream_get_meta_data() function.
 | 
			
		||||
     *
 | 
			
		||||
     * @link http://php.net/manual/en/function.stream-get-meta-data.php
 | 
			
		||||
     * @param string|null $key Specific metadata to retrieve.
 | 
			
		||||
     * @return array|mixed|null Returns an associative array if no key is
 | 
			
		||||
     *     provided. Returns a specific key value if a key is provided and the
 | 
			
		||||
     *     value is found, or null if the key is not found.
 | 
			
		||||
     */
 | 
			
		||||
    public function getMetadata(?string $key = null);
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										125
									
								
								vendor/psr/http-message/src/UploadedFileInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										125
									
								
								vendor/psr/http-message/src/UploadedFileInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,125 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Http\Message;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Value object representing a file uploaded through an HTTP request.
 | 
			
		||||
 *
 | 
			
		||||
 * Instances of this interface are considered immutable; all methods that
 | 
			
		||||
 * might change state MUST be implemented such that they retain the internal
 | 
			
		||||
 * state of the current instance and return an instance that contains the
 | 
			
		||||
 * changed state.
 | 
			
		||||
 */
 | 
			
		||||
interface UploadedFileInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve a stream representing the uploaded file.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST return a StreamInterface instance, representing the
 | 
			
		||||
     * uploaded file. The purpose of this method is to allow utilizing native PHP
 | 
			
		||||
     * stream functionality to manipulate the file upload, such as
 | 
			
		||||
     * stream_copy_to_stream() (though the result will need to be decorated in a
 | 
			
		||||
     * native PHP stream wrapper to work with such functions).
 | 
			
		||||
     *
 | 
			
		||||
     * If the moveTo() method has been called previously, this method MUST raise
 | 
			
		||||
     * an exception.
 | 
			
		||||
     *
 | 
			
		||||
     * @return StreamInterface Stream representation of the uploaded file.
 | 
			
		||||
     * @throws \RuntimeException in cases when no stream is available or can be
 | 
			
		||||
     *     created.
 | 
			
		||||
     */
 | 
			
		||||
    public function getStream();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Move the uploaded file to a new location.
 | 
			
		||||
     *
 | 
			
		||||
     * Use this method as an alternative to move_uploaded_file(). This method is
 | 
			
		||||
     * guaranteed to work in both SAPI and non-SAPI environments.
 | 
			
		||||
     * Implementations must determine which environment they are in, and use the
 | 
			
		||||
     * appropriate method (move_uploaded_file(), rename(), or a stream
 | 
			
		||||
     * operation) to perform the operation.
 | 
			
		||||
     *
 | 
			
		||||
     * $targetPath may be an absolute path, or a relative path. If it is a
 | 
			
		||||
     * relative path, resolution should be the same as used by PHP's rename()
 | 
			
		||||
     * function.
 | 
			
		||||
     *
 | 
			
		||||
     * The original file or stream MUST be removed on completion.
 | 
			
		||||
     *
 | 
			
		||||
     * If this method is called more than once, any subsequent calls MUST raise
 | 
			
		||||
     * an exception.
 | 
			
		||||
     *
 | 
			
		||||
     * When used in an SAPI environment where $_FILES is populated, when writing
 | 
			
		||||
     * files via moveTo(), is_uploaded_file() and move_uploaded_file() SHOULD be
 | 
			
		||||
     * used to ensure permissions and upload status are verified correctly.
 | 
			
		||||
     *
 | 
			
		||||
     * If you wish to move to a stream, use getStream(), as SAPI operations
 | 
			
		||||
     * cannot guarantee writing to stream destinations.
 | 
			
		||||
     *
 | 
			
		||||
     * @see http://php.net/is_uploaded_file
 | 
			
		||||
     * @see http://php.net/move_uploaded_file
 | 
			
		||||
     * @param string $targetPath Path to which to move the uploaded file.
 | 
			
		||||
     * @throws \InvalidArgumentException if the $targetPath specified is invalid.
 | 
			
		||||
     * @throws \RuntimeException on any error during the move operation, or on
 | 
			
		||||
     *     the second or subsequent call to the method.
 | 
			
		||||
     */
 | 
			
		||||
    public function moveTo(string $targetPath);
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the file size.
 | 
			
		||||
     *
 | 
			
		||||
     * Implementations SHOULD return the value stored in the "size" key of
 | 
			
		||||
     * the file in the $_FILES array if available, as PHP calculates this based
 | 
			
		||||
     * on the actual size transmitted.
 | 
			
		||||
     *
 | 
			
		||||
     * @return int|null The file size in bytes or null if unknown.
 | 
			
		||||
     */
 | 
			
		||||
    public function getSize();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the error associated with the uploaded file.
 | 
			
		||||
     *
 | 
			
		||||
     * The return value MUST be one of PHP's UPLOAD_ERR_XXX constants.
 | 
			
		||||
     *
 | 
			
		||||
     * If the file was uploaded successfully, this method MUST return
 | 
			
		||||
     * UPLOAD_ERR_OK.
 | 
			
		||||
     *
 | 
			
		||||
     * Implementations SHOULD return the value stored in the "error" key of
 | 
			
		||||
     * the file in the $_FILES array.
 | 
			
		||||
     *
 | 
			
		||||
     * @see http://php.net/manual/en/features.file-upload.errors.php
 | 
			
		||||
     * @return int One of PHP's UPLOAD_ERR_XXX constants.
 | 
			
		||||
     */
 | 
			
		||||
    public function getError();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the filename sent by the client.
 | 
			
		||||
     *
 | 
			
		||||
     * Do not trust the value returned by this method. A client could send
 | 
			
		||||
     * a malicious filename with the intention to corrupt or hack your
 | 
			
		||||
     * application.
 | 
			
		||||
     *
 | 
			
		||||
     * Implementations SHOULD return the value stored in the "name" key of
 | 
			
		||||
     * the file in the $_FILES array.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string|null The filename sent by the client or null if none
 | 
			
		||||
     *     was provided.
 | 
			
		||||
     */
 | 
			
		||||
    public function getClientFilename();
 | 
			
		||||
    
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the media type sent by the client.
 | 
			
		||||
     *
 | 
			
		||||
     * Do not trust the value returned by this method. A client could send
 | 
			
		||||
     * a malicious media type with the intention to corrupt or hack your
 | 
			
		||||
     * application.
 | 
			
		||||
     *
 | 
			
		||||
     * Implementations SHOULD return the value stored in the "type" key of
 | 
			
		||||
     * the file in the $_FILES array.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string|null The media type sent by the client or null if none
 | 
			
		||||
     *     was provided.
 | 
			
		||||
     */
 | 
			
		||||
    public function getClientMediaType();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										326
									
								
								vendor/psr/http-message/src/UriInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										326
									
								
								vendor/psr/http-message/src/UriInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,326 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
declare(strict_types=1);
 | 
			
		||||
 | 
			
		||||
namespace Psr\Http\Message;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Value object representing a URI.
 | 
			
		||||
 *
 | 
			
		||||
 * This interface is meant to represent URIs according to RFC 3986 and to
 | 
			
		||||
 * provide methods for most common operations. Additional functionality for
 | 
			
		||||
 * working with URIs can be provided on top of the interface or externally.
 | 
			
		||||
 * Its primary use is for HTTP requests, but may also be used in other
 | 
			
		||||
 * contexts.
 | 
			
		||||
 *
 | 
			
		||||
 * Instances of this interface are considered immutable; all methods that
 | 
			
		||||
 * might change state MUST be implemented such that they retain the internal
 | 
			
		||||
 * state of the current instance and return an instance that contains the
 | 
			
		||||
 * changed state.
 | 
			
		||||
 *
 | 
			
		||||
 * Typically the Host header will be also be present in the request message.
 | 
			
		||||
 * For server-side requests, the scheme will typically be discoverable in the
 | 
			
		||||
 * server parameters.
 | 
			
		||||
 *
 | 
			
		||||
 * @link http://tools.ietf.org/html/rfc3986 (the URI specification)
 | 
			
		||||
 */
 | 
			
		||||
interface UriInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the scheme component of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * If no scheme is present, this method MUST return an empty string.
 | 
			
		||||
     *
 | 
			
		||||
     * The value returned MUST be normalized to lowercase, per RFC 3986
 | 
			
		||||
     * Section 3.1.
 | 
			
		||||
     *
 | 
			
		||||
     * The trailing ":" character is not part of the scheme and MUST NOT be
 | 
			
		||||
     * added.
 | 
			
		||||
     *
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-3.1
 | 
			
		||||
     * @return string The URI scheme.
 | 
			
		||||
     */
 | 
			
		||||
    public function getScheme();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the authority component of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * If no authority information is present, this method MUST return an empty
 | 
			
		||||
     * string.
 | 
			
		||||
     *
 | 
			
		||||
     * The authority syntax of the URI is:
 | 
			
		||||
     *
 | 
			
		||||
     * <pre>
 | 
			
		||||
     * [user-info@]host[:port]
 | 
			
		||||
     * </pre>
 | 
			
		||||
     *
 | 
			
		||||
     * If the port component is not set or is the standard port for the current
 | 
			
		||||
     * scheme, it SHOULD NOT be included.
 | 
			
		||||
     *
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-3.2
 | 
			
		||||
     * @return string The URI authority, in "[user-info@]host[:port]" format.
 | 
			
		||||
     */
 | 
			
		||||
    public function getAuthority();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the user information component of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * If no user information is present, this method MUST return an empty
 | 
			
		||||
     * string.
 | 
			
		||||
     *
 | 
			
		||||
     * If a user is present in the URI, this will return that value;
 | 
			
		||||
     * additionally, if the password is also present, it will be appended to the
 | 
			
		||||
     * user value, with a colon (":") separating the values.
 | 
			
		||||
     *
 | 
			
		||||
     * The trailing "@" character is not part of the user information and MUST
 | 
			
		||||
     * NOT be added.
 | 
			
		||||
     *
 | 
			
		||||
     * @return string The URI user information, in "username[:password]" format.
 | 
			
		||||
     */
 | 
			
		||||
    public function getUserInfo();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the host component of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * If no host is present, this method MUST return an empty string.
 | 
			
		||||
     *
 | 
			
		||||
     * The value returned MUST be normalized to lowercase, per RFC 3986
 | 
			
		||||
     * Section 3.2.2.
 | 
			
		||||
     *
 | 
			
		||||
     * @see http://tools.ietf.org/html/rfc3986#section-3.2.2
 | 
			
		||||
     * @return string The URI host.
 | 
			
		||||
     */
 | 
			
		||||
    public function getHost();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the port component of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * If a port is present, and it is non-standard for the current scheme,
 | 
			
		||||
     * this method MUST return it as an integer. If the port is the standard port
 | 
			
		||||
     * used with the current scheme, this method SHOULD return null.
 | 
			
		||||
     *
 | 
			
		||||
     * If no port is present, and no scheme is present, this method MUST return
 | 
			
		||||
     * a null value.
 | 
			
		||||
     *
 | 
			
		||||
     * If no port is present, but a scheme is present, this method MAY return
 | 
			
		||||
     * the standard port for that scheme, but SHOULD return null.
 | 
			
		||||
     *
 | 
			
		||||
     * @return null|int The URI port.
 | 
			
		||||
     */
 | 
			
		||||
    public function getPort();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the path component of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * The path can either be empty or absolute (starting with a slash) or
 | 
			
		||||
     * rootless (not starting with a slash). Implementations MUST support all
 | 
			
		||||
     * three syntaxes.
 | 
			
		||||
     *
 | 
			
		||||
     * Normally, the empty path "" and absolute path "/" are considered equal as
 | 
			
		||||
     * defined in RFC 7230 Section 2.7.3. But this method MUST NOT automatically
 | 
			
		||||
     * do this normalization because in contexts with a trimmed base path, e.g.
 | 
			
		||||
     * the front controller, this difference becomes significant. It's the task
 | 
			
		||||
     * of the user to handle both "" and "/".
 | 
			
		||||
     *
 | 
			
		||||
     * The value returned MUST be percent-encoded, but MUST NOT double-encode
 | 
			
		||||
     * any characters. To determine what characters to encode, please refer to
 | 
			
		||||
     * RFC 3986, Sections 2 and 3.3.
 | 
			
		||||
     *
 | 
			
		||||
     * As an example, if the value should include a slash ("/") not intended as
 | 
			
		||||
     * delimiter between path segments, that value MUST be passed in encoded
 | 
			
		||||
     * form (e.g., "%2F") to the instance.
 | 
			
		||||
     *
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-2
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-3.3
 | 
			
		||||
     * @return string The URI path.
 | 
			
		||||
     */
 | 
			
		||||
    public function getPath();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the query string of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * If no query string is present, this method MUST return an empty string.
 | 
			
		||||
     *
 | 
			
		||||
     * The leading "?" character is not part of the query and MUST NOT be
 | 
			
		||||
     * added.
 | 
			
		||||
     *
 | 
			
		||||
     * The value returned MUST be percent-encoded, but MUST NOT double-encode
 | 
			
		||||
     * any characters. To determine what characters to encode, please refer to
 | 
			
		||||
     * RFC 3986, Sections 2 and 3.4.
 | 
			
		||||
     *
 | 
			
		||||
     * As an example, if a value in a key/value pair of the query string should
 | 
			
		||||
     * include an ampersand ("&") not intended as a delimiter between values,
 | 
			
		||||
     * that value MUST be passed in encoded form (e.g., "%26") to the instance.
 | 
			
		||||
     *
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-2
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-3.4
 | 
			
		||||
     * @return string The URI query string.
 | 
			
		||||
     */
 | 
			
		||||
    public function getQuery();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Retrieve the fragment component of the URI.
 | 
			
		||||
     *
 | 
			
		||||
     * If no fragment is present, this method MUST return an empty string.
 | 
			
		||||
     *
 | 
			
		||||
     * The leading "#" character is not part of the fragment and MUST NOT be
 | 
			
		||||
     * added.
 | 
			
		||||
     *
 | 
			
		||||
     * The value returned MUST be percent-encoded, but MUST NOT double-encode
 | 
			
		||||
     * any characters. To determine what characters to encode, please refer to
 | 
			
		||||
     * RFC 3986, Sections 2 and 3.5.
 | 
			
		||||
     *
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-2
 | 
			
		||||
     * @see https://tools.ietf.org/html/rfc3986#section-3.5
 | 
			
		||||
     * @return string The URI fragment.
 | 
			
		||||
     */
 | 
			
		||||
    public function getFragment();
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified scheme.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST retain the state of the current instance, and return
 | 
			
		||||
     * an instance that contains the specified scheme.
 | 
			
		||||
     *
 | 
			
		||||
     * Implementations MUST support the schemes "http" and "https" case
 | 
			
		||||
     * insensitively, and MAY accommodate other schemes if required.
 | 
			
		||||
     *
 | 
			
		||||
     * An empty scheme is equivalent to removing the scheme.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $scheme The scheme to use with the new instance.
 | 
			
		||||
     * @return static A new instance with the specified scheme.
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid or unsupported schemes.
 | 
			
		||||
     */
 | 
			
		||||
    public function withScheme(string $scheme);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified user information.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST retain the state of the current instance, and return
 | 
			
		||||
     * an instance that contains the specified user information.
 | 
			
		||||
     *
 | 
			
		||||
     * Password is optional, but the user information MUST include the
 | 
			
		||||
     * user; an empty string for the user is equivalent to removing user
 | 
			
		||||
     * information.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $user The user name to use for authority.
 | 
			
		||||
     * @param null|string $password The password associated with $user.
 | 
			
		||||
     * @return static A new instance with the specified user information.
 | 
			
		||||
     */
 | 
			
		||||
    public function withUserInfo(string $user, ?string $password = null);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified host.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST retain the state of the current instance, and return
 | 
			
		||||
     * an instance that contains the specified host.
 | 
			
		||||
     *
 | 
			
		||||
     * An empty host value is equivalent to removing the host.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $host The hostname to use with the new instance.
 | 
			
		||||
     * @return static A new instance with the specified host.
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid hostnames.
 | 
			
		||||
     */
 | 
			
		||||
    public function withHost(string $host);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified port.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST retain the state of the current instance, and return
 | 
			
		||||
     * an instance that contains the specified port.
 | 
			
		||||
     *
 | 
			
		||||
     * Implementations MUST raise an exception for ports outside the
 | 
			
		||||
     * established TCP and UDP port ranges.
 | 
			
		||||
     *
 | 
			
		||||
     * A null value provided for the port is equivalent to removing the port
 | 
			
		||||
     * information.
 | 
			
		||||
     *
 | 
			
		||||
     * @param null|int $port The port to use with the new instance; a null value
 | 
			
		||||
     *     removes the port information.
 | 
			
		||||
     * @return static A new instance with the specified port.
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid ports.
 | 
			
		||||
     */
 | 
			
		||||
    public function withPort(?int $port);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified path.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST retain the state of the current instance, and return
 | 
			
		||||
     * an instance that contains the specified path.
 | 
			
		||||
     *
 | 
			
		||||
     * The path can either be empty or absolute (starting with a slash) or
 | 
			
		||||
     * rootless (not starting with a slash). Implementations MUST support all
 | 
			
		||||
     * three syntaxes.
 | 
			
		||||
     *
 | 
			
		||||
     * If the path is intended to be domain-relative rather than path relative then
 | 
			
		||||
     * it must begin with a slash ("/"). Paths not starting with a slash ("/")
 | 
			
		||||
     * are assumed to be relative to some base path known to the application or
 | 
			
		||||
     * consumer.
 | 
			
		||||
     *
 | 
			
		||||
     * Users can provide both encoded and decoded path characters.
 | 
			
		||||
     * Implementations ensure the correct encoding as outlined in getPath().
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $path The path to use with the new instance.
 | 
			
		||||
     * @return static A new instance with the specified path.
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid paths.
 | 
			
		||||
     */
 | 
			
		||||
    public function withPath(string $path);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified query string.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST retain the state of the current instance, and return
 | 
			
		||||
     * an instance that contains the specified query string.
 | 
			
		||||
     *
 | 
			
		||||
     * Users can provide both encoded and decoded query characters.
 | 
			
		||||
     * Implementations ensure the correct encoding as outlined in getQuery().
 | 
			
		||||
     *
 | 
			
		||||
     * An empty query string value is equivalent to removing the query string.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $query The query string to use with the new instance.
 | 
			
		||||
     * @return static A new instance with the specified query string.
 | 
			
		||||
     * @throws \InvalidArgumentException for invalid query strings.
 | 
			
		||||
     */
 | 
			
		||||
    public function withQuery(string $query);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return an instance with the specified URI fragment.
 | 
			
		||||
     *
 | 
			
		||||
     * This method MUST retain the state of the current instance, and return
 | 
			
		||||
     * an instance that contains the specified URI fragment.
 | 
			
		||||
     *
 | 
			
		||||
     * Users can provide both encoded and decoded fragment characters.
 | 
			
		||||
     * Implementations ensure the correct encoding as outlined in getFragment().
 | 
			
		||||
     *
 | 
			
		||||
     * An empty fragment value is equivalent to removing the fragment.
 | 
			
		||||
     *
 | 
			
		||||
     * @param string $fragment The fragment to use with the new instance.
 | 
			
		||||
     * @return static A new instance with the specified fragment.
 | 
			
		||||
     */
 | 
			
		||||
    public function withFragment(string $fragment);
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Return the string representation as a URI reference.
 | 
			
		||||
     *
 | 
			
		||||
     * Depending on which components of the URI are present, the resulting
 | 
			
		||||
     * string is either a full URI or relative reference according to RFC 3986,
 | 
			
		||||
     * Section 4.1. The method concatenates the various components of the URI,
 | 
			
		||||
     * using the appropriate delimiters:
 | 
			
		||||
     *
 | 
			
		||||
     * - If a scheme is present, it MUST be suffixed by ":".
 | 
			
		||||
     * - If an authority is present, it MUST be prefixed by "//".
 | 
			
		||||
     * - The path can be concatenated without delimiters. But there are two
 | 
			
		||||
     *   cases where the path has to be adjusted to make the URI reference
 | 
			
		||||
     *   valid as PHP does not allow to throw an exception in __toString():
 | 
			
		||||
     *     - If the path is rootless and an authority is present, the path MUST
 | 
			
		||||
     *       be prefixed by "/".
 | 
			
		||||
     *     - If the path is starting with more than one "/" and no authority is
 | 
			
		||||
     *       present, the starting slashes MUST be reduced to one.
 | 
			
		||||
     * - If a query is present, it MUST be prefixed by "?".
 | 
			
		||||
     * - If a fragment is present, it MUST be prefixed by "#".
 | 
			
		||||
     *
 | 
			
		||||
     * @see http://tools.ietf.org/html/rfc3986#section-4.1
 | 
			
		||||
     * @return string
 | 
			
		||||
     */
 | 
			
		||||
    public function __toString();
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										19
									
								
								vendor/psr/log/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								vendor/psr/log/LICENSE
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,19 @@
 | 
			
		||||
Copyright (c) 2012 PHP Framework Interoperability Group
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy 
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
in the Software without restriction, including without limitation the rights 
 | 
			
		||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 
 | 
			
		||||
copies of the Software, and to permit persons to whom the Software is 
 | 
			
		||||
furnished to do so, subject to the following conditions:
 | 
			
		||||
 | 
			
		||||
The above copyright notice and this permission notice shall be included in 
 | 
			
		||||
all copies or substantial portions of the Software.
 | 
			
		||||
 | 
			
		||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 | 
			
		||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 | 
			
		||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
 | 
			
		||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 | 
			
		||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 | 
			
		||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 | 
			
		||||
THE SOFTWARE.
 | 
			
		||||
							
								
								
									
										58
									
								
								vendor/psr/log/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										58
									
								
								vendor/psr/log/README.md
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,58 @@
 | 
			
		||||
PSR Log
 | 
			
		||||
=======
 | 
			
		||||
 | 
			
		||||
This repository holds all interfaces/classes/traits related to
 | 
			
		||||
[PSR-3](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md).
 | 
			
		||||
 | 
			
		||||
Note that this is not a logger of its own. It is merely an interface that
 | 
			
		||||
describes a logger. See the specification for more details.
 | 
			
		||||
 | 
			
		||||
Installation
 | 
			
		||||
------------
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
composer require psr/log
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Usage
 | 
			
		||||
-----
 | 
			
		||||
 | 
			
		||||
If you need a logger, you can use the interface like this:
 | 
			
		||||
 | 
			
		||||
```php
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
use Psr\Log\LoggerInterface;
 | 
			
		||||
 | 
			
		||||
class Foo
 | 
			
		||||
{
 | 
			
		||||
    private $logger;
 | 
			
		||||
 | 
			
		||||
    public function __construct(LoggerInterface $logger = null)
 | 
			
		||||
    {
 | 
			
		||||
        $this->logger = $logger;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public function doSomething()
 | 
			
		||||
    {
 | 
			
		||||
        if ($this->logger) {
 | 
			
		||||
            $this->logger->info('Doing work');
 | 
			
		||||
        }
 | 
			
		||||
           
 | 
			
		||||
        try {
 | 
			
		||||
            $this->doSomethingElse();
 | 
			
		||||
        } catch (Exception $exception) {
 | 
			
		||||
            $this->logger->error('Oh no!', array('exception' => $exception));
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // do something useful
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
You can then pick one of the implementations of the interface to get a logger.
 | 
			
		||||
 | 
			
		||||
If you want to implement the interface, you can require this package and
 | 
			
		||||
implement `Psr\Log\LoggerInterface` in your code. Please read the
 | 
			
		||||
[specification text](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md)
 | 
			
		||||
for details.
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/psr/log/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/psr/log/composer.json
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
{
 | 
			
		||||
    "name": "psr/log",
 | 
			
		||||
    "description": "Common interface for logging libraries",
 | 
			
		||||
    "keywords": ["psr", "psr-3", "log"],
 | 
			
		||||
    "homepage": "https://github.com/php-fig/log",
 | 
			
		||||
    "license": "MIT",
 | 
			
		||||
    "authors": [
 | 
			
		||||
        {
 | 
			
		||||
            "name": "PHP-FIG",
 | 
			
		||||
            "homepage": "https://www.php-fig.org/"
 | 
			
		||||
        }
 | 
			
		||||
    ],
 | 
			
		||||
    "require": {
 | 
			
		||||
        "php": ">=8.0.0"
 | 
			
		||||
    },
 | 
			
		||||
    "autoload": {
 | 
			
		||||
        "psr-4": {
 | 
			
		||||
            "Psr\\Log\\": "src"
 | 
			
		||||
        }
 | 
			
		||||
    },
 | 
			
		||||
    "extra": {
 | 
			
		||||
        "branch-alias": {
 | 
			
		||||
            "dev-master": "3.x-dev"
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										15
									
								
								vendor/psr/log/src/AbstractLogger.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/psr/log/src/AbstractLogger.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,15 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Psr\Log;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * This is a simple Logger implementation that other Loggers can inherit from.
 | 
			
		||||
 *
 | 
			
		||||
 * It simply delegates all log-level-specific methods to the `log` method to
 | 
			
		||||
 * reduce boilerplate code that a simple Logger that does the same thing with
 | 
			
		||||
 * messages regardless of the error level has to implement.
 | 
			
		||||
 */
 | 
			
		||||
abstract class AbstractLogger implements LoggerInterface
 | 
			
		||||
{
 | 
			
		||||
    use LoggerTrait;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										7
									
								
								vendor/psr/log/src/InvalidArgumentException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								vendor/psr/log/src/InvalidArgumentException.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,7 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Psr\Log;
 | 
			
		||||
 | 
			
		||||
class InvalidArgumentException extends \InvalidArgumentException
 | 
			
		||||
{
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/psr/log/src/LogLevel.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/psr/log/src/LogLevel.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Psr\Log;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Describes log levels.
 | 
			
		||||
 */
 | 
			
		||||
class LogLevel
 | 
			
		||||
{
 | 
			
		||||
    const EMERGENCY = 'emergency';
 | 
			
		||||
    const ALERT     = 'alert';
 | 
			
		||||
    const CRITICAL  = 'critical';
 | 
			
		||||
    const ERROR     = 'error';
 | 
			
		||||
    const WARNING   = 'warning';
 | 
			
		||||
    const NOTICE    = 'notice';
 | 
			
		||||
    const INFO      = 'info';
 | 
			
		||||
    const DEBUG     = 'debug';
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										18
									
								
								vendor/psr/log/src/LoggerAwareInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										18
									
								
								vendor/psr/log/src/LoggerAwareInterface.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,18 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Psr\Log;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Describes a logger-aware instance.
 | 
			
		||||
 */
 | 
			
		||||
interface LoggerAwareInterface
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets a logger instance on the object.
 | 
			
		||||
     *
 | 
			
		||||
     * @param LoggerInterface $logger
 | 
			
		||||
     *
 | 
			
		||||
     * @return void
 | 
			
		||||
     */
 | 
			
		||||
    public function setLogger(LoggerInterface $logger): void;
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										26
									
								
								vendor/psr/log/src/LoggerAwareTrait.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								vendor/psr/log/src/LoggerAwareTrait.php
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1,26 @@
 | 
			
		||||
<?php
 | 
			
		||||
 | 
			
		||||
namespace Psr\Log;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Basic Implementation of LoggerAwareInterface.
 | 
			
		||||
 */
 | 
			
		||||
trait LoggerAwareTrait
 | 
			
		||||
{
 | 
			
		||||
    /**
 | 
			
		||||
     * The logger instance.
 | 
			
		||||
     *
 | 
			
		||||
     * @var LoggerInterface|null
 | 
			
		||||
     */
 | 
			
		||||
    protected ?LoggerInterface $logger = null;
 | 
			
		||||
 | 
			
		||||
    /**
 | 
			
		||||
     * Sets a logger.
 | 
			
		||||
     *
 | 
			
		||||
     * @param LoggerInterface $logger
 | 
			
		||||
     */
 | 
			
		||||
    public function setLogger(LoggerInterface $logger): void
 | 
			
		||||
    {
 | 
			
		||||
        $this->logger = $logger;
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user