5 use Composer\Semver\VersionParser;
12 class InstalledVersions
14 private static $installed = array (
17 'pretty_version' => 'dev-master',
18 'version' => 'dev-master',
22 'reference' => '68d7ea972c6eabdd3949cbb69fad21b342c72d71',
23 'name' => 'yiisoft/yii2-app-basic',
29 'pretty_version' => 'v4.6.2',
30 'version' => '4.6.2.0',
34 'reference' => '51ac4500c4dc30cbaaabcd2f25694299df666a31',
36 'bower-asset/bootstrap' =>
38 'pretty_version' => 'v3.4.1',
39 'version' => '3.4.1.0',
43 'reference' => '68b0d231a13201eb14acd3dc84e51543d16e5f7e',
45 'bower-asset/inputmask' =>
47 'pretty_version' => '3.3.11',
48 'version' => '3.3.11.0',
52 'reference' => '5e670ad62f50c738388d4dcec78d2888505ad77b',
54 'bower-asset/jquery' =>
56 'pretty_version' => '3.5.1',
57 'version' => '3.5.1.0',
61 'reference' => '4c0e4becb8263bb5b3e6dadc448d8e7305ef8215',
63 'bower-asset/punycode' =>
65 'pretty_version' => 'v1.3.2',
66 'version' => '1.3.2.0',
70 'reference' => '38c8d3131a82567bfef18da09f7f4db68c84f8a3',
72 'bower-asset/yii2-pjax' =>
74 'pretty_version' => '2.0.7.1',
75 'version' => '2.0.7.1',
79 'reference' => 'aef7b953107264f00234902a3880eb50dafc48be',
83 'pretty_version' => '1.2.1',
84 'version' => '1.2.1.0',
88 'reference' => '9bac5e971dd391e2802dca5400bbeacbaea9eb86',
90 'codeception/codeception' =>
92 'pretty_version' => '4.1.6',
93 'version' => '4.1.6.0',
97 'reference' => '5515b6a6c6f1e1c909aaff2e5f3a15c177dfd1a9',
99 'codeception/lib-asserts' =>
101 'pretty_version' => '1.12.0',
102 'version' => '1.12.0.0',
106 'reference' => 'acd0dc8b394595a74b58dcc889f72569ff7d8e71',
108 'codeception/lib-innerbrowser' =>
110 'pretty_version' => '1.3.2',
111 'version' => '1.3.2.0',
115 'reference' => '7bdcee4cf654cfeeedd00405edd4f06f85255659',
117 'codeception/module-asserts' =>
119 'pretty_version' => '1.2.1',
120 'version' => '1.2.1.0',
124 'reference' => '79f13d05b63f2fceba4d0e78044bab668c9b2a6b',
126 'codeception/module-db' =>
128 'pretty_version' => '1.0.2',
129 'version' => '1.0.2.0',
133 'reference' => 'd5f1def43c1f0ebdd57d506224c4a4632e3a6059',
135 'codeception/module-filesystem' =>
137 'pretty_version' => '1.0.2',
138 'version' => '1.0.2.0',
142 'reference' => 'fe3c352479924ec0aaf6a6c3d6825dc14242b81e',
144 'codeception/module-rest' =>
146 'pretty_version' => '1.2.3',
147 'version' => '1.2.3.0',
151 'reference' => '63d09a1ed9fb9bb981d22396e7c2c7d20570f217',
153 'codeception/module-yii2' =>
155 'pretty_version' => '1.1.0',
156 'version' => '1.1.0.0',
160 'reference' => '89ec2b34db0fe1c80d404d939ecc7ab07051b4b7',
162 'codeception/phpunit-wrapper' =>
164 'pretty_version' => '8.1.2',
165 'version' => '8.1.2.0',
169 'reference' => 'e610200adf75ebc1ea7cf10d7cdb43e0f5fff3cc',
171 'codeception/specify' =>
173 'pretty_version' => '0.4.6',
174 'version' => '0.4.6.0',
178 'reference' => '21b586f503ca444aa519dd9cafb32f113a05f286',
180 'codeception/stub' =>
182 'pretty_version' => '3.7.0',
183 'version' => '3.7.0.0',
187 'reference' => '468dd5fe659f131fc997f5196aad87512f9b1304',
189 'codeception/verify' =>
191 'pretty_version' => '1.1.0',
192 'version' => '1.1.0.0',
196 'reference' => 'fa0bb946b6d61279f461bcc5a677ac0ed5eab9b3',
198 'doctrine/instantiator' =>
200 'pretty_version' => '1.3.1',
201 'version' => '1.3.1.0',
205 'reference' => 'f350df0268e904597e3bd9c4685c53e0e333feea',
209 'pretty_version' => '1.2.1',
210 'version' => '1.2.1.0',
214 'reference' => 'e864bbf5904cb8f5bb334f99209b48018522f042',
216 'egulias/email-validator' =>
218 'pretty_version' => '2.1.18',
219 'version' => '2.1.18.0',
223 'reference' => 'cfa3d44471c7f5bfb684ac2b0da7114283d78441',
225 'ezyang/htmlpurifier' =>
227 'pretty_version' => 'v4.13.0',
228 'version' => '4.13.0.0',
232 'reference' => '08e27c97e4c6ed02f37c5b2b20488046c8d90d75',
236 'pretty_version' => '0.5.0',
237 'version' => '0.5.0.0',
241 'reference' => 'b9738858c75d008c1211612b973e9510f8b7f8ea',
243 'fzaninotto/faker' =>
245 'pretty_version' => 'v1.9.1',
246 'version' => '1.9.1.0',
250 'reference' => 'fc10d778e4b84d5bd315dad194661e091d307c6f',
254 'pretty_version' => '1.6.1',
255 'version' => '1.6.1.0',
259 'reference' => '239400de7a173fe9901b9ac7c06497751f00727a',
261 'justinrainbow/json-schema' =>
263 'pretty_version' => '5.2.10',
264 'version' => '5.2.10.0',
268 'reference' => '2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b',
270 'kartik-v/yii2-mpdf' =>
272 'pretty_version' => 'v1.0.1',
273 'version' => '1.0.1.0',
277 'reference' => '17fda1cb084c58fee6014026d35af5faf73316ef',
281 'pretty_version' => 'v6.1.3',
282 'version' => '6.1.3.0',
286 'reference' => '7f138bf7508eac895ac2c13d2509b056ac7e7e97',
288 'myclabs/deep-copy' =>
290 'pretty_version' => '1.10.1',
291 'version' => '1.10.1.0',
295 'reference' => '969b211f9a51aa1f6c01d1d2aef56d3bd91598e5',
303 'pretty_version' => '3.5.5',
304 'version' => '3.5.5.0',
308 'reference' => 'dec9fc5ecfca93f45cd6121f8e6f14457dff372c',
310 'paragonie/random_compat' =>
312 'pretty_version' => 'v9.99.99',
313 'version' => '9.99.99.0',
317 'reference' => '84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95',
319 'phar-io/manifest' =>
321 'pretty_version' => '1.0.3',
322 'version' => '1.0.3.0',
326 'reference' => '7761fcacf03b4d4f16e7ccb606d4879ca431fcf4',
330 'pretty_version' => '2.0.1',
331 'version' => '2.0.1.0',
335 'reference' => '45a2ec53a73c70ce41d55cedef9063630abaf1b6',
337 'phpdocumentor/reflection-common' =>
339 'pretty_version' => '2.2.0',
340 'version' => '2.2.0.0',
344 'reference' => '1d01c49d4ed62f25aa84a747ad35d5a16924662b',
346 'phpdocumentor/reflection-docblock' =>
348 'pretty_version' => '5.2.0',
349 'version' => '5.2.0.0',
353 'reference' => '3170448f5769fe19f456173d833734e0ff1b84df',
355 'phpdocumentor/type-resolver' =>
357 'pretty_version' => '1.3.0',
358 'version' => '1.3.0.0',
362 'reference' => 'e878a14a65245fbe78f8080eba03b47c3b705651',
364 'phpoffice/phpexcel' =>
366 'pretty_version' => '1.8.2',
367 'version' => '1.8.2.0',
371 'reference' => '1441011fb7ecdd8cc689878f54f8b58a6805f870',
373 'phpspec/php-diff' =>
375 'pretty_version' => 'v1.1.0',
376 'version' => '1.1.0.0',
380 'reference' => '0464787bfa7cd13576c5a1e318709768798bec6a',
382 'phpspec/prophecy' =>
384 'pretty_version' => '1.11.1',
385 'version' => '1.11.1.0',
389 'reference' => 'b20034be5efcdab4fb60ca3a29cba2949aead160',
391 'phpunit/php-code-coverage' =>
393 'pretty_version' => '7.0.10',
394 'version' => '7.0.10.0',
398 'reference' => 'f1884187926fbb755a9aaf0b3836ad3165b478bf',
400 'phpunit/php-file-iterator' =>
402 'pretty_version' => '2.0.2',
403 'version' => '2.0.2.0',
407 'reference' => '050bedf145a257b1ff02746c31894800e5122946',
409 'phpunit/php-text-template' =>
411 'pretty_version' => '1.2.1',
412 'version' => '1.2.1.0',
416 'reference' => '31f8b717e51d9a2afca6c9f046f5d69fc27c8686',
418 'phpunit/php-timer' =>
420 'pretty_version' => '2.1.2',
421 'version' => '2.1.2.0',
425 'reference' => '1038454804406b0b5f5f520358e78c1c2f71501e',
427 'phpunit/php-token-stream' =>
429 'pretty_version' => '3.1.1',
430 'version' => '3.1.1.0',
434 'reference' => '995192df77f63a59e47f025390d2d1fdf8f425ff',
438 'pretty_version' => '8.5.8',
439 'version' => '8.5.8.0',
443 'reference' => '34c18baa6a44f1d1fbf0338907139e9dce95b997',
447 'pretty_version' => '1.0.0',
448 'version' => '1.0.0.0',
452 'reference' => 'b7ce3b176482dbbc1245ebf52b181af44c2cf55f',
454 'psr/event-dispatcher' =>
456 'pretty_version' => '1.0.0',
457 'version' => '1.0.0.0',
461 'reference' => 'dbefd12671e8a14ec7f180cab83036ed26714bb0',
463 'psr/event-dispatcher-implementation' =>
470 'psr/http-message' =>
472 'pretty_version' => '1.0.1',
473 'version' => '1.0.1.0',
477 'reference' => 'f6561bf28d520154e4b0ec72be95418abe6d9363',
479 'psr/http-message-implementation' =>
486 'psr/log-implementation' =>
493 'ralouphie/getallheaders' =>
495 'pretty_version' => '3.0.3',
496 'version' => '3.0.3.0',
500 'reference' => '120b605dfeb996808c31b6477290a714d356e822',
502 'sebastian/code-unit-reverse-lookup' =>
504 'pretty_version' => '1.0.1',
505 'version' => '1.0.1.0',
509 'reference' => '4419fcdb5eabb9caa61a27c7a1db532a6b55dd18',
511 'sebastian/comparator' =>
513 'pretty_version' => '3.0.2',
514 'version' => '3.0.2.0',
518 'reference' => '5de4fc177adf9bce8df98d8d141a7559d7ccf6da',
522 'pretty_version' => '3.0.2',
523 'version' => '3.0.2.0',
527 'reference' => '720fcc7e9b5cf384ea68d9d930d480907a0c1a29',
529 'sebastian/environment' =>
531 'pretty_version' => '4.2.3',
532 'version' => '4.2.3.0',
536 'reference' => '464c90d7bdf5ad4e8a6aea15c091fec0603d4368',
538 'sebastian/exporter' =>
540 'pretty_version' => '3.1.2',
541 'version' => '3.1.2.0',
545 'reference' => '68609e1261d215ea5b21b7987539cbfbe156ec3e',
547 'sebastian/global-state' =>
549 'pretty_version' => '3.0.0',
550 'version' => '3.0.0.0',
554 'reference' => 'edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4',
556 'sebastian/object-enumerator' =>
558 'pretty_version' => '3.0.3',
559 'version' => '3.0.3.0',
563 'reference' => '7cfd9e65d11ffb5af41198476395774d4c8a84c5',
565 'sebastian/object-reflector' =>
567 'pretty_version' => '1.1.1',
568 'version' => '1.1.1.0',
572 'reference' => '773f97c67f28de00d397be301821b06708fca0be',
574 'sebastian/recursion-context' =>
576 'pretty_version' => '3.0.0',
577 'version' => '3.0.0.0',
581 'reference' => '5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8',
583 'sebastian/resource-operations' =>
585 'pretty_version' => '2.0.1',
586 'version' => '2.0.1.0',
590 'reference' => '4d7a795d35b889bf80a0cc04e08d77cedfa917a9',
594 'pretty_version' => '1.1.3',
595 'version' => '1.1.3.0',
599 'reference' => '3aaaa15fa71d27650d62a948be022fe3b48541a3',
601 'sebastian/version' =>
603 'pretty_version' => '2.0.1',
604 'version' => '2.0.1.0',
608 'reference' => '99732be0ddb3361e16ad77b68ba41efc8e979019',
612 'pretty_version' => '1.6.2',
613 'version' => '1.6.2.0',
617 'reference' => 'a6ad58897a6d97cc2d2cd2adaeda343b25a368ea',
619 'swiftmailer/swiftmailer' =>
621 'pretty_version' => 'v6.2.3',
622 'version' => '6.2.3.0',
626 'reference' => '149cfdf118b169f7840bbe3ef0d4bc795d1780c9',
628 'symfony/browser-kit' =>
630 'pretty_version' => 'v4.2.4',
631 'version' => '4.2.4.0',
635 'reference' => '61d85c5af2fc058014c7c89504c3944e73a086f0',
639 'pretty_version' => 'v5.1.3',
640 'version' => '5.1.3.0',
644 'reference' => '2226c68009627934b8cfc01260b4d287eab070df',
646 'symfony/css-selector' =>
648 'pretty_version' => 'v5.1.3',
649 'version' => '5.1.3.0',
653 'reference' => 'e544e24472d4c97b2d11ade7caacd446727c6bf9',
655 'symfony/deprecation-contracts' =>
657 'pretty_version' => 'v2.1.3',
658 'version' => '2.1.3.0',
662 'reference' => '5e20b83385a77593259c9f8beb2c43cd03b2ac14',
664 'symfony/dom-crawler' =>
666 'pretty_version' => 'v4.4.11',
667 'version' => '4.4.11.0',
671 'reference' => '72b3a65ddd5052cf6d65eac6669748ed311f39bf',
673 'symfony/event-dispatcher' =>
675 'pretty_version' => 'v5.1.3',
676 'version' => '5.1.3.0',
680 'reference' => '7827d55911f91c070fc293ea51a06eec80797d76',
682 'symfony/event-dispatcher-contracts' =>
684 'pretty_version' => 'v2.1.3',
685 'version' => '2.1.3.0',
689 'reference' => 'f6f613d74cfc5a623fc36294d3451eb7fa5a042b',
691 'symfony/event-dispatcher-implementation' =>
700 'pretty_version' => 'v5.1.3',
701 'version' => '5.1.3.0',
705 'reference' => '4298870062bfc667cb78d2b379be4bf5dec5f187',
707 'symfony/polyfill-ctype' =>
709 'pretty_version' => 'v1.18.1',
710 'version' => '1.18.1.0',
714 'reference' => '1c302646f6efc070cd46856e600e5e0684d6b454',
716 'symfony/polyfill-iconv' =>
718 'pretty_version' => 'v1.18.1',
719 'version' => '1.18.1.0',
723 'reference' => '6c2f78eb8f5ab8eaea98f6d414a5915f2e0fce36',
725 'symfony/polyfill-intl-grapheme' =>
727 'pretty_version' => 'v1.18.1',
728 'version' => '1.18.1.0',
732 'reference' => 'b740103edbdcc39602239ee8860f0f45a8eb9aa5',
734 'symfony/polyfill-intl-idn' =>
736 'pretty_version' => 'v1.18.1',
737 'version' => '1.18.1.0',
741 'reference' => '5dcab1bc7146cf8c1beaa4502a3d9be344334251',
743 'symfony/polyfill-intl-normalizer' =>
745 'pretty_version' => 'v1.18.1',
746 'version' => '1.18.1.0',
750 'reference' => '37078a8dd4a2a1e9ab0231af7c6cb671b2ed5a7e',
752 'symfony/polyfill-mbstring' =>
754 'pretty_version' => 'v1.18.1',
755 'version' => '1.18.1.0',
759 'reference' => 'a6977d63bf9a0ad4c65cd352709e230876f9904a',
761 'symfony/polyfill-php70' =>
763 'pretty_version' => 'v1.18.1',
764 'version' => '1.18.1.0',
768 'reference' => '0dd93f2c578bdc9c72697eaa5f1dd25644e618d3',
770 'symfony/polyfill-php72' =>
772 'pretty_version' => 'v1.18.1',
773 'version' => '1.18.1.0',
777 'reference' => '639447d008615574653fb3bc60d1986d7172eaae',
779 'symfony/polyfill-php73' =>
781 'pretty_version' => 'v1.18.1',
782 'version' => '1.18.1.0',
786 'reference' => 'fffa1a52a023e782cdcc221d781fe1ec8f87fcca',
788 'symfony/polyfill-php80' =>
790 'pretty_version' => 'v1.18.1',
791 'version' => '1.18.1.0',
795 'reference' => 'd87d5766cbf48d72388a9f6b85f280c8ad51f981',
797 'symfony/service-contracts' =>
799 'pretty_version' => 'v2.1.3',
800 'version' => '2.1.3.0',
804 'reference' => '58c7475e5457c5492c26cc740cc0ad7464be9442',
808 'pretty_version' => 'v5.1.3',
809 'version' => '5.1.3.0',
813 'reference' => 'f629ba9b611c76224feb21fe2bcbf0b6f992300b',
817 'pretty_version' => 'v5.1.3',
818 'version' => '5.1.3.0',
822 'reference' => 'ea342353a3ef4f453809acc4ebc55382231d4d23',
824 'theseer/tokenizer' =>
826 'pretty_version' => '1.2.0',
827 'version' => '1.2.0.0',
831 'reference' => '75a63c33a8577608444246075ea0af0d052e452a',
833 'webmozart/assert' =>
835 'pretty_version' => '1.9.1',
836 'version' => '1.9.1.0',
840 'reference' => 'bafc69caeb4d49c39fd0779086c03a3738cbb389',
842 'xj/yii2-qrcode-widget' =>
844 'pretty_version' => '1.1',
845 'version' => '1.1.0.0',
849 'reference' => 'f6031ecb67dd34c95eca7c3eb99cf19dd9a94eba',
853 'pretty_version' => '2.0.36',
854 'version' => '2.0.36.0',
858 'reference' => 'a557111ea6c27794b98c98b76ff3f127eb55f309',
860 'yiisoft/yii2-app-basic' =>
862 'pretty_version' => 'dev-master',
863 'version' => 'dev-master',
867 'reference' => '68d7ea972c6eabdd3949cbb69fad21b342c72d71',
869 'yiisoft/yii2-bootstrap' =>
871 'pretty_version' => '2.0.10',
872 'version' => '2.0.10.0',
876 'reference' => '073c9ab0a4eb71f2485d84c96a1967130300d8fc',
878 'yiisoft/yii2-composer' =>
880 'pretty_version' => '2.0.10',
881 'version' => '2.0.10.0',
885 'reference' => '94bb3f66e779e2774f8776d6e1bdeab402940510',
887 'yiisoft/yii2-debug' =>
889 'pretty_version' => '2.1.13',
890 'version' => '2.1.13.0',
894 'reference' => '696712a2a3565b1a072ad3c9d298e262967e8282',
896 'yiisoft/yii2-faker' =>
898 'pretty_version' => '2.0.4',
899 'version' => '2.0.4.0',
903 'reference' => '3df62b1dcb272a8413f9c6e532c9d73f325ccde1',
905 'yiisoft/yii2-gii' =>
907 'pretty_version' => '2.1.4',
908 'version' => '2.1.4.0',
912 'reference' => 'd879cb186361fbc6f71a2d994d580b5a071a5642',
914 'yiisoft/yii2-swiftmailer' =>
916 'pretty_version' => '2.1.2',
917 'version' => '2.1.2.0',
921 'reference' => '09659a55959f9e64b8178d842b64a9ffae42b994',
932 public static function getInstalledPackages()
934 return array_keys(self::$installed['versions']);
945 public static function isInstalled($packageName)
947 return isset(self::$installed['versions'][$packageName]);
963 public static function satisfies(VersionParser $parser, $packageName, $constraint)
965 $constraint = $parser->parseConstraints($constraint);
966 $provided = $parser->parseConstraints(self::getVersionRanges($packageName));
968 return $provided->matches($constraint);
980 public static function getVersionRanges($packageName)
982 if (!isset(self::$installed['versions'][$packageName])) {
983 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
987 if (isset(self::$installed['versions'][$packageName]['pretty_version'])) {
988 $ranges[] = self::$installed['versions'][$packageName]['pretty_version'];
990 if (array_key_exists('aliases', self::$installed['versions'][$packageName])) {
991 $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['aliases']);
993 if (array_key_exists('replaced', self::$installed['versions'][$packageName])) {
994 $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['replaced']);
996 if (array_key_exists('provided', self::$installed['versions'][$packageName])) {
997 $ranges = array_merge($ranges, self::$installed['versions'][$packageName]['provided']);
1000 return implode(' || ', $ranges);
1007 public static function getVersion($packageName)
1009 if (!isset(self::$installed['versions'][$packageName])) {
1010 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
1013 if (!isset(self::$installed['versions'][$packageName]['version'])) {
1017 return self::$installed['versions'][$packageName]['version'];
1024 public static function getPrettyVersion($packageName)
1026 if (!isset(self::$installed['versions'][$packageName])) {
1027 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
1030 if (!isset(self::$installed['versions'][$packageName]['pretty_version'])) {
1034 return self::$installed['versions'][$packageName]['pretty_version'];
1041 public static function getReference($packageName)
1043 if (!isset(self::$installed['versions'][$packageName])) {
1044 throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed');
1047 if (!isset(self::$installed['versions'][$packageName]['reference'])) {
1051 return self::$installed['versions'][$packageName]['reference'];
1058 public static function getRootPackage()
1060 return self::$installed['root'];
1069 public static function getRawData()
1071 return self::$installed;
1092 public static function reload($data)
1094 self::$installed = $data;