array ( 'pretty_version' => 'dev-master', 'version' => 'dev-master', 'aliases' => array ( ), 'reference' => '5912800b0956d83fff0b34f6a3978447708c4669', '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.1', 'version' => '0.1.1.0', 'aliases' => array ( ), 'reference' => 'c0e56c336bd6131c199827f928e5a9aec89aa4da', ), '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.16', 'version' => '8.12.16.0', 'aliases' => array ( ), 'reference' => 'd3d4ed9466249747249f3032717c4aebaaa8363e', ), '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.2', 'version' => '0.7.2.0', 'aliases' => array ( ), 'reference' => '77d750ccc654c0eda4a41fedb2dbd71053755790', ), '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' => '5912800b0956d83fff0b34f6a3978447708c4669', ), '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.4', 'version' => '4.10.4.0', 'aliases' => array ( ), 'reference' => 'c6d052fc58cb876152f89f532b95a8d7907e7f0e', ), 'ocramius/package-versions' => array ( 'replaced' => array ( 0 => '1.11.99', ), ), 'opis/closure' => array ( 'pretty_version' => '3.6.1', 'version' => '3.6.1.0', 'aliases' => array ( ), 'reference' => '943b5d70cc5ae7483f6aff6ff43d7e34592ca0f5', ), '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.12', 'version' => '1.4.12.0', 'aliases' => array ( ), 'reference' => '19bb8e95490d3e3ad92fcac95500ca80bdcc7495', ), '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.1', 'version' => '1.0.1.0', 'aliases' => array ( ), 'reference' => 'dbb42a5a0e45f3adcf99babfb2a1ba77b8ac36a7', ), '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.3.1', 'version' => '3.3.1.0', 'aliases' => array ( ), 'reference' => '21e45061c3429b1e06233475cc0e1f6fc774d5b0', ), 'psr/container' => array ( 'pretty_version' => '1.0.0', 'version' => '1.0.0.0', 'aliases' => array ( ), 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f', ), '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.4', 'version' => '4.1.4.0', 'aliases' => array ( ), 'reference' => '4258420f15425a5f128fe5cad454e00ab4a68ae5', ), '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.3', 'version' => '4.3.3.0', 'aliases' => array ( ), 'reference' => '58f9f9b46a1080c0130bd86f4df9a568aacb9c79', ), '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.19', 'version' => '4.4.19.0', 'aliases' => array ( ), 'reference' => '24026c44fc37099fa145707fecd43672831b837a', ), 'symfony/event-dispatcher' => array ( 'pretty_version' => 'v4.4.19', 'version' => '4.4.19.0', 'aliases' => array ( ), 'reference' => 'c352647244bd376bf7d31efbd5401f13f50dad0c', ), '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.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => 'c6c942b1ac76c82448322025e084cadc56048b4e', ), 'symfony/polyfill-iconv' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => 'b34bfb8c4c22650ac080d2662ae3502e5f2f4ae6', ), 'symfony/polyfill-intl-grapheme' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => '267a9adeb8ecb8071040a740930e077cdfb987af', ), 'symfony/polyfill-intl-idn' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => '0eb8293dbbcd6ef6bf81404c9ce7d95bcdf34f44', ), 'symfony/polyfill-intl-normalizer' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => '6e971c891537eb617a00bb07a43d182a6915faba', ), 'symfony/polyfill-mbstring' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => 'f377a3dd1fde44d37b9831d68dc8dea3ffd28e13', ), 'symfony/polyfill-php72' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => 'cc6e6f9b39fe8075b3dabfbaf5b5f645ae1340c9', ), 'symfony/polyfill-php73' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => 'a678b42e92f86eca04b7fa4c0f6f19d097fb69e2', ), 'symfony/polyfill-php80' => array ( 'pretty_version' => 'v1.22.0', 'version' => '1.22.0.0', 'aliases' => array ( ), 'reference' => 'dc3063ba22c2a1fd2f45ed856374d79114998f91', ), 'symfony/process' => array ( 'pretty_version' => 'v4.4.19', 'version' => '4.4.19.0', 'aliases' => array ( ), 'reference' => '7e950b6366d4da90292c2e7fa820b3c1842b965a', ), 'symfony/routing' => array ( 'pretty_version' => 'v4.4.19', 'version' => '4.4.19.0', 'aliases' => array ( ), 'reference' => '87529f6e305c7acb162840d1ea57922038072425', ), 'symfony/service-contracts' => array ( 'pretty_version' => 'v2.2.0', 'version' => '2.2.0.0', 'aliases' => array ( ), 'reference' => 'd15da7ba4957ffb8f1747218be9e1a121fd298a1', ), 'symfony/translation' => array ( 'pretty_version' => 'v4.4.19', 'version' => '4.4.19.0', 'aliases' => array ( ), 'reference' => 'e1d0c67167a553556d9f974b5fa79c2448df317a', ), 'symfony/translation-contracts' => array ( 'pretty_version' => 'v2.3.0', 'version' => '2.3.0.0', 'aliases' => array ( ), 'reference' => 'e2eaa60b558f26a4b0354e1bbb25636efaaad105', ), 'symfony/translation-implementation' => array ( 'provided' => array ( 0 => '1.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() { return self::$installed; } 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; } }