diff --git a/.env b/.env new file mode 100644 index 0000000000..3a2634b32a --- /dev/null +++ b/.env @@ -0,0 +1,10 @@ +# This file is a "template" of which env vars need to be defined for your application +# Copy this file to .env file for development, create environment variables when deploying to production +# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=3f48b02b6f8e6ad6e8c07d0b03762d31 +#TRUSTED_PROXIES=127.0.0.1,127.0.0.2 +#TRUSTED_HOSTS=localhost,example.com +###< symfony/framework-bundle ### diff --git a/.env.dist b/.env.dist new file mode 100644 index 0000000000..3a2634b32a --- /dev/null +++ b/.env.dist @@ -0,0 +1,10 @@ +# This file is a "template" of which env vars need to be defined for your application +# Copy this file to .env file for development, create environment variables when deploying to production +# https://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration + +###> symfony/framework-bundle ### +APP_ENV=dev +APP_SECRET=3f48b02b6f8e6ad6e8c07d0b03762d31 +#TRUSTED_PROXIES=127.0.0.1,127.0.0.2 +#TRUSTED_HOSTS=localhost,example.com +###< symfony/framework-bundle ### diff --git a/.gitignore b/.gitignore index 8db5775bbc..f396e50d66 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ bin/validate-json* build/* vendor/* composer.phar +var/* # By default the phpunit.xml.dist is provided; you can override this using a local config file phpunit.xml diff --git a/bin/console b/bin/console new file mode 100755 index 0000000000..20cc8e05cb --- /dev/null +++ b/bin/console @@ -0,0 +1,42 @@ +#!/usr/bin/env php +load(__DIR__.'/../.env'); +} + +$input = new ArgvInput(); +$env = $input->getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev'); +$debug = ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption(['--no-debug', '']); + +if ($debug) { + umask(0000); + + if (class_exists(Debug::class)) { + Debug::enable(); + } +} + +$kernel = new Kernel($env, $debug); +$application = new Application($kernel); +$application->run($input); diff --git a/bin/php-parse b/bin/php-parse new file mode 120000 index 0000000000..726f6347e7 --- /dev/null +++ b/bin/php-parse @@ -0,0 +1 @@ +../vendor/nikic/php-parser/bin/php-parse \ No newline at end of file diff --git a/composer.json b/composer.json index 63bf71d5c5..06a0f6975e 100644 --- a/composer.json +++ b/composer.json @@ -6,13 +6,11 @@ "license": "MIT", "autoload": { "psr-4": { - "phpDocumentor\\": [ - "src/phpDocumentor/" - ], - "Cilex\\" : [ - "src/Cilex/" - ] - } + "Cilex\\" : [ "src/phpDocumentor/Application/CilexCompatibilityLayer" ], + "Pimple\\" : [ "src/phpDocumentor/Application/CilexCompatibilityLayer" ], + "phpDocumentor\\": [ "src/phpDocumentor/" ] + }, + "files": [ "src/Kernel.php" ] }, "autoload-dev": { "psr-4": { @@ -25,40 +23,40 @@ } }, "require": { - "php": ">=7.0", - - "cilex/cilex": "^2.0", - "symfony/console": "~2.3", - - "monolog/monolog": "~1.6", - "twig/twig": "~1.3", + "php": ">=7.1.3", + "ext-iconv": "*", "erusev/parsedown": "~1.0", - "symfony/process": "~2.0", - "zetacomponents/document": ">=1.3.1", - - "symfony/event-dispatcher": "~2.1", - "symfony/stopwatch": "~2.3", - "symfony/config": "~2.3", - "jms/serializer": ">=0.12 < 1.8.0", - - "zendframework/zend-stdlib": "~2.1", - "zendframework/zend-servicemanager": "~2.1", - "zendframework/zend-config": "~2.1", - "zendframework/zend-i18n": "~2.1", - "zendframework/zend-serializer": "~2.1", - "zendframework/zend-cache": "~2.1", - "zendframework/zend-filter": "~2.1", - - "phpdocumentor/graphviz": "~1.0", - "phpdocumentor/fileset": "~1.0", - "phpdocumentor/reflection": "dev-develop@dev", - "webmozart/assert": "^1.2", + "jms/serializer-bundle": "^2.3", + "monolog/monolog": "~1.6", "padraic/phar-updater": "^1.0", + "phpdocumentor/flyfinder": "@beta", + "phpdocumentor/graphviz": "~1.0", + "phpdocumentor/reflection": "dev-develop@dev", + "sensio/framework-extra-bundle": "^5.1", + "symfony/console": "^4.0", + "symfony/event-dispatcher": "^4.0", + "symfony/flex": "^1.0", + "symfony/framework-bundle": "^4.0", + "symfony/lts": "^4@dev", + "symfony/monolog-bundle": "^3.1", + "symfony/stopwatch": "^4.0", + "symfony/yaml": "^4.0", "tedivm/stash": "^0.14.2", - "phpdocumentor/flyfinder": "@beta" + "twig/twig": "~1.3", + "webmozart/assert": "^1.2", + "zendframework/zend-cache": "~2.1", + "zendframework/zend-config": "~2.1", + "zendframework/zend-filter": "~2.1", + "zendframework/zend-i18n": "~2.1", + "zendframework/zend-serializer": "~2.1", + "zendframework/zend-servicemanager": "~2.1", + "zendframework/zend-stdlib": "~2.1", + "zetacomponents/document": ">=1.3.1" }, "minimum-stability": "stable", "require-dev": { + "symfony/dotenv": "^4.0", + "behat/behat": "^3.0", "phpunit/phpunit": "^6.4", "mockery/mockery": "^1.0", @@ -71,13 +69,42 @@ "ext-xslcache": "Enabling the XSLCache extension improves the generation of xml based templates." }, "config": { - "bin-dir":"bin/" + "bin-dir":"bin/", + "preferred-install": { + "*": "dist" + }, + "sort-packages": true + }, + "replace": { + "symfony/polyfill-iconv": "*", + "symfony/polyfill-php71": "*", + "symfony/polyfill-php70": "*", + "symfony/polyfill-php56": "*" }, "bin": ["bin/phpdoc.php", "bin/phpdoc"], + "scripts": { + "auto-scripts": { + "cache:clear": "symfony-cmd", + "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd" + }, + "post-install-cmd": [ + "@auto-scripts" + ], + "post-update-cmd": [ + "@auto-scripts" + ] + }, + "conflict": { + "symfony/symfony": "*" + }, "extra": { "branch-alias": { "dev-develop": "3.0-dev", "dev-master": "2.9.x-dev" + }, + "symfony": { + "id": "01C32VS9393M1CP9R8TEJMH62G", + "allow-contrib": false } } } diff --git a/composer.lock b/composer.lock index e9d3e39771..e00702d15f 100644 --- a/composer.lock +++ b/composer.lock @@ -4,46 +4,146 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "32af363b5002147d570061a14ba7c2df", + "hash": "8282fa3d7e735afc0bc9956dcc25386e", + "content-hash": "fa9425863f516b8a74820a92f7a081f7", "packages": [ { - "name": "cilex/cilex", - "version": "2.0.0", + "name": "container-interop/container-interop", + "version": "1.2.0", + "source": { + "type": "git", + "url": "https://github.com/container-interop/container-interop.git", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "shasum": "" + }, + "require": { + "psr/container": "^1.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Interop\\Container\\": "src/Interop/Container/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", + "homepage": "https://github.com/container-interop/container-interop", + "time": "2017-02-14 19:40:03" + }, + { + "name": "doctrine/annotations", + "version": "v1.6.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/annotations.git", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/annotations/zipball/c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "reference": "c7f2050c68a9ab0bdb0f98567ec08d80ea7d24d5", + "shasum": "" + }, + "require": { + "doctrine/lexer": "1.*", + "php": "^7.1" + }, + "require-dev": { + "doctrine/cache": "1.*", + "phpunit/phpunit": "^6.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Docblock Annotations Parser", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "annotations", + "docblock", + "parser" + ], + "time": "2017-12-06 07:11:42" + }, + { + "name": "doctrine/cache", + "version": "v1.7.1", "source": { "type": "git", - "url": "https://github.com/Cilex/Cilex.git", - "reference": "c5612545cceac9fadc6ad6dcf6ba28fb0c80c460" + "url": "https://github.com/doctrine/cache.git", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Cilex/Cilex/zipball/c5612545cceac9fadc6ad6dcf6ba28fb0c80c460", - "reference": "c5612545cceac9fadc6ad6dcf6ba28fb0c80c460", + "url": "https://api.github.com/repos/doctrine/cache/zipball/b3217d58609e9c8e661cd41357a54d926c4a2a1a", + "reference": "b3217d58609e9c8e661cd41357a54d926c4a2a1a", "shasum": "" }, "require": { - "php": ">=5.5.9", - "pimple/pimple": "^3.0", - "silex/api": "^2.0", - "symfony/console": "^2.7 || ^3.0", - "symfony/event-dispatcher": "^2.7 || ^3.0", - "symfony/process": "^2.7 || ^3.0" + "php": "~7.1" + }, + "conflict": { + "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "phpunit/phpunit": "~3.7" + "alcaeus/mongo-php-adapter": "^1.1", + "mongodb/mongodb": "^1.1", + "phpunit/phpunit": "^5.7", + "predis/predis": "~1.0" }, "suggest": { - "symfony/validator": "^2.7 || ^3.0", - "symfony/yaml": "^2.7 || ^3.0" + "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" }, "type": "library", "extra": { "branch-alias": { - "dev-develop": "2.x-dev" + "dev-master": "1.7.x-dev" } }, "autoload": { "psr-4": { - "Cilex\\": "src/Cilex" + "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" } }, "notification-url": "https://packagist.org/downloads/", @@ -52,80 +152,135 @@ ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "The PHP micro-framework for Command line tools based on the Symfony2 Components", - "homepage": "http://cilex.github.com", + "description": "Caching library offering an object-oriented API for many cache backends", + "homepage": "http://www.doctrine-project.org", "keywords": [ - "cli", - "microframework" + "cache", + "caching" ], - "time": "2016-11-20T14:31:12+00:00" + "time": "2017-08-25 07:02:50" }, { - "name": "container-interop/container-interop", - "version": "1.2.0", + "name": "doctrine/collections", + "version": "v1.5.0", "source": { "type": "git", - "url": "https://github.com/container-interop/container-interop.git", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" + "url": "https://github.com/doctrine/collections.git", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", - "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", + "url": "https://api.github.com/repos/doctrine/collections/zipball/a01ee38fcd999f34d9bfbcee59dbda5105449cbf", + "reference": "a01ee38fcd999f34d9bfbcee59dbda5105449cbf", "shasum": "" }, "require": { - "psr/container": "^1.0" + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "~0.1@dev", + "phpunit/phpunit": "^5.7" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3.x-dev" + } + }, "autoload": { - "psr-4": { - "Interop\\Container\\": "src/Interop/Container/" + "psr-0": { + "Doctrine\\Common\\Collections\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", - "homepage": "https://github.com/container-interop/container-interop", - "time": "2017-02-14T19:40:03+00:00" + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Collections Abstraction library", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "array", + "collections", + "iterator" + ], + "time": "2017-07-22 10:37:32" }, { - "name": "doctrine/annotations", - "version": "v1.4.0", + "name": "doctrine/common", + "version": "v2.8.1", "source": { "type": "git", - "url": "https://github.com/doctrine/annotations.git", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97" + "url": "https://github.com/doctrine/common.git", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/annotations/zipball/54cacc9b81758b14e3ce750f205a393d52339e97", - "reference": "54cacc9b81758b14e3ce750f205a393d52339e97", + "url": "https://api.github.com/repos/doctrine/common/zipball/f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", + "reference": "f68c297ce6455e8fd794aa8ffaf9fa458f6ade66", "shasum": "" }, "require": { + "doctrine/annotations": "1.*", + "doctrine/cache": "1.*", + "doctrine/collections": "1.*", + "doctrine/inflector": "1.*", "doctrine/lexer": "1.*", - "php": "^5.6 || ^7.0" + "php": "~7.1" }, "require-dev": { - "doctrine/cache": "1.*", "phpunit/phpunit": "^5.7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.8.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" + "Doctrine\\Common\\": "lib/Doctrine/Common" } }, "notification-url": "https://packagist.org/downloads/", @@ -154,43 +309,112 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Docblock Annotations Parser", + "description": "Common Library for Doctrine projects", "homepage": "http://www.doctrine-project.org", "keywords": [ "annotations", - "docblock", - "parser" + "collections", + "eventmanager", + "persistence", + "spl" + ], + "time": "2017-08-31 08:43:38" + }, + { + "name": "doctrine/inflector", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462", + "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", + "keywords": [ + "inflection", + "pluralize", + "singularize", + "string" ], - "time": "2017-02-24T16:22:25+00:00" + "time": "2017-07-22 12:18:28" }, { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { "athletic/athletic": "~0.1.8", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpunit/phpunit": "^6.2.3", + "squizlabs/php_codesniffer": "^3.0.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -215,7 +439,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14T21:17:01+00:00" + "time": "2017-07-22 11:58:36" }, { "name": "doctrine/lexer", @@ -269,7 +493,7 @@ "lexer", "parser" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2014-09-09 13:34:57" }, { "name": "erusev/parsedown", @@ -314,7 +538,7 @@ "markdown", "parser" ], - "time": "2017-11-14T20:44:03+00:00" + "time": "2017-11-14 20:44:03" }, { "name": "jms/metadata", @@ -365,7 +589,7 @@ "xml", "yaml" ], - "time": "2016-12-05T10:18:33+00:00" + "time": "2016-12-05 10:18:33" }, { "name": "jms/parser-lib", @@ -400,20 +624,20 @@ "Apache2" ], "description": "A library for easily creating recursive-descent parsers.", - "time": "2012-11-18T18:08:43+00:00" + "time": "2012-11-18 18:08:43" }, { "name": "jms/serializer", - "version": "1.7.1", + "version": "1.10.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/serializer.git", - "reference": "4fad8bbbe76e05de3b79ffa3db027058ed3813ff" + "reference": "62c7ff6d61f8692eac8be024c542b3d9d0ab8c8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/4fad8bbbe76e05de3b79ffa3db027058ed3813ff", - "reference": "4fad8bbbe76e05de3b79ffa3db027058ed3813ff", + "url": "https://api.github.com/repos/schmittjoh/serializer/zipball/62c7ff6d61f8692eac8be024c542b3d9d0ab8c8a", + "reference": "62c7ff6d61f8692eac8be024c542b3d9d0ab8c8a", "shasum": "" }, "require": { @@ -436,6 +660,8 @@ "jackalope/jackalope-doctrine-dbal": "^1.1.5", "phpunit/phpunit": "^4.8|^5.0", "propel/propel1": "~1.7", + "psr/container": "^1.0", + "symfony/dependency-injection": "^2.7|^3.3|^4.0", "symfony/expression-language": "^2.6|^3.0", "symfony/filesystem": "^2.1", "symfony/form": "~2.1|^3.0", @@ -452,7 +678,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8-dev" + "dev-master": "1.10-dev" } }, "autoload": { @@ -465,6 +691,10 @@ "Apache-2.0" ], "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, { "name": "Johannes M. Schmitt", "email": "schmittjoh@gmail.com" @@ -479,41 +709,115 @@ "serialization", "xml" ], - "time": "2017-05-15T08:35:42+00:00" + "time": "2017-11-30 18:23:40" }, { - "name": "league/flysystem", - "version": "1.0.41", + "name": "jms/serializer-bundle", + "version": "2.3.1", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "f400aa98912c561ba625ea4065031b7a41e5a155" + "url": "https://github.com/schmittjoh/JMSSerializerBundle.git", + "reference": "9dec7ab62248aa97f33cce70c301af15154f8f0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f400aa98912c561ba625ea4065031b7a41e5a155", - "reference": "f400aa98912c561ba625ea4065031b7a41e5a155", + "url": "https://api.github.com/repos/schmittjoh/JMSSerializerBundle/zipball/9dec7ab62248aa97f33cce70c301af15154f8f0b", + "reference": "9dec7ab62248aa97f33cce70c301af15154f8f0b", "shasum": "" }, "require": { - "php": ">=5.5.9" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" + "jms/serializer": "^1.10", + "php": "^5.4|^7.0", + "phpoption/phpoption": "^1.1.0", + "symfony/framework-bundle": "~2.3|~3.0|~4.0" }, "require-dev": { - "ext-fileinfo": "*", - "mockery/mockery": "~0.9", - "phpspec/phpspec": "^2.2", - "phpunit/phpunit": "~4.8" + "doctrine/orm": "*", + "phpunit/phpunit": "^4.8.35|^5.4.3|^6.0", + "symfony/expression-language": "~2.6|~3.0|~4.0", + "symfony/finder": "^2.3|^3.0|^4.0", + "symfony/form": "*", + "symfony/stopwatch": "*", + "symfony/twig-bundle": "*", + "symfony/validator": "*", + "symfony/yaml": "*" }, "suggest": { - "ext-fileinfo": "Required for MimeType", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", + "jms/di-extra-bundle": "Required to get lazy loading (de)serialization visitors, ~1.3", + "symfony/finder": "Required for cache warmup, supported versions ^2.3|^3.0|^4.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "JMS\\SerializerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + }, + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "description": "Allows you to easily serialize, and deserialize data of any complexity", + "homepage": "http://jmsyst.com/bundles/JMSSerializerBundle", + "keywords": [ + "deserialization", + "jaxb", + "json", + "serialization", + "xml" + ], + "time": "2017-12-08 19:49:08" + }, + { + "name": "league/flysystem", + "version": "1.0.41", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "f400aa98912c561ba625ea4065031b7a41e5a155" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f400aa98912c561ba625ea4065031b7a41e5a155", + "reference": "f400aa98912c561ba625ea4065031b7a41e5a155", + "shasum": "" + }, + "require": { + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "ext-fileinfo": "*", + "mockery/mockery": "~0.9", + "phpspec/phpspec": "^2.2", + "phpunit/phpunit": "~4.8" + }, + "suggest": { + "ext-fileinfo": "Required for MimeType", + "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", + "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", + "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", + "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", + "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", "league/flysystem-webdav": "Allows you to use WebDAV storage", @@ -562,7 +866,7 @@ "sftp", "storage" ], - "time": "2017-08-06T17:41:04+00:00" + "time": "2017-08-06 17:41:04" }, { "name": "monolog/monolog", @@ -640,20 +944,20 @@ "logging", "psr-3" ], - "time": "2017-06-19T01:22:40+00:00" + "time": "2017-06-19 01:22:40" }, { "name": "nikic/php-parser", - "version": "v3.1.2", + "version": "v3.1.3", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "08131e7ff29de6bb9f12275c7d35df71f25f4d89" + "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/08131e7ff29de6bb9f12275c7d35df71f25f4d89", - "reference": "08131e7ff29de6bb9f12275c7d35df71f25f4d89", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/579f4ce846734a1cf55d6a531d00ca07a43e3cda", + "reference": "579f4ce846734a1cf55d6a531d00ca07a43e3cda", "shasum": "" }, "require": { @@ -691,7 +995,7 @@ "parser", "php" ], - "time": "2017-11-04T11:48:34+00:00" + "time": "2017-12-26 14:43:21" }, { "name": "padraic/humbug_get_contents", @@ -748,7 +1052,7 @@ "ssl", "tls" ], - "time": "2015-04-22T18:45:00+00:00" + "time": "2015-04-22 18:45:00" }, { "name": "padraic/phar-updater", @@ -800,7 +1104,7 @@ "self-update", "update" ], - "time": "2017-07-12T22:42:45+00:00" + "time": "2017-07-12 22:42:45" }, { "name": "phpcollection/phpcollection", @@ -848,50 +1152,7 @@ "sequence", "set" ], - "time": "2015-05-17T12:39:23+00:00" - }, - { - "name": "phpdocumentor/fileset", - "version": "1.0.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/Fileset.git", - "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/Fileset/zipball/bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", - "reference": "bfa78d8fa9763dfce6d0e5d3730c1d8ab25d34b0", - "shasum": "" - }, - "require": { - "php": ">=5.3.3", - "symfony/finder": "~2.1" - }, - "require-dev": { - "phpunit/phpunit": "~3.7" - }, - "type": "library", - "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/", - "tests/unit/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Fileset component for collecting a set of files given directories and file paths", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "files", - "fileset", - "phpdoc" - ], - "time": "2013-08-06T21:07:42+00:00" + "time": "2015-05-17 12:39:23" }, { "name": "phpdocumentor/flyfinder", @@ -934,7 +1195,7 @@ "Flysystem", "phpdoc" ], - "time": "2017-12-10T20:05:56+00:00" + "time": "2017-12-10 20:05:56" }, { "name": "phpdocumentor/graphviz", @@ -975,7 +1236,7 @@ "email": "mike.vanriel@naenius.com" } ], - "time": "2016-02-02T13:00:08+00:00" + "time": "2016-02-02 13:00:08" }, { "name": "phpdocumentor/reflection", @@ -983,12 +1244,12 @@ "source": { "type": "git", "url": "https://github.com/phpDocumentor/Reflection.git", - "reference": "ea714c456a0e45958e8eab01e7aabc417b16b75e" + "reference": "69344928928182b427ac17cc092f0fbb0046afec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/ea714c456a0e45958e8eab01e7aabc417b16b75e", - "reference": "ea714c456a0e45958e8eab01e7aabc417b16b75e", + "url": "https://api.github.com/repos/phpDocumentor/Reflection/zipball/69344928928182b427ac17cc092f0fbb0046afec", + "reference": "69344928928182b427ac17cc092f0fbb0046afec", "shasum": "" }, "require": { @@ -1027,7 +1288,7 @@ "reflection", "static analysis" ], - "time": "2017-12-26 12:57:51" + "time": "2018-01-02 07:31:00" }, { "name": "phpdocumentor/reflection-common", @@ -1081,7 +1342,7 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2017-09-11 18:02:19" }, { "name": "phpdocumentor/reflection-docblock", @@ -1132,7 +1393,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-27T17:38:31+00:00" + "time": "2017-11-27 17:38:31" }, { "name": "phpdocumentor/type-resolver", @@ -1179,7 +1440,7 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "time": "2017-07-14 14:27:02" }, { "name": "phpoption/phpoption", @@ -1229,57 +1490,7 @@ "php", "type" ], - "time": "2015-07-25T16:39:46+00:00" - }, - { - "name": "pimple/pimple", - "version": "v3.2.2", - "source": { - "type": "git", - "url": "https://github.com/silexphp/Pimple.git", - "reference": "4d45fb62d96418396ec58ba76e6f065bca16e10a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/silexphp/Pimple/zipball/4d45fb62d96418396ec58ba76e6f065bca16e10a", - "reference": "4d45fb62d96418396ec58ba76e6f065bca16e10a", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "psr/container": "^1.0" - }, - "require-dev": { - "symfony/phpunit-bridge": "^3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, - "autoload": { - "psr-0": { - "Pimple": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - } - ], - "description": "Pimple, a simple Dependency Injection Container", - "homepage": "http://pimple.sensiolabs.org", - "keywords": [ - "container", - "dependency injection" - ], - "time": "2017-07-23T07:32:15+00:00" + "time": "2015-07-25 16:39:46" }, { "name": "psr/cache", @@ -1325,7 +1536,7 @@ "psr", "psr-6" ], - "time": "2016-08-06T20:24:11+00:00" + "time": "2016-08-06 20:24:11" }, { "name": "psr/container", @@ -1374,7 +1585,7 @@ "container-interop", "psr" ], - "time": "2017-02-14T16:28:37+00:00" + "time": "2017-02-14 16:28:37" }, { "name": "psr/log", @@ -1414,46 +1625,649 @@ "homepage": "http://www.php-fig.org/" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "time": "2016-10-10T12:19:37+00:00" + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2016-10-10 12:19:37" + }, + { + "name": "psr/simple-cache", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/753fa598e8f3b9966c886fe13f370baa45ef0e24", + "reference": "753fa598e8f3b9966c886fe13f370baa45ef0e24", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-01-02 13:31:39" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v5.1.3", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "0696496cb3e2d23add645d424699e5c723238aad" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/0696496cb3e2d23add645d424699e5c723238aad", + "reference": "0696496cb3e2d23add645d424699e5c723238aad", + "shasum": "" + }, + "require": { + "doctrine/common": "^2.2", + "symfony/config": "^3.3|^4.0", + "symfony/dependency-injection": "^3.3|^4.0", + "symfony/framework-bundle": "^3.3|^4.0", + "symfony/http-kernel": "^3.3|^4.0" + }, + "require-dev": { + "doctrine/doctrine-bundle": "^1.6", + "doctrine/orm": "^2.5", + "symfony/browser-kit": "^3.3|^4.0", + "symfony/dom-crawler": "^3.3|^4.0", + "symfony/expression-language": "^3.3|^4.0", + "symfony/finder": "^3.3|^4.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/psr-http-message-bridge": "^0.3", + "symfony/security-bundle": "^3.3|^4.0", + "symfony/twig-bundle": "^3.3|^4.0", + "symfony/yaml": "^3.3|^4.0", + "twig/twig": "~1.12|~2.0", + "zendframework/zend-diactoros": "^1.3" + }, + "suggest": { + "symfony/expression-language": "", + "symfony/psr-http-message-bridge": "To use the PSR-7 converters", + "symfony/security-bundle": "" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "5.1.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\FrameworkExtraBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "This bundle provides a way to configure your controllers with annotations", + "keywords": [ + "annotations", + "controllers" + ], + "time": "2017-12-04 18:33:55" + }, + { + "name": "symfony/cache", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "1ebe207de664355b1699d35b12b0563c38a47b4e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/1ebe207de664355b1699d35b12b0563c38a47b4e", + "reference": "1ebe207de664355b1699d35b12b0563c38a47b4e", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/cache": "~1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0" + }, + "conflict": { + "symfony/var-dumper": "<3.4" + }, + "provide": { + "psr/cache-implementation": "1.0", + "psr/simple-cache-implementation": "1.0" + }, + "require-dev": { + "cache/integration-tests": "dev-master", + "doctrine/cache": "~1.6", + "doctrine/dbal": "~2.4", + "predis/predis": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Cache component with PSR-6, PSR-16, and tags", + "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], + "time": "2018-01-03 17:15:19" + }, + { + "name": "symfony/config", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/config.git", + "reference": "0e86d267db0851cf55f339c97df00d693fe8592f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/config/zipball/0e86d267db0851cf55f339c97df00d693fe8592f", + "reference": "0e86d267db0851cf55f339c97df00d693fe8592f", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/filesystem": "~3.4|~4.0" + }, + "conflict": { + "symfony/finder": "<3.4" + }, + "require-dev": { + "symfony/finder": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Config\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2018-01-03 07:38:00" + }, + { + "name": "symfony/console", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/console.git", + "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/console/zipball/fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", + "reference": "fe0e69d7162cba0885791cf7eea5f0d7bc0f897e", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Console\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-01-03 07:38:00" + }, + { + "name": "symfony/debug", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/debug.git", + "reference": "9ae4223a661b56a9abdce144de4886cca37f198f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/debug/zipball/9ae4223a661b56a9abdce144de4886cca37f198f", + "reference": "9ae4223a661b56a9abdce144de4886cca37f198f", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": "<3.4" + }, + "require-dev": { + "symfony/http-kernel": "~3.4|~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2018-01-03 17:15:19" + }, + { + "name": "symfony/dependency-injection", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "67bf5e4f4da85624f30a5e43b7f43225c8b71959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/67bf5e4f4da85624f30a5e43b7f43225c8b71959", + "reference": "67bf5e4f4da85624f30a5e43b7f43225c8b71959", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/container": "^1.0" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/finder": "<3.4", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0" + }, + "require-dev": { + "symfony/config": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "symfony/config": "", + "symfony/expression-language": "For using expressions in service container configuration", + "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", + "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2018-01-04 15:52:56" + }, + { + "name": "symfony/event-dispatcher", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb", + "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2018-01-03 07:38:00" + }, + { + "name": "symfony/filesystem", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/filesystem.git", + "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/760e47a4ee64b4c48f4b30017011e09d4c0f05ed", + "reference": "760e47a4ee64b4c48f4b30017011e09d4c0f05ed", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2018-01-03 07:38:00" + }, + { + "name": "symfony/finder", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/finder.git", + "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/finder/zipball/8b08180f2b7ccb41062366b9ad91fbc4f1af8601", + "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-01-03 07:38:00" }, { - "name": "silex/api", - "version": "v2.2.1", + "name": "symfony/flex", + "version": "v1.0.57", "source": { "type": "git", - "url": "https://github.com/silexphp/Silex-Api.git", - "reference": "69617ecf52581bbd6b315424f45b40783189e902" + "url": "https://github.com/symfony/flex.git", + "reference": "73423de7560c492f159aeb3eb9687b470bc87aec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/silexphp/Silex-Api/zipball/69617ecf52581bbd6b315424f45b40783189e902", - "reference": "69617ecf52581bbd6b315424f45b40783189e902", + "url": "https://api.github.com/repos/symfony/flex/zipball/73423de7560c492f159aeb3eb9687b470bc87aec", + "reference": "73423de7560c492f159aeb3eb9687b470bc87aec", "shasum": "" }, "require": { - "php": ">=5.5.9", - "pimple/pimple": "~3.0" + "composer-plugin-api": "^1.1", + "php": "^7.0" }, - "suggest": { - "silex/silex": "For BootableProviderInterface and ControllerProviderInterface", - "symfony/event-dispatcher": "For EventListenerProviderInterface" + "require-dev": { + "composer/composer": "^1.4", + "symfony/phpunit-bridge": "^3.2.8" }, - "type": "library", + "type": "composer-plugin", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" - } + "dev-master": "1.0-dev" + }, + "class": "Symfony\\Flex\\Flex" }, "autoload": { "psr-4": { - "Silex\\Api\\": "" + "Symfony\\Flex\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -1463,53 +2277,102 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" + "email": "fabien.potencier@gmail.com" } ], - "description": "The Silex interfaces", - "homepage": "http://silex.sensiolabs.org", - "keywords": [ - "microframework" - ], - "time": "2017-07-23T07:40:14+00:00" + "time": "2018-01-03 11:28:30" }, { - "name": "symfony/config", - "version": "v2.8.32", + "name": "symfony/framework-bundle", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "f4f3f1d7090c464434bbbc3e8aa2b41149c59196" + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "7d80f8dcebce598b03dfe75a8669d8a1942687cd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f4f3f1d7090c464434bbbc3e8aa2b41149c59196", - "reference": "f4f3f1d7090c464434bbbc3e8aa2b41149c59196", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/7d80f8dcebce598b03dfe75a8669d8a1942687cd", + "reference": "7d80f8dcebce598b03dfe75a8669d8a1942687cd", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/filesystem": "~2.3|~3.0.0" + "ext-xml": "*", + "php": "^7.1.3", + "symfony/cache": "~3.4|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "^3.4.3|^4.0.3", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/filesystem": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "~3.4|~4.0" + }, + "conflict": { + "phpdocumentor/reflection-docblock": "<3.0", + "phpdocumentor/type-resolver": "<0.2.1", + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/asset": "<3.4", + "symfony/console": "<3.4", + "symfony/form": "<3.4", + "symfony/property-info": "<3.4", + "symfony/serializer": "<3.4", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<3.4", + "symfony/validator": "<3.4", + "symfony/workflow": "<3.4" }, "require-dev": { - "symfony/yaml": "~2.7|~3.0.0" + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "fig/link-util": "^1.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "symfony/asset": "~3.4|~4.0", + "symfony/browser-kit": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "~3.4|~4.0", + "symfony/property-info": "~3.4|~4.0", + "symfony/security": "~3.4|~4.0", + "symfony/security-core": "~3.4|~4.0", + "symfony/security-csrf": "~3.4|~4.0", + "symfony/serializer": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0", + "symfony/web-link": "~3.4|~4.0", + "symfony/workflow": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" }, "suggest": { - "symfony/yaml": "To use the yaml reference dumper" - }, - "type": "library", + "ext-apcu": "For best performance of the system caches", + "symfony/console": "For using the console commands", + "symfony/form": "For using forms", + "symfony/property-info": "For using the property_info service", + "symfony/serializer": "For using the serializer service", + "symfony/validator": "For using validation", + "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", + "symfony/yaml": "For using the debug:config and lint:yaml commands" + }, + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Config\\": "" + "Symfony\\Bundle\\FrameworkBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1529,48 +2392,40 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", + "description": "Symfony FrameworkBundle", "homepage": "https://symfony.com", - "time": "2017-11-07T11:56:23+00:00" + "time": "2018-01-04 15:52:56" }, { - "name": "symfony/console", - "version": "v2.8.32", + "name": "symfony/http-foundation", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "46270f1ca44f08ebc134ce120fd2c2baf5fd63de" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "03fe5171e35966f43453e2e5c15d7fe65f7fb23b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/46270f1ca44f08ebc134ce120fd2c2baf5fd63de", - "reference": "46270f1ca44f08ebc134ce120fd2c2baf5fd63de", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/03fe5171e35966f43453e2e5c15d7fe65f7fb23b", + "reference": "03fe5171e35966f43453e2e5c15d7fe65f7fb23b", "shasum": "" }, "require": { - "php": ">=5.3.9", - "symfony/debug": "^2.7.2|~3.0.0", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1|~3.0.0", - "symfony/process": "~2.1|~3.0.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" + "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\HttpFoundation\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1590,44 +2445,73 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Console Component", + "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2017-11-29T09:33:18+00:00" + "time": "2018-01-03 17:15:19" }, { - "name": "symfony/debug", - "version": "v3.0.9", + "name": "symfony/http-kernel", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "f707ed09d3b5799a26c985de480d48b48540d41a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", - "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/f707ed09d3b5799a26c985de480d48b48540d41a", + "reference": "f707ed09d3b5799a26c985de480d48b48540d41a", "shasum": "" }, "require": { - "php": ">=5.5.9", - "psr/log": "~1.0" + "php": "^7.1.3", + "psr/log": "~1.0", + "symfony/debug": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/var-dumper": "<3.4", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { - "symfony/class-loader": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" + "psr/cache": "~1.0", + "symfony/browser-kit": "~3.4|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" + "Symfony\\Component\\HttpKernel\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1647,52 +2531,84 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Debug Component", + "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2016-07-30T07:22:48+00:00" + "time": "2018-01-05 08:54:25" }, { - "name": "symfony/event-dispatcher", - "version": "v2.8.32", + "name": "symfony/lts", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b59aacf238fadda50d612c9de73b74751872a903" + "url": "https://github.com/symfony/lts.git", + "reference": "396c5fca8d73d01186df37d7031321a3c0c2bf92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b59aacf238fadda50d612c9de73b74751872a903", - "reference": "b59aacf238fadda50d612c9de73b74751872a903", + "url": "https://api.github.com/repos/symfony/lts/zipball/396c5fca8d73d01186df37d7031321a3c0c2bf92", + "reference": "396c5fca8d73d01186df37d7031321a3c0c2bf92", "shasum": "" }, - "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "^2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" - }, - "type": "library", + "conflict": { + "symfony/asset": ">=5", + "symfony/browser-kit": ">=5", + "symfony/cache": ">=5", + "symfony/class-loader": ">=5", + "symfony/config": ">=5", + "symfony/console": ">=5", + "symfony/css-selector": ">=5", + "symfony/debug": ">=5", + "symfony/debug-bundle": ">=5", + "symfony/dependency-injection": ">=5", + "symfony/doctrine-bridge": ">=5", + "symfony/dom-crawler": ">=5", + "symfony/dotenv": ">=5", + "symfony/event-dispatcher": ">=5", + "symfony/expression-language": ">=5", + "symfony/filesystem": ">=5", + "symfony/finder": ">=5", + "symfony/form": ">=5", + "symfony/framework-bundle": ">=5", + "symfony/http-foundation": ">=5", + "symfony/http-kernel": ">=5", + "symfony/inflector": ">=5", + "symfony/intl": ">=5", + "symfony/ldap": ">=5", + "symfony/lock": ">=5", + "symfony/monolog-bridge": ">=5", + "symfony/options-resolver": ">=5", + "symfony/process": ">=5", + "symfony/property-access": ">=5", + "symfony/property-info": ">=5", + "symfony/proxy-manager-bridge": ">=5", + "symfony/routing": ">=5", + "symfony/security": ">=5", + "symfony/security-bundle": ">=5", + "symfony/security-core": ">=5", + "symfony/security-csrf": ">=5", + "symfony/security-guard": ">=5", + "symfony/security-http": ">=5", + "symfony/serializer": ">=5", + "symfony/stopwatch": ">=5", + "symfony/symfony": ">=5", + "symfony/templating": ">=5", + "symfony/translation": ">=5", + "symfony/twig-bridge": ">=5", + "symfony/twig-bundle": ">=5", + "symfony/validator": ">=5", + "symfony/var-dumper": ">=5", + "symfony/web-link": ">=5", + "symfony/web-profiler-bundle": ">=5", + "symfony/web-server-bundle": ">=5", + "symfony/workflow": ">=5", + "symfony/yaml": ">=5" + }, + "type": "metapackage", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "4-dev" } }, - "autoload": { - "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -1707,36 +2623,53 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony EventDispatcher Component", + "description": "Enforces Long Term Supported versions of Symfony components", "homepage": "https://symfony.com", - "time": "2017-11-05T15:25:56+00:00" + "time": "2017-10-19 02:16:32" }, { - "name": "symfony/filesystem", - "version": "v3.0.9", + "name": "symfony/monolog-bridge", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/filesystem.git", - "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d" + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "1b4fb2313312ec6cfae8ce45fccb2a88ec99d892" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/b2da5009d9bacbd91d83486aa1f44c793a8c380d", - "reference": "b2da5009d9bacbd91d83486aa1f44c793a8c380d", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/1b4fb2313312ec6cfae8ce45fccb2a88ec99d892", + "reference": "1b4fb2313312ec6cfae8ce45fccb2a88ec99d892", "shasum": "" }, "require": { - "php": ">=5.5.9" + "monolog/monolog": "~1.19", + "php": "^7.1.3", + "symfony/http-kernel": "~3.4|~4.0" }, - "type": "library", + "conflict": { + "symfony/http-foundation": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/security-core": "~3.4|~4.0", + "symfony/var-dumper": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For the possibility to show log messages in console commands depending on verbosity settings. You need version ~2.3 of the console for it.", + "symfony/event-dispatcher": "Needed when using log messages in console commands.", + "symfony/http-kernel": "For using the debugging handlers together with the response life cycle of the HTTP kernel.", + "symfony/var-dumper": "For using the debugging handlers like the console handler or the log server handler." + }, + "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Filesystem\\": "" + "Symfony\\Bridge\\Monolog\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1756,36 +2689,46 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Filesystem Component", + "description": "Symfony Monolog Bridge", "homepage": "https://symfony.com", - "time": "2016-07-20T05:43:46+00:00" + "time": "2018-01-03 07:38:00" }, { - "name": "symfony/finder", - "version": "v2.8.32", + "name": "symfony/monolog-bundle", + "version": "v3.1.2", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "efeceae6a05a9b2fcb3391333f1d4a828ff44ab8" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "2b41b8b6d2c6edb1a5494f02f8e4129be2a44784" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/efeceae6a05a9b2fcb3391333f1d4a828ff44ab8", - "reference": "efeceae6a05a9b2fcb3391333f1d4a828ff44ab8", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/2b41b8b6d2c6edb1a5494f02f8e4129be2a44784", + "reference": "2b41b8b6d2c6edb1a5494f02f8e4129be2a44784", "shasum": "" }, "require": { - "php": ">=5.3.9" + "monolog/monolog": "~1.22", + "php": ">=5.3.2", + "symfony/config": "~2.7|~3.0|~4.0", + "symfony/dependency-injection": "~2.7|~3.0|~4.0", + "symfony/http-kernel": "~2.7|~3.0|~4.0", + "symfony/monolog-bridge": "~2.7|~3.0|~4.0" }, - "type": "library", + "require-dev": { + "symfony/console": "~2.3|~3.0|~4.0", + "symfony/phpunit-bridge": "^3.3|^4.0", + "symfony/yaml": "~2.3|~3.0|~4.0" + }, + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Bundle\\MonologBundle\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1797,17 +2740,21 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2017-11-05T15:25:56+00:00" + "description": "Symfony MonologBundle", + "homepage": "http://symfony.com", + "keywords": [ + "log", + "logging" + ], + "time": "2017-11-06 16:02:17" }, { "name": "symfony/polyfill-mbstring", @@ -1866,34 +2813,57 @@ "portable", "shim" ], - "time": "2017-10-11T12:05:26+00:00" + "time": "2017-10-11 12:05:26" }, { - "name": "symfony/process", - "version": "v2.8.32", + "name": "symfony/routing", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "d25449e031f600807949aab7cadbf267712f4eee" + "url": "https://github.com/symfony/routing.git", + "reference": "a34b58ed26cc090f99b2ef833d609a6884581b3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/d25449e031f600807949aab7cadbf267712f4eee", - "reference": "d25449e031f600807949aab7cadbf267712f4eee", + "url": "https://api.github.com/repos/symfony/routing/zipball/a34b58ed26cc090f99b2ef833d609a6884581b3c", + "reference": "a34b58ed26cc090f99b2ef833d609a6884581b3c", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\Routing\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1913,31 +2883,37 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Symfony Routing Component", "homepage": "https://symfony.com", - "time": "2017-11-05T15:25:56+00:00" + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2018-01-04 15:52:56" }, { "name": "symfony/stopwatch", - "version": "v2.8.32", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "533bb9d7c2da1c6d2da163ecf0f22043ea98f59b" + "reference": "d52321f0e2b596bd03b5d1dd6eebe71caa925704" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/533bb9d7c2da1c6d2da163ecf0f22043ea98f59b", - "reference": "533bb9d7c2da1c6d2da163ecf0f22043ea98f59b", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/d52321f0e2b596bd03b5d1dd6eebe71caa925704", + "reference": "d52321f0e2b596bd03b5d1dd6eebe71caa925704", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -1964,7 +2940,65 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-11-10T18:59:36+00:00" + "time": "2018-01-03 07:38:00" + }, + { + "name": "symfony/yaml", + "version": "v4.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/yaml.git", + "reference": "b84f646b9490d2101e2c25ddeec77ceefbda2eee" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/yaml/zipball/b84f646b9490d2101e2c25ddeec77ceefbda2eee", + "reference": "b84f646b9490d2101e2c25ddeec77ceefbda2eee", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "conflict": { + "symfony/console": "<3.4" + }, + "require-dev": { + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Yaml\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony Yaml Component", + "homepage": "https://symfony.com", + "time": "2018-01-03 07:38:00" }, { "name": "tedivm/stash", @@ -2024,7 +3058,7 @@ "redis", "sessions" ], - "time": "2017-04-23T17:16:57+00:00" + "time": "2017-04-23 17:16:57" }, { "name": "twig/twig", @@ -2089,7 +3123,7 @@ "keywords": [ "templating" ], - "time": "2017-09-27T18:06:46+00:00" + "time": "2017-09-27 18:06:46" }, { "name": "webmozart/assert", @@ -2139,7 +3173,7 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2016-11-23 20:04:58" }, { "name": "zendframework/zend-cache", @@ -2208,7 +3242,7 @@ "cache", "zf2" ], - "time": "2016-12-16T11:35:47+00:00" + "time": "2016-12-16 11:35:47" }, { "name": "zendframework/zend-config", @@ -2264,7 +3298,7 @@ "config", "zf2" ], - "time": "2016-02-04T23:01:10+00:00" + "time": "2016-02-04 23:01:10" }, { "name": "zendframework/zend-eventmanager", @@ -2318,7 +3352,7 @@ "events", "zf2" ], - "time": "2017-07-11T19:17:22+00:00" + "time": "2017-07-11 19:17:22" }, { "name": "zendframework/zend-filter", @@ -2378,7 +3412,7 @@ "filter", "zf2" ], - "time": "2017-05-17T20:56:17+00:00" + "time": "2017-05-17 20:56:17" }, { "name": "zendframework/zend-hydrator", @@ -2436,7 +3470,7 @@ "hydrator", "zf2" ], - "time": "2016-02-18T22:38:26+00:00" + "time": "2016-02-18 22:38:26" }, { "name": "zendframework/zend-i18n", @@ -2503,29 +3537,29 @@ "i18n", "zf2" ], - "time": "2017-05-17T17:00:12+00:00" + "time": "2017-05-17 17:00:12" }, { "name": "zendframework/zend-json", - "version": "3.0.0", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/zendframework/zend-json.git", - "reference": "f42a1588e75c2a3e338cd94c37906231e616daab" + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-json/zipball/f42a1588e75c2a3e338cd94c37906231e616daab", - "reference": "f42a1588e75c2a3e338cd94c37906231e616daab", + "url": "https://api.github.com/repos/zendframework/zend-json/zipball/4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", + "reference": "4dd940e8e6f32f1d36ea6b0677ea57c540c7c19c", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "^2.3", - "zendframework/zend-stdlib": "^2.7 || ^3.0" + "phpunit/phpunit": "^5.7.23 || ^6.4.3", + "zendframework/zend-coding-standard": "~1.0.0", + "zendframework/zend-stdlib": "^2.7.7 || ^3.1" }, "suggest": { "zendframework/zend-json-server": "For implementing JSON-RPC servers", @@ -2534,8 +3568,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev", - "dev-develop": "3.1-dev" + "dev-master": "3.1.x-dev", + "dev-develop": "3.2.x-dev" } }, "autoload": { @@ -2548,12 +3582,12 @@ "BSD-3-Clause" ], "description": "provides convenience methods for serializing native PHP to JSON and decoding JSON to native PHP", - "homepage": "https://github.com/zendframework/zend-json", "keywords": [ + "ZendFramework", "json", - "zf2" + "zf" ], - "time": "2016-04-01T02:34:00+00:00" + "time": "2018-01-04 17:51:34" }, { "name": "zendframework/zend-serializer", @@ -2611,7 +3645,7 @@ "serializer", "zf2" ], - "time": "2017-11-20T22:21:04+00:00" + "time": "2017-11-20 22:21:04" }, { "name": "zendframework/zend-servicemanager", @@ -2663,7 +3697,7 @@ "servicemanager", "zf2" ], - "time": "2017-12-05T16:27:36+00:00" + "time": "2017-12-05 16:27:36" }, { "name": "zendframework/zend-stdlib", @@ -2722,7 +3756,7 @@ "stdlib", "zf2" ], - "time": "2016-04-12T21:17:31+00:00" + "time": "2016-04-12 21:17:31" }, { "name": "zetacomponents/base", @@ -2786,7 +3820,7 @@ ], "description": "The Base package provides the basic infrastructure that all packages rely on. Therefore every component relies on this package.", "homepage": "https://github.com/zetacomponents", - "time": "2017-11-28T11:30:00+00:00" + "time": "2017-11-28 11:30:00" }, { "name": "zetacomponents/document", @@ -2837,7 +3871,7 @@ ], "description": "The Document components provides a general conversion framework for different semantic document markup languages like XHTML, Docbook, RST and similar.", "homepage": "https://github.com/zetacomponents", - "time": "2013-12-19T11:40:00+00:00" + "time": "2013-12-19 11:40:00" } ], "packages-dev": [ @@ -2922,7 +3956,7 @@ "symfony", "testing" ], - "time": "2017-11-27T10:37:56+00:00" + "time": "2017-11-27 10:37:56" }, { "name": "behat/gherkin", @@ -2981,7 +4015,7 @@ "gherkin", "parser" ], - "time": "2017-08-30T11:04:43+00:00" + "time": "2017-08-30 11:04:43" }, { "name": "behat/transliterator", @@ -3025,7 +4059,7 @@ "slug", "transliterator" ], - "time": "2017-04-04T11:38:05+00:00" + "time": "2017-04-04 11:38:05" }, { "name": "hamcrest/hamcrest-php", @@ -3073,7 +4107,7 @@ "keywords": [ "test" ], - "time": "2016-01-20T08:20:44+00:00" + "time": "2016-01-20 08:20:44" }, { "name": "mikey179/vfsStream", @@ -3119,7 +4153,7 @@ ], "description": "Virtual file system to mock the real file system in unit tests.", "homepage": "http://vfs.bovigo.org/", - "time": "2017-08-01T08:02:14+00:00" + "time": "2017-08-01 08:02:14" }, { "name": "mockery/mockery", @@ -3184,7 +4218,7 @@ "test double", "testing" ], - "time": "2017-10-06T16:20:43+00:00" + "time": "2017-10-06 16:20:43" }, { "name": "myclabs/deep-copy", @@ -3229,7 +4263,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2017-10-19 19:58:43" }, { "name": "phar-io/manifest", @@ -3284,7 +4318,7 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2017-03-05T18:14:27+00:00" + "time": "2017-03-05 18:14:27" }, { "name": "phar-io/version", @@ -3331,7 +4365,7 @@ } ], "description": "Library for handling version information and constraints", - "time": "2017-03-05T17:38:23+00:00" + "time": "2017-03-05 17:38:23" }, { "name": "phpspec/prophecy", @@ -3394,7 +4428,7 @@ "spy", "stub" ], - "time": "2017-11-24T13:59:53+00:00" + "time": "2017-11-24 13:59:53" }, { "name": "phpunit/php-code-coverage", @@ -3457,7 +4491,7 @@ "testing", "xunit" ], - "time": "2017-12-06T09:29:45+00:00" + "time": "2017-12-06 09:29:45" }, { "name": "phpunit/php-file-iterator", @@ -3504,7 +4538,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2017-11-27 13:52:08" }, { "name": "phpunit/php-text-template", @@ -3545,7 +4579,7 @@ "keywords": [ "template" ], - "time": "2015-06-21T13:50:34+00:00" + "time": "2015-06-21 13:50:34" }, { "name": "phpunit/php-timer", @@ -3594,7 +4628,7 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2017-02-26 11:10:40" }, { "name": "phpunit/php-token-stream", @@ -3643,7 +4677,7 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2017-11-27 05:48:46" }, { "name": "phpunit/phpunit", @@ -3727,20 +4761,20 @@ "testing", "xunit" ], - "time": "2017-12-17T06:31:19+00:00" + "time": "2017-12-17 06:31:19" }, { "name": "phpunit/phpunit-mock-objects", - "version": "5.0.5", + "version": "5.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "283b9f4f670e3a6fd6c4ff95c51a952eb5c75933" + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/283b9f4f670e3a6fd6c4ff95c51a952eb5c75933", - "reference": "283b9f4f670e3a6fd6c4ff95c51a952eb5c75933", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", + "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", "shasum": "" }, "require": { @@ -3786,7 +4820,7 @@ "mock", "xunit" ], - "time": "2017-12-10T08:01:53+00:00" + "time": "2018-01-06 05:45:45" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -3831,7 +4865,7 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "time": "2017-03-04T06:30:41+00:00" + "time": "2017-03-04 06:30:41" }, { "name": "sebastian/comparator", @@ -3895,7 +4929,7 @@ "compare", "equality" ], - "time": "2017-12-22T14:50:35+00:00" + "time": "2017-12-22 14:50:35" }, { "name": "sebastian/diff", @@ -3947,7 +4981,7 @@ "keywords": [ "diff" ], - "time": "2017-08-03T08:09:46+00:00" + "time": "2017-08-03 08:09:46" }, { "name": "sebastian/environment", @@ -3997,7 +5031,7 @@ "environment", "hhvm" ], - "time": "2017-07-01T08:51:00+00:00" + "time": "2017-07-01 08:51:00" }, { "name": "sebastian/exporter", @@ -4064,7 +5098,7 @@ "export", "exporter" ], - "time": "2017-04-03T13:19:02+00:00" + "time": "2017-04-03 13:19:02" }, { "name": "sebastian/global-state", @@ -4115,7 +5149,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27T15:39:26+00:00" + "time": "2017-04-27 15:39:26" }, { "name": "sebastian/object-enumerator", @@ -4162,7 +5196,7 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-08-03T12:35:26+00:00" + "time": "2017-08-03 12:35:26" }, { "name": "sebastian/object-reflector", @@ -4207,7 +5241,7 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "time": "2017-03-29T09:07:27+00:00" + "time": "2017-03-29 09:07:27" }, { "name": "sebastian/recursion-context", @@ -4260,7 +5294,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2017-03-03T06:23:57+00:00" + "time": "2017-03-03 06:23:57" }, { "name": "sebastian/resource-operations", @@ -4302,7 +5336,7 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2015-07-28 20:34:47" }, { "name": "sebastian/version", @@ -4345,7 +5379,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2016-10-03T07:35:21+00:00" + "time": "2016-10-03 07:35:21" }, { "name": "squizlabs/php_codesniffer", @@ -4420,20 +5454,20 @@ "phpcs", "standards" ], - "time": "2014-12-04T22:32:15+00:00" + "time": "2014-12-04 22:32:15" }, { "name": "symfony/class-loader", - "version": "v3.4.2", + "version": "v3.4.3", "source": { "type": "git", "url": "https://github.com/symfony/class-loader.git", - "reference": "e8d36a7b5568d232f5c3f8ef92665836b9f1e038" + "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/class-loader/zipball/e8d36a7b5568d232f5c3f8ef92665836b9f1e038", - "reference": "e8d36a7b5568d232f5c3f8ef92665836b9f1e038", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/e63c12699822bb3b667e7216ba07fbcc3a3e203e", + "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e", "shasum": "" }, "require": { @@ -4476,48 +5510,37 @@ ], "description": "Symfony ClassLoader Component", "homepage": "https://symfony.com", - "time": "2017-11-05T16:10:10+00:00" + "time": "2018-01-03 07:37:34" }, { - "name": "symfony/dependency-injection", - "version": "v3.2.14", + "name": "symfony/dotenv", + "version": "v4.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/dependency-injection.git", - "reference": "d9f2e62e1a93d52ad4e4f6faaf66f6eef723d761" + "url": "https://github.com/symfony/dotenv.git", + "reference": "afb6923923e22874dac20bd042167ccb8df1d158" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/d9f2e62e1a93d52ad4e4f6faaf66f6eef723d761", - "reference": "d9f2e62e1a93d52ad4e4f6faaf66f6eef723d761", + "url": "https://api.github.com/repos/symfony/dotenv/zipball/afb6923923e22874dac20bd042167ccb8df1d158", + "reference": "afb6923923e22874dac20bd042167ccb8df1d158", "shasum": "" }, "require": { - "php": ">=5.5.9" - }, - "conflict": { - "symfony/yaml": "<3.2" + "php": "^7.1.3" }, "require-dev": { - "symfony/config": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/yaml": "~3.2" - }, - "suggest": { - "symfony/config": "", - "symfony/expression-language": "For using expressions in service container configuration", - "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", - "symfony/yaml": "" + "symfony/process": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "4.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\DependencyInjection\\": "" + "Symfony\\Component\\Dotenv\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -4537,22 +5560,27 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DependencyInjection Component", + "description": "Registers environment variables from a .env file", "homepage": "https://symfony.com", - "time": "2017-07-28T15:22:55+00:00" + "keywords": [ + "dotenv", + "env", + "environment" + ], + "time": "2018-01-03 17:15:19" }, { "name": "symfony/expression-language", - "version": "v2.8.32", + "version": "v2.8.33", "source": { "type": "git", "url": "https://github.com/symfony/expression-language.git", - "reference": "bb512953dec1e0b1a1037778b1a6a3431b741db3" + "reference": "422bf02386ab46f615d1d784b771599357461d73" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/expression-language/zipball/bb512953dec1e0b1a1037778b1a6a3431b741db3", - "reference": "bb512953dec1e0b1a1037778b1a6a3431b741db3", + "url": "https://api.github.com/repos/symfony/expression-language/zipball/422bf02386ab46f615d1d784b771599357461d73", + "reference": "422bf02386ab46f615d1d784b771599357461d73", "shasum": "" }, "require": { @@ -4588,35 +5616,38 @@ ], "description": "Symfony ExpressionLanguage Component", "homepage": "https://symfony.com", - "time": "2017-11-12T16:36:54+00:00" + "time": "2018-01-03 07:36:31" }, { "name": "symfony/translation", - "version": "v3.3.14", + "version": "v4.0.3", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "373e553477e55cd08f8b86b74db766c75b987fdb" + "reference": "2bb1b9dac38d32c5afb00edc9371b5db4cf6d000" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/373e553477e55cd08f8b86b74db766c75b987fdb", - "reference": "373e553477e55cd08f8b86b74db766c75b987fdb", + "url": "https://api.github.com/repos/symfony/translation/zipball/2bb1b9dac38d32c5afb00edc9371b5db4cf6d000", + "reference": "2bb1b9dac38d32c5afb00edc9371b5db4cf6d000", "shasum": "" }, "require": { - "php": "^5.5.9|>=7.0.8", + "php": "^7.1.3", "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<2.8", - "symfony/yaml": "<3.3" + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/intl": "^2.8.18|^3.2.5", - "symfony/yaml": "~3.3" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { "psr/log": "To use logging capability in translator", @@ -4626,7 +5657,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4653,62 +5684,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2017-11-07T14:12:55+00:00" - }, - { - "name": "symfony/yaml", - "version": "v3.3.14", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "36353762fdca3a0ecdce4640764efc885df979f6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/36353762fdca3a0ecdce4640764efc885df979f6", - "reference": "36353762fdca3a0ecdce4640764efc885df979f6", - "shasum": "" - }, - "require": { - "php": "^5.5.9|>=7.0.8" - }, - "require-dev": { - "symfony/console": "~2.8|~3.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.3-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2017-12-04T14:51:35+00:00" + "time": "2018-01-03 07:38:00" }, { "name": "theseer/tokenizer", @@ -4748,19 +5724,21 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2017-04-07 12:08:54" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": { + "phpdocumentor/flyfinder": 10, "phpdocumentor/reflection": 20, - "phpdocumentor/flyfinder": 10 + "symfony/lts": 20 }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.0" + "php": ">=7.1.3", + "ext-iconv": "*" }, "platform-dev": [] } diff --git a/config/bundles.php b/config/bundles.php new file mode 100644 index 0000000000..56afc99e7c --- /dev/null +++ b/config/bundles.php @@ -0,0 +1,9 @@ + ['all' => true], + Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], + JMS\SerializerBundle\JMSSerializerBundle::class => ['all' => true], + Symfony\Bundle\MonologBundle\MonologBundle::class => ['all' => true], + phpDocumentor\Application\CilexCompatibilityLayer\CilexCompatibilityLayerBundle::class => ['all' => true], +]; diff --git a/config/packages/dev/jms_serializer.yaml b/config/packages/dev/jms_serializer.yaml new file mode 100644 index 0000000000..353e460275 --- /dev/null +++ b/config/packages/dev/jms_serializer.yaml @@ -0,0 +1,7 @@ +jms_serializer: + visitors: + json: + options: + - JSON_PRETTY_PRINT + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION diff --git a/config/packages/dev/monolog.yaml b/config/packages/dev/monolog.yaml new file mode 100644 index 0000000000..3662592880 --- /dev/null +++ b/config/packages/dev/monolog.yaml @@ -0,0 +1,19 @@ +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] + # uncomment to get logging in your browser + # you may have to allow bigger header sizes in your Web server configuration + #firephp: + # type: firephp + # level: info + #chromephp: + # type: chromephp + # level: info + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine", "!console"] diff --git a/config/packages/dev/routing.yaml b/config/packages/dev/routing.yaml new file mode 100644 index 0000000000..4116679a2e --- /dev/null +++ b/config/packages/dev/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: true diff --git a/config/packages/framework.yaml b/config/packages/framework.yaml new file mode 100644 index 0000000000..b32f52d989 --- /dev/null +++ b/config/packages/framework.yaml @@ -0,0 +1,15 @@ +framework: + secret: '%env(APP_SECRET)%' + #default_locale: en + #csrf_protection: ~ + #http_method_override: true + + # uncomment this entire section to enable sessions + #session: + # # With this config, PHP's native session handling is used + # handler_id: ~ + + #esi: ~ + #fragments: ~ + php_errors: + log: true diff --git a/config/packages/jms_serializer.yaml b/config/packages/jms_serializer.yaml new file mode 100644 index 0000000000..bab42dae47 --- /dev/null +++ b/config/packages/jms_serializer.yaml @@ -0,0 +1,13 @@ +jms_serializer: + visitors: + xml: + format_output: '%kernel.debug%' +# metadata: +# auto_detection: false +# directories: +# any-name: +# namespace_prefix: "My\\FooBundle" +# path: "@MyFooBundle/Resources/config/serializer" +# another-name: +# namespace_prefix: "My\\BarBundle" +# path: "@MyBarBundle/Resources/config/serializer" diff --git a/config/packages/prod/jms_serializer.yaml b/config/packages/prod/jms_serializer.yaml new file mode 100644 index 0000000000..bc97faf1f6 --- /dev/null +++ b/config/packages/prod/jms_serializer.yaml @@ -0,0 +1,6 @@ +jms_serializer: + visitors: + json: + options: + - JSON_UNESCAPED_SLASHES + - JSON_PRESERVE_ZERO_FRACTION diff --git a/config/packages/prod/monolog.yaml b/config/packages/prod/monolog.yaml new file mode 100644 index 0000000000..90e1a4c19b --- /dev/null +++ b/config/packages/prod/monolog.yaml @@ -0,0 +1,17 @@ +monolog: + handlers: + main: + type: fingers_crossed + action_level: error + handler: nested + excluded_404s: + # regex: exclude all 404 errors from the logs + - ^/ + nested: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + console: + type: console + process_psr_3_messages: false + channels: ["!event", "!doctrine"] diff --git a/config/packages/routing.yaml b/config/packages/routing.yaml new file mode 100644 index 0000000000..368bc7f491 --- /dev/null +++ b/config/packages/routing.yaml @@ -0,0 +1,3 @@ +framework: + router: + strict_requirements: ~ diff --git a/config/packages/test/framework.yaml b/config/packages/test/framework.yaml new file mode 100644 index 0000000000..8aa270e9bf --- /dev/null +++ b/config/packages/test/framework.yaml @@ -0,0 +1,5 @@ +framework: + test: ~ + # Uncomment this section if you're using sessions + #session: + # storage_id: session.storage.mock_file diff --git a/config/packages/test/monolog.yaml b/config/packages/test/monolog.yaml new file mode 100644 index 0000000000..2762653c82 --- /dev/null +++ b/config/packages/test/monolog.yaml @@ -0,0 +1,7 @@ +monolog: + handlers: + main: + type: stream + path: "%kernel.logs_dir%/%kernel.environment%.log" + level: debug + channels: ["!event"] diff --git a/config/routes.yaml b/config/routes.yaml new file mode 100644 index 0000000000..e69de29bb2 diff --git a/config/services.yaml b/config/services.yaml new file mode 100644 index 0000000000..cba0520e24 --- /dev/null +++ b/config/services.yaml @@ -0,0 +1,14 @@ +parameters: + +services: + _defaults: + autowire: true + autoconfigure: true + public: false + +# phpDocumentor\: +# resource: '../src/phpDocumentor/*' +# exclude: '../src/phpDocumentor/**/Messages' + + phpDocumentor\Application: + public: true diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000000..ab41c26e41 --- /dev/null +++ b/public/index.php @@ -0,0 +1,39 @@ +load(__DIR__.'/../.env'); +} + +$env = $_SERVER['APP_ENV'] ?? 'dev'; +$debug = $_SERVER['APP_DEBUG'] ?? ('prod' !== $env); + +if ($debug) { + umask(0000); + + Debug::enable(); +} + +if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) { + Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); +} + +if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) { + Request::setTrustedHosts(explode(',', $trustedHosts)); +} + +$kernel = new Kernel($env, $debug); +$request = Request::createFromGlobals(); +$response = $kernel->handle($request); +$response->send(); +$kernel->terminate($request, $response); diff --git a/src/Cilex/Provider/JmsSerializerServiceProvider.php b/src/Cilex/Provider/JmsSerializerServiceProvider.php deleted file mode 100644 index 9a29d08b95..0000000000 --- a/src/Cilex/Provider/JmsSerializerServiceProvider.php +++ /dev/null @@ -1,74 +0,0 @@ - 'JMS\Serializer\Annotation', 'path' => $serializerPath) - ); - - $app['serializer'] = function ($container) { - if (!isset($container['serializer.annotations']) || !is_array($container['serializer.annotations'])) { - throw new \RuntimeException( - 'Expected the container to have an array called "serializer.annotations" that describes which ' - . 'annotations are supported by the Serializer and where it can find them' - ); - } - - foreach ($container['serializer.annotations'] as $annotationsDefinition) { - if (!isset($annotationsDefinition['namespace'])) { - throw new \UnexpectedValueException( - 'The annotation definition for the Serializer should have a key "namespace" that tells the ' - . 'serializer what the namespace for the provided annotations are.' - ); - } - if (!isset($annotationsDefinition['path'])) { - throw new \UnexpectedValueException( - 'The annotation definition for the Serializer should have a key "path" that tells the ' - . 'serializer where it can find the provided annotations.' - ); - } - - AnnotationRegistry::registerAutoloadNamespace( - $annotationsDefinition['namespace'], - $annotationsDefinition['path'] - ); - } - - return SerializerBuilder::create()->build(); - }; - } -} diff --git a/src/Cilex/Provider/MonologServiceProvider.php b/src/Cilex/Provider/MonologServiceProvider.php deleted file mode 100644 index aec0c32bd5..0000000000 --- a/src/Cilex/Provider/MonologServiceProvider.php +++ /dev/null @@ -1,59 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Cilex\Provider; - -use Monolog\Logger; -use Monolog\Handler\StreamHandler; - -use Pimple\Container; -use Pimple\ServiceProviderInterface; - -/** - * Monolog Provider. - * - * This class is an adaptation of the Silex MonologServiceProvider written by - * Fabien Potencier. - * - * @author Fabien Potencier - * @author Mike van Riel - */ -class MonologServiceProvider implements ServiceProviderInterface -{ - public function register(Container $app) - { - $app['monolog'] = function () use ($app) { - $log = new Logger($app['monolog.name'] ?? 'myapp'); - $app['monolog.configure']($log); - - return $log; - }; - - $app['monolog.configure'] = $app->protect( - function ($log) use ($app) { - $log->pushHandler($app['monolog.handler']); - } - ); - - $app['monolog.handler'] = function () use ($app) { - return new StreamHandler($app['monolog.logfile'], $app['monolog.level']); - }; - - if (!isset($app['monolog.level'])) { - $app['monolog.level'] = function () { - return Logger::DEBUG; - }; - } - - if (isset($app['monolog.class_path'])) { - $app['autoloader']->registerNamespace('Monolog', $app['monolog.class_path']); - } - } -} diff --git a/src/Kernel.php b/src/Kernel.php new file mode 100644 index 0000000000..c1c527e74f --- /dev/null +++ b/src/Kernel.php @@ -0,0 +1,62 @@ +getProjectDir().'/var/cache/'.$this->environment; + } + + public function getLogDir() + { + return $this->getProjectDir().'/var/log'; + } + + public function registerBundles() + { + $contents = require $this->getProjectDir().'/config/bundles.php'; + foreach ($contents as $class => $envs) { + if (isset($envs['all']) || isset($envs[$this->environment])) { + yield new $class(); + } + } + } + + protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader) + { + $container->setParameter('container.autowiring.strict_mode', true); + $container->setParameter('container.dumper.inline_class_loader', true); + $confDir = $this->getProjectDir().'/config'; + $loader->load($confDir.'/packages/*'.self::CONFIG_EXTS, 'glob'); + if (is_dir($confDir.'/packages/'.$this->environment)) { + $loader->load($confDir.'/packages/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob'); + } + $loader->load($confDir.'/services'.self::CONFIG_EXTS, 'glob'); + $loader->load($confDir.'/services_'.$this->environment.self::CONFIG_EXTS, 'glob'); + } + + protected function configureRoutes(RouteCollectionBuilder $routes) + { + $confDir = $this->getProjectDir().'/config'; + if (is_dir($confDir.'/routes/')) { + $routes->import($confDir.'/routes/*'.self::CONFIG_EXTS, '/', 'glob'); + } + if (is_dir($confDir.'/routes/'.$this->environment)) { + $routes->import($confDir.'/routes/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); + } + $routes->import($confDir.'/routes'.self::CONFIG_EXTS, '/', 'glob'); + } +} diff --git a/src/phpDocumentor/Application.php b/src/phpDocumentor/Application.php index 540f9eff76..da4ac12fa3 100644 --- a/src/phpDocumentor/Application.php +++ b/src/phpDocumentor/Application.php @@ -12,21 +12,11 @@ namespace phpDocumentor; use Cilex\Application as Cilex; -use Cilex\Provider\JmsSerializerServiceProvider; -use Cilex\Provider\MonologServiceProvider; -use Cilex\Provider\ValidatorServiceProvider; -use Composer\Autoload\ClassLoader; -use Monolog\ErrorHandler; -use Monolog\Handler\NullHandler; -use Monolog\Handler\StreamHandler; -use Monolog\Logger; -use phpDocumentor\Command\Helper\ConfigurationHelper; -use phpDocumentor\Command\Helper\LoggerHelper; use phpDocumentor\Console\Input\ArgvInput; +use Psr\Container\ContainerInterface; use Symfony\Component\Console\Application as ConsoleApplication; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Shell; use Symfony\Component\Stopwatch\Stopwatch; /** @@ -41,33 +31,24 @@ class Application extends Cilex /** * Initializes all components used by phpDocumentor. - * - * @param ClassLoader $autoloader - * @param array $values */ - public function __construct($autoloader = null, array $values = array()) + public function __construct(ContainerInterface $container) { + parent::__construct($container); + $this->defineIniSettings(); self::$VERSION = strpos('@package_version@', '@') === 0 ? trim(file_get_contents(__DIR__ . '/../../VERSION')) : '@package_version@'; - parent::__construct('phpDocumentor', self::$VERSION, $values); - $this['kernel.timer.start'] = time(); $this['kernel.stopwatch'] = function () { return new Stopwatch(); }; - $this['autoloader'] = $autoloader; - - $this->register(new JmsSerializerServiceProvider()); $this->register(new Configuration\ServiceProvider()); - $this->addEventDispatcher(); - $this->addLogging(); - $this->register(new Translator\ServiceProvider()); $this->register(new Descriptor\ServiceProvider()); $this->register(new Partials\ServiceProvider()); @@ -80,85 +61,7 @@ public function __construct($autoloader = null, array $values = array()) if (\Phar::running()) { $this->addCommandsForPharNamespace(); } - } - - /** - * Removes all logging handlers and replaces them with handlers that can write to the given logPath and level. - * - * @param Logger $logger The logger instance that needs to be configured. - * @param integer $level The minimum level that will be written to the normal logfile; matches one of the - * constants in {@see \Monolog\Logger}. - * @param string $logPath The full path where the normal log file needs to be written. - * - * @return void - */ - public function configureLogger($logger, $level, $logPath = null) - { - /** @var Logger $monolog */ - $monolog = $logger; - - switch ($level) { - case 'emergency': - case 'emerg': - $level = Logger::EMERGENCY; - break; - case 'alert': - $level = Logger::ALERT; - break; - case 'critical': - case 'crit': - $level = Logger::CRITICAL; - break; - case 'error': - case 'err': - $level = Logger::ERROR; - break; - case 'warning': - case 'warn': - $level = Logger::WARNING; - break; - case 'notice': - $level = Logger::NOTICE; - break; - case 'info': - $level = Logger::INFO; - break; - case 'debug': - $level = Logger::DEBUG; - break; - } - - $this['monolog.level'] = $level; - if ($logPath) { - $logPath = str_replace( - array('{APP_ROOT}', '{DATE}'), - array(realpath(__DIR__ . '/../..'), $this['kernel.timer.start']), - $logPath - ); - $this['monolog.logfile'] = $logPath; - } - - // remove all handlers from the stack - try { - while ($monolog->popHandler()) { - } - } catch (\LogicException $e) { - // popHandler throws an exception when you try to pop the empty stack; to us this is not an - // error but an indication that the handler stack is empty. - } - - if ($level === 'quiet') { - $monolog->pushHandler(new NullHandler()); - - return; - } - - // set our new handlers - if ($logPath) { - $monolog->pushHandler(new StreamHandler($logPath, $level)); - } else { - $monolog->pushHandler(new StreamHandler('php://stdout', $level)); - } + $this->container = $container; } /** @@ -230,60 +133,6 @@ protected function setTimezone() } } - /** - * Adds a logging provider to the container of phpDocumentor. - * - * @return void - */ - protected function addLogging() - { - $this->register( - new MonologServiceProvider(), - array( - 'monolog.name' => 'phpDocumentor', - 'monolog.logfile' => sys_get_temp_dir() . '/phpdoc.log', - 'monolog.debugfile' => sys_get_temp_dir() . '/phpdoc.debug.log', - 'monolog.level' => Logger::INFO, - ) - ); - - $app = $this; - /** @var Configuration $configuration */ - $configuration = $this['config']; - $this['monolog.configure'] = $this->protect( - function ($log) use ($app, $configuration) { - $paths = $configuration->getLogging()->getPaths(); - $logLevel = $configuration->getLogging()->getLevel(); - - $app->configureLogger($log, $logLevel, $paths['default']); - } - ); - - $this->extend( - 'console', - function (ConsoleApplication $console) use ($configuration) { - $console->getHelperSet()->set(new LoggerHelper()); - $console->getHelperSet()->set(new ConfigurationHelper($configuration)); - - return $console; - } - ); - - ErrorHandler::register($this['monolog']); - } - - /** - * Adds the event dispatcher to phpDocumentor's container. - * - * @return void - */ - protected function addEventDispatcher() - { - $this['event_dispatcher'] = function () { - return Event\Dispatcher::getInstance(); - }; - } - /** * Adds the command to phpDocumentor that belong to the Project namespace. * diff --git a/src/phpDocumentor/Application/CilexCompatibilityLayer/Application.php b/src/phpDocumentor/Application/CilexCompatibilityLayer/Application.php new file mode 100644 index 0000000000..4d90d76f55 --- /dev/null +++ b/src/phpDocumentor/Application/CilexCompatibilityLayer/Application.php @@ -0,0 +1,11 @@ +container->get(Application::class); + } + + public function registerCommands(\Symfony\Component\Console\Application $application) + { + if ($this->container->has('phpdocumentor.compatibility.extra_commands')) { + $commands = $this->container->get('phpdocumentor.compatibility.extra_commands'); + + foreach ($commands as $command) { + $application->add($command); + } + } + } +} diff --git a/src/phpDocumentor/Application/CilexCompatibilityLayer/Container.php b/src/phpDocumentor/Application/CilexCompatibilityLayer/Container.php new file mode 100644 index 0000000000..302881e6d4 --- /dev/null +++ b/src/phpDocumentor/Application/CilexCompatibilityLayer/Container.php @@ -0,0 +1,68 @@ +container = $container; + } + + public function offsetExists($offset) + { + return $this->container->has($offset); + } + + public function offsetGet($offset) + { + try { + return $this->container->get($offset); + } catch (NotFoundExceptionInterface $exception) { + return null; + } + } + + public function offsetSet($offset, $value) + { + if ($value instanceof \Closure) { + $value = $value($this); + } + $this->container->set($offset, $value); + } + + public function offsetUnset($offset) + { + $this->container->set($offset, null); + } + + public function register(ServiceProviderInterface $serviceProvider) + { + $serviceProvider->register($this); + } + + public function extend(string $serviceId, \Closure $extendingService) + { + return $extendingService($this->container->get($serviceId)); + } + + public function command(Command $command) + { + if ( ! $this->container->has('phpdocumentor.compatibility.extra_commands')) { + $this->container->set('phpdocumentor.compatibility.extra_commands', new \ArrayObject()); + } + + $this->container->get('phpdocumentor.compatibility.extra_commands')->append($command); + } + } +} diff --git a/src/phpDocumentor/Application/CilexCompatibilityLayer/DependencyInjection/CilexCompatibilityLayerExtension.php b/src/phpDocumentor/Application/CilexCompatibilityLayer/DependencyInjection/CilexCompatibilityLayerExtension.php new file mode 100644 index 0000000000..5f87f6023d --- /dev/null +++ b/src/phpDocumentor/Application/CilexCompatibilityLayer/DependencyInjection/CilexCompatibilityLayerExtension.php @@ -0,0 +1,22 @@ +load('services.yaml'); + } +} diff --git a/src/phpDocumentor/Application/CilexCompatibilityLayer/README.md b/src/phpDocumentor/Application/CilexCompatibilityLayer/README.md new file mode 100644 index 0000000000..ab7a2a789a --- /dev/null +++ b/src/phpDocumentor/Application/CilexCompatibilityLayer/README.md @@ -0,0 +1,16 @@ +Cilex Compatibility Layer +========================= + +For phpDocumentor 3 we wanted to migrate from Cilex to Symfony 4 without breaking backwards +compatibility with userland plugins. + +With this bundle we provide a layer simulating all the necessary classes and interfacing to +process Cilex ServiceProviders and inject the defined services into Symfony. + +It is important to note that this Compatibility Layer only simulates Cilex if it is isn't +loaded. As such phpDocumentor 3 is incompatible with a project including Cilex as its own +framework. + +Another important note is that the classes in this bundle do not follow the PSR-2 namespace +naming convention as we need to capture specific classes. This also means that when you +want to use this that you need to add the necessary autoloading statements to your composer.json. diff --git a/src/phpDocumentor/Application/CilexCompatibilityLayer/Resources/config/services.yaml b/src/phpDocumentor/Application/CilexCompatibilityLayer/Resources/config/services.yaml new file mode 100644 index 0000000000..36c1516601 --- /dev/null +++ b/src/phpDocumentor/Application/CilexCompatibilityLayer/Resources/config/services.yaml @@ -0,0 +1,14 @@ +parameters: + +services: + logger: + alias: monolog.logger + public: true + + monolog: + alias: logger + public: true + + serializer: + alias: jms_serializer + public: true diff --git a/src/phpDocumentor/Application/CilexCompatibilityLayer/ServiceProviderInterface.php b/src/phpDocumentor/Application/CilexCompatibilityLayer/ServiceProviderInterface.php new file mode 100644 index 0000000000..54138d2266 --- /dev/null +++ b/src/phpDocumentor/Application/CilexCompatibilityLayer/ServiceProviderInterface.php @@ -0,0 +1,12 @@ +initialize(); - * - * This will setup the autoloader and application, including Service Container, and return an instance of the - * application ready to be ran using the `run` command. - * - * If you need more control you can do some of the steps manually: - * - * $bootstrap = Bootstap::createInstance(); - * $autoloader = $bootstrap->createAutoloader(); - * $app = new Application($autoloader) - */ -class Bootstrap -{ - /** - * Helper static function to get an instance of this class. - * - * Usually used to do a one-line initialization, such as: - * - * \phpDocumentor\Bootstrap::createInstance()->initialize(); - * - * @return Bootstrap - */ - public static function createInstance() - { - return new self(); - } - - /** - * Convenience method that does the complete initialization for phpDocumentor. - * - * @return Application - */ - public function initialize() - { - $vendorPath = $this->findVendorPath(); - - $autoloader = $this->createAutoloader($vendorPath); - - return new Application($autoloader, array('composer.vendor_path' => $vendorPath)); - } - - /** - * Sets up XHProf so that we can profile phpDocumentor using XHGUI. - * - * @return self - */ - public function registerProfiler() - { - // check whether xhprof is loaded - $profile = (bool) (getenv('PHPDOC_PROFILE') === 'on'); - $xhguiPath = getenv('XHGUI_PATH'); - if ($profile && $xhguiPath && extension_loaded('xhprof')) { - echo 'PROFILING ENABLED' . PHP_EOL; - include($xhguiPath . '/external/header.php'); - } - - return $this; - } - - /** - * Initializes and returns the autoloader. - * - * @param string|null $vendorDir A path (either absolute or relative to the current working directory) leading to - * the vendor folder where composer installed the dependencies. - * - * @throws \RuntimeException if no autoloader could be found. - * - * @return ClassLoader - */ - public function createAutoloader($vendorDir = null) - { - if (! $vendorDir) { - $vendorDir = __DIR__ . '/../../vendor'; - } - - $autoloader_location = $vendorDir . '/autoload.php'; - if (! file_exists($autoloader_location) || ! is_readable($autoloader_location)) { - throw new \RuntimeException( - 'phpDocumentor expected to find an autoloader at "' . $autoloader_location . '" but it was not there. ' - . 'Usually this is because the "composer install" command has not been ran yet. If this is not the ' - . 'case, please open an issue at http://github.com/phpDocumentor/phpDocumentor2 detailing what ' - . 'installation method you used, which path is mentioned in this error message and any other relevant ' - . 'information.' - ); - } - - return require $autoloader_location; - } - - /** - * Attempts to find the location of the vendor folder. - * - * This method tries to check for a composer.json in a directory 5 levels below the folder of this Bootstrap file. - * This is the expected location if phpDocumentor is installed using composer because the current directory for - * this file is expected to be 'vendor/phpdocumentor/phpdocumentor/src/phpDocumentor'. - * - * If a composer.json is found we will try to extract the vendor folder name using the 'vendor-dir' configuration - * option of composer or assume it is vendor if that option is not set. - * - * - * If no custom composer.json can be found, then we assume that the vendor folder is that of phpDocumentor itself, - * which is `../../vendor` starting from this folder. - * - * If neither locations exist, then this method returns null because no vendor path could be found. - * - * @param string $baseDir parameter for test purposes only. - * @return string|null - */ - public function findVendorPath($baseDir = __DIR__) - { - // default installation - $vendorDir = $baseDir . '/../../vendor'; - - // Composerised installation, vendor/phpdocumentor/phpdocumentor/src/phpDocumentor is __DIR__ - $rootFolderWhenInstalledWithComposer = $baseDir . '/../../../../../'; - $composerConfigurationPath = $rootFolderWhenInstalledWithComposer .'composer.json'; - if (file_exists($composerConfigurationPath)) { - $vendorDir = $rootFolderWhenInstalledWithComposer - . $this->getCustomVendorPathFromComposer($composerConfigurationPath); - } - - return file_exists($vendorDir) ? $vendorDir : null; - } - - /** - * Retrieves the custom vendor-dir from the given composer.json or returns 'vendor'. - * - * @param string $composerConfigurationPath the path pointing to the composer.json - * - * @return string - */ - protected function getCustomVendorPathFromComposer($composerConfigurationPath) - { - $composerFile = file_get_contents($composerConfigurationPath); - $composerJson = json_decode($composerFile, true); - - return $composerJson['config']['vendor-dir'] ?? 'vendor'; - } -} diff --git a/src/phpDocumentor/Command/Command.php b/src/phpDocumentor/Command/Command.php index c49f549bb9..6f4a7cc9ec 100644 --- a/src/phpDocumentor/Command/Command.php +++ b/src/phpDocumentor/Command/Command.php @@ -12,7 +12,7 @@ namespace phpDocumentor\Command; -use Cilex\Provider\Console\Command as BaseCommand; +use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand as BaseCommand; use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Helper\ProgressHelper; use Symfony\Component\Console\Input\InputInterface; @@ -33,8 +33,13 @@ class Command extends BaseCommand public function setHelperSet(HelperSet $helperSet) { parent::setHelperSet($helperSet); +// +// $this->getHelper('phpdocumentor_logger')->addOptions($this); + } - $this->getHelper('phpdocumentor_logger')->addOptions($this); + public function getService(string $name) + { + return $this->getContainer()->get($name); } /** diff --git a/src/phpDocumentor/Command/Helper/LoggerHelper.php b/src/phpDocumentor/Command/Helper/LoggerHelper.php index ea59b1c0b5..a7009c16f7 100644 --- a/src/phpDocumentor/Command/Helper/LoggerHelper.php +++ b/src/phpDocumentor/Command/Helper/LoggerHelper.php @@ -123,7 +123,7 @@ public function logEvent(OutputInterface $output, LogEvent $event, Command $comm if ($numericErrors[$event->getPriority()] >= $numericErrors[$threshold]) { /** @var Translator $translator */ - $translator = $command->getContainer()->offsetGet('translator'); + $translator = $command->getService('translator'); $message = vsprintf($translator->translate($event->getMessage()), $event->getContext()); switch ($event->getPriority()) { diff --git a/src/phpDocumentor/Command/Project/RunCommand.php b/src/phpDocumentor/Command/Project/RunCommand.php index d79c9345ef..dc1a03a3c6 100644 --- a/src/phpDocumentor/Command/Project/RunCommand.php +++ b/src/phpDocumentor/Command/Project/RunCommand.php @@ -121,7 +121,7 @@ protected function configure() ) ->addOption( 'extensions', - 'e', + null, InputOption::VALUE_OPTIONAL | InputOption::VALUE_IS_ARRAY, 'Comma-separated list of extensions to parse, defaults to php, php3 and phtml' ) diff --git a/src/phpDocumentor/Configuration/ServiceProvider.php b/src/phpDocumentor/Configuration/ServiceProvider.php index 4ce2e9065e..c6535db6d6 100644 --- a/src/phpDocumentor/Configuration/ServiceProvider.php +++ b/src/phpDocumentor/Configuration/ServiceProvider.php @@ -12,6 +12,7 @@ namespace phpDocumentor\Configuration; use Cilex\Application; +use Doctrine\Common\Annotations\AnnotationRegistry; use Pimple\Container; use Pimple\ServiceProviderInterface; use Doctrine\Common\Annotations\AnnotationReader; @@ -54,21 +55,21 @@ public function register(Container $app) { $this->addMerger($app); - $app->extend( - 'console', - function (ConsoleApplication $console) { - $console->getDefinition()->addOption( - new InputOption( - 'config', - 'c', - InputOption::VALUE_OPTIONAL, - 'Location of a custom configuration file' - ) - ); - - return $console; - } - ); +// $app->extend( +// 'console', +// function (ConsoleApplication $console) { +// $console->getDefinition()->addOption( +// new InputOption( +// 'config', +// 'c', +// InputOption::VALUE_OPTIONAL, +// 'Location of a custom configuration file' +// ) +// ); +// +// return $console; +// } +// ); $app['config.path.template'] = __DIR__ . '/Resources/phpdoc.tpl.xml'; $app['config.path.user'] = getcwd() @@ -91,37 +92,8 @@ function (ConsoleApplication $console) { */ private function addMerger(Application $container) { - $this->addMergerAnnotations($container); - $container['config.merger'] = function () { return new Merger(new AnnotationReader()); }; } - - /** - * Adds the annotations for the Merger component to the Serializer. - * - * @param Application $container - * - * @throws \RuntimeException if the annotation handler for Jms Serializer is not added to the container as - * 'serializer.annotations' service. - * - * @return void - */ - private function addMergerAnnotations(Application $container) - { - if (!isset($container['serializer.annotations'])) { - throw new \RuntimeException( - 'The configuration service provider depends on the JmsSerializer Service Provider but the ' - . '"serializer.annotations" key could not be found in the container.' - ); - } - - $annotations = $container['serializer.annotations']; - $annotations[] = array( - 'namespace' => 'phpDocumentor\Configuration\Merger\Annotation', - 'path' => __DIR__ . '/../../' - ); - $container['serializer.annotations'] = $annotations; - } } diff --git a/src/phpDocumentor/Parser/Command/Project/ParseCommand.php b/src/phpDocumentor/Parser/Command/Project/ParseCommand.php index 0494dfb2c2..7e8022ffb6 100644 --- a/src/phpDocumentor/Parser/Command/Project/ParseCommand.php +++ b/src/phpDocumentor/Parser/Command/Project/ParseCommand.php @@ -150,7 +150,7 @@ protected function configure() ->addOption('directory', 'd', $VALUE_OPTIONAL_ARRAY, $this->__('PPCPP:OPT-DIRECTORY')) ->addOption('target', 't', InputOption::VALUE_OPTIONAL, $this->__('PPCPP:OPT-TARGET')) ->addOption('encoding', null, InputOption::VALUE_OPTIONAL, $this->__('PPCPP:OPT-ENCODING')) - ->addOption('extensions', 'e', $VALUE_OPTIONAL_ARRAY, $this->__('PPCPP:OPT-EXTENSIONS')) + ->addOption('extensions', null, $VALUE_OPTIONAL_ARRAY, $this->__('PPCPP:OPT-EXTENSIONS')) ->addOption('ignore', 'i', $VALUE_OPTIONAL_ARRAY, $this->__('PPCPP:OPT-IGNORE')) ->addOption('ignore-tags', null, $VALUE_OPTIONAL_ARRAY, $this->__('PPCPP:OPT-IGNORETAGS')) ->addOption('hidden', null, InputOption::VALUE_NONE, $this->__('PPCPP:OPT-HIDDEN')) diff --git a/src/phpDocumentor/Transformer/ServiceProvider.php b/src/phpDocumentor/Transformer/ServiceProvider.php index 6ecd4f03a5..ae01244a70 100644 --- a/src/phpDocumentor/Transformer/ServiceProvider.php +++ b/src/phpDocumentor/Transformer/ServiceProvider.php @@ -105,6 +105,27 @@ public function register(Container $app) ); // services + $app['transformer.routing.standard'] = function ($container) { + /** @var ProjectDescriptorBuilder $projectDescriptorBuilder */ + $projectDescriptorBuilder = $container['descriptor.builder']; + + return new Router\StandardRouter($projectDescriptorBuilder); + }; + + $app['transformer.routing.external'] = function ($container) { + return new Router\ExternalRouter($container['config']); + }; + + $app['transformer.routing.queue'] = function ($container) { + $queue = new Router\Queue(); + + // TODO: load from app configuration instead of hardcoded + $queue->insert($container['transformer.routing.external'], 10500); + $queue->insert($container['transformer.routing.standard'], 10000); + + return $queue; + }; + $app['compiler'] = function ($container) { $compiler = new Compiler(); $compiler->insert(new ElementsIndexBuilder(), ElementsIndexBuilder::COMPILER_PRIORITY); @@ -139,27 +160,6 @@ public function register(Container $app) return new Behaviour\Collection(); }; - $app['transformer.routing.standard'] = function ($container) { - /** @var ProjectDescriptorBuilder $projectDescriptorBuilder */ - $projectDescriptorBuilder = $container['descriptor.builder']; - - return new Router\StandardRouter($projectDescriptorBuilder); - }; - - $app['transformer.routing.external'] = function ($container) { - return new Router\ExternalRouter($container['config']); - }; - - $app['transformer.routing.queue'] = function ($container) { - $queue = new Router\Queue(); - - // TODO: load from app configuration instead of hardcoded - $queue->insert($container['transformer.routing.external'], 10500); - $queue->insert($container['transformer.routing.standard'], 10000); - - return $queue; - }; - $app['transformer.writer.collection'] = function ($container) { return new Writer\Collection($container['transformer.routing.queue']); }; diff --git a/symfony.lock b/symfony.lock new file mode 100644 index 0000000000..744d829f59 --- /dev/null +++ b/symfony.lock @@ -0,0 +1,161 @@ +{ + "doctrine/annotations": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672" + } + }, + "doctrine/cache": { + "version": "v1.7.1" + }, + "doctrine/collections": { + "version": "v1.5.0" + }, + "doctrine/common": { + "version": "v2.8.1" + }, + "doctrine/inflector": { + "version": "v1.2.0" + }, + "doctrine/lexer": { + "version": "v1.0.1" + }, + "jms/metadata": { + "version": "1.6.0" + }, + "jms/parser-lib": { + "version": "1.0.0" + }, + "jms/serializer": { + "version": "1.10.0" + }, + "jms/serializer-bundle": { + "version": "2.0", + "recipe": { + "repo": "github.com/symfony/recipes-contrib", + "branch": "master", + "version": "2.0", + "ref": "fe60ce509ef04a3f40da96e3979bc8d9b13b2372" + } + }, + "phpcollection/phpcollection": { + "version": "0.5.0" + }, + "phpoption/phpoption": { + "version": "1.5.0" + }, + "psr/cache": { + "version": "1.0.1" + }, + "psr/container": { + "version": "1.0.0" + }, + "psr/log": { + "version": "1.0.2" + }, + "psr/simple-cache": { + "version": "1.0.0" + }, + "sensio/framework-extra-bundle": { + "version": "4.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.0", + "ref": "aaddfdf43cdecd4cf91f992052d76c2cadc04543" + } + }, + "symfony/cache": { + "version": "v4.0.3" + }, + "symfony/config": { + "version": "v4.0.3" + }, + "symfony/console": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "9f94d3ea453cd8a3b95db7f82592d7344fe3a76a" + } + }, + "symfony/debug": { + "version": "v4.0.3" + }, + "symfony/dependency-injection": { + "version": "v4.0.3" + }, + "symfony/dotenv": { + "version": "v4.0.3" + }, + "symfony/event-dispatcher": { + "version": "v4.0.3" + }, + "symfony/filesystem": { + "version": "v4.0.3" + }, + "symfony/finder": { + "version": "v4.0.3" + }, + "symfony/flex": { + "version": "1.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "1.0", + "ref": "cc1afd81841db36fbef982fe56b48ade6716fac4" + } + }, + "symfony/framework-bundle": { + "version": "3.3", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.3", + "ref": "18f6fdceb63737d991efbb37ae9619a6f6c978c8" + } + }, + "symfony/http-foundation": { + "version": "v4.0.3" + }, + "symfony/http-kernel": { + "version": "v4.0.3" + }, + "symfony/lts": { + "version": "4-dev" + }, + "symfony/monolog-bridge": { + "version": "v4.0.3" + }, + "symfony/monolog-bundle": { + "version": "3.1", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "3.1", + "ref": "371d1a2b69984710646b09a1182ef1d4308c904f" + } + }, + "symfony/polyfill-mbstring": { + "version": "v1.6.0" + }, + "symfony/routing": { + "version": "4.0", + "recipe": { + "repo": "github.com/symfony/recipes", + "branch": "master", + "version": "4.0", + "ref": "cda8b550123383d25827705d05a42acf6819fe4e" + } + }, + "symfony/stopwatch": { + "version": "v4.0.3" + }, + "symfony/yaml": { + "version": "v4.0.3" + } +} diff --git a/tests/unit/phpDocumentor/ApplicationTest.php b/tests/unit/phpDocumentor/ApplicationTest.php index a40b013723..306919c8f5 100644 --- a/tests/unit/phpDocumentor/ApplicationTest.php +++ b/tests/unit/phpDocumentor/ApplicationTest.php @@ -36,21 +36,6 @@ public function testIfVersionIsPopulated() $this->assertRegExp('/^[\d]+\.[\d]+\.[\d]+(\-[\w]+)?$/', Application::$VERSION); } - /** - * @covers phpDocumentor\Application::__construct - */ - public function testIfAutoloaderIsRegistered() - { - // Arrange - $autoloader = m::mock('Composer\Autoload\ClassLoader'); - - // Act - $application = new Application($autoloader); - - // Assert - $this->assertSame($autoloader, $application['autoloader']); - } - /** * @covers phpDocumentor\Application::__construct */ @@ -174,7 +159,7 @@ public function testSetLogLevel($loglevel, $expectedLogLevel) /** * Data provider for testSetLogLevel * - * @return array[] + * @return array[] */ public function loglevelProvider() {