diff --git a/composer.lock b/composer.lock index b95b89e91..56c333e6e 100644 --- a/composer.lock +++ b/composer.lock @@ -1127,22 +1127,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.2.0", + "version": "7.3.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79" + "reference": "7008573787b430c1c1f650e3722d9bba59967628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", + "reference": "7008573787b430c1c1f650e3722d9bba59967628", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.7", + "guzzlehttp/psr7": "^1.7 || ^2.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0" }, @@ -1150,6 +1150,7 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", "ext-curl": "*", "php-http/client-integration-tests": "^3.0", "phpunit/phpunit": "^8.5.5 || ^9.3.5", @@ -1163,7 +1164,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.1-dev" + "dev-master": "7.3-dev" } }, "autoload": { @@ -1205,7 +1206,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.2.0" + "source": "https://github.com/guzzle/guzzle/tree/7.3.0" }, "funding": [ { @@ -1225,20 +1226,20 @@ "type": "github" } ], - "time": "2020-10-10T11:47:56+00:00" + "time": "2021-03-23T11:33:13+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.4.0", + "version": "1.4.1", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "60d379c243457e073cff02bc323a2a86cb355631" + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", - "reference": "60d379c243457e073cff02bc323a2a86cb355631", + "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", "shasum": "" }, "require": { @@ -1278,22 +1279,22 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.0" + "source": "https://github.com/guzzle/promises/tree/1.4.1" }, - "time": "2020-09-30T07:37:28+00:00" + "time": "2021-03-07T09:25:29+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.7.0", + "version": "1.8.2", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + "reference": "dc960a912984efb74d0a90222870c72c87f10c91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91", "shasum": "" }, "require": { @@ -1353,9 +1354,9 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.7.0" + "source": "https://github.com/guzzle/psr7/tree/1.8.2" }, - "time": "2020-09-30T07:37:11+00:00" + "time": "2021-04-26T09:17:50+00:00" }, { "name": "guzzlehttp/uri-template", diff --git a/composer/ClassLoader.php b/composer/ClassLoader.php index 247294d66..6d0c3f2d0 100644 --- a/composer/ClassLoader.php +++ b/composer/ClassLoader.php @@ -338,7 +338,7 @@ public function unregister() * Loads the given class or interface. * * @param string $class The name of the class - * @return bool|null True if loaded, null otherwise + * @return true|null True if loaded, null otherwise */ public function loadClass($class) { @@ -347,6 +347,8 @@ public function loadClass($class) return true; } + + return null; } /** diff --git a/composer/InstalledVersions.php b/composer/InstalledVersions.php index eea72bfd4..b3a4e1611 100644 --- a/composer/InstalledVersions.php +++ b/composer/InstalledVersions.php @@ -1,1173 +1,337 @@ + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ namespace Composer; use Composer\Autoload\ClassLoader; use Composer\Semver\VersionParser; - - - - - - - +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require it's presence, you can require `composer-runtime-api ^2.0` + */ class InstalledVersions { -private static $installed = array ( - 'root' => - array ( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'aliases' => - array ( - ), - 'reference' => 'fa2370cb3b5ec72666bc8e8de2e6ec08e8cf96c5', - 'name' => 'nextcloud/3rdparty', - ), - 'versions' => - array ( - 'aws/aws-sdk-php' => - array ( - 'pretty_version' => '3.171.21', - 'version' => '3.171.21.0', - 'aliases' => - array ( - ), - 'reference' => '0455d92bb12d44f80db96a4e70861d186063e9e5', - ), - 'bantu/ini-get-wrapper' => - array ( - 'pretty_version' => 'v1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '4770c7feab370c62e23db4f31c112b7c6d90aee2', - ), - 'beberlei/assert' => - array ( - 'pretty_version' => 'v3.3.0', - 'version' => '3.3.0.0', - 'aliases' => - array ( - ), - 'reference' => '5367e3895976b49704ae671f75bc5f0ba1b986ab', - ), - 'brick/math' => - array ( - 'pretty_version' => '0.9.1', - 'version' => '0.9.1.0', - 'aliases' => - array ( - ), - 'reference' => '283a40c901101e66de7061bd359252c013dcc43c', - ), - 'christophwurst/id3parser' => - array ( - 'pretty_version' => 'v0.1.2', - 'version' => '0.1.2.0', - 'aliases' => - array ( - ), - 'reference' => 'd7f5e9e7db69a24e3111a2033cbdf640f9456f2f', - ), - 'composer/package-versions-deprecated' => - array ( - 'pretty_version' => '1.11.99.1', - 'version' => '1.11.99.1', - 'aliases' => - array ( - ), - 'reference' => '7413f0b55a051e89485c5cb9f765fe24bb02a7b6', - ), - 'deepdiver/zipstreamer' => - array ( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'b8c59647ff34fb97e8937aefb2a65de2bc4b4755', - ), - 'deepdiver1975/tarstreamer' => - array ( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'ad48505d1ab54a8e94e6b1cc5297bbed72e956de', - ), - 'doctrine/cache' => - array ( - 'pretty_version' => '1.10.2', - 'version' => '1.10.2.0', - 'aliases' => - array ( - ), - 'reference' => '13e3381b25847283a91948d04640543941309727', - ), - 'doctrine/dbal' => - array ( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'ee6d1260d5cc20ec506455a585945d7bdb98662c', - ), - 'doctrine/event-manager' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '41370af6a30faa9dc0368c4a6814d596e81aba7f', - ), - 'doctrine/lexer' => - array ( - 'pretty_version' => '1.2.1', - 'version' => '1.2.1.0', - 'aliases' => - array ( - ), - 'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042', - ), - 'egulias/email-validator' => - array ( - 'pretty_version' => '2.1.25', - 'version' => '2.1.25.0', - 'aliases' => - array ( - ), - 'reference' => '0dbf5d78455d4d6a41d186da50adc1122ec066f4', - ), - 'fgrosse/phpasn1' => - array ( - 'pretty_version' => 'v2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'd1978f7abd580f3fc33561e7f71d4c12c7531fad', - ), - 'giggsey/libphonenumber-for-php' => - array ( - 'pretty_version' => '8.12.24', - 'version' => '8.12.24.0', - 'aliases' => - array ( - ), - 'reference' => 'bbefdd7ff0bae7bf5a62fc9e8c939fb40dd6d638', - ), - 'giggsey/locale' => - array ( - 'pretty_version' => '1.9', - 'version' => '1.9.0.0', - 'aliases' => - array ( - ), - 'reference' => 'b07f1eace8072ccc61445ad8fbd493ff9d783043', - ), - 'guzzlehttp/guzzle' => - array ( - 'pretty_version' => '7.2.0', - 'version' => '7.2.0.0', - 'aliases' => - array ( - ), - 'reference' => '0aa74dfb41ae110835923ef10a9d803a22d50e79', - ), - 'guzzlehttp/promises' => - array ( - 'pretty_version' => '1.4.0', - 'version' => '1.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '60d379c243457e073cff02bc323a2a86cb355631', - ), - 'guzzlehttp/psr7' => - array ( - 'pretty_version' => '1.7.0', - 'version' => '1.7.0.0', - 'aliases' => - array ( - ), - 'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3', - ), - 'guzzlehttp/uri-template' => - array ( - 'pretty_version' => 'v0.2.0', - 'version' => '0.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'db46525d6d8fee71033b73cc07160f3e5271a8ce', - ), - 'icewind/searchdav' => - array ( - 'pretty_version' => 'v2.0.0', - 'version' => '2.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'c69806d900c2c9a5954bfabc80178d6eb0d63df4', - ), - 'icewind/streams' => - array ( - 'pretty_version' => 'v0.7.4', - 'version' => '0.7.4.0', - 'aliases' => - array ( - ), - 'reference' => '93bce472202d36d9808c30eaa52a1dc72b39e04c', - ), - 'justinrainbow/json-schema' => - array ( - 'pretty_version' => '5.2.10', - 'version' => '5.2.10.0', - 'aliases' => - array ( - ), - 'reference' => '2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b', - ), - 'league/flysystem' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a', - ), - 'league/mime-type-detection' => - array ( - 'pretty_version' => '1.7.0', - 'version' => '1.7.0.0', - 'aliases' => - array ( - ), - 'reference' => '3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3', - ), - 'league/uri' => - array ( - 'pretty_version' => '6.4.0', - 'version' => '6.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '09da64118eaf4c5d52f9923a1e6a5be1da52fd9a', - ), - 'league/uri-interfaces' => - array ( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => '667f150e589d65d79c89ffe662e426704f84224f', - ), - 'microsoft/azure-storage-blob' => - array ( - 'pretty_version' => '1.5.2', - 'version' => '1.5.2.0', - 'aliases' => - array ( - ), - 'reference' => '2475330963372d519387cb8135d6a9cfd42272da', - ), - 'microsoft/azure-storage-common' => - array ( - 'pretty_version' => '1.5.1', - 'version' => '1.5.1.0', - 'aliases' => - array ( - ), - 'reference' => 'e5738035891546075bd369954e8af121d65ebd6d', - ), - 'mtdowling/jmespath.php' => - array ( - 'pretty_version' => '2.6.0', - 'version' => '2.6.0.0', - 'aliases' => - array ( - ), - 'reference' => '42dae2cbd13154083ca6d70099692fef8ca84bfb', - ), - 'nextcloud/3rdparty' => - array ( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'aliases' => - array ( - ), - 'reference' => 'fa2370cb3b5ec72666bc8e8de2e6ec08e8cf96c5', - ), - 'nextcloud/lognormalizer' => - array ( - 'pretty_version' => 'v1.0.0', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => '87445d69225c247aaff64643b1fc83c6d6df741f', - ), - 'nikic/php-parser' => - array ( - 'pretty_version' => 'v4.10.5', - 'version' => '4.10.5.0', - 'aliases' => - array ( - ), - 'reference' => '4432ba399e47c66624bc73c8c0f811e5c109576f', - ), - 'ocramius/package-versions' => - array ( - 'replaced' => - array ( - 0 => '1.11.99', - ), - ), - 'opis/closure' => - array ( - 'pretty_version' => '3.6.2', - 'version' => '3.6.2.0', - 'aliases' => - array ( - ), - 'reference' => '06e2ebd25f2869e54a306dda991f7db58066f7f6', - ), - 'patchwork/jsqueeze' => - array ( - 'pretty_version' => 'v2.0.5', - 'version' => '2.0.5.0', - 'aliases' => - array ( - ), - 'reference' => '693d64850eab2ce6a7c8f7cf547e1ab46e69d542', - ), - 'pear/archive_tar' => - array ( - 'pretty_version' => '1.4.13', - 'version' => '1.4.13.0', - 'aliases' => - array ( - ), - 'reference' => '2b87b41178cc6d4ad3cba678a46a1cae49786011', - ), - 'pear/console_getopt' => - array ( - 'pretty_version' => 'v1.4.3', - 'version' => '1.4.3.0', - 'aliases' => - array ( - ), - 'reference' => 'a41f8d3e668987609178c7c4a9fe48fecac53fa0', - ), - 'pear/pear-core-minimal' => - array ( - 'pretty_version' => 'v1.10.10', - 'version' => '1.10.10.0', - 'aliases' => - array ( - ), - 'reference' => '625a3c429d9b2c1546438679074cac1b089116a7', - ), - 'pear/pear_exception' => - array ( - 'pretty_version' => 'v1.0.2', - 'version' => '1.0.2.0', - 'aliases' => - array ( - ), - 'reference' => 'b14fbe2ddb0b9f94f5b24cf08783d599f776fff0', - ), - 'php-ds/php-ds' => - array ( - 'pretty_version' => 'v1.3.0', - 'version' => '1.3.0.0', - 'aliases' => - array ( - ), - 'reference' => 'b98396862fb8a13cbdbbaf4d18be28ee5c01ed3c', - ), - 'php-http/async-client-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'php-http/client-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'php-http/guzzle7-adapter' => - array ( - 'pretty_version' => '0.1.1', - 'version' => '0.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '1967de656b9679a2a6a66d0e4e16fa99bbed1ad1', - ), - 'php-http/httplug' => - array ( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => '191a0a1b41ed026b717421931f8d3bd2514ffbf9', - ), - 'php-http/promise' => - array ( - 'pretty_version' => '1.1.0', - 'version' => '1.1.0.0', - 'aliases' => - array ( - ), - 'reference' => '4c4c1f9b7289a2ec57cde7f1e9762a5789506f88', - ), - 'php-opencloud/openstack' => - array ( - 'pretty_version' => 'v3.1.0', - 'version' => '3.1.0.0', - 'aliases' => - array ( - ), - 'reference' => '7b0eeb63defe533fb802514af3c70855c45eaf1e', - ), - 'phpseclib/phpseclib' => - array ( - 'pretty_version' => '2.0.31', - 'version' => '2.0.31.0', - 'aliases' => - array ( - ), - 'reference' => '233a920cb38636a43b18d428f9a8db1f0a1a08f4', - ), - 'pimple/pimple' => - array ( - 'pretty_version' => 'v3.4.0', - 'version' => '3.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '86406047271859ffc13424a048541f4531f53601', - ), - 'psr/container' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', - ), - 'psr/event-dispatcher' => - array ( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', - ), - 'psr/event-dispatcher-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/http-client' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621', - ), - 'psr/http-client-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/http-factory' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', - ), - 'psr/http-message' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363', - ), - 'psr/http-message-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/log' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', - ), - 'psr/log-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'punic/calendar' => - array ( - 'replaced' => - array ( - 0 => '*', - ), - ), - 'punic/common' => - array ( - 'replaced' => - array ( - 0 => '*', - ), - ), - 'punic/punic' => - array ( - 'pretty_version' => '1.6.5', - 'version' => '1.6.5.0', - 'aliases' => - array ( - ), - 'reference' => '7bc85ce1137cf52db4d2a6298256a4c4a24da99a', - ), - 'ralouphie/getallheaders' => - array ( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'aliases' => - array ( - ), - 'reference' => '120b605dfeb996808c31b6477290a714d356e822', - ), - 'ramsey/collection' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '24d93aefb2cd786b7edd9f45b554aea20b28b9b1', - ), - 'ramsey/uuid' => - array ( - 'pretty_version' => '4.1.1', - 'version' => '4.1.1.0', - 'aliases' => - array ( - ), - 'reference' => 'cd4032040a750077205918c86049aa0f43d22947', - ), - 'rhumsaa/uuid' => - array ( - 'replaced' => - array ( - 0 => '4.1.1', - ), - ), - 'rsky/pear-core-min' => - array ( - 'replaced' => - array ( - 0 => 'v1.10.10', - ), - ), - 'sabre/dav' => - array ( - 'pretty_version' => '4.1.5', - 'version' => '4.1.5.0', - 'aliases' => - array ( - ), - 'reference' => 'c1afdc77a95efea6ee40c03c45f57c3c0c80ec22', - ), - 'sabre/event' => - array ( - 'pretty_version' => '5.1.2', - 'version' => '5.1.2.0', - 'aliases' => - array ( - ), - 'reference' => 'c120bec57c17b6251a496efc82b732418b49d50a', - ), - 'sabre/http' => - array ( - 'pretty_version' => '5.1.1', - 'version' => '5.1.1.0', - 'aliases' => - array ( - ), - 'reference' => 'd0aafede6961df6195ce7a8dad49296b0aaee22e', - ), - 'sabre/uri' => - array ( - 'pretty_version' => '2.2.1', - 'version' => '2.2.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f502edffafea8d746825bd5f0b923a60fd2715ff', - ), - 'sabre/vobject' => - array ( - 'pretty_version' => '4.3.5', - 'version' => '4.3.5.0', - 'aliases' => - array ( - ), - 'reference' => 'd8a0a9ae215a8acfb51afc29101c7344670b9c83', - ), - 'sabre/xml' => - array ( - 'pretty_version' => '2.2.3', - 'version' => '2.2.3.0', - 'aliases' => - array ( - ), - 'reference' => 'c3b959f821c19b36952ec4a595edd695c216bfc6', - ), - 'scssphp/scssphp' => - array ( - 'pretty_version' => 'v1.4.1', - 'version' => '1.4.1.0', - 'aliases' => - array ( - ), - 'reference' => 'ba86c963b94ec7ebd6e19d90cdab90d89667dbf7', - ), - 'spomky-labs/base64url' => - array ( - 'pretty_version' => 'v2.0.4', - 'version' => '2.0.4.0', - 'aliases' => - array ( - ), - 'reference' => '7752ce931ec285da4ed1f4c5aa27e45e097be61d', - ), - 'spomky-labs/cbor-php' => - array ( - 'pretty_version' => 'v2.0.1', - 'version' => '2.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '9776578000be884cd7864eeb7c37a4ac92d8c995', - ), - 'stecman/symfony-console-completion' => - array ( - 'pretty_version' => '0.11.0', - 'version' => '0.11.0.0', - 'aliases' => - array ( - ), - 'reference' => 'a9502dab59405e275a9f264536c4e1cb61fc3518', - ), - 'swiftmailer/swiftmailer' => - array ( - 'pretty_version' => 'v6.2.5', - 'version' => '6.2.5.0', - 'aliases' => - array ( - ), - 'reference' => '698a6a9f54d7eb321274de3ad19863802c879fb7', - ), - 'symfony/console' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => 'a62acecdf5b50e314a4f305cd01b5282126f3095', - ), - 'symfony/event-dispatcher' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => '047773e7016e4fd45102cedf4bd2558ae0d0c32f', - ), - 'symfony/event-dispatcher-contracts' => - array ( - 'pretty_version' => 'v1.1.9', - 'version' => '1.1.9.0', - 'aliases' => - array ( - ), - 'reference' => '84e23fdcd2517bf37aecbd16967e83f0caee25a7', - ), - 'symfony/event-dispatcher-implementation' => - array ( - 'provided' => - array ( - 0 => '1.1', - ), - ), - 'symfony/polyfill-ctype' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce', - ), - 'symfony/polyfill-iconv' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '63b5bb7db83e5673936d6e3b8b3e022ff6474933', - ), - 'symfony/polyfill-intl-grapheme' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '24b72c6baa32c746a4d0840147c9715e42bb68ab', - ), - 'symfony/polyfill-intl-idn' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '65bd267525e82759e7d8c4e8ceea44f398838e65', - ), - 'symfony/polyfill-intl-normalizer' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8', - ), - 'symfony/polyfill-mbstring' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '2df51500adbaebdc4c38dea4c89a2e131c45c8a1', - ), - 'symfony/polyfill-php72' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976', - ), - 'symfony/polyfill-php73' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010', - ), - 'symfony/polyfill-php80' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'eca0bf41ed421bed1b57c4958bab16aa86b757d0', - ), - 'symfony/process' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => 'cd61e6dd273975c6625316de9d141ebd197f93c9', - ), - 'symfony/routing' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => '3a3c2f197ad0846ac6413225fc78868ba1c61434', - ), - 'symfony/service-contracts' => - array ( - 'pretty_version' => 'v2.4.0', - 'version' => '2.4.0.0', - 'aliases' => - array ( - ), - 'reference' => 'f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb', - ), - 'symfony/translation' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => 'dfe132c5c6d89f90ce7f961742cc532e9ca16dd4', - ), - 'symfony/translation-contracts' => - array ( - 'pretty_version' => 'v2.4.0', - 'version' => '2.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '95c812666f3e91db75385749fe219c5e494c7f95', - ), - 'symfony/translation-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0|2.0', - ), - ), - 'thecodingmachine/safe' => - array ( - 'pretty_version' => 'v1.3.3', - 'version' => '1.3.3.0', - 'aliases' => - array ( - ), - 'reference' => 'a8ab0876305a4cdaef31b2350fcb9811b5608dbc', - ), - 'web-auth/cose-lib' => - array ( - 'pretty_version' => 'v3.3.1', - 'version' => '3.3.1.0', - 'aliases' => - array ( - ), - 'reference' => 'eea6fae63ff5c81bf98c115b1be5f38a69682c16', - ), - 'web-auth/metadata-service' => - array ( - 'pretty_version' => 'v3.3.1', - 'version' => '3.3.1.0', - 'aliases' => - array ( - ), - 'reference' => '8488d3a832a38cc81c670fce05de1e515c6e64b1', - ), - 'web-auth/webauthn-lib' => - array ( - 'pretty_version' => 'v3.3.1', - 'version' => '3.3.1.0', - 'aliases' => - array ( - ), - 'reference' => 'e411527a41c1013512fccdfce61681eb36484c77', - ), - ), -); -private static $canGetVendors; -private static $installedByVendor = array(); - - - - - - - -public static function getInstalledPackages() -{ -$packages = array(); -foreach (self::getInstalled() as $installed) { -$packages[] = array_keys($installed['versions']); -} - -if (1 === \count($packages)) { -return $packages[0]; -} - -return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); -} - - - - - - - - - -public static function isInstalled($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (isset($installed['versions'][$packageName])) { -return true; -} -} - -return false; -} - - - - - - - - - - - - - - -public static function satisfies(VersionParser $parser, $packageName, $constraint) -{ -$constraint = $parser->parseConstraints($constraint); -$provided = $parser->parseConstraints(self::getVersionRanges($packageName)); - -return $provided->matches($constraint); -} - - - - - - - - - - -public static function getVersionRanges($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -$ranges = array(); -if (isset($installed['versions'][$packageName]['pretty_version'])) { -$ranges[] = $installed['versions'][$packageName]['pretty_version']; -} -if (array_key_exists('aliases', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); -} -if (array_key_exists('replaced', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); -} -if (array_key_exists('provided', $installed['versions'][$packageName])) { -$ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); -} - -return implode(' || ', $ranges); -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['version'])) { -return null; -} - -return $installed['versions'][$packageName]['version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getPrettyVersion($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['pretty_version'])) { -return null; -} - -return $installed['versions'][$packageName]['pretty_version']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getReference($packageName) -{ -foreach (self::getInstalled() as $installed) { -if (!isset($installed['versions'][$packageName])) { -continue; -} - -if (!isset($installed['versions'][$packageName]['reference'])) { -return null; -} - -return $installed['versions'][$packageName]['reference']; -} - -throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); -} - - - - - -public static function getRootPackage() -{ -$installed = self::getInstalled(); - -return $installed[0]['root']; -} - - - - - - - - -public static function getRawData() -{ -@trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); - -return self::$installed; -} - - - - - - - -public static function getAllRawData() -{ -return self::getInstalled(); -} - - - - - - - - - - - - - - - - - - - -public static function reload($data) -{ -self::$installed = $data; -self::$installedByVendor = array(); -} - - - - - -private static function getInstalled() -{ -if (null === self::$canGetVendors) { -self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); -} - -$installed = array(); - -if (self::$canGetVendors) { -foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { -if (isset(self::$installedByVendor[$vendorDir])) { -$installed[] = self::$installedByVendor[$vendorDir]; -} elseif (is_file($vendorDir.'/composer/installed.php')) { -$installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; -} -} -} - -$installed[] = self::$installed; - -return $installed; -} + private static $installed; + private static $canGetVendors; + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + 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 + */ + 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 || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array} + */ + 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}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // 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 = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } } diff --git a/composer/autoload_classmap.php b/composer/autoload_classmap.php index 369b8904a..c7a753ffa 100644 --- a/composer/autoload_classmap.php +++ b/composer/autoload_classmap.php @@ -1326,6 +1326,7 @@ 'GuzzleHttp\\Handler\\CurlHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', 'GuzzleHttp\\Handler\\CurlMultiHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', 'GuzzleHttp\\Handler\\EasyHandle' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + 'GuzzleHttp\\Handler\\HeaderProcessor' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php', 'GuzzleHttp\\Handler\\MockHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', 'GuzzleHttp\\Handler\\Proxy' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/Proxy.php', 'GuzzleHttp\\Handler\\StreamHandler' => $vendorDir . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', diff --git a/composer/autoload_files.php b/composer/autoload_files.php index 4e2cfcf53..79aac5bf2 100644 --- a/composer/autoload_files.php +++ b/composer/autoload_files.php @@ -10,16 +10,16 @@ '383eaff206634a77a1be54e64e6459c7' => $vendorDir . '/sabre/uri/lib/functions.php', 'a4a119a56e50fbb293281d9a48007e0e' => $vendorDir . '/symfony/polyfill-php80/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => $vendorDir . '/ralouphie/getallheaders/src/getallheaders.php', + '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', 'c964ee0ededf28c96ebd9db5099ef910' => $vendorDir . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => $vendorDir . '/guzzlehttp/psr7/src/functions_include.php', - '0d59ee240a4cd96ddbb4ff164fccea4d' => $vendorDir . '/symfony/polyfill-php73/bootstrap.php', 'a4ecaeafb8cfb009ad0e052c90355e98' => $vendorDir . '/beberlei/assert/lib/Assert/functions.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', '2b9d0f43f9552984cfa82fee95491826' => $vendorDir . '/sabre/event/lib/coroutine.php', 'd81bab31d3feb45bfe2f283ea3c8fdf7' => $vendorDir . '/sabre/event/lib/Loop/functions.php', 'a1cce3d26cc15c00fcd0b3354bd72c88' => $vendorDir . '/sabre/event/lib/Promise/functions.php', '3569eecfeed3bcf0bad3c998a494ecb8' => $vendorDir . '/sabre/xml/lib/Deserializer/functions.php', '93aa591bc4ca510c520999e34229ee79' => $vendorDir . '/sabre/xml/lib/Serializer/functions.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => $vendorDir . '/guzzlehttp/guzzle/src/functions_include.php', 'e69f7f6ee287b969198c3c9d6777bd38' => $vendorDir . '/symfony/polyfill-intl-normalizer/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => $vendorDir . '/symfony/polyfill-php72/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => $vendorDir . '/symfony/polyfill-intl-idn/bootstrap.php', diff --git a/composer/autoload_static.php b/composer/autoload_static.php index 5147e8c0a..62880c5b1 100644 --- a/composer/autoload_static.php +++ b/composer/autoload_static.php @@ -11,16 +11,16 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 '383eaff206634a77a1be54e64e6459c7' => __DIR__ . '/..' . '/sabre/uri/lib/functions.php', 'a4a119a56e50fbb293281d9a48007e0e' => __DIR__ . '/..' . '/symfony/polyfill-php80/bootstrap.php', '7b11c4dc42b3b3023073cb14e519683c' => __DIR__ . '/..' . '/ralouphie/getallheaders/src/getallheaders.php', + '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', 'c964ee0ededf28c96ebd9db5099ef910' => __DIR__ . '/..' . '/guzzlehttp/promises/src/functions_include.php', 'a0edc8309cc5e1d60e3047b5df6b7052' => __DIR__ . '/..' . '/guzzlehttp/psr7/src/functions_include.php', - '0d59ee240a4cd96ddbb4ff164fccea4d' => __DIR__ . '/..' . '/symfony/polyfill-php73/bootstrap.php', 'a4ecaeafb8cfb009ad0e052c90355e98' => __DIR__ . '/..' . '/beberlei/assert/lib/Assert/functions.php', - '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', '2b9d0f43f9552984cfa82fee95491826' => __DIR__ . '/..' . '/sabre/event/lib/coroutine.php', 'd81bab31d3feb45bfe2f283ea3c8fdf7' => __DIR__ . '/..' . '/sabre/event/lib/Loop/functions.php', 'a1cce3d26cc15c00fcd0b3354bd72c88' => __DIR__ . '/..' . '/sabre/event/lib/Promise/functions.php', '3569eecfeed3bcf0bad3c998a494ecb8' => __DIR__ . '/..' . '/sabre/xml/lib/Deserializer/functions.php', '93aa591bc4ca510c520999e34229ee79' => __DIR__ . '/..' . '/sabre/xml/lib/Serializer/functions.php', + '37a3dc5111fe8f707ab4c132ef1dbc62' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/functions_include.php', 'e69f7f6ee287b969198c3c9d6777bd38' => __DIR__ . '/..' . '/symfony/polyfill-intl-normalizer/bootstrap.php', '25072dd6e2470089de65ae7bf11d3109' => __DIR__ . '/..' . '/symfony/polyfill-php72/bootstrap.php', 'f598d06aa772fa33d905e87be6398fb1' => __DIR__ . '/..' . '/symfony/polyfill-intl-idn/bootstrap.php', @@ -1958,6 +1958,7 @@ class ComposerStaticInit2f23f73bc0cc116b4b1eee1521aa8652 'GuzzleHttp\\Handler\\CurlHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlHandler.php', 'GuzzleHttp\\Handler\\CurlMultiHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/CurlMultiHandler.php', 'GuzzleHttp\\Handler\\EasyHandle' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/EasyHandle.php', + 'GuzzleHttp\\Handler\\HeaderProcessor' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php', 'GuzzleHttp\\Handler\\MockHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/MockHandler.php', 'GuzzleHttp\\Handler\\Proxy' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/Proxy.php', 'GuzzleHttp\\Handler\\StreamHandler' => __DIR__ . '/..' . '/guzzlehttp/guzzle/src/Handler/StreamHandler.php', diff --git a/composer/installed.json b/composer/installed.json index 0bb92236f..46c4d4890 100644 --- a/composer/installed.json +++ b/composer/installed.json @@ -1165,23 +1165,23 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.2.0", - "version_normalized": "7.2.0.0", + "version": "7.3.0", + "version_normalized": "7.3.0.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79" + "reference": "7008573787b430c1c1f650e3722d9bba59967628" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79", - "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7008573787b430c1c1f650e3722d9bba59967628", + "reference": "7008573787b430c1c1f650e3722d9bba59967628", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.4", - "guzzlehttp/psr7": "^1.7", + "guzzlehttp/psr7": "^1.7 || ^2.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0" }, @@ -1189,6 +1189,7 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.4.1", "ext-curl": "*", "php-http/client-integration-tests": "^3.0", "phpunit/phpunit": "^8.5.5 || ^9.3.5", @@ -1199,11 +1200,11 @@ "ext-intl": "Required for Internationalized Domain Name (IDN) support", "psr/log": "Required for using the Log middleware" }, - "time": "2020-10-10T11:47:56+00:00", + "time": "2021-03-23T11:33:13+00:00", "type": "library", "extra": { "branch-alias": { - "dev-master": "7.1-dev" + "dev-master": "7.3-dev" } }, "installation-source": "dist", @@ -1246,7 +1247,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.2.0" + "source": "https://github.com/guzzle/guzzle/tree/7.3.0" }, "funding": [ { @@ -1270,17 +1271,17 @@ }, { "name": "guzzlehttp/promises", - "version": "1.4.0", - "version_normalized": "1.4.0.0", + "version": "1.4.1", + "version_normalized": "1.4.1.0", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "60d379c243457e073cff02bc323a2a86cb355631" + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", - "reference": "60d379c243457e073cff02bc323a2a86cb355631", + "url": "https://api.github.com/repos/guzzle/promises/zipball/8e7d04f1f6450fef59366c399cfad4b9383aa30d", + "reference": "8e7d04f1f6450fef59366c399cfad4b9383aa30d", "shasum": "" }, "require": { @@ -1289,7 +1290,7 @@ "require-dev": { "symfony/phpunit-bridge": "^4.4 || ^5.1" }, - "time": "2020-09-30T07:37:28+00:00", + "time": "2021-03-07T09:25:29+00:00", "type": "library", "extra": { "branch-alias": { @@ -1322,23 +1323,23 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/1.4.0" + "source": "https://github.com/guzzle/promises/tree/1.4.1" }, "install-path": "../guzzlehttp/promises" }, { "name": "guzzlehttp/psr7", - "version": "1.7.0", - "version_normalized": "1.7.0.0", + "version": "1.8.2", + "version_normalized": "1.8.2.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" + "reference": "dc960a912984efb74d0a90222870c72c87f10c91" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", - "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/dc960a912984efb74d0a90222870c72c87f10c91", + "reference": "dc960a912984efb74d0a90222870c72c87f10c91", "shasum": "" }, "require": { @@ -1356,7 +1357,7 @@ "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, - "time": "2020-09-30T07:37:11+00:00", + "time": "2021-04-26T09:17:50+00:00", "type": "library", "extra": { "branch-alias": { @@ -1400,7 +1401,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.7.0" + "source": "https://github.com/guzzle/psr7/tree/1.8.2" }, "install-path": "../guzzlehttp/psr7" }, @@ -6289,6 +6290,6 @@ "install-path": "../web-auth/webauthn-lib" } ], - "dev": false, + "dev": true, "dev-package-names": [] } diff --git a/composer/installed.php b/composer/installed.php index b552eb64f..bc6e18cb8 100644 --- a/composer/installed.php +++ b/composer/installed.php @@ -1,898 +1,884 @@ - - array ( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'aliases' => - array ( + array( + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'type' => 'library', + 'install_path' => __DIR__ . '/../', + 'aliases' => array(), + 'reference' => '66c8387d49d488de71659890c3fe2d0c940c0f0f', + 'name' => 'nextcloud/3rdparty', + 'dev' => true, + ), + 'versions' => array( + 'aws/aws-sdk-php' => array( + 'pretty_version' => '3.171.21', + 'version' => '3.171.21.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../aws/aws-sdk-php', + 'aliases' => array(), + 'reference' => '0455d92bb12d44f80db96a4e70861d186063e9e5', + 'dev_requirement' => false, + ), + 'bantu/ini-get-wrapper' => array( + 'pretty_version' => 'v1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../bantu/ini-get-wrapper', + 'aliases' => array(), + 'reference' => '4770c7feab370c62e23db4f31c112b7c6d90aee2', + 'dev_requirement' => false, + ), + 'beberlei/assert' => array( + 'pretty_version' => 'v3.3.0', + 'version' => '3.3.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../beberlei/assert', + 'aliases' => array(), + 'reference' => '5367e3895976b49704ae671f75bc5f0ba1b986ab', + 'dev_requirement' => false, + ), + 'brick/math' => array( + 'pretty_version' => '0.9.1', + 'version' => '0.9.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../brick/math', + 'aliases' => array(), + 'reference' => '283a40c901101e66de7061bd359252c013dcc43c', + 'dev_requirement' => false, + ), + 'christophwurst/id3parser' => array( + 'pretty_version' => 'v0.1.2', + 'version' => '0.1.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../christophwurst/id3parser', + 'aliases' => array(), + 'reference' => 'd7f5e9e7db69a24e3111a2033cbdf640f9456f2f', + 'dev_requirement' => false, + ), + 'composer/package-versions-deprecated' => array( + 'pretty_version' => '1.11.99.1', + 'version' => '1.11.99.1', + 'type' => 'composer-plugin', + 'install_path' => __DIR__ . '/./package-versions-deprecated', + 'aliases' => array(), + 'reference' => '7413f0b55a051e89485c5cb9f765fe24bb02a7b6', + 'dev_requirement' => false, + ), + 'deepdiver/zipstreamer' => array( + 'pretty_version' => '2.0.0', + 'version' => '2.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../deepdiver/zipstreamer', + 'aliases' => array(), + 'reference' => 'b8c59647ff34fb97e8937aefb2a65de2bc4b4755', + 'dev_requirement' => false, + ), + 'deepdiver1975/tarstreamer' => array( + 'pretty_version' => '2.0.0', + 'version' => '2.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../deepdiver1975/tarstreamer', + 'aliases' => array(), + 'reference' => 'ad48505d1ab54a8e94e6b1cc5297bbed72e956de', + 'dev_requirement' => false, + ), + 'doctrine/cache' => array( + 'pretty_version' => '1.10.2', + 'version' => '1.10.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../doctrine/cache', + 'aliases' => array(), + 'reference' => '13e3381b25847283a91948d04640543941309727', + 'dev_requirement' => false, + ), + 'doctrine/dbal' => array( + 'pretty_version' => '3.0.0', + 'version' => '3.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../doctrine/dbal', + 'aliases' => array(), + 'reference' => 'ee6d1260d5cc20ec506455a585945d7bdb98662c', + 'dev_requirement' => false, + ), + 'doctrine/event-manager' => array( + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../doctrine/event-manager', + 'aliases' => array(), + 'reference' => '41370af6a30faa9dc0368c4a6814d596e81aba7f', + 'dev_requirement' => false, + ), + 'doctrine/lexer' => array( + 'pretty_version' => '1.2.1', + 'version' => '1.2.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../doctrine/lexer', + 'aliases' => array(), + 'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042', + 'dev_requirement' => false, + ), + 'egulias/email-validator' => array( + 'pretty_version' => '2.1.25', + 'version' => '2.1.25.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../egulias/email-validator', + 'aliases' => array(), + 'reference' => '0dbf5d78455d4d6a41d186da50adc1122ec066f4', + 'dev_requirement' => false, + ), + 'fgrosse/phpasn1' => array( + 'pretty_version' => 'v2.2.0', + 'version' => '2.2.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../fgrosse/phpasn1', + 'aliases' => array(), + 'reference' => 'd1978f7abd580f3fc33561e7f71d4c12c7531fad', + 'dev_requirement' => false, + ), + 'giggsey/libphonenumber-for-php' => array( + 'pretty_version' => '8.12.24', + 'version' => '8.12.24.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../giggsey/libphonenumber-for-php', + 'aliases' => array(), + 'reference' => 'bbefdd7ff0bae7bf5a62fc9e8c939fb40dd6d638', + 'dev_requirement' => false, + ), + 'giggsey/locale' => array( + 'pretty_version' => '1.9', + 'version' => '1.9.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../giggsey/locale', + 'aliases' => array(), + 'reference' => 'b07f1eace8072ccc61445ad8fbd493ff9d783043', + 'dev_requirement' => false, + ), + 'guzzlehttp/guzzle' => array( + 'pretty_version' => '7.3.0', + 'version' => '7.3.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/guzzle', + 'aliases' => array(), + 'reference' => '7008573787b430c1c1f650e3722d9bba59967628', + 'dev_requirement' => false, + ), + 'guzzlehttp/promises' => array( + 'pretty_version' => '1.4.1', + 'version' => '1.4.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/promises', + 'aliases' => array(), + 'reference' => '8e7d04f1f6450fef59366c399cfad4b9383aa30d', + 'dev_requirement' => false, + ), + 'guzzlehttp/psr7' => array( + 'pretty_version' => '1.8.2', + 'version' => '1.8.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/psr7', + 'aliases' => array(), + 'reference' => 'dc960a912984efb74d0a90222870c72c87f10c91', + 'dev_requirement' => false, + ), + 'guzzlehttp/uri-template' => array( + 'pretty_version' => 'v0.2.0', + 'version' => '0.2.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../guzzlehttp/uri-template', + 'aliases' => array(), + 'reference' => 'db46525d6d8fee71033b73cc07160f3e5271a8ce', + 'dev_requirement' => false, + ), + 'icewind/searchdav' => array( + 'pretty_version' => 'v2.0.0', + 'version' => '2.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../icewind/searchdav', + 'aliases' => array(), + 'reference' => 'c69806d900c2c9a5954bfabc80178d6eb0d63df4', + 'dev_requirement' => false, + ), + 'icewind/streams' => array( + 'pretty_version' => 'v0.7.4', + 'version' => '0.7.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../icewind/streams', + 'aliases' => array(), + 'reference' => '93bce472202d36d9808c30eaa52a1dc72b39e04c', + 'dev_requirement' => false, + ), + 'justinrainbow/json-schema' => array( + 'pretty_version' => '5.2.10', + 'version' => '5.2.10.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../justinrainbow/json-schema', + 'aliases' => array(), + 'reference' => '2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b', + 'dev_requirement' => false, + ), + 'league/flysystem' => array( + 'pretty_version' => '1.1.3', + 'version' => '1.1.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/flysystem', + 'aliases' => array(), + 'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a', + 'dev_requirement' => false, + ), + 'league/mime-type-detection' => array( + 'pretty_version' => '1.7.0', + 'version' => '1.7.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/mime-type-detection', + 'aliases' => array(), + 'reference' => '3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3', + 'dev_requirement' => false, + ), + 'league/uri' => array( + 'pretty_version' => '6.4.0', + 'version' => '6.4.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/uri', + 'aliases' => array(), + 'reference' => '09da64118eaf4c5d52f9923a1e6a5be1da52fd9a', + 'dev_requirement' => false, + ), + 'league/uri-interfaces' => array( + 'pretty_version' => '2.2.0', + 'version' => '2.2.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../league/uri-interfaces', + 'aliases' => array(), + 'reference' => '667f150e589d65d79c89ffe662e426704f84224f', + 'dev_requirement' => false, + ), + 'microsoft/azure-storage-blob' => array( + 'pretty_version' => '1.5.2', + 'version' => '1.5.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../microsoft/azure-storage-blob', + 'aliases' => array(), + 'reference' => '2475330963372d519387cb8135d6a9cfd42272da', + 'dev_requirement' => false, + ), + 'microsoft/azure-storage-common' => array( + 'pretty_version' => '1.5.1', + 'version' => '1.5.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../microsoft/azure-storage-common', + 'aliases' => array(), + 'reference' => 'e5738035891546075bd369954e8af121d65ebd6d', + 'dev_requirement' => false, + ), + 'mtdowling/jmespath.php' => array( + 'pretty_version' => '2.6.0', + 'version' => '2.6.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../mtdowling/jmespath.php', + 'aliases' => array(), + 'reference' => '42dae2cbd13154083ca6d70099692fef8ca84bfb', + 'dev_requirement' => false, + ), + 'nextcloud/3rdparty' => array( + 'pretty_version' => 'dev-master', + 'version' => 'dev-master', + 'type' => 'library', + 'install_path' => __DIR__ . '/../', + 'aliases' => array(), + 'reference' => '66c8387d49d488de71659890c3fe2d0c940c0f0f', + 'dev_requirement' => false, + ), + 'nextcloud/lognormalizer' => array( + 'pretty_version' => 'v1.0.0', + 'version' => '1.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../nextcloud/lognormalizer', + 'aliases' => array(), + 'reference' => '87445d69225c247aaff64643b1fc83c6d6df741f', + 'dev_requirement' => false, + ), + 'nikic/php-parser' => array( + 'pretty_version' => 'v4.10.5', + 'version' => '4.10.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../nikic/php-parser', + 'aliases' => array(), + 'reference' => '4432ba399e47c66624bc73c8c0f811e5c109576f', + 'dev_requirement' => false, + ), + 'ocramius/package-versions' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => '1.11.99', + ), + ), + 'opis/closure' => array( + 'pretty_version' => '3.6.2', + 'version' => '3.6.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../opis/closure', + 'aliases' => array(), + 'reference' => '06e2ebd25f2869e54a306dda991f7db58066f7f6', + 'dev_requirement' => false, + ), + 'patchwork/jsqueeze' => array( + 'pretty_version' => 'v2.0.5', + 'version' => '2.0.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../patchwork/jsqueeze', + 'aliases' => array(), + 'reference' => '693d64850eab2ce6a7c8f7cf547e1ab46e69d542', + 'dev_requirement' => false, + ), + 'pear/archive_tar' => array( + 'pretty_version' => '1.4.13', + 'version' => '1.4.13.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../pear/archive_tar', + 'aliases' => array(), + 'reference' => '2b87b41178cc6d4ad3cba678a46a1cae49786011', + 'dev_requirement' => false, + ), + 'pear/console_getopt' => array( + 'pretty_version' => 'v1.4.3', + 'version' => '1.4.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../pear/console_getopt', + 'aliases' => array(), + 'reference' => 'a41f8d3e668987609178c7c4a9fe48fecac53fa0', + 'dev_requirement' => false, + ), + 'pear/pear-core-minimal' => array( + 'pretty_version' => 'v1.10.10', + 'version' => '1.10.10.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../pear/pear-core-minimal', + 'aliases' => array(), + 'reference' => '625a3c429d9b2c1546438679074cac1b089116a7', + 'dev_requirement' => false, + ), + 'pear/pear_exception' => array( + 'pretty_version' => 'v1.0.2', + 'version' => '1.0.2.0', + 'type' => 'class', + 'install_path' => __DIR__ . '/../pear/pear_exception', + 'aliases' => array(), + 'reference' => 'b14fbe2ddb0b9f94f5b24cf08783d599f776fff0', + 'dev_requirement' => false, + ), + 'php-ds/php-ds' => array( + 'pretty_version' => 'v1.3.0', + 'version' => '1.3.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../php-ds/php-ds', + 'aliases' => array(), + 'reference' => 'b98396862fb8a13cbdbbaf4d18be28ee5c01ed3c', + 'dev_requirement' => false, + ), + 'php-http/async-client-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'php-http/client-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'php-http/guzzle7-adapter' => array( + 'pretty_version' => '0.1.1', + 'version' => '0.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../php-http/guzzle7-adapter', + 'aliases' => array(), + 'reference' => '1967de656b9679a2a6a66d0e4e16fa99bbed1ad1', + 'dev_requirement' => false, + ), + 'php-http/httplug' => array( + 'pretty_version' => '2.2.0', + 'version' => '2.2.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../php-http/httplug', + 'aliases' => array(), + 'reference' => '191a0a1b41ed026b717421931f8d3bd2514ffbf9', + 'dev_requirement' => false, + ), + 'php-http/promise' => array( + 'pretty_version' => '1.1.0', + 'version' => '1.1.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../php-http/promise', + 'aliases' => array(), + 'reference' => '4c4c1f9b7289a2ec57cde7f1e9762a5789506f88', + 'dev_requirement' => false, + ), + 'php-opencloud/openstack' => array( + 'pretty_version' => 'v3.1.0', + 'version' => '3.1.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../php-opencloud/openstack', + 'aliases' => array(), + 'reference' => '7b0eeb63defe533fb802514af3c70855c45eaf1e', + 'dev_requirement' => false, + ), + 'phpseclib/phpseclib' => array( + 'pretty_version' => '2.0.31', + 'version' => '2.0.31.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpseclib/phpseclib', + 'aliases' => array(), + 'reference' => '233a920cb38636a43b18d428f9a8db1f0a1a08f4', + 'dev_requirement' => false, + ), + 'pimple/pimple' => array( + 'pretty_version' => 'v3.4.0', + 'version' => '3.4.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../pimple/pimple', + 'aliases' => array(), + 'reference' => '86406047271859ffc13424a048541f4531f53601', + 'dev_requirement' => false, + ), + 'psr/container' => array( + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/container', + 'aliases' => array(), + 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', + 'dev_requirement' => false, + ), + 'psr/event-dispatcher' => array( + 'pretty_version' => '1.0.0', + 'version' => '1.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/event-dispatcher', + 'aliases' => array(), + 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', + 'dev_requirement' => false, + ), + 'psr/event-dispatcher-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'psr/http-client' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/http-client', + 'aliases' => array(), + 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621', + 'dev_requirement' => false, + ), + 'psr/http-client-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'psr/http-factory' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/http-factory', + 'aliases' => array(), + 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', + 'dev_requirement' => false, + ), + 'psr/http-message' => array( + 'pretty_version' => '1.0.1', + 'version' => '1.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/http-message', + 'aliases' => array(), + 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363', + 'dev_requirement' => false, + ), + 'psr/http-message-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'psr/log' => array( + 'pretty_version' => '1.1.3', + 'version' => '1.1.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../psr/log', + 'aliases' => array(), + 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', + 'dev_requirement' => false, + ), + 'psr/log-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0', + ), + ), + 'punic/calendar' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => '*', + ), + ), + 'punic/common' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => '*', + ), + ), + 'punic/punic' => array( + 'pretty_version' => '1.6.5', + 'version' => '1.6.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../punic/punic', + 'aliases' => array(), + 'reference' => '7bc85ce1137cf52db4d2a6298256a4c4a24da99a', + 'dev_requirement' => false, + ), + 'ralouphie/getallheaders' => array( + 'pretty_version' => '3.0.3', + 'version' => '3.0.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../ralouphie/getallheaders', + 'aliases' => array(), + 'reference' => '120b605dfeb996808c31b6477290a714d356e822', + 'dev_requirement' => false, + ), + 'ramsey/collection' => array( + 'pretty_version' => '1.1.1', + 'version' => '1.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../ramsey/collection', + 'aliases' => array(), + 'reference' => '24d93aefb2cd786b7edd9f45b554aea20b28b9b1', + 'dev_requirement' => false, + ), + 'ramsey/uuid' => array( + 'pretty_version' => '4.1.1', + 'version' => '4.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../ramsey/uuid', + 'aliases' => array(), + 'reference' => 'cd4032040a750077205918c86049aa0f43d22947', + 'dev_requirement' => false, + ), + 'rhumsaa/uuid' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => '4.1.1', + ), + ), + 'rsky/pear-core-min' => array( + 'dev_requirement' => false, + 'replaced' => array( + 0 => 'v1.10.10', + ), + ), + 'sabre/dav' => array( + 'pretty_version' => '4.1.5', + 'version' => '4.1.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sabre/dav', + 'aliases' => array(), + 'reference' => 'c1afdc77a95efea6ee40c03c45f57c3c0c80ec22', + 'dev_requirement' => false, + ), + 'sabre/event' => array( + 'pretty_version' => '5.1.2', + 'version' => '5.1.2.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sabre/event', + 'aliases' => array(), + 'reference' => 'c120bec57c17b6251a496efc82b732418b49d50a', + 'dev_requirement' => false, + ), + 'sabre/http' => array( + 'pretty_version' => '5.1.1', + 'version' => '5.1.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sabre/http', + 'aliases' => array(), + 'reference' => 'd0aafede6961df6195ce7a8dad49296b0aaee22e', + 'dev_requirement' => false, + ), + 'sabre/uri' => array( + 'pretty_version' => '2.2.1', + 'version' => '2.2.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sabre/uri', + 'aliases' => array(), + 'reference' => 'f502edffafea8d746825bd5f0b923a60fd2715ff', + 'dev_requirement' => false, + ), + 'sabre/vobject' => array( + 'pretty_version' => '4.3.5', + 'version' => '4.3.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sabre/vobject', + 'aliases' => array(), + 'reference' => 'd8a0a9ae215a8acfb51afc29101c7344670b9c83', + 'dev_requirement' => false, + ), + 'sabre/xml' => array( + 'pretty_version' => '2.2.3', + 'version' => '2.2.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../sabre/xml', + 'aliases' => array(), + 'reference' => 'c3b959f821c19b36952ec4a595edd695c216bfc6', + 'dev_requirement' => false, + ), + 'scssphp/scssphp' => array( + 'pretty_version' => 'v1.4.1', + 'version' => '1.4.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../scssphp/scssphp', + 'aliases' => array(), + 'reference' => 'ba86c963b94ec7ebd6e19d90cdab90d89667dbf7', + 'dev_requirement' => false, + ), + 'spomky-labs/base64url' => array( + 'pretty_version' => 'v2.0.4', + 'version' => '2.0.4.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../spomky-labs/base64url', + 'aliases' => array(), + 'reference' => '7752ce931ec285da4ed1f4c5aa27e45e097be61d', + 'dev_requirement' => false, + ), + 'spomky-labs/cbor-php' => array( + 'pretty_version' => 'v2.0.1', + 'version' => '2.0.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../spomky-labs/cbor-php', + 'aliases' => array(), + 'reference' => '9776578000be884cd7864eeb7c37a4ac92d8c995', + 'dev_requirement' => false, + ), + 'stecman/symfony-console-completion' => array( + 'pretty_version' => '0.11.0', + 'version' => '0.11.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../stecman/symfony-console-completion', + 'aliases' => array(), + 'reference' => 'a9502dab59405e275a9f264536c4e1cb61fc3518', + 'dev_requirement' => false, + ), + 'swiftmailer/swiftmailer' => array( + 'pretty_version' => 'v6.2.5', + 'version' => '6.2.5.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../swiftmailer/swiftmailer', + 'aliases' => array(), + 'reference' => '698a6a9f54d7eb321274de3ad19863802c879fb7', + 'dev_requirement' => false, + ), + 'symfony/console' => array( + 'pretty_version' => 'v4.4.25', + 'version' => '4.4.25.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/console', + 'aliases' => array(), + 'reference' => 'a62acecdf5b50e314a4f305cd01b5282126f3095', + 'dev_requirement' => false, + ), + 'symfony/event-dispatcher' => array( + 'pretty_version' => 'v4.4.25', + 'version' => '4.4.25.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/event-dispatcher', + 'aliases' => array(), + 'reference' => '047773e7016e4fd45102cedf4bd2558ae0d0c32f', + 'dev_requirement' => false, + ), + 'symfony/event-dispatcher-contracts' => array( + 'pretty_version' => 'v1.1.9', + 'version' => '1.1.9.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/event-dispatcher-contracts', + 'aliases' => array(), + 'reference' => '84e23fdcd2517bf37aecbd16967e83f0caee25a7', + 'dev_requirement' => false, + ), + 'symfony/event-dispatcher-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.1', + ), + ), + 'symfony/polyfill-ctype' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-ctype', + 'aliases' => array(), + 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce', + 'dev_requirement' => false, + ), + 'symfony/polyfill-iconv' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-iconv', + 'aliases' => array(), + 'reference' => '63b5bb7db83e5673936d6e3b8b3e022ff6474933', + 'dev_requirement' => false, + ), + 'symfony/polyfill-intl-grapheme' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-intl-grapheme', + 'aliases' => array(), + 'reference' => '24b72c6baa32c746a4d0840147c9715e42bb68ab', + 'dev_requirement' => false, + ), + 'symfony/polyfill-intl-idn' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-intl-idn', + 'aliases' => array(), + 'reference' => '65bd267525e82759e7d8c4e8ceea44f398838e65', + 'dev_requirement' => false, + ), + 'symfony/polyfill-intl-normalizer' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-intl-normalizer', + 'aliases' => array(), + 'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8', + 'dev_requirement' => false, + ), + 'symfony/polyfill-mbstring' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', + 'aliases' => array(), + 'reference' => '2df51500adbaebdc4c38dea4c89a2e131c45c8a1', + 'dev_requirement' => false, + ), + 'symfony/polyfill-php72' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php72', + 'aliases' => array(), + 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976', + 'dev_requirement' => false, + ), + 'symfony/polyfill-php73' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php73', + 'aliases' => array(), + 'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010', + 'dev_requirement' => false, + ), + 'symfony/polyfill-php80' => array( + 'pretty_version' => 'v1.23.0', + 'version' => '1.23.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-php80', + 'aliases' => array(), + 'reference' => 'eca0bf41ed421bed1b57c4958bab16aa86b757d0', + 'dev_requirement' => false, + ), + 'symfony/process' => array( + 'pretty_version' => 'v4.4.25', + 'version' => '4.4.25.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/process', + 'aliases' => array(), + 'reference' => 'cd61e6dd273975c6625316de9d141ebd197f93c9', + 'dev_requirement' => false, + ), + 'symfony/routing' => array( + 'pretty_version' => 'v4.4.25', + 'version' => '4.4.25.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/routing', + 'aliases' => array(), + 'reference' => '3a3c2f197ad0846ac6413225fc78868ba1c61434', + 'dev_requirement' => false, + ), + 'symfony/service-contracts' => array( + 'pretty_version' => 'v2.4.0', + 'version' => '2.4.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/service-contracts', + 'aliases' => array(), + 'reference' => 'f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb', + 'dev_requirement' => false, + ), + 'symfony/translation' => array( + 'pretty_version' => 'v4.4.25', + 'version' => '4.4.25.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/translation', + 'aliases' => array(), + 'reference' => 'dfe132c5c6d89f90ce7f961742cc532e9ca16dd4', + 'dev_requirement' => false, + ), + 'symfony/translation-contracts' => array( + 'pretty_version' => 'v2.4.0', + 'version' => '2.4.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/translation-contracts', + 'aliases' => array(), + 'reference' => '95c812666f3e91db75385749fe219c5e494c7f95', + 'dev_requirement' => false, + ), + 'symfony/translation-implementation' => array( + 'dev_requirement' => false, + 'provided' => array( + 0 => '1.0|2.0', + ), + ), + 'thecodingmachine/safe' => array( + 'pretty_version' => 'v1.3.3', + 'version' => '1.3.3.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../thecodingmachine/safe', + 'aliases' => array(), + 'reference' => 'a8ab0876305a4cdaef31b2350fcb9811b5608dbc', + 'dev_requirement' => false, + ), + 'web-auth/cose-lib' => array( + 'pretty_version' => 'v3.3.1', + 'version' => '3.3.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../web-auth/cose-lib', + 'aliases' => array(), + 'reference' => 'eea6fae63ff5c81bf98c115b1be5f38a69682c16', + 'dev_requirement' => false, + ), + 'web-auth/metadata-service' => array( + 'pretty_version' => 'v3.3.1', + 'version' => '3.3.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../web-auth/metadata-service', + 'aliases' => array(), + 'reference' => '8488d3a832a38cc81c670fce05de1e515c6e64b1', + 'dev_requirement' => false, + ), + 'web-auth/webauthn-lib' => array( + 'pretty_version' => 'v3.3.1', + 'version' => '3.3.1.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../web-auth/webauthn-lib', + 'aliases' => array(), + 'reference' => 'e411527a41c1013512fccdfce61681eb36484c77', + 'dev_requirement' => false, + ), ), - 'reference' => 'fa2370cb3b5ec72666bc8e8de2e6ec08e8cf96c5', - 'name' => 'nextcloud/3rdparty', - ), - 'versions' => - array ( - 'aws/aws-sdk-php' => - array ( - 'pretty_version' => '3.171.21', - 'version' => '3.171.21.0', - 'aliases' => - array ( - ), - 'reference' => '0455d92bb12d44f80db96a4e70861d186063e9e5', - ), - 'bantu/ini-get-wrapper' => - array ( - 'pretty_version' => 'v1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '4770c7feab370c62e23db4f31c112b7c6d90aee2', - ), - 'beberlei/assert' => - array ( - 'pretty_version' => 'v3.3.0', - 'version' => '3.3.0.0', - 'aliases' => - array ( - ), - 'reference' => '5367e3895976b49704ae671f75bc5f0ba1b986ab', - ), - 'brick/math' => - array ( - 'pretty_version' => '0.9.1', - 'version' => '0.9.1.0', - 'aliases' => - array ( - ), - 'reference' => '283a40c901101e66de7061bd359252c013dcc43c', - ), - 'christophwurst/id3parser' => - array ( - 'pretty_version' => 'v0.1.2', - 'version' => '0.1.2.0', - 'aliases' => - array ( - ), - 'reference' => 'd7f5e9e7db69a24e3111a2033cbdf640f9456f2f', - ), - 'composer/package-versions-deprecated' => - array ( - 'pretty_version' => '1.11.99.1', - 'version' => '1.11.99.1', - 'aliases' => - array ( - ), - 'reference' => '7413f0b55a051e89485c5cb9f765fe24bb02a7b6', - ), - 'deepdiver/zipstreamer' => - array ( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'b8c59647ff34fb97e8937aefb2a65de2bc4b4755', - ), - 'deepdiver1975/tarstreamer' => - array ( - 'pretty_version' => '2.0.0', - 'version' => '2.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'ad48505d1ab54a8e94e6b1cc5297bbed72e956de', - ), - 'doctrine/cache' => - array ( - 'pretty_version' => '1.10.2', - 'version' => '1.10.2.0', - 'aliases' => - array ( - ), - 'reference' => '13e3381b25847283a91948d04640543941309727', - ), - 'doctrine/dbal' => - array ( - 'pretty_version' => '3.0.0', - 'version' => '3.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'ee6d1260d5cc20ec506455a585945d7bdb98662c', - ), - 'doctrine/event-manager' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '41370af6a30faa9dc0368c4a6814d596e81aba7f', - ), - 'doctrine/lexer' => - array ( - 'pretty_version' => '1.2.1', - 'version' => '1.2.1.0', - 'aliases' => - array ( - ), - 'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042', - ), - 'egulias/email-validator' => - array ( - 'pretty_version' => '2.1.25', - 'version' => '2.1.25.0', - 'aliases' => - array ( - ), - 'reference' => '0dbf5d78455d4d6a41d186da50adc1122ec066f4', - ), - 'fgrosse/phpasn1' => - array ( - 'pretty_version' => 'v2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'd1978f7abd580f3fc33561e7f71d4c12c7531fad', - ), - 'giggsey/libphonenumber-for-php' => - array ( - 'pretty_version' => '8.12.24', - 'version' => '8.12.24.0', - 'aliases' => - array ( - ), - 'reference' => 'bbefdd7ff0bae7bf5a62fc9e8c939fb40dd6d638', - ), - 'giggsey/locale' => - array ( - 'pretty_version' => '1.9', - 'version' => '1.9.0.0', - 'aliases' => - array ( - ), - 'reference' => 'b07f1eace8072ccc61445ad8fbd493ff9d783043', - ), - 'guzzlehttp/guzzle' => - array ( - 'pretty_version' => '7.2.0', - 'version' => '7.2.0.0', - 'aliases' => - array ( - ), - 'reference' => '0aa74dfb41ae110835923ef10a9d803a22d50e79', - ), - 'guzzlehttp/promises' => - array ( - 'pretty_version' => '1.4.0', - 'version' => '1.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '60d379c243457e073cff02bc323a2a86cb355631', - ), - 'guzzlehttp/psr7' => - array ( - 'pretty_version' => '1.7.0', - 'version' => '1.7.0.0', - 'aliases' => - array ( - ), - 'reference' => '53330f47520498c0ae1f61f7e2c90f55690c06a3', - ), - 'guzzlehttp/uri-template' => - array ( - 'pretty_version' => 'v0.2.0', - 'version' => '0.2.0.0', - 'aliases' => - array ( - ), - 'reference' => 'db46525d6d8fee71033b73cc07160f3e5271a8ce', - ), - 'icewind/searchdav' => - array ( - 'pretty_version' => 'v2.0.0', - 'version' => '2.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'c69806d900c2c9a5954bfabc80178d6eb0d63df4', - ), - 'icewind/streams' => - array ( - 'pretty_version' => 'v0.7.4', - 'version' => '0.7.4.0', - 'aliases' => - array ( - ), - 'reference' => '93bce472202d36d9808c30eaa52a1dc72b39e04c', - ), - 'justinrainbow/json-schema' => - array ( - 'pretty_version' => '5.2.10', - 'version' => '5.2.10.0', - 'aliases' => - array ( - ), - 'reference' => '2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b', - ), - 'league/flysystem' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '9be3b16c877d477357c015cec057548cf9b2a14a', - ), - 'league/mime-type-detection' => - array ( - 'pretty_version' => '1.7.0', - 'version' => '1.7.0.0', - 'aliases' => - array ( - ), - 'reference' => '3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3', - ), - 'league/uri' => - array ( - 'pretty_version' => '6.4.0', - 'version' => '6.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '09da64118eaf4c5d52f9923a1e6a5be1da52fd9a', - ), - 'league/uri-interfaces' => - array ( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => '667f150e589d65d79c89ffe662e426704f84224f', - ), - 'microsoft/azure-storage-blob' => - array ( - 'pretty_version' => '1.5.2', - 'version' => '1.5.2.0', - 'aliases' => - array ( - ), - 'reference' => '2475330963372d519387cb8135d6a9cfd42272da', - ), - 'microsoft/azure-storage-common' => - array ( - 'pretty_version' => '1.5.1', - 'version' => '1.5.1.0', - 'aliases' => - array ( - ), - 'reference' => 'e5738035891546075bd369954e8af121d65ebd6d', - ), - 'mtdowling/jmespath.php' => - array ( - 'pretty_version' => '2.6.0', - 'version' => '2.6.0.0', - 'aliases' => - array ( - ), - 'reference' => '42dae2cbd13154083ca6d70099692fef8ca84bfb', - ), - 'nextcloud/3rdparty' => - array ( - 'pretty_version' => 'dev-master', - 'version' => 'dev-master', - 'aliases' => - array ( - ), - 'reference' => 'fa2370cb3b5ec72666bc8e8de2e6ec08e8cf96c5', - ), - 'nextcloud/lognormalizer' => - array ( - 'pretty_version' => 'v1.0.0', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => '87445d69225c247aaff64643b1fc83c6d6df741f', - ), - 'nikic/php-parser' => - array ( - 'pretty_version' => 'v4.10.5', - 'version' => '4.10.5.0', - 'aliases' => - array ( - ), - 'reference' => '4432ba399e47c66624bc73c8c0f811e5c109576f', - ), - 'ocramius/package-versions' => - array ( - 'replaced' => - array ( - 0 => '1.11.99', - ), - ), - 'opis/closure' => - array ( - 'pretty_version' => '3.6.2', - 'version' => '3.6.2.0', - 'aliases' => - array ( - ), - 'reference' => '06e2ebd25f2869e54a306dda991f7db58066f7f6', - ), - 'patchwork/jsqueeze' => - array ( - 'pretty_version' => 'v2.0.5', - 'version' => '2.0.5.0', - 'aliases' => - array ( - ), - 'reference' => '693d64850eab2ce6a7c8f7cf547e1ab46e69d542', - ), - 'pear/archive_tar' => - array ( - 'pretty_version' => '1.4.13', - 'version' => '1.4.13.0', - 'aliases' => - array ( - ), - 'reference' => '2b87b41178cc6d4ad3cba678a46a1cae49786011', - ), - 'pear/console_getopt' => - array ( - 'pretty_version' => 'v1.4.3', - 'version' => '1.4.3.0', - 'aliases' => - array ( - ), - 'reference' => 'a41f8d3e668987609178c7c4a9fe48fecac53fa0', - ), - 'pear/pear-core-minimal' => - array ( - 'pretty_version' => 'v1.10.10', - 'version' => '1.10.10.0', - 'aliases' => - array ( - ), - 'reference' => '625a3c429d9b2c1546438679074cac1b089116a7', - ), - 'pear/pear_exception' => - array ( - 'pretty_version' => 'v1.0.2', - 'version' => '1.0.2.0', - 'aliases' => - array ( - ), - 'reference' => 'b14fbe2ddb0b9f94f5b24cf08783d599f776fff0', - ), - 'php-ds/php-ds' => - array ( - 'pretty_version' => 'v1.3.0', - 'version' => '1.3.0.0', - 'aliases' => - array ( - ), - 'reference' => 'b98396862fb8a13cbdbbaf4d18be28ee5c01ed3c', - ), - 'php-http/async-client-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'php-http/client-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'php-http/guzzle7-adapter' => - array ( - 'pretty_version' => '0.1.1', - 'version' => '0.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '1967de656b9679a2a6a66d0e4e16fa99bbed1ad1', - ), - 'php-http/httplug' => - array ( - 'pretty_version' => '2.2.0', - 'version' => '2.2.0.0', - 'aliases' => - array ( - ), - 'reference' => '191a0a1b41ed026b717421931f8d3bd2514ffbf9', - ), - 'php-http/promise' => - array ( - 'pretty_version' => '1.1.0', - 'version' => '1.1.0.0', - 'aliases' => - array ( - ), - 'reference' => '4c4c1f9b7289a2ec57cde7f1e9762a5789506f88', - ), - 'php-opencloud/openstack' => - array ( - 'pretty_version' => 'v3.1.0', - 'version' => '3.1.0.0', - 'aliases' => - array ( - ), - 'reference' => '7b0eeb63defe533fb802514af3c70855c45eaf1e', - ), - 'phpseclib/phpseclib' => - array ( - 'pretty_version' => '2.0.31', - 'version' => '2.0.31.0', - 'aliases' => - array ( - ), - 'reference' => '233a920cb38636a43b18d428f9a8db1f0a1a08f4', - ), - 'pimple/pimple' => - array ( - 'pretty_version' => 'v3.4.0', - 'version' => '3.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '86406047271859ffc13424a048541f4531f53601', - ), - 'psr/container' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '8622567409010282b7aeebe4bb841fe98b58dcaf', - ), - 'psr/event-dispatcher' => - array ( - 'pretty_version' => '1.0.0', - 'version' => '1.0.0.0', - 'aliases' => - array ( - ), - 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0', - ), - 'psr/event-dispatcher-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/http-client' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '2dfb5f6c5eff0e91e20e913f8c5452ed95b86621', - ), - 'psr/http-client-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/http-factory' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '12ac7fcd07e5b077433f5f2bee95b3a771bf61be', - ), - 'psr/http-message' => - array ( - 'pretty_version' => '1.0.1', - 'version' => '1.0.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363', - ), - 'psr/http-message-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'psr/log' => - array ( - 'pretty_version' => '1.1.3', - 'version' => '1.1.3.0', - 'aliases' => - array ( - ), - 'reference' => '0f73288fd15629204f9d42b7055f72dacbe811fc', - ), - 'psr/log-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0', - ), - ), - 'punic/calendar' => - array ( - 'replaced' => - array ( - 0 => '*', - ), - ), - 'punic/common' => - array ( - 'replaced' => - array ( - 0 => '*', - ), - ), - 'punic/punic' => - array ( - 'pretty_version' => '1.6.5', - 'version' => '1.6.5.0', - 'aliases' => - array ( - ), - 'reference' => '7bc85ce1137cf52db4d2a6298256a4c4a24da99a', - ), - 'ralouphie/getallheaders' => - array ( - 'pretty_version' => '3.0.3', - 'version' => '3.0.3.0', - 'aliases' => - array ( - ), - 'reference' => '120b605dfeb996808c31b6477290a714d356e822', - ), - 'ramsey/collection' => - array ( - 'pretty_version' => '1.1.1', - 'version' => '1.1.1.0', - 'aliases' => - array ( - ), - 'reference' => '24d93aefb2cd786b7edd9f45b554aea20b28b9b1', - ), - 'ramsey/uuid' => - array ( - 'pretty_version' => '4.1.1', - 'version' => '4.1.1.0', - 'aliases' => - array ( - ), - 'reference' => 'cd4032040a750077205918c86049aa0f43d22947', - ), - 'rhumsaa/uuid' => - array ( - 'replaced' => - array ( - 0 => '4.1.1', - ), - ), - 'rsky/pear-core-min' => - array ( - 'replaced' => - array ( - 0 => 'v1.10.10', - ), - ), - 'sabre/dav' => - array ( - 'pretty_version' => '4.1.5', - 'version' => '4.1.5.0', - 'aliases' => - array ( - ), - 'reference' => 'c1afdc77a95efea6ee40c03c45f57c3c0c80ec22', - ), - 'sabre/event' => - array ( - 'pretty_version' => '5.1.2', - 'version' => '5.1.2.0', - 'aliases' => - array ( - ), - 'reference' => 'c120bec57c17b6251a496efc82b732418b49d50a', - ), - 'sabre/http' => - array ( - 'pretty_version' => '5.1.1', - 'version' => '5.1.1.0', - 'aliases' => - array ( - ), - 'reference' => 'd0aafede6961df6195ce7a8dad49296b0aaee22e', - ), - 'sabre/uri' => - array ( - 'pretty_version' => '2.2.1', - 'version' => '2.2.1.0', - 'aliases' => - array ( - ), - 'reference' => 'f502edffafea8d746825bd5f0b923a60fd2715ff', - ), - 'sabre/vobject' => - array ( - 'pretty_version' => '4.3.5', - 'version' => '4.3.5.0', - 'aliases' => - array ( - ), - 'reference' => 'd8a0a9ae215a8acfb51afc29101c7344670b9c83', - ), - 'sabre/xml' => - array ( - 'pretty_version' => '2.2.3', - 'version' => '2.2.3.0', - 'aliases' => - array ( - ), - 'reference' => 'c3b959f821c19b36952ec4a595edd695c216bfc6', - ), - 'scssphp/scssphp' => - array ( - 'pretty_version' => 'v1.4.1', - 'version' => '1.4.1.0', - 'aliases' => - array ( - ), - 'reference' => 'ba86c963b94ec7ebd6e19d90cdab90d89667dbf7', - ), - 'spomky-labs/base64url' => - array ( - 'pretty_version' => 'v2.0.4', - 'version' => '2.0.4.0', - 'aliases' => - array ( - ), - 'reference' => '7752ce931ec285da4ed1f4c5aa27e45e097be61d', - ), - 'spomky-labs/cbor-php' => - array ( - 'pretty_version' => 'v2.0.1', - 'version' => '2.0.1.0', - 'aliases' => - array ( - ), - 'reference' => '9776578000be884cd7864eeb7c37a4ac92d8c995', - ), - 'stecman/symfony-console-completion' => - array ( - 'pretty_version' => '0.11.0', - 'version' => '0.11.0.0', - 'aliases' => - array ( - ), - 'reference' => 'a9502dab59405e275a9f264536c4e1cb61fc3518', - ), - 'swiftmailer/swiftmailer' => - array ( - 'pretty_version' => 'v6.2.5', - 'version' => '6.2.5.0', - 'aliases' => - array ( - ), - 'reference' => '698a6a9f54d7eb321274de3ad19863802c879fb7', - ), - 'symfony/console' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => 'a62acecdf5b50e314a4f305cd01b5282126f3095', - ), - 'symfony/event-dispatcher' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => '047773e7016e4fd45102cedf4bd2558ae0d0c32f', - ), - 'symfony/event-dispatcher-contracts' => - array ( - 'pretty_version' => 'v1.1.9', - 'version' => '1.1.9.0', - 'aliases' => - array ( - ), - 'reference' => '84e23fdcd2517bf37aecbd16967e83f0caee25a7', - ), - 'symfony/event-dispatcher-implementation' => - array ( - 'provided' => - array ( - 0 => '1.1', - ), - ), - 'symfony/polyfill-ctype' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '46cd95797e9df938fdd2b03693b5fca5e64b01ce', - ), - 'symfony/polyfill-iconv' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '63b5bb7db83e5673936d6e3b8b3e022ff6474933', - ), - 'symfony/polyfill-intl-grapheme' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '24b72c6baa32c746a4d0840147c9715e42bb68ab', - ), - 'symfony/polyfill-intl-idn' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '65bd267525e82759e7d8c4e8ceea44f398838e65', - ), - 'symfony/polyfill-intl-normalizer' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '8590a5f561694770bdcd3f9b5c69dde6945028e8', - ), - 'symfony/polyfill-mbstring' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '2df51500adbaebdc4c38dea4c89a2e131c45c8a1', - ), - 'symfony/polyfill-php72' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => '9a142215a36a3888e30d0a9eeea9766764e96976', - ), - 'symfony/polyfill-php73' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'fba8933c384d6476ab14fb7b8526e5287ca7e010', - ), - 'symfony/polyfill-php80' => - array ( - 'pretty_version' => 'v1.23.0', - 'version' => '1.23.0.0', - 'aliases' => - array ( - ), - 'reference' => 'eca0bf41ed421bed1b57c4958bab16aa86b757d0', - ), - 'symfony/process' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => 'cd61e6dd273975c6625316de9d141ebd197f93c9', - ), - 'symfony/routing' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => '3a3c2f197ad0846ac6413225fc78868ba1c61434', - ), - 'symfony/service-contracts' => - array ( - 'pretty_version' => 'v2.4.0', - 'version' => '2.4.0.0', - 'aliases' => - array ( - ), - 'reference' => 'f040a30e04b57fbcc9c6cbcf4dbaa96bd318b9bb', - ), - 'symfony/translation' => - array ( - 'pretty_version' => 'v4.4.25', - 'version' => '4.4.25.0', - 'aliases' => - array ( - ), - 'reference' => 'dfe132c5c6d89f90ce7f961742cc532e9ca16dd4', - ), - 'symfony/translation-contracts' => - array ( - 'pretty_version' => 'v2.4.0', - 'version' => '2.4.0.0', - 'aliases' => - array ( - ), - 'reference' => '95c812666f3e91db75385749fe219c5e494c7f95', - ), - 'symfony/translation-implementation' => - array ( - 'provided' => - array ( - 0 => '1.0|2.0', - ), - ), - 'thecodingmachine/safe' => - array ( - 'pretty_version' => 'v1.3.3', - 'version' => '1.3.3.0', - 'aliases' => - array ( - ), - 'reference' => 'a8ab0876305a4cdaef31b2350fcb9811b5608dbc', - ), - 'web-auth/cose-lib' => - array ( - 'pretty_version' => 'v3.3.1', - 'version' => '3.3.1.0', - 'aliases' => - array ( - ), - 'reference' => 'eea6fae63ff5c81bf98c115b1be5f38a69682c16', - ), - 'web-auth/metadata-service' => - array ( - 'pretty_version' => 'v3.3.1', - 'version' => '3.3.1.0', - 'aliases' => - array ( - ), - 'reference' => '8488d3a832a38cc81c670fce05de1e515c6e64b1', - ), - 'web-auth/webauthn-lib' => - array ( - 'pretty_version' => 'v3.3.1', - 'version' => '3.3.1.0', - 'aliases' => - array ( - ), - 'reference' => 'e411527a41c1013512fccdfce61681eb36484c77', - ), - ), ); diff --git a/composer/package-versions-deprecated/src/PackageVersions/Versions.php b/composer/package-versions-deprecated/src/PackageVersions/Versions.php index 0bea0bad8..4f6a80a87 100644 --- a/composer/package-versions-deprecated/src/PackageVersions/Versions.php +++ b/composer/package-versions-deprecated/src/PackageVersions/Versions.php @@ -49,9 +49,9 @@ final class Versions 'fgrosse/phpasn1' => 'v2.2.0@d1978f7abd580f3fc33561e7f71d4c12c7531fad', 'giggsey/libphonenumber-for-php' => '8.12.24@bbefdd7ff0bae7bf5a62fc9e8c939fb40dd6d638', 'giggsey/locale' => '1.9@b07f1eace8072ccc61445ad8fbd493ff9d783043', - 'guzzlehttp/guzzle' => '7.2.0@0aa74dfb41ae110835923ef10a9d803a22d50e79', - 'guzzlehttp/promises' => '1.4.0@60d379c243457e073cff02bc323a2a86cb355631', - 'guzzlehttp/psr7' => '1.7.0@53330f47520498c0ae1f61f7e2c90f55690c06a3', + 'guzzlehttp/guzzle' => '7.3.0@7008573787b430c1c1f650e3722d9bba59967628', + 'guzzlehttp/promises' => '1.4.1@8e7d04f1f6450fef59366c399cfad4b9383aa30d', + 'guzzlehttp/psr7' => '1.8.2@dc960a912984efb74d0a90222870c72c87f10c91', 'guzzlehttp/uri-template' => 'v0.2.0@db46525d6d8fee71033b73cc07160f3e5271a8ce', 'icewind/searchdav' => 'v2.0.0@c69806d900c2c9a5954bfabc80178d6eb0d63df4', 'icewind/streams' => 'v0.7.4@93bce472202d36d9808c30eaa52a1dc72b39e04c', @@ -120,7 +120,7 @@ final class Versions 'web-auth/cose-lib' => 'v3.3.1@eea6fae63ff5c81bf98c115b1be5f38a69682c16', 'web-auth/metadata-service' => 'v3.3.1@8488d3a832a38cc81c670fce05de1e515c6e64b1', 'web-auth/webauthn-lib' => 'v3.3.1@e411527a41c1013512fccdfce61681eb36484c77', - 'nextcloud/3rdparty' => 'dev-master@fa2370cb3b5ec72666bc8e8de2e6ec08e8cf96c5', + 'nextcloud/3rdparty' => 'dev-master@66c8387d49d488de71659890c3fe2d0c940c0f0f', ); private function __construct() diff --git a/guzzlehttp/guzzle/src/Client.php b/guzzlehttp/guzzle/src/Client.php index a27142b53..7349ec05f 100644 --- a/guzzlehttp/guzzle/src/Client.php +++ b/guzzlehttp/guzzle/src/Client.php @@ -204,7 +204,7 @@ public function getConfig(?string $option = null) { return $option === null ? $this->config - : (isset($this->config[$option]) ? $this->config[$option] : null); + : ($this->config[$option] ?? null); } private function buildUri(UriInterface $uri, array $config): UriInterface diff --git a/guzzlehttp/guzzle/src/Handler/CurlFactory.php b/guzzlehttp/guzzle/src/Handler/CurlFactory.php index b3f52975d..36d478ae9 100644 --- a/guzzlehttp/guzzle/src/Handler/CurlFactory.php +++ b/guzzlehttp/guzzle/src/Handler/CurlFactory.php @@ -393,11 +393,11 @@ private function applyHandlerOptions(EasyHandle $easy, array &$conf): void if (!isset($options['sink'])) { // Use a default temp stream if no sink was set. - $options['sink'] = \fopen('php://temp', 'w+'); + $options['sink'] = \GuzzleHttp\Psr7\Utils::tryFopen('php://temp', 'w+'); } $sink = $options['sink']; if (!\is_string($sink)) { - $sink = \GuzzleHttp\Psr7\stream_for($sink); + $sink = \GuzzleHttp\Psr7\Utils::streamFor($sink); } elseif (!\is_dir(\dirname($sink))) { // Ensure that the directory exists before failing in curl. throw new \RuntimeException(\sprintf('Directory %s does not exist for sink value of %s', \dirname($sink), $sink)); @@ -456,6 +456,12 @@ private function applyHandlerOptions(EasyHandle $easy, array &$conf): void if (!\file_exists($cert)) { throw new \InvalidArgumentException("SSL certificate not found: {$cert}"); } + # OpenSSL (versions 0.9.3 and later) also support "P12" for PKCS#12-encoded files. + # see https://curl.se/libcurl/c/CURLOPT_SSLCERTTYPE.html + $ext = pathinfo($cert, \PATHINFO_EXTENSION); + if (preg_match('#^(der|p12)$#i', $ext)) { + $conf[\CURLOPT_SSLCERTTYPE] = strtoupper($ext); + } $conf[\CURLOPT_SSLCERT] = $cert; } diff --git a/guzzlehttp/guzzle/src/Handler/EasyHandle.php b/guzzlehttp/guzzle/src/Handler/EasyHandle.php index a68c62f08..224344d7c 100644 --- a/guzzlehttp/guzzle/src/Handler/EasyHandle.php +++ b/guzzlehttp/guzzle/src/Handler/EasyHandle.php @@ -63,17 +63,13 @@ final class EasyHandle /** * Attach a response to the easy handle based on the received headers. * - * @throws \RuntimeException if no headers have been received. + * @throws \RuntimeException if no headers have been received or the first + * header line is invalid. */ public function createResponse(): void { - if (empty($this->headers)) { - throw new \RuntimeException('No headers have been received'); - } + [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($this->headers); - // HTTP-version SP status-code SP reason-phrase - $startLine = \explode(' ', \array_shift($this->headers), 3); - $headers = Utils::headersFromLines($this->headers); $normalizedKeys = Utils::normalizeHeaderKeys($headers); if (!empty($this->options['decode_content']) && isset($normalizedKeys['content-encoding'])) { @@ -91,15 +87,13 @@ public function createResponse(): void } } - $statusCode = (int) $startLine[1]; - // Attach a response to the easy handle with the parsed headers. $this->response = new Response( - $statusCode, + $status, $headers, $this->sink, - \substr($startLine[0], 5), - isset($startLine[2]) ? (string) $startLine[2] : null + $ver, + $reason ); } diff --git a/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php b/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php new file mode 100644 index 000000000..a0988845f --- /dev/null +++ b/guzzlehttp/guzzle/src/Handler/HeaderProcessor.php @@ -0,0 +1,42 @@ +lastHeaders; $this->lastHeaders = []; - $parts = \explode(' ', \array_shift($hdrs), 3); - $ver = \explode('/', $parts[0])[1]; - $status = (int) $parts[1]; - $reason = $parts[2] ?? null; - $headers = Utils::headersFromLines($hdrs); + + try { + [$ver, $status, $reason, $headers] = HeaderProcessor::parseHeaders($hdrs); + } catch (\Exception $e) { + return P\Create::rejectionFor( + new RequestException('An error was encountered while creating the response', $request, null, $e) + ); + } + [$stream, $headers] = $this->checkDecode($options, $headers, $stream); $stream = Psr7\Utils::streamFor($stream); $sink = $stream; @@ -112,15 +116,21 @@ private function createResponse(RequestInterface $request, array $options, $stre $sink = $this->createSink($stream, $options); } - $response = new Psr7\Response($status, $headers, $sink, $ver, $reason); + try { + $response = new Psr7\Response($status, $headers, $sink, $ver, $reason); + } catch (\Exception $e) { + return P\Create::rejectionFor( + new RequestException('An error was encountered while creating the response', $request, null, $e) + ); + } if (isset($options['on_headers'])) { try { $options['on_headers']($response); } catch (\Exception $e) { - $msg = 'An error was encountered during the on_headers event'; - $ex = new RequestException($msg, $request, $response, $e); - return P\Create::rejectionFor($ex); + return P\Create::rejectionFor( + new RequestException('An error was encountered during the on_headers event', $request, $response, $e) + ); } } @@ -141,7 +151,7 @@ private function createSink(StreamInterface $stream, array $options): StreamInte return $stream; } - $sink = $options['sink'] ?? \fopen('php://temp', 'r+'); + $sink = $options['sink'] ?? Psr7\Utils::tryFopen('php://temp', 'r+'); return \is_string($sink) ? new Psr7\LazyOpenStream($sink, 'w+') : Psr7\Utils::streamFor($sink); } @@ -304,7 +314,7 @@ static function () use ($context, $params) { return $this->createResource( function () use ($uri, &$http_response_header, $contextResource, $context, $options, $request) { - $resource = \fopen((string) $uri, 'r', false, $contextResource); + $resource = @\fopen((string) $uri, 'r', false, $contextResource); $this->lastHeaders = $http_response_header; if (false === $resource) { @@ -386,16 +396,60 @@ private function getDefaultContext(RequestInterface $request): array */ private function add_proxy(RequestInterface $request, array &$options, $value, array &$params): void { + $uri = null; + if (!\is_array($value)) { - $options['http']['proxy'] = $value; + $uri = $value; } else { $scheme = $request->getUri()->getScheme(); if (isset($value[$scheme])) { if (!isset($value['no']) || !Utils::isHostInNoProxy($request->getUri()->getHost(), $value['no'])) { - $options['http']['proxy'] = $value[$scheme]; + $uri = $value[$scheme]; + } + } + } + + if (!$uri) { + return; + } + + $parsed = $this->parse_proxy($uri); + $options['http']['proxy'] = $parsed['proxy']; + + if ($parsed['auth']) { + if (!isset($options['http']['header'])) { + $options['http']['header'] = []; + } + $options['http']['header'] .= "\r\nProxy-Authorization: {$parsed['auth']}"; + } + } + + /** + * Parses the given proxy URL to make it compatible with the format PHP's stream context expects. + */ + private function parse_proxy(string $url): array + { + $parsed = \parse_url($url); + + if ($parsed !== false && isset($parsed['scheme']) && $parsed['scheme'] === 'http') { + if (isset($parsed['host']) && isset($parsed['port'])) { + $auth = null; + if (isset($parsed['user']) && isset($parsed['pass'])) { + $auth = \base64_encode("{$parsed['user']}:{$parsed['pass']}"); } + + return [ + 'proxy' => "tcp://{$parsed['host']}:{$parsed['port']}", + 'auth' => $auth ? "Basic {$auth}" : null, + ]; } } + + // Return proxy as-is. + return [ + 'proxy' => $url, + 'auth' => null, + ]; } /** diff --git a/guzzlehttp/guzzle/src/Middleware.php b/guzzlehttp/guzzle/src/Middleware.php index ae0c14e14..7035c77ff 100644 --- a/guzzlehttp/guzzle/src/Middleware.php +++ b/guzzlehttp/guzzle/src/Middleware.php @@ -47,7 +47,7 @@ static function (ResponseInterface $response) use ($cookieJar, $request): Respon /** * Middleware that throws exceptions for 4xx or 5xx responses when the - * "http_error" request option is set to true. + * "http_errors" request option is set to true. * * @param BodySummarizerInterface|null $bodySummarizer The body summarizer to use in exception messages. * diff --git a/guzzlehttp/guzzle/src/TransferStats.php b/guzzlehttp/guzzle/src/TransferStats.php index 7b46c2b56..93fa334c8 100644 --- a/guzzlehttp/guzzle/src/TransferStats.php +++ b/guzzlehttp/guzzle/src/TransferStats.php @@ -128,6 +128,6 @@ public function getHandlerStats(): array */ public function getHandlerStat(string $stat) { - return isset($this->handlerStats[$stat]) ? $this->handlerStats[$stat] : null; + return $this->handlerStats[$stat] ?? null; } } diff --git a/guzzlehttp/guzzle/src/Utils.php b/guzzlehttp/guzzle/src/Utils.php index f4848b74b..1e4e70462 100644 --- a/guzzlehttp/guzzle/src/Utils.php +++ b/guzzlehttp/guzzle/src/Utils.php @@ -71,12 +71,7 @@ public static function debugResource($value = null) return \STDOUT; } - $resource = \fopen('php://output', 'w'); - if (false === $resource) { - throw new \RuntimeException('Can not open php output for writing to debug the resource.'); - } - - return $resource; + return \GuzzleHttp\Psr7\Utils::tryFopen('php://output', 'w'); } /** @@ -232,7 +227,7 @@ public static function isHostInNoProxy(string $host, array $noProxyArray): bool // Strip port if present. if (\strpos($host, ':')) { /** @var string[] $hostParts will never be false because of the checks above */ - $hostParts = \explode($host, ':', 2); + $hostParts = \explode(':', $host, 2); $host = $hostParts[0]; } diff --git a/guzzlehttp/guzzle/vendor-bin/php-cs-fixer/composer.json b/guzzlehttp/guzzle/vendor-bin/php-cs-fixer/composer.json new file mode 100644 index 000000000..3adf5f5cf --- /dev/null +++ b/guzzlehttp/guzzle/vendor-bin/php-cs-fixer/composer.json @@ -0,0 +1,9 @@ +{ + "require": { + "php": "^7.2.5 || ^8.0", + "friendsofphp/php-cs-fixer": "2.18.3" + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/guzzlehttp/guzzle/vendor-bin/phpstan/composer.json b/guzzlehttp/guzzle/vendor-bin/phpstan/composer.json new file mode 100644 index 000000000..bfbc7273b --- /dev/null +++ b/guzzlehttp/guzzle/vendor-bin/phpstan/composer.json @@ -0,0 +1,10 @@ +{ + "require": { + "php": "^7.2.5 || ^8.0", + "phpstan/phpstan": "0.12.81", + "phpstan/phpstan-deprecation-rules": "0.12.6" + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/guzzlehttp/guzzle/vendor-bin/psalm/composer.json b/guzzlehttp/guzzle/vendor-bin/psalm/composer.json new file mode 100644 index 000000000..535a0797d --- /dev/null +++ b/guzzlehttp/guzzle/vendor-bin/psalm/composer.json @@ -0,0 +1,9 @@ +{ + "require": { + "php": "^7.2.5 || ^8.0", + "psalm/phar": "4.6.2" + }, + "config": { + "preferred-install": "dist" + } +} diff --git a/guzzlehttp/promises/CHANGELOG.md b/guzzlehttp/promises/CHANGELOG.md index 4b63b2c74..14796c472 100644 --- a/guzzlehttp/promises/CHANGELOG.md +++ b/guzzlehttp/promises/CHANGELOG.md @@ -1,5 +1,8 @@ # CHANGELOG +## 1.4.1 - 2021-02-18 + +- Fixed `each_limit` skipping promises and failing ## 1.4.0 - 2020-09-30 diff --git a/guzzlehttp/promises/psalm.xml b/guzzlehttp/promises/psalm.xml deleted file mode 100644 index 3e4e3d085..000000000 --- a/guzzlehttp/promises/psalm.xml +++ /dev/null @@ -1,15 +0,0 @@ - - - - - - - - - diff --git a/guzzlehttp/promises/src/EachPromise.php b/guzzlehttp/promises/src/EachPromise.php index fbb8876c7..748f4712c 100644 --- a/guzzlehttp/promises/src/EachPromise.php +++ b/guzzlehttp/promises/src/EachPromise.php @@ -10,6 +10,8 @@ class EachPromise implements PromisorInterface { private $pending = []; + private $nextPendingIndex = 0; + /** @var \Iterator|null */ private $iterable; @@ -121,6 +123,7 @@ private function createPromise() $clearFn = function () { $this->iterable = $this->concurrency = $this->pending = null; $this->onFulfilled = $this->onRejected = null; + $this->nextPendingIndex = 0; }; $this->aggregate->then($clearFn, $clearFn); @@ -163,11 +166,9 @@ private function addPending() $promise = Create::promiseFor($this->iterable->current()); $key = $this->iterable->key(); - // Iterable keys may not be unique, so we add the promises at the end - // of the pending array and retrieve the array index being used - $this->pending[] = null; - end($this->pending); - $idx = key($this->pending); + // Iterable keys may not be unique, so we use a counter to + // guarantee uniqueness + $idx = $this->nextPendingIndex++; $this->pending[$idx] = $promise->then( function ($value) use ($idx, $key) { diff --git a/guzzlehttp/psr7/CHANGELOG.md b/guzzlehttp/psr7/CHANGELOG.md index b441d3666..6a6b7bf98 100644 --- a/guzzlehttp/psr7/CHANGELOG.md +++ b/guzzlehttp/psr7/CHANGELOG.md @@ -7,9 +7,34 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html). -## [Unreleased] +## Unreleased -## [1.7.0] - 2020-09-30 +## 1.8.2 - 2021-04-26 + +### Fixed + +- Handle possibly unset `url` in `stream_get_meta_data` + +## 1.8.1 - 2021-03-21 + +### Fixed + +- Issue parsing IPv6 URLs +- Issue modifying ServerRequest lost all its attributes + +## 1.8.0 - 2021-03-21 + +### Added + +- Locale independent URL parsing +- Most classes got a `@final` annotation to prepare for 2.0 + +### Fixed + +- Issue when creating stream from `php://input` and curl-ext is not installed +- Broken `Utils::tryFopen()` on PHP 8 + +## 1.7.0 - 2020-09-30 ### Added @@ -253,7 +278,6 @@ Currently unsupported: -[Unreleased]: https://github.com/guzzle/psr7/compare/1.6.0...HEAD [1.6.0]: https://github.com/guzzle/psr7/compare/1.5.2...1.6.0 [1.5.2]: https://github.com/guzzle/psr7/compare/1.5.1...1.5.2 [1.5.1]: https://github.com/guzzle/psr7/compare/1.5.0...1.5.1 diff --git a/guzzlehttp/psr7/src/AppendStream.php b/guzzlehttp/psr7/src/AppendStream.php index 86e7a23ba..fa9153d78 100644 --- a/guzzlehttp/psr7/src/AppendStream.php +++ b/guzzlehttp/psr7/src/AppendStream.php @@ -8,6 +8,8 @@ * Reads from multiple streams, one after the other. * * This is a read-only stream decorator. + * + * @final */ class AppendStream implements StreamInterface { diff --git a/guzzlehttp/psr7/src/BufferStream.php b/guzzlehttp/psr7/src/BufferStream.php index 627e4a5f1..783859c19 100644 --- a/guzzlehttp/psr7/src/BufferStream.php +++ b/guzzlehttp/psr7/src/BufferStream.php @@ -11,6 +11,8 @@ * This stream returns a "hwm" metadata value that tells upstream consumers * what the configured high water mark of the stream is, or the maximum * preferred size of the buffer. + * + * @final */ class BufferStream implements StreamInterface { diff --git a/guzzlehttp/psr7/src/CachingStream.php b/guzzlehttp/psr7/src/CachingStream.php index 244d2a063..fe749e981 100644 --- a/guzzlehttp/psr7/src/CachingStream.php +++ b/guzzlehttp/psr7/src/CachingStream.php @@ -7,6 +7,8 @@ /** * Stream decorator that can cache previously read bytes from a sequentially * read stream. + * + * @final */ class CachingStream implements StreamInterface { @@ -21,7 +23,7 @@ class CachingStream implements StreamInterface /** * We will treat the buffer object as the body of the stream * - * @param StreamInterface $stream Stream to cache + * @param StreamInterface $stream Stream to cache. The cursor is assumed to be at the beginning of the stream. * @param StreamInterface $target Optionally specify where data is cached */ public function __construct( @@ -29,7 +31,7 @@ public function __construct( StreamInterface $target = null ) { $this->remoteStream = $stream; - $this->stream = $target ?: new Stream(fopen('php://temp', 'r+')); + $this->stream = $target ?: new Stream(Utils::tryFopen('php://temp', 'r+')); } public function getSize() diff --git a/guzzlehttp/psr7/src/DroppingStream.php b/guzzlehttp/psr7/src/DroppingStream.php index e125642d3..9f7420c40 100644 --- a/guzzlehttp/psr7/src/DroppingStream.php +++ b/guzzlehttp/psr7/src/DroppingStream.php @@ -7,6 +7,8 @@ /** * Stream decorator that begins dropping data once the size of the underlying * stream becomes too full. + * + * @final */ class DroppingStream implements StreamInterface { diff --git a/guzzlehttp/psr7/src/FnStream.php b/guzzlehttp/psr7/src/FnStream.php index 407577a37..76a8cc7ba 100644 --- a/guzzlehttp/psr7/src/FnStream.php +++ b/guzzlehttp/psr7/src/FnStream.php @@ -9,6 +9,8 @@ * * Allows for easy testing and extension of a provided stream without needing * to create a concrete class for a simple extension point. + * + * @final */ class FnStream implements StreamInterface { @@ -56,6 +58,7 @@ public function __destruct() /** * An unserialize would allow the __destruct to run when the unserialized value goes out of scope. + * * @throws \LogicException */ public function __wakeup() diff --git a/guzzlehttp/psr7/src/InflateStream.php b/guzzlehttp/psr7/src/InflateStream.php index c98b96f25..0cbd2cce2 100644 --- a/guzzlehttp/psr7/src/InflateStream.php +++ b/guzzlehttp/psr7/src/InflateStream.php @@ -14,6 +14,8 @@ * * @link http://tools.ietf.org/html/rfc1952 * @link http://php.net/manual/en/filters.compression.php + * + * @final */ class InflateStream implements StreamInterface { @@ -34,6 +36,7 @@ public function __construct(StreamInterface $stream) /** * @param StreamInterface $stream * @param $header + * * @return int */ private function getLengthOfPossibleFilenameHeader(StreamInterface $stream, $header) diff --git a/guzzlehttp/psr7/src/LazyOpenStream.php b/guzzlehttp/psr7/src/LazyOpenStream.php index 13c7af5c8..911e127d3 100644 --- a/guzzlehttp/psr7/src/LazyOpenStream.php +++ b/guzzlehttp/psr7/src/LazyOpenStream.php @@ -7,6 +7,8 @@ /** * Lazily reads or writes to a file that is opened only after an IO operation * take place on the stream. + * + * @final */ class LazyOpenStream implements StreamInterface { @@ -15,7 +17,7 @@ class LazyOpenStream implements StreamInterface /** @var string File to open */ private $filename; - /** @var string $mode */ + /** @var string */ private $mode; /** diff --git a/guzzlehttp/psr7/src/LimitStream.php b/guzzlehttp/psr7/src/LimitStream.php index bef9161ea..1173ec40d 100644 --- a/guzzlehttp/psr7/src/LimitStream.php +++ b/guzzlehttp/psr7/src/LimitStream.php @@ -4,9 +4,10 @@ use Psr\Http\Message\StreamInterface; - /** - * Decorator used to return only a subset of a stream + * Decorator used to return only a subset of a stream. + * + * @final */ class LimitStream implements StreamInterface { diff --git a/guzzlehttp/psr7/src/MultipartStream.php b/guzzlehttp/psr7/src/MultipartStream.php index 0cbfea35d..5a6079a89 100644 --- a/guzzlehttp/psr7/src/MultipartStream.php +++ b/guzzlehttp/psr7/src/MultipartStream.php @@ -7,6 +7,8 @@ /** * Stream that when read returns bytes for a streaming multipart or * multipart/form-data stream. + * + * @final */ class MultipartStream implements StreamInterface { @@ -115,9 +117,11 @@ private function createElement($name, StreamInterface $stream, $filename, array $disposition = $this->getHeader($headers, 'content-disposition'); if (!$disposition) { $headers['Content-Disposition'] = ($filename === '0' || $filename) - ? sprintf('form-data; name="%s"; filename="%s"', + ? sprintf( + 'form-data; name="%s"; filename="%s"', $name, - basename($filename)) + basename($filename) + ) : "form-data; name=\"{$name}\""; } diff --git a/guzzlehttp/psr7/src/NoSeekStream.php b/guzzlehttp/psr7/src/NoSeekStream.php index 4b04b4c0a..d66bdde46 100644 --- a/guzzlehttp/psr7/src/NoSeekStream.php +++ b/guzzlehttp/psr7/src/NoSeekStream.php @@ -5,7 +5,9 @@ use Psr\Http\Message\StreamInterface; /** - * Stream decorator that prevents a stream from being seeked + * Stream decorator that prevents a stream from being seeked. + * + * @final */ class NoSeekStream implements StreamInterface { diff --git a/guzzlehttp/psr7/src/PumpStream.php b/guzzlehttp/psr7/src/PumpStream.php index fbd8726b4..44c7b582c 100644 --- a/guzzlehttp/psr7/src/PumpStream.php +++ b/guzzlehttp/psr7/src/PumpStream.php @@ -13,6 +13,8 @@ * returned by the provided callable is buffered internally until drained using * the read() function of the PumpStream. The provided callable MUST return * false when there is no more data to read. + * + * @final */ class PumpStream implements StreamInterface { @@ -32,14 +34,14 @@ class PumpStream implements StreamInterface private $buffer; /** - * @param callable $source Source of the stream data. The callable MAY - * accept an integer argument used to control the - * amount of data to return. The callable MUST - * return a string when called, or false on error - * or EOF. - * @param array $options Stream options: - * - metadata: Hash of metadata to use with stream. - * - size: Size of the stream, if known. + * @param callable $source Source of the stream data. The callable MAY + * accept an integer argument used to control the + * amount of data to return. The callable MUST + * return a string when called, or false on error + * or EOF. + * @param array $options Stream options: + * - metadata: Hash of metadata to use with stream. + * - size: Size of the stream, if known. */ public function __construct(callable $source, array $options = []) { diff --git a/guzzlehttp/psr7/src/Query.php b/guzzlehttp/psr7/src/Query.php index 99e093050..5a7cc0359 100644 --- a/guzzlehttp/psr7/src/Query.php +++ b/guzzlehttp/psr7/src/Query.php @@ -34,7 +34,9 @@ public static function parse($str, $urlEncoding = true) } elseif ($urlEncoding === PHP_QUERY_RFC1738) { $decoder = 'urldecode'; } else { - $decoder = function ($str) { return $str; }; + $decoder = function ($str) { + return $str; + }; } foreach (explode('&', $str) as $kvp) { @@ -65,6 +67,7 @@ public static function parse($str, $urlEncoding = true) * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 * to encode using RFC3986, or PHP_QUERY_RFC1738 * to encode using RFC1738. + * * @return string */ public static function build(array $params, $encoding = PHP_QUERY_RFC3986) @@ -74,7 +77,9 @@ public static function build(array $params, $encoding = PHP_QUERY_RFC3986) } if ($encoding === false) { - $encoder = function ($str) { return $str; }; + $encoder = function ($str) { + return $str; + }; } elseif ($encoding === PHP_QUERY_RFC3986) { $encoder = 'rawurlencode'; } elseif ($encoding === PHP_QUERY_RFC1738) { diff --git a/guzzlehttp/psr7/src/Request.php b/guzzlehttp/psr7/src/Request.php index 89fbb1e62..c1cdaebff 100644 --- a/guzzlehttp/psr7/src/Request.php +++ b/guzzlehttp/psr7/src/Request.php @@ -17,7 +17,7 @@ class Request implements RequestInterface /** @var string */ private $method; - /** @var null|string */ + /** @var string|null */ private $requestTarget; /** @var UriInterface */ @@ -27,7 +27,7 @@ class Request implements RequestInterface * @param string $method HTTP method * @param string|UriInterface $uri URI * @param array $headers Request headers - * @param string|null|resource|StreamInterface $body Request body + * @param string|resource|StreamInterface|null $body Request body * @param string $version Protocol version */ public function __construct( diff --git a/guzzlehttp/psr7/src/Response.php b/guzzlehttp/psr7/src/Response.php index 36b85fb78..8c01a0f5a 100644 --- a/guzzlehttp/psr7/src/Response.php +++ b/guzzlehttp/psr7/src/Response.php @@ -83,7 +83,7 @@ class Response implements ResponseInterface /** * @param int $status Status code * @param array $headers Response headers - * @param string|null|resource|StreamInterface $body Response body + * @param string|resource|StreamInterface|null $body Response body * @param string $version Protocol version * @param string|null $reason Reason phrase (when empty a default will be used based on the status code) */ diff --git a/guzzlehttp/psr7/src/Rfc7230.php b/guzzlehttp/psr7/src/Rfc7230.php index 505e4742b..51b571f24 100644 --- a/guzzlehttp/psr7/src/Rfc7230.php +++ b/guzzlehttp/psr7/src/Rfc7230.php @@ -11,6 +11,7 @@ final class Rfc7230 * Note: header delimiter (\r\n) is modified to \r?\n to accept line feed only delimiters for BC reasons. * * @link https://github.com/amphp/http/blob/v1.0.1/src/Rfc7230.php#L12-L15 + * * @license https://github.com/amphp/http/blob/v1.0.1/LICENSE */ const HEADER_REGEX = "(^([^()<>@,;:\\\"/[\]?={}\x01-\x20\x7F]++):[ \t]*+((?:[ \t]*+[\x21-\x7E\x80-\xFF]++)*+)[ \t]*+\r?\n)m"; diff --git a/guzzlehttp/psr7/src/ServerRequest.php b/guzzlehttp/psr7/src/ServerRequest.php index 72c5566cf..e6d26f5ff 100644 --- a/guzzlehttp/psr7/src/ServerRequest.php +++ b/guzzlehttp/psr7/src/ServerRequest.php @@ -4,9 +4,9 @@ use InvalidArgumentException; use Psr\Http\Message\ServerRequestInterface; -use Psr\Http\Message\UriInterface; use Psr\Http\Message\StreamInterface; use Psr\Http\Message\UploadedFileInterface; +use Psr\Http\Message\UriInterface; /** * Server-side HTTP request @@ -35,7 +35,7 @@ class ServerRequest extends Request implements ServerRequestInterface private $cookieParams = []; /** - * @var null|array|object + * @var array|object|null */ private $parsedBody; @@ -58,7 +58,7 @@ class ServerRequest extends Request implements ServerRequestInterface * @param string $method HTTP method * @param string|UriInterface $uri URI * @param array $headers Request headers - * @param string|null|resource|StreamInterface $body Request body + * @param string|resource|StreamInterface|null $body Request body * @param string $version Protocol version * @param array $serverParams Typically the $_SERVER superglobal */ @@ -111,6 +111,7 @@ public static function normalizeFiles(array $files) * delegate to normalizeNestedFileSpec() and return that return value. * * @param array $value $_FILES struct + * * @return array|UploadedFileInterface */ private static function createUploadedFileFromSpec(array $value) @@ -135,6 +136,7 @@ private static function createUploadedFileFromSpec(array $value) * UploadedFileInterface instances. * * @param array $files + * * @return UploadedFileInterface[] */ private static function normalizeNestedFileSpec(array $files = []) @@ -184,7 +186,7 @@ public static function fromGlobals() private static function extractHostAndPortFromAuthority($authority) { - $uri = 'http://'.$authority; + $uri = 'http://' . $authority; $parts = parse_url($uri); if (false === $parts) { return [null, null]; @@ -245,7 +247,6 @@ public static function getUriFromGlobals() return $uri; } - /** * {@inheritdoc} */ diff --git a/guzzlehttp/psr7/src/StreamDecoratorTrait.php b/guzzlehttp/psr7/src/StreamDecoratorTrait.php index 093023b1c..5025dd67b 100644 --- a/guzzlehttp/psr7/src/StreamDecoratorTrait.php +++ b/guzzlehttp/psr7/src/StreamDecoratorTrait.php @@ -6,6 +6,7 @@ /** * Stream decorator trait + * * @property StreamInterface stream */ trait StreamDecoratorTrait diff --git a/guzzlehttp/psr7/src/StreamWrapper.php b/guzzlehttp/psr7/src/StreamWrapper.php index eac653539..fc7cb969b 100644 --- a/guzzlehttp/psr7/src/StreamWrapper.php +++ b/guzzlehttp/psr7/src/StreamWrapper.php @@ -6,6 +6,8 @@ /** * Converts Guzzle streams into PHP stream resources. + * + * @final */ class StreamWrapper { diff --git a/guzzlehttp/psr7/src/UploadedFile.php b/guzzlehttp/psr7/src/UploadedFile.php index a0ea59e09..bf342c4de 100644 --- a/guzzlehttp/psr7/src/UploadedFile.php +++ b/guzzlehttp/psr7/src/UploadedFile.php @@ -39,7 +39,7 @@ class UploadedFile implements UploadedFileInterface private $error; /** - * @var null|string + * @var string|null */ private $file; @@ -60,10 +60,10 @@ class UploadedFile implements UploadedFileInterface /** * @param StreamInterface|string|resource $streamOrFile - * @param int $size - * @param int $errorStatus - * @param string|null $clientFilename - * @param string|null $clientMediaType + * @param int $size + * @param int $errorStatus + * @param string|null $clientFilename + * @param string|null $clientMediaType */ public function __construct( $streamOrFile, @@ -144,7 +144,8 @@ private function setSize($size) /** * @param mixed $param - * @return boolean + * + * @return bool */ private function isStringOrNull($param) { @@ -153,7 +154,8 @@ private function isStringOrNull($param) /** * @param mixed $param - * @return boolean + * + * @return bool */ private function isStringNotEmpty($param) { @@ -195,7 +197,7 @@ private function setClientMediaType($clientMediaType) /** * Return true if there is no upload error * - * @return boolean + * @return bool */ private function isOk() { @@ -203,7 +205,7 @@ private function isOk() } /** - * @return boolean + * @return bool */ public function isMoved() { @@ -248,10 +250,10 @@ public function getStream() * * @param string $targetPath Path to which to move the uploaded file. * - * @throws RuntimeException if the upload was not successful. + * @throws RuntimeException if the upload was not successful. * @throws InvalidArgumentException if the $path specified is invalid. - * @throws RuntimeException on any error during the move operation, or on - * the second or subsequent call to the method. + * @throws RuntimeException on any error during the move operation, or on + * the second or subsequent call to the method. */ public function moveTo($targetPath) { @@ -297,6 +299,7 @@ public function getSize() * {@inheritdoc} * * @see http://php.net/manual/en/features.file-upload.errors.php + * * @return int One of PHP's UPLOAD_ERR_XXX constants. */ public function getError() @@ -308,7 +311,7 @@ public function getError() * {@inheritdoc} * * @return string|null The filename sent by the client or null if none - * was provided. + * was provided. */ public function getClientFilename() { diff --git a/guzzlehttp/psr7/src/Uri.php b/guzzlehttp/psr7/src/Uri.php index a0d73917e..0f9f020d3 100644 --- a/guzzlehttp/psr7/src/Uri.php +++ b/guzzlehttp/psr7/src/Uri.php @@ -67,7 +67,7 @@ public function __construct($uri = '') { // weak type check to also accept null until we can add scalar type hints if ($uri != '') { - $parts = parse_url($uri); + $parts = self::parse($uri); if ($parts === false) { throw new \InvalidArgumentException("Unable to parse URI: $uri"); } @@ -75,6 +75,49 @@ public function __construct($uri = '') } } + /** + * UTF-8 aware \parse_url() replacement. + * + * The internal function produces broken output for non ASCII domain names + * (IDN) when used with locales other than "C". + * + * On the other hand, cURL understands IDN correctly only when UTF-8 locale + * is configured ("C.UTF-8", "en_US.UTF-8", etc.). + * + * @see https://bugs.php.net/bug.php?id=52923 + * @see https://www.php.net/manual/en/function.parse-url.php#114817 + * @see https://curl.haxx.se/libcurl/c/CURLOPT_URL.html#ENCODING + * + * @param string $url + * + * @return array|false + */ + private static function parse($url) + { + // If IPv6 + $prefix = ''; + if (preg_match('%^(.*://\[[0-9:a-f]+\])(.*?)$%', $url, $matches)) { + $prefix = $matches[1]; + $url = $matches[2]; + } + + $encodedUrl = preg_replace_callback( + '%[^:/@?&=#]+%usD', + static function ($matches) { + return urlencode($matches[0]); + }, + $url + ); + + $result = parse_url($prefix . $encodedUrl); + + if ($result === false) { + return false; + } + + return array_map('urldecode', $result); + } + public function __toString() { return self::composeComponents( @@ -167,6 +210,7 @@ public static function isDefaultPort(UriInterface $uri) * @param UriInterface $uri * * @return bool + * * @see Uri::isNetworkPathReference * @see Uri::isAbsolutePathReference * @see Uri::isRelativePathReference @@ -185,6 +229,7 @@ public static function isAbsolute(UriInterface $uri) * @param UriInterface $uri * * @return bool + * * @link https://tools.ietf.org/html/rfc3986#section-4.2 */ public static function isNetworkPathReference(UriInterface $uri) @@ -200,6 +245,7 @@ public static function isNetworkPathReference(UriInterface $uri) * @param UriInterface $uri * * @return bool + * * @link https://tools.ietf.org/html/rfc3986#section-4.2 */ public static function isAbsolutePathReference(UriInterface $uri) @@ -218,6 +264,7 @@ public static function isAbsolutePathReference(UriInterface $uri) * @param UriInterface $uri * * @return bool + * * @link https://tools.ietf.org/html/rfc3986#section-4.2 */ public static function isRelativePathReference(UriInterface $uri) @@ -238,6 +285,7 @@ public static function isRelativePathReference(UriInterface $uri) * @param UriInterface|null $base An optional base URI to compare against * * @return bool + * * @link https://tools.ietf.org/html/rfc3986#section-4.4 */ public static function isSameDocumentReference(UriInterface $uri, UriInterface $base = null) @@ -358,6 +406,7 @@ public static function withQueryValues(UriInterface $uri, array $keyValueArray) * @param array $parts * * @return UriInterface + * * @link http://php.net/manual/en/function.parse-url.php * * @throws \InvalidArgumentException If the components do not form a valid URI. @@ -576,7 +625,7 @@ private function filterScheme($scheme) throw new \InvalidArgumentException('Scheme must be a string'); } - return strtolower($scheme); + return \strtr($scheme, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); } /** @@ -612,7 +661,7 @@ private function filterHost($host) throw new \InvalidArgumentException('Host must be a string'); } - return strtolower($host); + return \strtr($host, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'); } /** @@ -641,7 +690,7 @@ private function filterPort($port) /** * @param UriInterface $uri * @param array $keys - * + * * @return array */ private static function getFilteredQueryString(UriInterface $uri, array $keys) @@ -662,7 +711,7 @@ private static function getFilteredQueryString(UriInterface $uri, array $keys) /** * @param string $key * @param string|null $value - * + * * @return string */ private static function generateQueryString($key, $value) @@ -754,7 +803,7 @@ private function validateState() 'by adding a leading slash to the path is deprecated since version 1.4 and will throw an exception instead.', E_USER_DEPRECATED ); - $this->path = '/'. $this->path; + $this->path = '/' . $this->path; //throw new \InvalidArgumentException('The path of a URI with an authority must start with a slash "/" or be empty'); } } diff --git a/guzzlehttp/psr7/src/UriNormalizer.php b/guzzlehttp/psr7/src/UriNormalizer.php index 2b9174a5e..81419ead4 100644 --- a/guzzlehttp/psr7/src/UriNormalizer.php +++ b/guzzlehttp/psr7/src/UriNormalizer.php @@ -115,6 +115,7 @@ final class UriNormalizer * @param int $flags A bitmask of normalizations to apply, see constants * * @return UriInterface The normalized URI + * * @link https://tools.ietf.org/html/rfc3986#section-6.2 */ public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NORMALIZATIONS) @@ -171,6 +172,7 @@ public static function normalize(UriInterface $uri, $flags = self::PRESERVING_NO * @param int $normalizations A bitmask of normalizations to apply, see constants * * @return bool + * * @link https://tools.ietf.org/html/rfc3986#section-6.1 */ public static function isEquivalent(UriInterface $uri1, UriInterface $uri2, $normalizations = self::PRESERVING_NORMALIZATIONS) diff --git a/guzzlehttp/psr7/src/UriResolver.php b/guzzlehttp/psr7/src/UriResolver.php index 26cecd53a..a3cb15d57 100644 --- a/guzzlehttp/psr7/src/UriResolver.php +++ b/guzzlehttp/psr7/src/UriResolver.php @@ -19,6 +19,7 @@ final class UriResolver * @param string $path * * @return string + * * @link http://tools.ietf.org/html/rfc3986#section-5.2.4 */ public static function removeDotSegments($path) @@ -58,6 +59,7 @@ public static function removeDotSegments($path) * @param UriInterface $rel Relative URI * * @return UriInterface + * * @link http://tools.ietf.org/html/rfc3986#section-5.2 */ public static function resolve(UriInterface $base, UriInterface $rel) diff --git a/guzzlehttp/psr7/src/Utils.php b/guzzlehttp/psr7/src/Utils.php index 86960dde2..6b6c8cced 100644 --- a/guzzlehttp/psr7/src/Utils.php +++ b/guzzlehttp/psr7/src/Utils.php @@ -75,6 +75,7 @@ public static function copyToStream(StreamInterface $source, StreamInterface $de * @param StreamInterface $stream Stream to read * @param int $maxLen Maximum number of bytes to read. Pass -1 * to read the entire stream. + * * @return string * * @throws \RuntimeException on error. @@ -181,7 +182,7 @@ public static function modifyRequest(RequestInterface $request, array $changes) $standardPorts = ['http' => 80, 'https' => 443]; $scheme = $changes['uri']->getScheme(); if (isset($standardPorts[$scheme]) && $port != $standardPorts[$scheme]) { - $changes['set_headers']['Host'] .= ':'.$port; + $changes['set_headers']['Host'] .= ':' . $port; } } } @@ -202,7 +203,7 @@ public static function modifyRequest(RequestInterface $request, array $changes) } if ($request instanceof ServerRequestInterface) { - return (new ServerRequest( + $new = (new ServerRequest( isset($changes['method']) ? $changes['method'] : $request->getMethod(), $uri, $headers, @@ -216,6 +217,12 @@ public static function modifyRequest(RequestInterface $request, array $changes) ->withQueryParams($request->getQueryParams()) ->withCookieParams($request->getCookieParams()) ->withUploadedFiles($request->getUploadedFiles()); + + foreach ($request->getAttributes() as $key => $value) { + $new = $new->withAttribute($key, $value); + } + + return $new; } return new Request( @@ -286,7 +293,7 @@ public static function readLine(StreamInterface $stream, $maxLength = null) * number of requested bytes are available. Any additional bytes will be * buffered and used in subsequent reads. * - * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data + * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data * @param array $options Additional options * * @return StreamInterface @@ -296,7 +303,7 @@ public static function readLine(StreamInterface $stream, $maxLength = null) public static function streamFor($resource = '', array $options = []) { if (is_scalar($resource)) { - $stream = fopen('php://temp', 'r+'); + $stream = self::tryFopen('php://temp', 'r+'); if ($resource !== '') { fwrite($stream, $resource); fseek($stream, 0); @@ -306,6 +313,17 @@ public static function streamFor($resource = '', array $options = []) switch (gettype($resource)) { case 'resource': + /* + * The 'php://input' is a special stream with quirks and inconsistencies. + * We avoid using that stream by reading it into php://temp + */ + $metaData = \stream_get_meta_data($resource); + if (isset($metaData['uri']) && $metaData['uri'] === 'php://input') { + $stream = self::tryFopen('php://temp', 'w+'); + fwrite($stream, stream_get_contents($resource)); + fseek($stream, 0); + $resource = $stream; + } return new Stream($resource, $options); case 'object': if ($resource instanceof StreamInterface) { @@ -324,7 +342,7 @@ public static function streamFor($resource = '', array $options = []) } break; case 'NULL': - return new Stream(fopen('php://temp', 'r+'), $options); + return new Stream(self::tryFopen('php://temp', 'r+'), $options); } if (is_callable($resource)) { @@ -352,14 +370,26 @@ public static function tryFopen($filename, $mode) $ex = null; set_error_handler(function () use ($filename, $mode, &$ex) { $ex = new \RuntimeException(sprintf( - 'Unable to open %s using mode %s: %s', + 'Unable to open "%s" using mode "%s": %s', $filename, $mode, func_get_args()[1] )); + + return true; }); - $handle = fopen($filename, $mode); + try { + $handle = fopen($filename, $mode); + } catch (\Throwable $e) { + $ex = new \RuntimeException(sprintf( + 'Unable to open "%s" using mode "%s": %s', + $filename, + $mode, + $e->getMessage() + ), 0, $e); + } + restore_error_handler(); if ($ex) { diff --git a/guzzlehttp/psr7/src/functions.php b/guzzlehttp/psr7/src/functions.php index e4cc13619..b0901fadd 100644 --- a/guzzlehttp/psr7/src/functions.php +++ b/guzzlehttp/psr7/src/functions.php @@ -70,7 +70,7 @@ function uri_for($uri) * number of requested bytes are available. Any additional bytes will be * buffered and used in subsequent reads. * - * @param resource|string|null|int|float|bool|StreamInterface|callable|\Iterator $resource Entity body data + * @param resource|string|int|float|bool|StreamInterface|callable|\Iterator|null $resource Entity body data * @param array $options Additional options * * @return StreamInterface @@ -187,6 +187,7 @@ function try_fopen($filename, $mode) * @param StreamInterface $stream Stream to read * @param int $maxLen Maximum number of bytes to read. Pass -1 * to read the entire stream. + * * @return string * * @throws \RuntimeException on error. @@ -311,6 +312,7 @@ function parse_query($str, $urlEncoding = true) * @param int|false $encoding Set to false to not encode, PHP_QUERY_RFC3986 * to encode using RFC3986, or PHP_QUERY_RFC1738 * to encode using RFC1738. + * * @return string * * @deprecated build_query will be removed in guzzlehttp/psr7:2.0. Use Query::build instead. @@ -361,6 +363,7 @@ function mimetype_from_extension($extension) * @return array * * @internal + * * @deprecated _parse_message will be removed in guzzlehttp/psr7:2.0. Use Message::parseMessage instead. */ function _parse_message($message) @@ -377,6 +380,7 @@ function _parse_message($message) * @return string * * @internal + * * @deprecated _parse_request_uri will be removed in guzzlehttp/psr7:2.0. Use Message::parseRequestUri instead. */ function _parse_request_uri($path, array $headers) @@ -409,6 +413,7 @@ function get_message_body_summary(MessageInterface $message, $truncateAt = 120) * @return array * * @internal + * * @deprecated _caseless_remove will be removed in guzzlehttp/psr7:2.0. Use Utils::caselessRemove instead. */ function _caseless_remove($keys, array $data)