diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..a1fd07b --- /dev/null +++ b/.dockerignore @@ -0,0 +1,32 @@ +**/*.DS_Store +**/*.log +**/*.md +**/*.php~ +**/*.sql.gz +**/._* +**/.dockerignore +**/.gitignore +**/Dockerfile +**/Thumbs.db +*.env.dist +*.sublime-project +*.sublime-workspace +.editorconfig +.env +.git/ +.gitattributes +.gitlab-ci.yml +.gitmodules +.php_cs.cache +.travis.yml +app/config/parameters.yml +bin/symfony_requirements +build/ +composer.phar +docker-compose.override.yml +docker-compose.yml +docker/db/data/ +var/ +vendor/ +web/index.php +web/bundles/ \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index c6b5dc5..a73deb1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,31 +4,34 @@ sudo: false cache: directories: - - bin - - vendor - - $HOME/.composer/cache + - $HOME/.composer/cache/files + - $HOME/symfony-bridge/.phpunit -php: - - 7.0 - - 7.1 - - 7.2 +matrix: + fast_finish: true + include: + - php: 7.1 + - php: 7.2 env: - global: - - SYMFONY_PHPUNIT_VERSION=5.5 - - SYMFONY_DEPRECATIONS_HELPER=disabled + global: + - SYMFONY_PHPUNIT_DIR="$HOME/symfony-bridge/.phpunit" + - SYMFONY_PHPUNIT_VERSION=5.7 before_install: - phpenv config-rm xdebug.ini - composer self-update install: - - composer update --prefer-dist --no-interaction --no-progress + - composer install + - ./vendor/bin/simple-phpunit install script: - vendor/bin/simple-phpunit - vendor/bin/php-cs-fixer fix --config=.php_cs -v --dry-run --using-cache=no --path-mode=intersection `git diff --name-only --diff-filter=ACMRTUXB $TRAVIS_COMMIT_RANGE` - + - ./bin/console lint:yaml app/config + - ./bin/console lint:twig app/Resources + - ./bin/console security:check --end-point=http://security.sensiolabs.org/check_lock notifications: email: false diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c522e31 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,67 @@ +FROM php:7.1-fpm-alpine + +RUN apk add --no-cache --virtual .persistent-deps \ + git \ + icu-libs \ + zlib + +ENV APCU_VERSION 5.1.8 + +RUN set -xe \ + && apk add --no-cache --virtual .build-deps \ + $PHPIZE_DEPS \ + icu-dev \ + zlib-dev \ + && docker-php-ext-install \ + intl \ + pdo_mysql \ + zip \ + && pecl install \ + apcu-${APCU_VERSION} \ + && docker-php-ext-enable --ini-name 20-apcu.ini apcu \ + && docker-php-ext-enable --ini-name 05-opcache.ini opcache \ + && apk del .build-deps + +COPY docker/app/php.ini /usr/local/etc/php/php.ini + +COPY docker/app/install-composer.sh /usr/local/bin/docker-app-install-composer +RUN chmod +x /usr/local/bin/docker-app-install-composer + +RUN set -xe \ + && apk add --no-cache --virtual .fetch-deps \ + openssl \ + && docker-app-install-composer \ + && mv composer.phar /usr/local/bin/composer \ + && apk del .fetch-deps + +# https://getcomposer.org/doc/03-cli.md#composer-allow-superuser +ENV COMPOSER_ALLOW_SUPERUSER 1 + +RUN composer global require "hirak/prestissimo:^0.3" --prefer-dist --no-progress --no-suggest --optimize-autoloader --classmap-authoritative \ + && composer clear-cache + +WORKDIR /srv/prestonbot + +COPY composer.json ./ + +RUN mkdir -p \ + var/cache \ + var/logs \ + var/sessions \ + && composer install --prefer-dist --no-dev --no-autoloader --no-scripts --no-progress --no-suggest \ + && composer clear-cache \ + # Permissions hack because setfacl does not work on Mac and Windows + && chown -R www-data var + +COPY app app/ +COPY bin bin/ +COPY src src/ +COPY web web/ + +RUN composer dump-autoload --optimize --classmap-authoritative --no-dev + +COPY docker/app/docker-entrypoint.sh /usr/local/bin/docker-app-entrypoint +RUN chmod +x /usr/local/bin/docker-app-entrypoint + +ENTRYPOINT ["docker-app-entrypoint"] +CMD ["php-fpm"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..37f5d27 --- /dev/null +++ b/Makefile @@ -0,0 +1,51 @@ +# Makefile for docker use + +APP=docker-compose exec -T app +TAPP=docker-compose exec +TTAPP=docker-compose exec -e APP_ENV=test +CAPP=docker-compose run app composer +CONSOLE=$(APP) /usr/local/bin/php bin/console + +.PHONY: help install start stop destroy composer console app nginx test cs server + +help: ## Show this help + @fgrep -h "##" $(MAKEFILE_LIST) | fgrep -v fgrep | sed -e 's/\\$$//' | sed -e 's/##//' + +install: ## Setup the project using Docker and docker-compose +install: start composer-install + +start: ## Start the containers + docker-compose up -d + +stop: ## Stop the Docker containers and remove the volumes + docker-compose down -v + +destroy: ## Destroy all containers, volumes, networks + docker-compose down --rmi all + +composer: ## Composer + $(CAPP) $(filter-out $@,$(MAKECMDGOALS)) + +composer-install: # Install the project PHP dependencies + $(CAPP) install -o + +console: ## Console + $(CONSOLE) $(filter-out $@,$(MAKECMDGOALS)) + +app: ## Shell of Application container + $(TAPP) app sh + +nginx: ## Shell of Nginx container + $(TAPP) nginx sh + +test: ## Launch tests + $(TAPP) app env APP_ENV=test ./vendor/bin/simple-phpunit + +cs: ## Fix Coding styles + $(TAPP) app ./vendor/bin/php-cs-fixer fix + +server: ## Start local PHP server (Non docker use only) + php -S localhost:8888 -t web + +%: +@: \ No newline at end of file diff --git a/README.md b/README.md index b7f7c31..8654b35 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ This application is based on Symfony CarsonBot and aims to help PrestaShop maint ![Preston, the PrestaShop contributor best friend](http://i.imgur.com/r26gJW4.png) -## How to install ? +### Classic installation First of all you have to configure your GitHub repository and have a GitHub token. @@ -12,20 +12,32 @@ First of all you have to configure your GitHub repository and have a GitHub toke composer install // and complete the interactive fields asked ``` -## How to test ? +### Docker installation + +First, setup the `docker-compose.yml` file with a valid GitHub token and a valid Secure token (can be empty). ```bash -./vendor/bin/simple-phpunit +make start ``` +The Home page is now available at "http://localhost:81/". + You need also to create your own GitHub [personal token](https://github.com/settings/tokens) and export it: ```bash -export SYMFONY_PHPUNIT_VERSION=5.5 +export SYMFONY_PHPUNIT_VERSION=5.7 export GH_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXX export GH_SECURED_TOKEN=YYYYYYYYYYYYYYYYYYYYYYYYYYYY ``` +## How to run the test suite ? + +```bash +./vendor/bin/simple-phpunit +# or (using docker) +make test +``` + > To launch unit tests, you only need to setup your own Github token (`GH_TOKEN`). ## Our standards ? @@ -42,7 +54,6 @@ Yeah, mostly the *Symfony* ones: * Extract data from the pull request and look for some terms; * Manage labels; * Validate a pull request description; -* Validate every commit label; * Welcome every new contributor; * Labelize a PR regarding information in description * Labelize a PR regarding files updated diff --git a/app/AppKernel.php b/app/AppKernel.php index 4edc2f8..3739d35 100644 --- a/app/AppKernel.php +++ b/app/AppKernel.php @@ -13,7 +13,6 @@ public function registerBundles() new Symfony\Bundle\TwigBundle\TwigBundle(), new Symfony\Bundle\MonologBundle\MonologBundle(), new Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle(), - new Doctrine\Bundle\DoctrineBundle\DoctrineBundle(), new Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle(), new AppBundle\AppBundle(), ]; diff --git a/app/config/config.yml b/app/config/config.yml index 08341d6..a02df25 100644 --- a/app/config/config.yml +++ b/app/config/config.yml @@ -7,8 +7,6 @@ imports: # http://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration parameters: locale: en - labels_pr_creation: false - enable_labels: true framework: #esi: ~ @@ -26,7 +24,6 @@ framework: engines: ['twig'] default_locale: "%locale%" trusted_hosts: ~ - trusted_proxies: ~ session: # http://symfony.com/doc/current/reference/configuration/framework.html#handler-id handler_id: session.handler.native_file @@ -44,28 +41,6 @@ twig: debug: "%kernel.debug%" strict_variables: "%kernel.debug%" -# Doctrine Configuration -doctrine: - dbal: - driver: pdo_mysql - host: "%database_host%" - port: "%database_port%" - dbname: "%database_name%" - user: "%database_user%" - password: "%database_password%" - charset: UTF8 - # if using pdo_sqlite as your database driver: - # 1. add the path in parameters.yml - # e.g. database_path: "%kernel.root_dir%/data/data.db3" - # 2. Uncomment database_path in parameters.yml.dist - # 3. Uncomment next line: - # path: "%database_path%" - - orm: - auto_generate_proxy_classes: "%kernel.debug%" - naming_strategy: doctrine.orm.naming_strategy.underscore - auto_mapping: true - # Swiftmailer Configuration swiftmailer: transport: "%mailer_transport%" diff --git a/app/config/config_dev.yml b/app/config/config_dev.yml index d7a33df..b3970f0 100644 --- a/app/config/config_dev.yml +++ b/app/config/config_dev.yml @@ -24,15 +24,8 @@ monolog: verbosity_levels: VERBOSITY_VERBOSE: INFO VERBOSITY_VERY_VERBOSE: DEBUG - channels: ["!doctrine"] - console_very_verbose: - type: console - bubble: false - verbosity_levels: - VERBOSITY_VERBOSE: NOTICE - VERBOSITY_VERY_VERBOSE: NOTICE - VERBOSITY_DEBUG: DEBUG - channels: ["doctrine"] + channels: [] + # uncomment to get logging in your browser # you may have to allow bigger header sizes in your Web server configuration #firephp: diff --git a/app/config/config_prod.yml b/app/config/config_prod.yml index 5e5f0bc..161d1c3 100644 --- a/app/config/config_prod.yml +++ b/app/config/config_prod.yml @@ -7,12 +7,6 @@ imports: # serializer: # cache: serializer.mapping.cache.apc -#doctrine: -# orm: -# metadata_cache_driver: apc -# result_cache_driver: apc -# query_cache_driver: apc - monolog: handlers: main: diff --git a/app/config/config_test.yml b/app/config/config_test.yml index 21edc53..9bbd8dd 100644 --- a/app/config/config_test.yml +++ b/app/config/config_test.yml @@ -20,7 +20,3 @@ monolog: handlers: main: channels: ["!event", "!security", "!request"] - -parameters: - enable_labels: true - labels_pr_creation: true diff --git a/app/config/parameters.yml.dist b/app/config/parameters.yml.dist index cf9680d..6ddd728 100644 --- a/app/config/parameters.yml.dist +++ b/app/config/parameters.yml.dist @@ -2,14 +2,6 @@ # Set parameters here that may be different on each deployment target of the app, e.g. development, staging, production. # http://symfony.com/doc/current/best_practices/configuration.html#infrastructure-related-configuration parameters: - database_host: 127.0.0.1 - database_port: ~ - database_name: symfony - database_user: root - database_password: ~ - # You should uncomment this if you want use pdo_sqlite - # database_path: "%kernel.root_dir%/data.db3" - mailer_transport: smtp mailer_host: 127.0.0.1 mailer_user: ~ diff --git a/app/config/security.yml b/app/config/security.yml index a187595..a7b8c37 100644 --- a/app/config/security.yml +++ b/app/config/security.yml @@ -11,3 +11,4 @@ security: main: anonymous: ~ + logout_on_user_change: true diff --git a/app/config/services.yml b/app/config/services.yml index 58356fe..b0a808d 100644 --- a/app/config/services.yml +++ b/app/config/services.yml @@ -1,183 +1,63 @@ services: - app.webhook_resolver: - class: Lpdigital\Github\Parser\WebhookResolver + _defaults: + autowire: true + autoconfigure: true + public: false + bind: + $repositoryOwner: '%repository_username%' + $repositoryName: '%repository_name%' + $recipients: '%recipients%' + $adminMail: '%admin_mail%' + $expectedToken: '%github_secured_token%' + + AppBundle\: + resource: '../../src/AppBundle/*' + exclude: '../../src/AppBundle/Event/GitHubEvent.php' + + AppBundle\Controller\: + resource: '../../src/AppBundle/Controller' + public: true + tags: ['controller.service_arguments'] + # Argument value resolver - app.github_resolver.event: - class: AppBundle\Event\GitHubEventResolver - arguments: - - '@app.webhook_resolver' - - '@logger' - - '%repository_username%' - - '%repository_name%' + Lpdigital\Github\Parser\WebhookResolver: + + AppBundle\Event\GitHubEventResolver: tags: - { name: controller.argument_value_resolver, priority: 110 } # GitHub Client - app.github.client.guzzle.adapter: - class: Http\Adapter\Guzzle6\Client - public: false - - app.github.client.builder: - class: Github\HttpClient\Builder - arguments: ['@app.github.client.guzzle.adapter'] - public: false + Http\Adapter\Guzzle6\Client: - app.github.client: - class: Github\Client - arguments: ['@app.github.client.builder'] + Github\Client: calls: - ['authenticate', ['http_token', '%github_token%']] # GitHub API - app.github.issues_api: - class: Github\Api\Issue - factory: ['@app.github.client', api] + Github\Api\Issue: + factory: 'Github\Client:api' arguments: [issue] - app.github.comments_api: - class: Github\Api\Issue\Comments - factory: ['@app.github.issues_api', comments] + Github\Api\Issue\Comments: + factory: 'Github\Api\Issue:comments' - app.github.pullrequests_api: - class: Github\Api\PullRequest - factory: ['@app.github.client', api] + Github\Api\PullRequest: + factory: 'Github\Client:api' arguments: [pull_request] - app.github.repositories_api: - class: Github\Api\Repo - factory: ['@app.github.client', api] + Github\Api\Repo: + factory: 'Github\Client:api' arguments: [repository] - app.github.organizations_api: - class: Github\Api\Organization - factory: ['@app.github.client', api] + Github\Api\Organization: + factory: 'Github\Client:api' arguments: [organization] - app.github.search_api: - class: Github\Api\Search - factory: ['@app.github.client', api] + Github\Api\Search: + factory: 'Github\Client:api' arguments: [search] - app.github.labels_api: - class: Github\Api\Issue\Labels - factory: ['@app.github.issues_api', labels] - -# Application GitHub API - - app.github.cached_labels_api: - class: AppBundle\Issues\CachedLabelsApi - arguments: ['@app.github.labels_api', '%repository_username%', '%repository_name%'] - - app.status_api: - class: AppBundle\Issues\StatusApi - arguments: ['@app.github.cached_labels_api', '%repository_username%', '%repository_name%'] - - app.comment_api: - class: AppBundle\Comments\CommentApi - arguments: - - '@app.github.comments_api' - - '%repository_username%' - - '%repository_name%' - - '@twig' - -# Listeners (but not Symfony listeners) - - app.issue_listener: - class: AppBundle\Issues\Listener - arguments: ['@app.status_api', '@logger'] - - app.pullrequest_listener: - class: AppBundle\PullRequests\Listener - arguments: - - '@app.comment_api' - - '@app.commit.repository' - - '@validator' - - '@app.pull_request.repository' - - '@logger' - -# Event subscribers - - app.pullrequest_subscriber: - class: AppBundle\EventSubscriber\PullRequestSubscriber - calls: - - ['setContainer', ['@service_container']] - tags: - - { name: kernel.event_subscriber } - - app.issuecomment_subscriber: - class: AppBundle\EventSubscriber\IssueCommentSubscriber - calls: - - ['setContainer', ['@service_container']] - tags: - - { name: kernel.event_subscriber } - - app.issues_subscriber: - class: AppBundle\EventSubscriber\IssueSubscriber - calls: - - ['setContainer', ['@service_container']] - tags: - - { name: kernel.event_subscriber } - - app.github_token_validator_subscriber: - class: AppBundle\Security\GitHubTokenValidatorSubscriber - arguments: - - '@app.github_token_validator' - - '%github_secured_token%' - tags: - - { name: kernel.event_subscriber } - -# Repositories - - app.pull_request.repository: - class: AppBundle\PullRequests\Repository - arguments: - - '@app.search.repository' - - '@app.github.comments_api' - - '%repository_username%' - - '%repository_name%' - - app.repository_repository: - class: AppBundle\Repositories\Repository - arguments: - - '@app.github.repositories_api' - - '%repository_username%' - - '%repository_name%' - - app.organization_repository: - class: AppBundle\Organizations\Repository - arguments: - - '@app.github.organizations_api' - - '%repository_username%' - - app.search.repository: - class: AppBundle\Search\Repository - arguments: ['@app.github.search_api', '%repository_username%', '%repository_name%'] - - app.commit.repository: - class: AppBundle\Commits\Repository - arguments: - - '@app.repository_repository' - - '@app.github.pullrequests_api' - - '%repository_username%' - - '%repository_name%' - -# Reporters - - app.pull_requests.reporter: - class: AppBundle\PullRequests\Reporter - arguments: ['@app.pull_request.repository'] - - app.teams.reporter: - class: AppBundle\Teams\Reporter - arguments: ['@app.organization_repository'] - -# Common services - app.mailer: - class: AppBundle\Services\Mailer - arguments: ['@mailer', '@twig'] - - app.github_token_validator: - class: AppBundle\Security\SignatureValidator - + Github\Api\Issue\Labels: + factory: 'Github\Api\Issue:labels' diff --git a/app/config/services_test.yml b/app/config/services_test.yml index 6272660..b1b6095 100644 --- a/app/config/services_test.yml +++ b/app/config/services_test.yml @@ -2,7 +2,7 @@ imports: - { resource: services.yml } parameters: - # the token needs to have admin rights on loveOSS organisation + # The token needs to have admin rights on loveOSS organisation # for testing purposes repository_username: 'loveOSS' repository_name: 'test' @@ -15,24 +15,44 @@ parameters: github_secured_token: 'totalyFakeTokenForTests' + # list of recipients for mail notifications + recipients: + 'waiting for code review': + - waiting_code_review@prestashop.com + 'waiting for QA feedback': + - foo@prestashop.com + - bar@prestashop.com + - baz@prestashop.com + 'waiting for PM feedback': + - waiting_for_pm@prestashop.com + services: - fake_comment_api: - class: Tests\AppBundle\Comments\FakeCommentApi + + # Integration tests shouldn't post comments to github + Psr\Log\NullLogger: + + Tests\AppBundle\Comments\FakeCommentApi: + - '@Github\Api\Issue\Comments' + - '%repository_username%' + - '%repository_name%' + - '@twig' + + Tests\AppBundle\Issues\NullStatusApi: arguments: - - '@app.github.comments_api' + - '@AppBundle\Issues\CachedLabelsApi' - '%repository_username%' - '%repository_name%' - - '@twig' - app.status_api: - class: Tests\AppBundle\Issues\NullStatusApi - arguments: ['@app.github.cached_labels_api', '%repository_username%', '%repository_name%'] # Your integrations tests shouldn't post comments to github - app.pullrequest_listener: - class: AppBundle\PullRequests\Listener + AppBundle\PullRequests\Listener: arguments: - - '@fake_comment_api' - - '@app.commit.repository' + - '@Tests\AppBundle\Comments\FakeCommentApi' + - '@AppBundle\Commits\Repository' - '@validator' - - '@app.pull_request.repository' - - '@logger' + - '@AppBundle\PullRequests\Repository' + - '@Psr\Log\NullLogger' + + AppBundle\Issues\Listener: + arguments: + - '@Tests\AppBundle\Issues\NullStatusApi' + - '@Psr\Log\NullLogger' diff --git a/composer.json b/composer.json index 99beb9a..fd82a7d 100644 --- a/composer.json +++ b/composer.json @@ -3,10 +3,14 @@ "description": "Preston is a GitHub bot that help both PrestaShop maintainers and contributors", "license": "GPL-3.0+", "authors": [ - { - "name": "Mickaël Andrieu", - "email": "andrieu.travail@gmail.com" - } + { + "name": "Mickaël Andrieu", + "email": "andrieu.travail@gmail.com" + }, + { + "name": "PrestaShop Community", + "homepage": "http://contributors.prestashop.com/" + } ], "type": "project", "autoload": { @@ -17,26 +21,33 @@ "psr-4": { "Tests\\": "tests/" } }, "require": { - "php": ">=7.0", + "php": ">=7.1", "ext-mbstring": "*", - "symfony/symfony": "~3.4", - "doctrine/orm": "^2.5", - "doctrine/doctrine-bundle": "^1.6", - "doctrine/doctrine-cache-bundle": "^1.2", - "symfony/swiftmailer-bundle": "^2.3", - "symfony/monolog-bundle": "^2.8", + "symfony/debug-bundle": "^3.4", + "symfony/framework-bundle": "^3.4", + "symfony/web-profiler-bundle": "^3.4", + "symfony/security-bundle": "^3.4", + "symfony/twig-bundle": "^3.4", + "symfony/asset": "^3.4", + "symfony/console": "^3.4", + "symfony/lts": "v3", + "symfony/templating": "^3.4", + "symfony/translation": "^3.4", + "symfony/validator": "^3.4", + "symfony/swiftmailer-bundle": "^3.1", + "symfony/monolog-bundle": "^3.2", "symfony/polyfill-apcu": "^1.0", "sensio/distribution-bundle": "^5.0", "sensio/framework-extra-bundle": "^3.0.2", "incenteev/composer-parameter-handler": "^2.0", "knplabs/github-api": "^2.0", "php-http/guzzle6-adapter": "^1.0", - "lp-digital/github-event-parser": "~0.8", - "twig/twig": "~1.28" + "lp-digital/github-event-parser": "~0.8" }, "require-dev": { "friendsofphp/php-cs-fixer": "^2.0", - "symfony/phpunit-bridge": "^3.0" + "symfony/phpunit-bridge": "^3.0", + "symfony/browser-kit": "^3.4" }, "scripts": { "symfony-scripts": [ @@ -63,9 +74,6 @@ "symfony-assets-install": "relative", "incenteev-parameters": { "file": "app/config/parameters.yml" - }, - "branch-alias": { - "dev-master": "3.2-dev" } } } diff --git a/composer.lock b/composer.lock index 360c2c0..6de86da 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "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": "6d9536e73b0363ec0931f8d323aee32f", + "content-hash": "451107c32e382fedd0dc19dcbe333723", "packages": [ { "name": "clue/stream-filter", @@ -397,46 +397,34 @@ "time": "2017-08-31T08:43:38+00:00" }, { - "name": "doctrine/dbal", - "version": "v2.7.1", + "name": "doctrine/inflector", + "version": "v1.3.0", "source": { "type": "git", - "url": "https://github.com/doctrine/dbal.git", - "reference": "11037b4352c008373561dc6fc836834eed80c3b5" + "url": "https://github.com/doctrine/inflector.git", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/dbal/zipball/11037b4352c008373561dc6fc836834eed80c3b5", - "reference": "11037b4352c008373561dc6fc836834eed80c3b5", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", + "reference": "5527a48b7313d15261292c149e55e26eae771b0a", "shasum": "" }, "require": { - "doctrine/common": "^2.7.1", - "ext-pdo": "*", "php": "^7.1" }, "require-dev": { - "doctrine/coding-standard": "^4.0", - "phpunit/phpunit": "^7.0", - "phpunit/phpunit-mock-objects": "!=3.2.4,!=3.2.5", - "symfony/console": "^2.0.5||^3.0", - "symfony/phpunit-bridge": "^3.4.5|^4.0.5" - }, - "suggest": { - "symfony/console": "For helpful console commands such as SQL execution and import of files." + "phpunit/phpunit": "^6.2" }, - "bin": [ - "bin/doctrine-dbal" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\DBAL\\": "lib/" + "psr-4": { + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -459,69 +447,48 @@ { "name": "Jonathan Wage", "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Database Abstraction Layer", + "description": "Common String Manipulations with regard to casing and singular/plural rules.", "homepage": "http://www.doctrine-project.org", "keywords": [ - "database", - "dbal", - "persistence", - "queryobject" + "inflection", + "pluralize", + "singularize", + "string" ], - "time": "2018-04-07T18:44:18+00:00" + "time": "2018-01-09T20:05:19+00:00" }, { - "name": "doctrine/doctrine-bundle", - "version": "1.8.1", + "name": "doctrine/lexer", + "version": "v1.0.1", "source": { "type": "git", - "url": "https://github.com/doctrine/DoctrineBundle.git", - "reference": "eb6e4fb904a459be28872765ab6e2d246aac7c87" + "url": "https://github.com/doctrine/lexer.git", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/eb6e4fb904a459be28872765ab6e2d246aac7c87", - "reference": "eb6e4fb904a459be28872765ab6e2d246aac7c87", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", + "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", "shasum": "" }, "require": { - "doctrine/dbal": "^2.5.12", - "doctrine/doctrine-cache-bundle": "~1.2", - "jdorn/sql-formatter": "^1.2.16", - "php": "^5.5.9|^7.0", - "symfony/console": "~2.7|~3.0|~4.0", - "symfony/dependency-injection": "~2.7|~3.0|~4.0", - "symfony/doctrine-bridge": "~2.7|~3.0|~4.0", - "symfony/framework-bundle": "~2.7|~3.0|~4.0" - }, - "conflict": { - "symfony/http-foundation": "<2.6" - }, - "require-dev": { - "doctrine/orm": "~2.3", - "phpunit/phpunit": "^4.8.36|^5.7|^6.4", - "satooshi/php-coveralls": "^1.0", - "symfony/phpunit-bridge": "~2.7|~3.0|~4.0", - "symfony/property-info": "~2.8|~3.0|~4.0", - "symfony/validator": "~2.7|~3.0|~4.0", - "symfony/web-profiler-bundle": "~2.7|~3.0|~4.0", - "symfony/yaml": "~2.7|~3.0|~4.0", - "twig/twig": "~1.26|~2.0" - }, - "suggest": { - "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", - "symfony/web-profiler-bundle": "To use the data collector." + "php": ">=5.3.2" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-4": { - "Doctrine\\Bundle\\DoctrineBundle\\": "" + "psr-0": { + "Doctrine\\Common\\Lexer\\": "lib/" } }, "notification-url": "https://packagist.org/downloads/", @@ -530,80 +497,61 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Roman Borschel", + "email": "roman@code-factory.org" }, { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Symfony DoctrineBundle", + "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", "homepage": "http://www.doctrine-project.org", "keywords": [ - "database", - "dbal", - "orm", - "persistence" + "lexer", + "parser" ], - "time": "2017-11-24T13:09:19+00:00" + "time": "2014-09-09T13:34:57+00:00" }, { - "name": "doctrine/doctrine-cache-bundle", - "version": "1.3.3", + "name": "egulias/email-validator", + "version": "2.1.4", "source": { "type": "git", - "url": "https://github.com/doctrine/DoctrineCacheBundle.git", - "reference": "4c8e363f96427924e7e519c5b5119b4f54512697" + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "8790f594151ca6a2010c6218e09d96df67173ad3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/DoctrineCacheBundle/zipball/4c8e363f96427924e7e519c5b5119b4f54512697", - "reference": "4c8e363f96427924e7e519c5b5119b4f54512697", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/8790f594151ca6a2010c6218e09d96df67173ad3", + "reference": "8790f594151ca6a2010c6218e09d96df67173ad3", "shasum": "" }, "require": { - "doctrine/cache": "^1.4.2", - "doctrine/inflector": "~1.0", - "php": ">=5.3.2", - "symfony/doctrine-bridge": "~2.7|~3.3|~4.0" + "doctrine/lexer": "^1.0.1", + "php": ">= 5.5" }, "require-dev": { - "instaclick/coding-standard": "~1.1", - "instaclick/object-calisthenics-sniffs": "dev-master", - "instaclick/symfony2-coding-standard": "dev-remaster", - "phpunit/phpunit": "~4|~5", - "predis/predis": "~0.8", - "satooshi/php-coveralls": "^1.0", - "squizlabs/php_codesniffer": "~1.5", - "symfony/console": "~2.7|~3.3|~4.0", - "symfony/finder": "~2.7|~3.3|~4.0", - "symfony/framework-bundle": "~2.7|~3.3|~4.0", - "symfony/phpunit-bridge": "~2.7|~3.3|~4.0", - "symfony/security-acl": "~2.7|~3.3", - "symfony/validator": "~2.7|~3.3|~4.0", - "symfony/yaml": "~2.7|~3.3|~4.0" + "dominicsayers/isemail": "dev-master", + "phpunit/phpunit": "^4.8.35||^5.7||^6.0", + "satooshi/php-coveralls": "^1.0.1" }, "suggest": { - "symfony/security-acl": "For using this bundle to cache ACLs" + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" }, - "type": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Bundle\\DoctrineCacheBundle\\": "" + "Egulias\\EmailValidator\\": "EmailValidator" } }, "notification-url": "https://packagist.org/downloads/", @@ -612,67 +560,59 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Fabio B. Silva", - "email": "fabio.bat.silva@gmail.com" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@hotmail.com" - }, - { - "name": "Doctrine Project", - "homepage": "http://www.doctrine-project.org/" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Eduardo Gulias Davis" } ], - "description": "Symfony Bundle for Doctrine Cache", - "homepage": "http://www.doctrine-project.org", + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", "keywords": [ - "cache", - "caching" + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" ], - "time": "2018-03-27T09:22:12+00:00" + "time": "2018-04-10T10:11:19+00:00" }, { - "name": "doctrine/inflector", - "version": "v1.3.0", + "name": "guzzlehttp/guzzle", + "version": "6.3.3", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", - "reference": "5527a48b7313d15261292c149e55e26eae771b0a", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "shasum": "" }, "require": { - "php": "^7.1" + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.0" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "6.3-dev" } }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "GuzzleHttp\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -681,70 +621,57 @@ ], "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" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" ], - "time": "2018-01-09T20:05:19+00:00" + "time": "2018-04-22T15:46:56+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.1.0", + "name": "guzzlehttp/promises", + "version": "v1.3.1", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "url": "https://github.com/guzzle/promises.git", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", "shasum": "" }, "require": { - "php": "^7.1" + "php": ">=5.5.0" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpunit/phpunit": "^4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "1.4-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -752,46 +679,54 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "description": "Guzzle promises library", "keywords": [ - "constructor", - "instantiate" + "promise" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2016-12-20T10:07:11+00:00" }, { - "name": "doctrine/lexer", - "version": "v1.0.1", + "name": "guzzlehttp/psr7", + "version": "1.4.2", "source": { "type": "git", - "url": "https://github.com/doctrine/lexer.git", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" + "url": "https://github.com/guzzle/psr7.git", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", - "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.4.0", + "psr/http-message": "~1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.4-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Lexer\\": "lib/" - } + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -799,72 +734,59 @@ ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" } ], - "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", - "homepage": "http://www.doctrine-project.org", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "lexer", - "parser" + "http", + "message", + "request", + "response", + "stream", + "uri", + "url" ], - "time": "2014-09-09T13:34:57+00:00" + "time": "2017-03-20T17:10:46+00:00" }, { - "name": "doctrine/orm", - "version": "v2.6.1", + "name": "incenteev/composer-parameter-handler", + "version": "v2.1.3", "source": { "type": "git", - "url": "https://github.com/doctrine/doctrine2.git", - "reference": "87ee409783a4a322b5597ebaae558661404055a7" + "url": "https://github.com/Incenteev/ParameterHandler.git", + "reference": "933c45a34814f27f2345c11c37d46b3ca7303550" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/doctrine2/zipball/87ee409783a4a322b5597ebaae558661404055a7", - "reference": "87ee409783a4a322b5597ebaae558661404055a7", + "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550", + "reference": "933c45a34814f27f2345c11c37d46b3ca7303550", "shasum": "" }, "require": { - "doctrine/annotations": "~1.5", - "doctrine/cache": "~1.6", - "doctrine/collections": "^1.4", - "doctrine/common": "^2.7.1", - "doctrine/dbal": "^2.6", - "doctrine/instantiator": "~1.1", - "ext-pdo": "*", - "php": "^7.1", - "symfony/console": "~3.0|~4.0" + "php": ">=5.3.3", + "symfony/yaml": "^2.3 || ^3.0 || ^4.0" }, "require-dev": { - "doctrine/coding-standard": "^1.0", - "phpunit/phpunit": "^6.5", - "squizlabs/php_codesniffer": "^3.2", - "symfony/yaml": "~3.4|~4.0" - }, - "suggest": { - "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" + "composer/composer": "^1.0@dev", + "symfony/filesystem": "^2.3 || ^3 || ^4", + "symfony/phpunit-bridge": "^4.0" }, - "bin": [ - "bin/doctrine" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\ORM\\": "lib/Doctrine/ORM" + "Incenteev\\ParameterHandler\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -873,128 +795,1354 @@ ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, + "name": "Christophe Coevoet", + "email": "stof@notk.org" + } + ], + "description": "Composer script handling your ignored parameter file", + "homepage": "https://github.com/Incenteev/ParameterHandler", + "keywords": [ + "parameters management" + ], + "time": "2018-02-13T18:05:56+00:00" + }, + { + "name": "knplabs/github-api", + "version": "2.8.0", + "source": { + "type": "git", + "url": "https://github.com/KnpLabs/php-github-api.git", + "reference": "1e404bffaad30a7acf631b67340757646efbbf71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/1e404bffaad30a7acf631b67340757646efbbf71", + "reference": "1e404bffaad30a7acf631b67340757646efbbf71", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "php-http/cache-plugin": "^1.4", + "php-http/client-common": "^1.6", + "php-http/client-implementation": "^1.0", + "php-http/discovery": "^1.0", + "php-http/httplug": "^1.1", + "psr/cache": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "cache/array-adapter": "^0.4", + "guzzlehttp/psr7": "^1.2", + "php-http/guzzle6-adapter": "^1.0", + "php-http/mock-client": "^1.0", + "phpunit/phpunit": "^5.5 || ^6.0", + "sllh/php-cs-fixer-styleci-bridge": "^1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.8.x-dev" + } + }, + "autoload": { + "psr-4": { + "Github\\": "lib/Github/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" + "name": "Thibault Duplessis", + "email": "thibault.duplessis@gmail.com", + "homepage": "http://ornicar.github.com" }, { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, + "name": "KnpLabs Team", + "homepage": "http://knplabs.com" + } + ], + "description": "GitHub API v3 client", + "homepage": "https://github.com/KnpLabs/php-github-api", + "keywords": [ + "api", + "gh", + "gist", + "github" + ], + "time": "2018-03-23T16:42:55+00:00" + }, + { + "name": "lp-digital/github-event-parser", + "version": "v0.8.3", + "source": { + "type": "git", + "url": "https://github.com/Lp-digital/github-event-parser.git", + "reference": "2a57cd8ab1cf7e12fb680fd61afd1e9725db708c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Lp-digital/github-event-parser/zipball/2a57cd8ab1cf7e12fb680fd61afd1e9725db708c", + "reference": "2a57cd8ab1cf7e12fb680fd61afd1e9725db708c", + "shasum": "" + }, + "require": { + "php": ">=5.4" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "~1.11", + "phpunit/phpunit": "~4.7" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Lpdigital\\Github\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-3.0+" + ], + "authors": [ + { + "name": "Mickaël Andrieu", + "email": "mickael.andrieu@lp-digital.fr" + } + ], + "description": "PHP library to get a readable representation of events dispatched by Github API v3", + "homepage": "https://github.com/Lp-digital/github-event-parser", + "keywords": [ + "event", + "github", + "json parser" + ], + "time": "2017-04-19T20:00:10+00:00" + }, + { + "name": "monolog/monolog", + "version": "1.23.0", + "source": { + "type": "git", + "url": "https://github.com/Seldaek/monolog.git", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "psr/log": "~1.0" + }, + "provide": { + "psr/log-implementation": "1.0.0" + }, + "require-dev": { + "aws/aws-sdk-php": "^2.4.9 || ^3.0", + "doctrine/couchdb": "~1.0@dev", + "graylog2/gelf-php": "~1.0", + "jakub-onderka/php-parallel-lint": "0.9", + "php-amqplib/php-amqplib": "~2.4", + "php-console/php-console": "^3.1.3", + "phpunit/phpunit": "~4.5", + "phpunit/phpunit-mock-objects": "2.3.0", + "ruflin/elastica": ">=0.90 <3.0", + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" + }, + "suggest": { + "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", + "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", + "ext-mongo": "Allow sending log messages to a MongoDB server", + "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", + "php-console/php-console": "Allow sending log messages to Google Chrome", + "rollbar/rollbar": "Allow sending log messages to Rollbar", + "ruflin/elastica": "Allow sending log messages to an Elastic Search server", + "sentry/sentry": "Allow sending log messages to a Sentry server" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Monolog\\": "src/Monolog" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Jordi Boggiano", + "email": "j.boggiano@seld.be", + "homepage": "http://seld.be" + } + ], + "description": "Sends your logs to files, sockets, inboxes, databases and various web services", + "homepage": "http://github.com/Seldaek/monolog", + "keywords": [ + "log", + "logging", + "psr-3" + ], + "time": "2017-06-19T01:22:40+00:00" + }, + { + "name": "paragonie/random_compat", + "version": "v2.0.12", + "source": { + "type": "git", + "url": "https://github.com/paragonie/random_compat.git", + "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb", + "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb", + "shasum": "" + }, + "require": { + "php": ">=5.2.0" + }, + "require-dev": { + "phpunit/phpunit": "4.*|5.*" + }, + "suggest": { + "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + }, + "type": "library", + "autoload": { + "files": [ + "lib/random.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Paragon Initiative Enterprises", + "email": "security@paragonie.com", + "homepage": "https://paragonie.com" + } + ], + "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", + "keywords": [ + "csprng", + "pseudorandom", + "random" + ], + "time": "2018-04-04T21:24:14+00:00" + }, + { + "name": "php-http/cache-plugin", + "version": "v1.5.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/cache-plugin.git", + "reference": "c573ac6ea9b4e33fad567f875b844229d18000b9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/c573ac6ea9b4e33fad567f875b844229d18000b9", + "reference": "c573ac6ea9b4e33fad567f875b844229d18000b9", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0", + "php-http/client-common": "^1.1", + "php-http/message-factory": "^1.0", + "psr/cache": "^1.0", + "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\Common\\Plugin\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "PSR-6 Cache plugin for HTTPlug", + "homepage": "http://httplug.io", + "keywords": [ + "cache", + "http", + "httplug", + "plugin" + ], + "time": "2017-11-29T20:45:41+00:00" + }, + { + "name": "php-http/client-common", + "version": "1.7.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/client-common.git", + "reference": "9accb4a082eb06403747c0ffd444112eda41a0fd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/client-common/zipball/9accb4a082eb06403747c0ffd444112eda41a0fd", + "reference": "9accb4a082eb06403747c0ffd444112eda41a0fd", + "shasum": "" + }, + "require": { + "php": "^5.4 || ^7.0", + "php-http/httplug": "^1.1", + "php-http/message": "^1.6", + "php-http/message-factory": "^1.0", + "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0" + }, + "require-dev": { + "guzzlehttp/psr7": "^1.4", + "phpspec/phpspec": "^2.5 || ^3.4 || ^4.2" + }, + "suggest": { + "php-http/cache-plugin": "PSR-6 Cache plugin", + "php-http/logger-plugin": "PSR-3 Logger plugin", + "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\Common\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Common HTTP Client implementations and tools for HTTPlug", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "common", + "http", + "httplug" + ], + "time": "2017-11-30T11:06:59+00:00" + }, + { + "name": "php-http/discovery", + "version": "1.4.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/discovery.git", + "reference": "9a6cb24de552bfe1aa9d7d1569e2d49c5b169a33" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/discovery/zipball/9a6cb24de552bfe1aa9d7d1569e2d49c5b169a33", + "reference": "9a6cb24de552bfe1aa9d7d1569e2d49c5b169a33", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^2.0.2", + "php-http/httplug": "^1.0", + "php-http/message-factory": "^1.0", + "phpspec/phpspec": "^2.4", + "puli/composer-plugin": "1.0.0-beta10" + }, + "suggest": { + "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", + "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.3-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Discovery\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Finds installed HTTPlug implementations and PSR-7 message factories", + "homepage": "http://php-http.org", + "keywords": [ + "adapter", + "client", + "discovery", + "factory", + "http", + "message", + "psr7" + ], + "time": "2018-02-06T10:55:24+00:00" + }, + { + "name": "php-http/guzzle6-adapter", + "version": "v1.1.1", + "source": { + "type": "git", + "url": "https://github.com/php-http/guzzle6-adapter.git", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "php-http/httplug": "^1.0" + }, + "provide": { + "php-http/async-client-implementation": "1.0", + "php-http/client-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "php-http/adapter-integration-tests": "^0.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Adapter\\Guzzle6\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "David de Boer", + "email": "david@ddeboer.nl" + } + ], + "description": "Guzzle 6 HTTP Adapter", + "homepage": "http://httplug.io", + "keywords": [ + "Guzzle", + "http" + ], + "time": "2016-05-10T06:13:32+00:00" + }, + { + "name": "php-http/httplug", + "version": "v1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/httplug.git", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "php-http/promise": "^1.0", + "psr/http-message": "^1.0" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", + "keywords": [ + "client", + "http" + ], + "time": "2016-08-31T08:30:17+00:00" + }, + { + "name": "php-http/message", + "version": "1.6.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/message.git", + "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message/zipball/2edd63bae5f52f79363c5f18904b05ce3a4b7253", + "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253", + "shasum": "" + }, + "require": { + "clue/stream-filter": "^1.3", + "php": ">=5.4", + "php-http/message-factory": "^1.0.2", + "psr/http-message": "^1.0" + }, + "provide": { + "php-http/message-factory-implementation": "1.0" + }, + "require-dev": { + "akeneo/phpspec-skip-example-extension": "^1.0", + "coduo/phpspec-data-provider-extension": "^1.0", + "ext-zlib": "*", + "guzzlehttp/psr7": "^1.0", + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4", + "slim/slim": "^3.0", + "zendframework/zend-diactoros": "^1.0" + }, + "suggest": { + "ext-zlib": "Used with compressor/decompressor streams", + "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", + "slim/slim": "Used with Slim Framework PSR-7 implementation", + "zendframework/zend-diactoros": "Used with Diactoros Factories" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.6-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + }, + "files": [ + "src/filters.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "HTTP Message related tools", + "homepage": "http://php-http.org", + "keywords": [ + "http", + "message", + "psr-7" + ], + "time": "2017-07-05T06:40:53+00:00" + }, + { + "name": "php-http/message-factory", + "version": "v1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-http/message-factory.git", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "shasum": "" + }, + "require": { + "php": ">=5.4", + "psr/http-message": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + } + ], + "description": "Factory interfaces for PSR-7 HTTP Message", + "homepage": "http://php-http.org", + "keywords": [ + "factory", + "http", + "message", + "stream", + "uri" + ], + "time": "2015-12-19T14:08:53+00:00" + }, + { + "name": "php-http/promise", + "version": "v1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-http/promise.git", + "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", + "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", + "shasum": "" + }, + "require-dev": { + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Http\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" + } + ], + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", + "keywords": [ + "promise" + ], + "time": "2016-01-26T13:27:02+00:00" + }, + { + "name": "psr/cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/cache.git", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Cache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for caching libraries", + "keywords": [ + "cache", + "psr", + "psr-6" + ], + "time": "2016-08-06T20:24:11+00:00" + }, + { + "name": "psr/container", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/http-message", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" + }, + { + "name": "psr/log", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/php-fig/log.git", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Log\\": "Psr/Log/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "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" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "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-10-23T01:57:42+00:00" + }, + { + "name": "sensio/distribution-bundle", + "version": "v5.0.21", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", + "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a", + "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a", + "shasum": "" + }, + "require": { + "php": ">=5.3.9", + "sensiolabs/security-checker": "~3.0|~4.0", + "symfony/class-loader": "~2.3|~3.0", + "symfony/config": "~2.3|~3.0", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/filesystem": "~2.3|~3.0", + "symfony/http-kernel": "~2.3|~3.0", + "symfony/process": "~2.3|~3.0" + }, + "type": "symfony-bundle", + "extra": { + "branch-alias": { + "dev-master": "5.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Sensio\\Bundle\\DistributionBundle\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + } + ], + "description": "Base bundle for Symfony Distributions", + "keywords": [ + "configuration", + "distribution" + ], + "time": "2017-08-25T16:55:44+00:00" + }, + { + "name": "sensio/framework-extra-bundle", + "version": "v3.0.29", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", + "reference": "bb907234df776b68922eb4b25bfa061683597b6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bb907234df776b68922eb4b25bfa061683597b6a", + "reference": "bb907234df776b68922eb4b25bfa061683597b6a", + "shasum": "" + }, + "require": { + "doctrine/common": "~2.2", + "symfony/dependency-injection": "~2.3|~3.0", + "symfony/framework-bundle": "~2.3|~3.0|~4.0" + }, + "require-dev": { + "doctrine/doctrine-bundle": "~1.5", + "doctrine/orm": "~2.4,>=2.4.5", + "symfony/asset": "~2.7|~3.0|~4.0", + "symfony/browser-kit": "~2.3|~3.0|~4.0", + "symfony/dom-crawler": "~2.3|~3.0|~4.0", + "symfony/expression-language": "~2.4|~3.0|~4.0", + "symfony/finder": "~2.3|~3.0|~4.0", + "symfony/phpunit-bridge": "~3.2|~4.0", + "symfony/psr-http-message-bridge": "^0.3|^1.0", + "symfony/security-bundle": "~2.4|~3.0|~4.0", + "symfony/templating": "~2.3|~3.0|~4.0", + "symfony/translation": "~2.3|~3.0|~4.0", + "symfony/twig-bundle": "~2.3|~3.0|~4.0", + "symfony/yaml": "~2.3|~3.0|~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": "3.0.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-14T19:03:23+00:00" + }, + { + "name": "sensiolabs/security-checker", + "version": "v4.1.8", + "source": { + "type": "git", + "url": "https://github.com/sensiolabs/security-checker.git", + "reference": "dc270d5fec418cc6ac983671dba5d80ffaffb142" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/dc270d5fec418cc6ac983671dba5d80ffaffb142", + "reference": "dc270d5fec418cc6ac983671dba5d80ffaffb142", + "shasum": "" + }, + "require": { + "composer/ca-bundle": "^1.0", + "symfony/console": "~2.7|~3.0|~4.0" + }, + "bin": [ + "security-checker" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-0": { + "SensioLabs\\Security": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien.potencier@gmail.com" + } + ], + "description": "A security checker for your composer.lock", + "time": "2018-02-28T22:10:01+00:00" + }, + { + "name": "swiftmailer/swiftmailer", + "version": "v6.0.2", + "source": { + "type": "git", + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/412333372fb6c8ffb65496a2bbd7321af75733fc", + "reference": "412333372fb6c8ffb65496a2bbd7321af75733fc", + "shasum": "" + }, + "require": { + "egulias/email-validator": "~2.0", + "php": ">=7.0.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "~3.3@dev" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.0-dev" + } + }, + "autoload": { + "files": [ + "lib/swift_required.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" + "name": "Chris Corbyn" }, { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Object-Relational-Mapper for PHP", - "homepage": "http://www.doctrine-project.org", + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "http://swiftmailer.symfony.com", "keywords": [ - "database", - "orm" + "email", + "mail", + "mailer" ], - "time": "2018-02-27T07:30:56+00:00" + "time": "2017-09-30T22:39:41+00:00" }, { - "name": "fig/link-util", - "version": "1.0.0", + "name": "symfony/asset", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-fig/link-util.git", - "reference": "1a07821801a148be4add11ab0603e4af55a72fac" + "url": "https://github.com/symfony/asset.git", + "reference": "89e9267bf33a8214efceb1ead12fb73504e81089" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link-util/zipball/1a07821801a148be4add11ab0603e4af55a72fac", - "reference": "1a07821801a148be4add11ab0603e4af55a72fac", + "url": "https://api.github.com/repos/symfony/asset/zipball/89e9267bf33a8214efceb1ead12fb73504e81089", + "reference": "89e9267bf33a8214efceb1ead12fb73504e81089", "shasum": "" }, "require": { - "php": ">=5.5.0", - "psr/link": "~1.0@dev" + "php": "^5.5.9|>=7.0.8" }, "require-dev": { - "phpunit/phpunit": "^5.1", - "squizlabs/php_codesniffer": "^2.3.1" + "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "~2.8|~3.0|~4.0" + }, + "suggest": { + "symfony/http-foundation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Fig\\Link\\": "src/" + "Symfony\\Component\\Asset\\": "" + }, + "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 Asset Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:37:34+00:00" + }, + { + "name": "symfony/cache", + "version": "v3.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/cache.git", + "reference": "13255ddd056e49f3154747943f8ee175d555d394" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/cache/zipball/13255ddd056e49f3154747943f8ee175d555d394", + "reference": "13255ddd056e49f3154747943f8ee175d555d394", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "psr/cache": "~1.0", + "psr/log": "~1.0", + "psr/simple-cache": "^1.0", + "symfony/polyfill-apcu": "~1.1" + }, + "conflict": { + "symfony/var-dumper": "<3.3" + }, + "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": "3.4-dev" } }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Cache\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common utility implementations for HTTP links", + "description": "Symfony Cache component with PSR-6, PSR-16, and tags", + "homepage": "https://symfony.com", "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" + "caching", + "psr6" ], - "time": "2016-10-17T18:31:11+00:00" + "time": "2018-04-02T14:35:16+00:00" }, { - "name": "guzzlehttp/guzzle", - "version": "6.3.2", + "name": "symfony/class-loader", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle.git", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90" + "url": "https://github.com/symfony/class-loader.git", + "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90", + "url": "https://api.github.com/repos/symfony/class-loader/zipball/e63c12699822bb3b667e7216ba07fbcc3a3e203e", + "reference": "e63c12699822bb3b667e7216ba07fbcc3a3e203e", "shasum": "" }, "require": { - "guzzlehttp/promises": "^1.0", - "guzzlehttp/psr7": "^1.4", - "php": ">=5.5" + "php": "^5.5.9|>=7.0.8" }, "require-dev": { - "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", - "psr/log": "^1.0" + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/polyfill-apcu": "~1.1" }, "suggest": { - "psr/log": "Required for using the Log middleware" + "symfony/polyfill-apcu": "For using ApcClassLoader on HHVM" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { - "GuzzleHttp\\": "src/" - } + "Symfony\\Component\\ClassLoader\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1002,56 +2150,61 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Guzzle is a PHP HTTP client library", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2018-03-26T16:33:04+00:00" + "description": "Symfony ClassLoader Component", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:37:34+00:00" }, { - "name": "guzzlehttp/promises", - "version": "v1.3.1", + "name": "symfony/config", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/guzzle/promises.git", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" + "url": "https://github.com/symfony/config.git", + "reference": "7c2a9d44f4433863e9bca682e7f03609234657f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", - "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", + "url": "https://api.github.com/repos/symfony/config/zipball/7c2a9d44f4433863e9bca682e7f03609234657f9", + "reference": "7c2a9d44f4433863e9bca682e7f03609234657f9", "shasum": "" }, "require": { - "php": ">=5.5.0" + "php": "^5.5.9|>=7.0.8", + "symfony/filesystem": "~2.8|~3.0|~4.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.3", + "symfony/finder": "<3.3" }, "require-dev": { - "phpunit/phpunit": "^4.0" + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/event-dispatcher": "~3.3|~4.0", + "symfony/finder": "~3.3|~4.0", + "symfony/yaml": "~3.0|~4.0" + }, + "suggest": { + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\Promise\\": "src/" + "Symfony\\Component\\Config\\": "" }, - "files": [ - "src/functions_include.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1060,53 +2213,67 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Guzzle promises library", - "keywords": [ - "promise" - ], - "time": "2016-12-20T10:07:11+00:00" + "description": "Symfony Config Component", + "homepage": "https://symfony.com", + "time": "2018-03-19T22:32:39+00:00" }, { - "name": "guzzlehttp/psr7", - "version": "1.4.2", + "name": "symfony/console", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/guzzle/psr7.git", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" + "url": "https://github.com/symfony/console.git", + "reference": "d4bb70fa24d540c309d88a9d6e43fb2d339b1fbf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", - "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", + "url": "https://api.github.com/repos/symfony/console/zipball/d4bb70fa24d540c309d88a9d6e43fb2d339b1fbf", + "reference": "d4bb70fa24d540c309d88a9d6e43fb2d339b1fbf", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0" + "php": "^5.5.9|>=7.0.8", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/polyfill-mbstring": "~1.0" }, - "provide": { - "psr/http-message-implementation": "1.0" + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "psr/log": "~1.0", + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.3|~4.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "GuzzleHttp\\Psr7\\": "src/" + "Symfony\\Component\\Console\\": "" }, - "files": [ - "src/functions_include.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1115,60 +2282,55 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Tobias Schultze", - "homepage": "https://github.com/Tobion" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PSR-7 message implementation that also provides common utility methods", - "keywords": [ - "http", - "message", - "request", - "response", - "stream", - "uri", - "url" - ], - "time": "2017-03-20T17:10:46+00:00" + "description": "Symfony Console Component", + "homepage": "https://symfony.com", + "time": "2018-04-03T05:22:50+00:00" }, { - "name": "incenteev/composer-parameter-handler", - "version": "v2.1.3", + "name": "symfony/debug", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/Incenteev/ParameterHandler.git", - "reference": "933c45a34814f27f2345c11c37d46b3ca7303550" + "url": "https://github.com/symfony/debug.git", + "reference": "9cf7c2271cfb89ef9727db1b740ca77be57bf9d7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Incenteev/ParameterHandler/zipball/933c45a34814f27f2345c11c37d46b3ca7303550", - "reference": "933c45a34814f27f2345c11c37d46b3ca7303550", + "url": "https://api.github.com/repos/symfony/debug/zipball/9cf7c2271cfb89ef9727db1b740ca77be57bf9d7", + "reference": "9cf7c2271cfb89ef9727db1b740ca77be57bf9d7", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/yaml": "^2.3 || ^3.0 || ^4.0" + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0" + }, + "conflict": { + "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" }, "require-dev": { - "composer/composer": "^1.0@dev", - "symfony/filesystem": "^2.3 || ^3 || ^4", - "symfony/phpunit-bridge": "^4.0" + "symfony/http-kernel": "~2.8|~3.0|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Incenteev\\ParameterHandler\\": "" - } + "Symfony\\Component\\Debug\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1176,46 +2338,63 @@ ], "authors": [ { - "name": "Christophe Coevoet", - "email": "stof@notk.org" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Composer script handling your ignored parameter file", - "homepage": "https://github.com/Incenteev/ParameterHandler", - "keywords": [ - "parameters management" - ], - "time": "2018-02-13T18:05:56+00:00" + "description": "Symfony Debug Component", + "homepage": "https://symfony.com", + "time": "2018-04-03T05:22:50+00:00" }, { - "name": "jdorn/sql-formatter", - "version": "v1.2.17", + "name": "symfony/debug-bundle", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/jdorn/sql-formatter.git", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" + "url": "https://github.com/symfony/debug-bundle.git", + "reference": "e5de2664081e8c7753e951970af43f0ee01cf645" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", - "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", + "url": "https://api.github.com/repos/symfony/debug-bundle/zipball/e5de2664081e8c7753e951970af43f0ee01cf645", + "reference": "e5de2664081e8c7753e951970af43f0ee01cf645", "shasum": "" }, "require": { - "php": ">=5.2.4" + "ext-xml": "*", + "php": "^5.5.9|>=7.0.8", + "symfony/http-kernel": "~2.8|~3.0|~4.0", + "symfony/twig-bridge": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.4|~4.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" }, "require-dev": { - "phpunit/phpunit": "3.7.*" + "symfony/config": "~3.3|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/web-profiler-bundle": "~2.8|~3.0|~4.0" }, - "type": "library", + "suggest": { + "symfony/config": "For service container configuration", + "symfony/dependency-injection": "For using as a service from the container" + }, + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "classmap": [ - "lib" + "psr-4": { + "Symfony\\Bundle\\DebugBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1224,61 +2403,70 @@ ], "authors": [ { - "name": "Jeremy Dorn", - "email": "jeremy@jeremydorn.com", - "homepage": "http://jeremydorn.com/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "a PHP SQL highlighting library", - "homepage": "https://github.com/jdorn/sql-formatter/", - "keywords": [ - "highlight", - "sql" - ], - "time": "2014-01-12T16:20:24+00:00" + "description": "Symfony DebugBundle", + "homepage": "https://symfony.com", + "time": "2018-01-03T07:37:34+00:00" }, { - "name": "knplabs/github-api", - "version": "2.8.0", + "name": "symfony/dependency-injection", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/KnpLabs/php-github-api.git", - "reference": "1e404bffaad30a7acf631b67340757646efbbf71" + "url": "https://github.com/symfony/dependency-injection.git", + "reference": "24a68710c6ddc1e3d159a110cef94cedfcf3c611" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/KnpLabs/php-github-api/zipball/1e404bffaad30a7acf631b67340757646efbbf71", - "reference": "1e404bffaad30a7acf631b67340757646efbbf71", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/24a68710c6ddc1e3d159a110cef94cedfcf3c611", + "reference": "24a68710c6ddc1e3d159a110cef94cedfcf3c611", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0", - "php-http/cache-plugin": "^1.4", - "php-http/client-common": "^1.6", - "php-http/client-implementation": "^1.0", - "php-http/discovery": "^1.0", - "php-http/httplug": "^1.1", - "psr/cache": "^1.0", - "psr/http-message": "^1.0" + "php": "^5.5.9|>=7.0.8", + "psr/container": "^1.0" + }, + "conflict": { + "symfony/config": "<3.3.7", + "symfony/finder": "<3.3", + "symfony/proxy-manager-bridge": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "psr/container-implementation": "1.0" }, "require-dev": { - "cache/array-adapter": "^0.4", - "guzzlehttp/psr7": "^1.2", - "php-http/guzzle6-adapter": "^1.0", - "php-http/mock-client": "^1.0", - "phpunit/phpunit": "^5.5 || ^6.0", - "sllh/php-cs-fixer-styleci-bridge": "^1.3" + "symfony/config": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~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": "2.8.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Github\\": "lib/Github/" - } + "Symfony\\Component\\DependencyInjection\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1286,133 +2474,111 @@ ], "authors": [ { - "name": "Thibault Duplessis", - "email": "thibault.duplessis@gmail.com", - "homepage": "http://ornicar.github.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "KnpLabs Team", - "homepage": "http://knplabs.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "GitHub API v3 client", - "homepage": "https://github.com/KnpLabs/php-github-api", - "keywords": [ - "api", - "gh", - "gist", - "github" - ], - "time": "2018-03-23T16:42:55+00:00" + "description": "Symfony DependencyInjection Component", + "homepage": "https://symfony.com", + "time": "2018-03-29T11:25:31+00:00" }, { - "name": "lp-digital/github-event-parser", - "version": "v0.8.3", + "name": "symfony/event-dispatcher", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/Lp-digital/github-event-parser.git", - "reference": "2a57cd8ab1cf7e12fb680fd61afd1e9725db708c" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Lp-digital/github-event-parser/zipball/2a57cd8ab1cf7e12fb680fd61afd1e9725db708c", - "reference": "2a57cd8ab1cf7e12fb680fd61afd1e9725db708c", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/fdd5abcebd1061ec647089c6c41a07ed60af09f8", + "reference": "fdd5abcebd1061ec647089c6c41a07ed60af09f8", "shasum": "" }, "require": { - "php": ">=5.4" + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/dependency-injection": "<3.3" }, "require-dev": { - "friendsofphp/php-cs-fixer": "~1.11", - "phpunit/phpunit": "~4.7" + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Lpdigital\\Github\\": "" - } + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "GPL-3.0+" + "MIT" ], "authors": [ { - "name": "Mickaël Andrieu", - "email": "mickael.andrieu@lp-digital.fr" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP library to get a readable representation of events dispatched by Github API v3", - "homepage": "https://github.com/Lp-digital/github-event-parser", - "keywords": [ - "event", - "github", - "json parser" - ], - "time": "2017-04-19T20:00:10+00:00" + "description": "Symfony EventDispatcher Component", + "homepage": "https://symfony.com", + "time": "2018-04-06T07:35:25+00:00" }, { - "name": "monolog/monolog", - "version": "1.23.0", + "name": "symfony/filesystem", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/Seldaek/monolog.git", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4" + "url": "https://github.com/symfony/filesystem.git", + "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fd8c787753b3a2ad11bc60c063cff1358a32a3b4", - "reference": "fd8c787753b3a2ad11bc60c063cff1358a32a3b4", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/253a4490b528597aa14d2bf5aeded6f5e5e4a541", + "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" - }, - "provide": { - "psr/log-implementation": "1.0.0" - }, - "require-dev": { - "aws/aws-sdk-php": "^2.4.9 || ^3.0", - "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" - }, - "suggest": { - "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", - "doctrine/couchdb": "Allow sending log messages to a CouchDB server", - "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", - "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", - "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", - "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Monolog\\": "src/Monolog" - } + "Symfony\\Component\\Filesystem\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1420,47 +2586,47 @@ ], "authors": [ { - "name": "Jordi Boggiano", - "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" - } - ], - "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", - "keywords": [ - "log", - "logging", - "psr-3" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } ], - "time": "2017-06-19T01:22:40+00:00" + "description": "Symfony Filesystem Component", + "homepage": "https://symfony.com", + "time": "2018-02-22T10:48:49+00:00" }, { - "name": "paragonie/random_compat", - "version": "v2.0.12", + "name": "symfony/finder", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb" + "url": "https://github.com/symfony/finder.git", + "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb", + "url": "https://api.github.com/repos/symfony/finder/zipball/bd14efe8b1fabc4de82bf50dce62f05f9a102433", + "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433", "shasum": "" }, "require": { - "php": ">=5.2.0" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." + "php": "^5.5.9|>=7.0.8" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, "autoload": { - "files": [ - "lib/random.php" + "psr-4": { + "Symfony\\Component\\Finder\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1469,54 +2635,114 @@ ], "authors": [ { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "pseudorandom", - "random" - ], - "time": "2018-04-04T21:24:14+00:00" + "description": "Symfony Finder Component", + "homepage": "https://symfony.com", + "time": "2018-04-04T05:07:11+00:00" }, { - "name": "php-http/cache-plugin", - "version": "v1.5.0", + "name": "symfony/framework-bundle", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-http/cache-plugin.git", - "reference": "c573ac6ea9b4e33fad567f875b844229d18000b9" + "url": "https://github.com/symfony/framework-bundle.git", + "reference": "ab19033db282fd56be8f4c444c1d07b11999fc48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/cache-plugin/zipball/c573ac6ea9b4e33fad567f875b844229d18000b9", - "reference": "c573ac6ea9b4e33fad567f875b844229d18000b9", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/ab19033db282fd56be8f4c444c1d07b11999fc48", + "reference": "ab19033db282fd56be8f4c444c1d07b11999fc48", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0", - "php-http/client-common": "^1.1", - "php-http/message-factory": "^1.0", - "psr/cache": "^1.0", - "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0" + "ext-xml": "*", + "php": "^5.5.9|>=7.0.8", + "symfony/cache": "~3.4|~4.0", + "symfony/class-loader": "~3.2", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "^3.4.3|^4.0.3", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/filesystem": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "^3.3.11|~4.0", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/routing": "^3.4.5|^4.0.5" + }, + "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.3", + "symfony/console": "<3.4", + "symfony/form": "<3.4", + "symfony/property-info": "<3.3", + "symfony/serializer": "<3.3", + "symfony/stopwatch": "<3.4", + "symfony/translation": "<3.4", + "symfony/validator": "<3.4", + "symfony/workflow": "<3.3" }, "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.5" + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "fig/link-util": "^1.0", + "phpdocumentor/reflection-docblock": "^3.0|^4.0", + "symfony/asset": "~3.3|~4.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/form": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/process": "~2.8|~3.0|~4.0", + "symfony/property-info": "~3.3|~4.0", + "symfony/security": "~2.8|~3.0|~4.0", + "symfony/security-core": "~3.2|~4.0", + "symfony/security-csrf": "~2.8|~3.0|~4.0", + "symfony/serializer": "~3.3|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~3.4|~4.0", + "symfony/validator": "~3.4|~4.0", + "symfony/var-dumper": "~3.3|~4.0", + "symfony/web-link": "~3.3|~4.0", + "symfony/workflow": "~3.3|~4.0", + "symfony/yaml": "~3.2|~4.0", + "twig/twig": "~1.34|~2.4" }, - "type": "library", + "suggest": { + "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": "1.5-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Http\\Client\\Common\\Plugin\\": "src/" - } + "Symfony\\Bundle\\FrameworkBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1524,60 +2750,53 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "PSR-6 Cache plugin for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "cache", - "http", - "httplug", - "plugin" - ], - "time": "2017-11-29T20:45:41+00:00" + "description": "Symfony FrameworkBundle", + "homepage": "https://symfony.com", + "time": "2018-04-04T17:20:26+00:00" }, { - "name": "php-http/client-common", - "version": "1.7.0", + "name": "symfony/http-foundation", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-http/client-common.git", - "reference": "9accb4a082eb06403747c0ffd444112eda41a0fd" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "b11e6d165ff4cbf5685d185ab19a90f2f3bb7d1e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/client-common/zipball/9accb4a082eb06403747c0ffd444112eda41a0fd", - "reference": "9accb4a082eb06403747c0ffd444112eda41a0fd", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b11e6d165ff4cbf5685d185ab19a90f2f3bb7d1e", + "reference": "b11e6d165ff4cbf5685d185ab19a90f2f3bb7d1e", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0", - "php-http/httplug": "^1.1", - "php-http/message": "^1.6", - "php-http/message-factory": "^1.0", - "symfony/options-resolver": "^2.6 || ^3.0 || ^4.0" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php70": "~1.6" }, "require-dev": { - "guzzlehttp/psr7": "^1.4", - "phpspec/phpspec": "^2.5 || ^3.4 || ^4.2" - }, - "suggest": { - "php-http/cache-plugin": "PSR-6 Cache plugin", - "php-http/logger-plugin": "PSR-3 Logger plugin", - "php-http/stopwatch-plugin": "Symfony Stopwatch plugin" + "symfony/expression-language": "~2.8|~3.0|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Http\\Client\\Common\\": "src/" - } + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1585,58 +2804,87 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common HTTP Client implementations and tools for HTTPlug", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "common", - "http", - "httplug" - ], - "time": "2017-11-30T11:06:59+00:00" + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2018-04-03T05:22:50+00:00" }, { - "name": "php-http/discovery", - "version": "1.4.0", + "name": "symfony/http-kernel", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-http/discovery.git", - "reference": "9a6cb24de552bfe1aa9d7d1569e2d49c5b169a33" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "3cc2d4374aa9590c09277ad68657671cf49dbbf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/discovery/zipball/9a6cb24de552bfe1aa9d7d1569e2d49c5b169a33", - "reference": "9a6cb24de552bfe1aa9d7d1569e2d49c5b169a33", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3cc2d4374aa9590c09277ad68657671cf49dbbf4", + "reference": "3cc2d4374aa9590c09277ad68657671cf49dbbf4", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0" + "php": "^5.5.9|>=7.0.8", + "psr/log": "~1.0", + "symfony/debug": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "^3.4.4|^4.0.4" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4", + "symfony/var-dumper": "<3.3", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^2.0.2", - "php-http/httplug": "^1.0", - "php-http/message-factory": "^1.0", - "phpspec/phpspec": "^2.4", - "puli/composer-plugin": "1.0.0-beta10" + "psr/cache": "~1.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/class-loader": "~2.8|~3.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "^3.4.5|^4.0.5", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/process": "~2.8|~3.0|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0" }, "suggest": { - "php-http/message": "Allow to use Guzzle, Diactoros or Slim Framework factories", - "puli/composer-plugin": "Sets up Puli which is recommended for Discovery to work. Check http://docs.php-http.org/en/latest/discovery.html for more details." + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/finder": "", + "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Http\\Discovery\\": "src/" - } + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1644,60 +2892,48 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Finds installed HTTPlug implementations and PSR-7 message factories", - "homepage": "http://php-http.org", - "keywords": [ - "adapter", - "client", - "discovery", - "factory", - "http", - "message", - "psr7" - ], - "time": "2018-02-06T10:55:24+00:00" + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2018-04-06T15:19:48+00:00" }, { - "name": "php-http/guzzle6-adapter", - "version": "v1.1.1", + "name": "symfony/inflector", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-http/guzzle6-adapter.git", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" + "url": "https://github.com/symfony/inflector.git", + "reference": "217fa0f0e8fce417bd225e4195b12c56e87273a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", - "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", + "url": "https://api.github.com/repos/symfony/inflector/zipball/217fa0f0e8fce417bd225e4195b12c56e87273a8", + "reference": "217fa0f0e8fce417bd225e4195b12c56e87273a8", "shasum": "" }, "require": { - "guzzlehttp/guzzle": "^6.0", - "php": ">=5.5.0", - "php-http/httplug": "^1.0" - }, - "provide": { - "php-http/async-client-implementation": "1.0", - "php-http/client-implementation": "1.0" - }, - "require-dev": { - "ext-curl": "*", - "php-http/adapter-integration-tests": "^0.4" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Http\\Adapter\\Guzzle6\\": "src/" - } + "Symfony\\Component\\Inflector\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1705,54 +2941,98 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" }, { - "name": "David de Boer", - "email": "david@ddeboer.nl" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Guzzle 6 HTTP Adapter", - "homepage": "http://httplug.io", + "description": "Symfony Inflector Component", + "homepage": "https://symfony.com", "keywords": [ - "Guzzle", - "http" + "inflection", + "pluralize", + "singularize", + "string", + "symfony", + "words" ], - "time": "2016-05-10T06:13:32+00:00" + "time": "2018-01-03T17:14:19+00:00" }, { - "name": "php-http/httplug", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-http/httplug.git", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", - "shasum": "" - }, - "require": { - "php": ">=5.4", - "php-http/promise": "^1.0", - "psr/http-message": "^1.0" + "name": "symfony/lts", + "version": "v3", + "source": { + "type": "git", + "url": "https://github.com/symfony/lts.git", + "reference": "3a4e88df038e3197e6b66d091d2495fd7d255c0b" }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/lts/zipball/3a4e88df038e3197e6b66d091d2495fd7d255c0b", + "reference": "3a4e88df038e3197e6b66d091d2495fd7d255c0b", + "shasum": "" }, - "type": "library", + "conflict": { + "symfony/asset": ">=4", + "symfony/browser-kit": ">=4", + "symfony/cache": ">=4", + "symfony/class-loader": ">=4", + "symfony/config": ">=4", + "symfony/console": ">=4", + "symfony/css-selector": ">=4", + "symfony/debug": ">=4", + "symfony/debug-bundle": ">=4", + "symfony/dependency-injection": ">=4", + "symfony/doctrine-bridge": ">=4", + "symfony/dom-crawler": ">=4", + "symfony/dotenv": ">=4", + "symfony/event-dispatcher": ">=4", + "symfony/expression-language": ">=4", + "symfony/filesystem": ">=4", + "symfony/finder": ">=4", + "symfony/form": ">=4", + "symfony/framework-bundle": ">=4", + "symfony/http-foundation": ">=4", + "symfony/http-kernel": ">=4", + "symfony/inflector": ">=4", + "symfony/intl": ">=4", + "symfony/ldap": ">=4", + "symfony/lock": ">=4", + "symfony/monolog-bridge": ">=4", + "symfony/options-resolver": ">=4", + "symfony/process": ">=4", + "symfony/property-access": ">=4", + "symfony/property-info": ">=4", + "symfony/proxy-manager-bridge": ">=4", + "symfony/routing": ">=4", + "symfony/security": ">=4", + "symfony/security-bundle": ">=4", + "symfony/security-core": ">=4", + "symfony/security-csrf": ">=4", + "symfony/security-guard": ">=4", + "symfony/security-http": ">=4", + "symfony/serializer": ">=4", + "symfony/stopwatch": ">=4", + "symfony/symfony": ">=4", + "symfony/templating": ">=4", + "symfony/translation": ">=4", + "symfony/twig-bridge": ">=4", + "symfony/twig-bundle": ">=4", + "symfony/validator": ">=4", + "symfony/var-dumper": ">=4", + "symfony/web-link": ">=4", + "symfony/web-profiler-bundle": ">=4", + "symfony/web-server-bundle": ">=4", + "symfony/workflow": ">=4", + "symfony/yaml": ">=4" + }, + "type": "metapackage", "extra": { "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Http\\Client\\": "src/" + "dev-master": "3-dev" } }, "notification-url": "https://packagist.org/downloads/", @@ -1761,73 +3041,64 @@ ], "authors": [ { - "name": "Eric GELOEN", - "email": "geloen.eric@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "HTTPlug, the HTTP client abstraction for PHP", - "homepage": "http://httplug.io", - "keywords": [ - "client", - "http" - ], - "time": "2016-08-31T08:30:17+00:00" + "description": "Enforces Long Term Supported versions of Symfony components", + "homepage": "https://symfony.com", + "time": "2017-10-19T02:02:36+00:00" }, { - "name": "php-http/message", - "version": "1.6.0", + "name": "symfony/monolog-bridge", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-http/message.git", - "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253" + "url": "https://github.com/symfony/monolog-bridge.git", + "reference": "7d208fe9223e60a0196dbe8b90e9f697f248b9d6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message/zipball/2edd63bae5f52f79363c5f18904b05ce3a4b7253", - "reference": "2edd63bae5f52f79363c5f18904b05ce3a4b7253", + "url": "https://api.github.com/repos/symfony/monolog-bridge/zipball/7d208fe9223e60a0196dbe8b90e9f697f248b9d6", + "reference": "7d208fe9223e60a0196dbe8b90e9f697f248b9d6", "shasum": "" }, "require": { - "clue/stream-filter": "^1.3", - "php": ">=5.4", - "php-http/message-factory": "^1.0.2", - "psr/http-message": "^1.0" + "monolog/monolog": "~1.19", + "php": "^5.5.9|>=7.0.8", + "symfony/http-kernel": "~2.8|~3.0|~4.0" }, - "provide": { - "php-http/message-factory-implementation": "1.0" + "conflict": { + "symfony/http-foundation": "<3.3" }, "require-dev": { - "akeneo/phpspec-skip-example-extension": "^1.0", - "coduo/phpspec-data-provider-extension": "^1.0", - "ext-zlib": "*", - "guzzlehttp/psr7": "^1.0", - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4", - "slim/slim": "^3.0", - "zendframework/zend-diactoros": "^1.0" + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/security-core": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0" }, "suggest": { - "ext-zlib": "Used with compressor/decompressor streams", - "guzzlehttp/psr7": "Used with Guzzle PSR-7 Factories", - "slim/slim": "Used with Slim Framework PSR-7 implementation", - "zendframework/zend-diactoros": "Used with Diactoros Factories" + "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": "library", + "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "1.6-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Http\\Message\\": "src/" + "Symfony\\Bridge\\Monolog\\": "" }, - "files": [ - "src/filters.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1836,47 +3107,58 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "HTTP Message related tools", - "homepage": "http://php-http.org", - "keywords": [ - "http", - "message", - "psr-7" - ], - "time": "2017-07-05T06:40:53+00:00" + "description": "Symfony Monolog Bridge", + "homepage": "https://symfony.com", + "time": "2018-02-01T06:11:27+00:00" }, { - "name": "php-http/message-factory", - "version": "v1.0.2", + "name": "symfony/monolog-bundle", + "version": "v3.2.0", "source": { "type": "git", - "url": "https://github.com/php-http/message-factory.git", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" + "url": "https://github.com/symfony/monolog-bundle.git", + "reference": "8781649349fe418d51d194f8c9d212c0b97c40dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", - "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", + "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/8781649349fe418d51d194f8c9d212c0b97c40dd", + "reference": "8781649349fe418d51d194f8c9d212c0b97c40dd", "shasum": "" }, "require": { - "php": ">=5.4", - "psr/http-message": "^1.0" + "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": "1.0-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Http\\Message\\": "src/" - } + "Symfony\\Bundle\\MonologBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1884,49 +3166,52 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Symfony Community", + "homepage": "http://symfony.com/contributors" + }, + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Factory interfaces for PSR-7 HTTP Message", - "homepage": "http://php-http.org", + "description": "Symfony MonologBundle", + "homepage": "http://symfony.com", "keywords": [ - "factory", - "http", - "message", - "stream", - "uri" + "log", + "logging" ], - "time": "2015-12-19T14:08:53+00:00" + "time": "2018-03-05T14:51:36+00:00" }, { - "name": "php-http/promise", - "version": "v1.0.0", + "name": "symfony/options-resolver", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-http/promise.git", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980" + "url": "https://github.com/symfony/options-resolver.git", + "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980", - "reference": "dc494cdc9d7160b9a09bd5573272195242ce7980", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/f3109a6aedd20e35c3a33190e932c2b063b7b50e", + "reference": "f3109a6aedd20e35c3a33190e932c2b063b7b50e", "shasum": "" }, - "require-dev": { - "henrikbjorn/phpspec-code-coverage": "^1.0", - "phpspec/phpspec": "^2.4" + "require": { + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Http\\Promise\\": "src/" - } + "Symfony\\Component\\OptionsResolver\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1934,48 +3219,53 @@ ], "authors": [ { - "name": "Márk Sági-Kazár", - "email": "mark.sagikazar@gmail.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Joel Wurtz", - "email": "joel.wurtz@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Promise used for asynchronous HTTP requests", - "homepage": "http://httplug.io", + "description": "Symfony OptionsResolver Component", + "homepage": "https://symfony.com", "keywords": [ - "promise" + "config", + "configuration", + "options" ], - "time": "2016-01-26T13:27:02+00:00" + "time": "2018-01-11T07:56:07+00:00" }, { - "name": "psr/cache", - "version": "1.0.1", + "name": "symfony/polyfill-apcu", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00", + "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { - "Psr\\Cache\\": "src/" - } + "Symfony\\Polyfill\\Apcu\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1983,45 +3273,58 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for caching libraries", + "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "cache", - "psr", - "psr-6" + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2016-08-06T20:24:11+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { - "name": "psr/container", - "version": "1.0.0", + "name": "symfony/polyfill-mbstring", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", - "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { - "Psr\\Container\\": "src/" - } + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2029,48 +3332,56 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2017-02-14T16:28:37+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { - "name": "psr/http-message", - "version": "1.0.1", + "name": "symfony/polyfill-php56", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" + "url": "https://github.com/symfony/polyfill-php56.git", + "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", + "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8", + "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3", + "symfony/polyfill-util": "~1.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { - "Psr\\Http\\Message\\": "src/" - } + "Symfony\\Polyfill\\Php56\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2078,49 +3389,58 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", + "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2016-08-06T14:39:51+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { - "name": "psr/link", - "version": "1.0.0", + "name": "symfony/polyfill-php70", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/php-fig/link.git", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562" + "url": "https://github.com/symfony/polyfill-php70.git", + "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/link/zipball/eea8e8662d5cd3ae4517c9b864493f59fca95562", - "reference": "eea8e8662d5cd3ae4517c9b864493f59fca95562", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", + "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", "shasum": "" }, "require": { - "php": ">=5.3.0" + "paragonie/random_compat": "~1.0|~2.0", + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { - "Psr\\Link\\": "src/" - } + "Symfony\\Polyfill\\Php70\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2128,47 +3448,50 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interfaces for HTTP links", + "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "homepage": "https://symfony.com", "keywords": [ - "http", - "http-link", - "link", - "psr", - "psr-13", - "rest" + "compatibility", + "polyfill", + "portable", + "shim" ], - "time": "2016-10-28T16:06:13+00:00" + "time": "2018-01-30T19:27:44+00:00" }, { - "name": "psr/log", - "version": "1.0.2", + "name": "symfony/polyfill-util", + "version": "v1.7.0", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "url": "https://github.com/symfony/polyfill-util.git", + "reference": "e17c808ec4228026d4f5a8832afa19be85979563" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563", + "reference": "e17c808ec4228026d4f5a8832afa19be85979563", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.7-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Symfony\\Polyfill\\Util\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2177,46 +3500,54 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", + "description": "Symfony utilities for portability of PHP codes", + "homepage": "https://symfony.com", "keywords": [ - "log", - "psr", - "psr-3" + "compat", + "compatibility", + "polyfill", + "shim" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2018-01-31T18:08:44+00:00" }, { - "name": "psr/simple-cache", - "version": "1.0.1", + "name": "symfony/process", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + "url": "https://github.com/symfony/process.git", + "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", - "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "url": "https://api.github.com/repos/symfony/process/zipball/4b7d64e852886319e93ddfdecff0d744ab87658b", + "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": "^5.5.9|>=7.0.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Psr\\SimpleCache\\": "src/" - } + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2224,54 +3555,56 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "time": "2017-10-23T01:57:42+00:00" + "description": "Symfony Process Component", + "homepage": "https://symfony.com", + "time": "2018-04-03T05:22:50+00:00" }, { - "name": "sensio/distribution-bundle", - "version": "v5.0.21", + "name": "symfony/property-access", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/sensiolabs/SensioDistributionBundle.git", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a" + "url": "https://github.com/symfony/property-access.git", + "reference": "a6e8c778b220dfd5cd5f5dcb09f87ee232dd608a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioDistributionBundle/zipball/eb6266b3b472e4002538610b28a0a04bcf94891a", - "reference": "eb6266b3b472e4002538610b28a0a04bcf94891a", + "url": "https://api.github.com/repos/symfony/property-access/zipball/a6e8c778b220dfd5cd5f5dcb09f87ee232dd608a", + "reference": "a6e8c778b220dfd5cd5f5dcb09f87ee232dd608a", "shasum": "" }, "require": { - "php": ">=5.3.9", - "sensiolabs/security-checker": "~3.0|~4.0", - "symfony/class-loader": "~2.3|~3.0", - "symfony/config": "~2.3|~3.0", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/filesystem": "~2.3|~3.0", - "symfony/http-kernel": "~2.3|~3.0", - "symfony/process": "~2.3|~3.0" + "php": "^5.5.9|>=7.0.8", + "symfony/inflector": "~3.1|~4.0", + "symfony/polyfill-php70": "~1.0" }, - "type": "symfony-bundle", + "require-dev": { + "symfony/cache": "~3.1|~4.0" + }, + "suggest": { + "psr/cache-implementation": "To cache access methods." + }, + "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Sensio\\Bundle\\DistributionBundle\\": "" - } + "Symfony\\Component\\PropertyAccess\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2281,67 +3614,80 @@ { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Base bundle for Symfony Distributions", + "description": "Symfony PropertyAccess Component", + "homepage": "https://symfony.com", "keywords": [ - "configuration", - "distribution" - ], - "time": "2017-08-25T16:55:44+00:00" + "access", + "array", + "extraction", + "index", + "injection", + "object", + "property", + "property path", + "reflection" + ], + "time": "2018-01-03T07:37:34+00:00" }, { - "name": "sensio/framework-extra-bundle", - "version": "v3.0.29", + "name": "symfony/routing", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", - "reference": "bb907234df776b68922eb4b25bfa061683597b6a" + "url": "https://github.com/symfony/routing.git", + "reference": "50f333b707bef9f6972ad04e6df3ec8875c9a67c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/bb907234df776b68922eb4b25bfa061683597b6a", - "reference": "bb907234df776b68922eb4b25bfa061683597b6a", + "url": "https://api.github.com/repos/symfony/routing/zipball/50f333b707bef9f6972ad04e6df3ec8875c9a67c", + "reference": "50f333b707bef9f6972ad04e6df3ec8875c9a67c", "shasum": "" }, "require": { - "doctrine/common": "~2.2", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/framework-bundle": "~2.3|~3.0|~4.0" + "php": "^5.5.9|>=7.0.8" + }, + "conflict": { + "symfony/config": "<3.3.1", + "symfony/dependency-injection": "<3.3", + "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/doctrine-bundle": "~1.5", - "doctrine/orm": "~2.4,>=2.4.5", - "symfony/asset": "~2.7|~3.0|~4.0", - "symfony/browser-kit": "~2.3|~3.0|~4.0", - "symfony/dom-crawler": "~2.3|~3.0|~4.0", - "symfony/expression-language": "~2.4|~3.0|~4.0", - "symfony/finder": "~2.3|~3.0|~4.0", - "symfony/phpunit-bridge": "~3.2|~4.0", - "symfony/psr-http-message-bridge": "^0.3|^1.0", - "symfony/security-bundle": "~2.4|~3.0|~4.0", - "symfony/templating": "~2.3|~3.0|~4.0", - "symfony/translation": "~2.3|~3.0|~4.0", - "symfony/twig-bundle": "~2.3|~3.0|~4.0", - "symfony/yaml": "~2.3|~3.0|~4.0", - "twig/twig": "~1.12|~2.0", - "zendframework/zend-diactoros": "^1.3" + "doctrine/annotations": "~1.0", + "doctrine/common": "~2.2", + "psr/log": "~1.0", + "symfony/config": "^3.3.1|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { - "symfony/expression-language": "", - "symfony/psr-http-message-bridge": "To use the PSR-7 converters", - "symfony/security-bundle": "" + "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": "symfony-bundle", + "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Sensio\\Bundle\\FrameworkExtraBundle\\": "" - } + "Symfony\\Component\\Routing\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2351,46 +3697,82 @@ { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "This bundle provides a way to configure your controllers with annotations", + "description": "Symfony Routing Component", + "homepage": "https://symfony.com", "keywords": [ - "annotations", - "controllers" + "router", + "routing", + "uri", + "url" ], - "time": "2017-12-14T19:03:23+00:00" + "time": "2018-04-04T13:22:16+00:00" }, { - "name": "sensiolabs/security-checker", - "version": "v4.1.8", + "name": "symfony/security", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/sensiolabs/security-checker.git", - "reference": "dc270d5fec418cc6ac983671dba5d80ffaffb142" + "url": "https://github.com/symfony/security.git", + "reference": "67aeceb471baf282aadde8e8bc1a8f2320ac8a90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sensiolabs/security-checker/zipball/dc270d5fec418cc6ac983671dba5d80ffaffb142", - "reference": "dc270d5fec418cc6ac983671dba5d80ffaffb142", + "url": "https://api.github.com/repos/symfony/security/zipball/67aeceb471baf282aadde8e8bc1a8f2320ac8a90", + "reference": "67aeceb471baf282aadde8e8bc1a8f2320ac8a90", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.0", - "symfony/console": "~2.7|~3.0|~4.0" + "php": "^5.5.9|>=7.0.8", + "symfony/event-dispatcher": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "^2.8.31|~3.3.13|~3.4|~4.0", + "symfony/http-kernel": "~3.3|~4.0", + "symfony/polyfill-php56": "~1.0", + "symfony/polyfill-php70": "~1.0", + "symfony/property-access": "~2.8|~3.0|~4.0" + }, + "replace": { + "symfony/security-core": "self.version", + "symfony/security-csrf": "self.version", + "symfony/security-guard": "self.version", + "symfony/security-http": "self.version" + }, + "require-dev": { + "psr/container": "^1.0", + "psr/log": "~1.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/ldap": "~3.1|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~2.8|~3.0|~4.0", + "symfony/validator": "^3.2.5|~4.0" + }, + "suggest": { + "psr/container": "To instantiate the Security class", + "symfony/expression-language": "For using the expression voter", + "symfony/form": "", + "symfony/ldap": "For using the LDAP user and authentication providers", + "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", + "symfony/validator": "For using the user password constraint" }, - "bin": [ - "security-checker" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "psr-0": { - "SensioLabs\\Security": "" - } + "psr-4": { + "Symfony\\Component\\Security\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2399,42 +3781,82 @@ "authors": [ { "name": "Fabien Potencier", - "email": "fabien.potencier@gmail.com" + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A security checker for your composer.lock", - "time": "2018-02-28T22:10:01+00:00" + "description": "Symfony Security Component", + "homepage": "https://symfony.com", + "time": "2018-04-06T07:35:25+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "v5.4.9", + "name": "symfony/security-bundle", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91" + "url": "https://github.com/symfony/security-bundle.git", + "reference": "085335af9afd4b6b41a8af6d2de21de36517289c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/085335af9afd4b6b41a8af6d2de21de36517289c", + "reference": "085335af9afd4b6b41a8af6d2de21de36517289c", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-xml": "*", + "php": "^5.5.9|>=7.0.8", + "symfony/dependency-injection": "^3.4.3|^4.0.3", + "symfony/http-kernel": "~3.4|~4.0", + "symfony/polyfill-php70": "~1.0", + "symfony/security": "~3.4|~4.0" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/event-dispatcher": "<3.4", + "symfony/framework-bundle": "<3.4", + "symfony/var-dumper": "<3.3" }, "require-dev": { - "mockery/mockery": "~0.9.1", - "symfony/phpunit-bridge": "~3.2" + "doctrine/doctrine-bundle": "~1.5", + "symfony/asset": "~2.8|~3.0|~4.0", + "symfony/browser-kit": "~2.8|~3.0|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/dom-crawler": "~2.8|~3.0|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/form": "^3.4|~4.0", + "symfony/framework-bundle": "~3.4|~4.0", + "symfony/http-foundation": "~3.3|~4.0", + "symfony/process": "~3.3|~4.0", + "symfony/security-acl": "~2.8|~3.0", + "symfony/translation": "~3.4|~4.0", + "symfony/twig-bridge": "~3.4|~4.0", + "symfony/twig-bundle": "~3.4|~4.0", + "symfony/validator": "^3.4|~4.0", + "symfony/var-dumper": "~3.3|~4.0", + "symfony/yaml": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" }, - "type": "library", + "suggest": { + "symfony/security-acl": "For using the ACL functionality of this bundle" + }, + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "files": [ - "lib/swift_required.php" + "psr-4": { + "Symfony\\Bundle\\SecurityBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2442,60 +3864,62 @@ "MIT" ], "authors": [ - { - "name": "Chris Corbyn" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "https://swiftmailer.symfony.com", - "keywords": [ - "email", - "mail", - "mailer" - ], - "time": "2018-01-23T07:37:21+00:00" + "description": "Symfony SecurityBundle", + "homepage": "https://symfony.com", + "time": "2018-04-06T07:35:25+00:00" }, { - "name": "symfony/monolog-bundle", - "version": "v2.12.1", + "name": "symfony/swiftmailer-bundle", + "version": "v3.2.2", "source": { "type": "git", - "url": "https://github.com/symfony/monolog-bundle.git", - "reference": "b0146bdca7ba2a65f3bbe7010423c7393b29ec3f" + "url": "https://github.com/symfony/swiftmailer-bundle.git", + "reference": "f1ba0552a9cd4df0191a58845fbd5541cf9eda2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/monolog-bundle/zipball/b0146bdca7ba2a65f3bbe7010423c7393b29ec3f", - "reference": "b0146bdca7ba2a65f3bbe7010423c7393b29ec3f", + "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/f1ba0552a9cd4df0191a58845fbd5541cf9eda2d", + "reference": "f1ba0552a9cd4df0191a58845fbd5541cf9eda2d", "shasum": "" }, "require": { - "monolog/monolog": "~1.18", - "php": ">=5.3.2", - "symfony/config": "~2.3|~3.0", - "symfony/dependency-injection": "~2.3|~3.0", - "symfony/http-kernel": "~2.3|~3.0", - "symfony/monolog-bridge": "~2.3|~3.0" + "php": ">=7.0.0", + "swiftmailer/swiftmailer": "^6.0.1", + "symfony/config": "~2.8|~3.3|~4.0", + "symfony/dependency-injection": "~2.7|~3.3|~4.0", + "symfony/http-kernel": "~2.7|~3.3|~4.0" }, "require-dev": { - "phpunit/phpunit": "^4.8", - "symfony/console": "~2.3|~3.0", - "symfony/yaml": "~2.3|~3.0" + "symfony/console": "~2.7|~3.3|~4.0", + "symfony/framework-bundle": "~2.7|~3.3|~4.0", + "symfony/phpunit-bridge": "~3.3|~4.0", + "symfony/yaml": "~2.7|~3.3|~4.0" + }, + "suggest": { + "psr/log": "Allows logging" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "3.2-dev" } }, "autoload": { "psr-4": { - "Symfony\\Bundle\\MonologBundle\\": "" - } + "Symfony\\Bundle\\SwiftmailerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2511,43 +3935,45 @@ "email": "fabien@symfony.com" } ], - "description": "Symfony MonologBundle", + "description": "Symfony SwiftmailerBundle", "homepage": "http://symfony.com", - "keywords": [ - "log", - "logging" - ], - "time": "2017-01-02T19:04:26+00:00" + "time": "2018-04-03T16:29:41+00:00" }, { - "name": "symfony/polyfill-apcu", - "version": "v1.7.0", + "name": "symfony/templating", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-apcu.git", - "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00" + "url": "https://github.com/symfony/templating.git", + "reference": "6ac0bb6dea36053b97027dae0bf3888e432c1f74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/e8ae2136ddb53dea314df56fcd88e318ab936c00", - "reference": "e8ae2136ddb53dea314df56fcd88e318ab936c00", + "url": "https://api.github.com/repos/symfony/templating/zipball/6ac0bb6dea36053b97027dae0bf3888e432c1f74", + "reference": "6ac0bb6dea36053b97027dae0bf3888e432c1f74", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.5.9|>=7.0.8" + }, + "require-dev": { + "psr/log": "~1.0" + }, + "suggest": { + "psr/log": "For using debug logging in loaders" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Apcu\\": "" + "Symfony\\Component\\Templating\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2556,55 +3982,66 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "description": "Symfony Templating Component", "homepage": "https://symfony.com", - "keywords": [ - "apcu", - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-01-03T07:37:34+00:00" }, { - "name": "symfony/polyfill-intl-icu", - "version": "v1.7.0", + "name": "symfony/translation", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-intl-icu.git", - "reference": "254919c03761d46c29291616576ed003f10e91c1" + "url": "https://github.com/symfony/translation.git", + "reference": "80e19eaf12cbb546ac40384e5c55c36306823e57" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-icu/zipball/254919c03761d46c29291616576ed003f10e91c1", - "reference": "254919c03761d46c29291616576ed003f10e91c1", + "url": "https://api.github.com/repos/symfony/translation/zipball/80e19eaf12cbb546ac40384e5c55c36306823e57", + "reference": "80e19eaf12cbb546ac40384e5c55c36306823e57", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/intl": "~2.3|~3.0|~4.0" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<2.8", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/yaml": "~3.4|~4.0" }, "suggest": { - "ext-intl": "For best performance" + "psr/log": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { - "files": [ - "bootstrap.php" + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2613,58 +4050,88 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for intl's ICU-related data and classes", + "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "icu", - "intl", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-02-22T06:28:18+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", + "name": "symfony/twig-bridge", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + "url": "https://github.com/symfony/twig-bridge.git", + "reference": "36a48d915079a23bbc5ae017523ff2819a9e222f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "url": "https://api.github.com/repos/symfony/twig-bridge/zipball/36a48d915079a23bbc5ae017523ff2819a9e222f", + "reference": "36a48d915079a23bbc5ae017523ff2819a9e222f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.5.9|>=7.0.8", + "twig/twig": "^1.35|^2.4.4" + }, + "conflict": { + "symfony/console": "<3.4", + "symfony/form": "<3.4.7|<4.0.7,>=4.0" + }, + "require-dev": { + "symfony/asset": "~2.8|~3.0|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~2.8|~3.0|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/form": "^3.4.7|^4.0.7", + "symfony/http-foundation": "^3.3.11|~4.0", + "symfony/http-kernel": "~3.2|~4.0", + "symfony/polyfill-intl-icu": "~1.0", + "symfony/routing": "~2.8|~3.0|~4.0", + "symfony/security": "~2.8|~3.0|~4.0", + "symfony/security-acl": "~2.8|~3.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/translation": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~2.8.10|~3.1.4|~3.2|~4.0", + "symfony/web-link": "~3.3|~4.0", + "symfony/workflow": "~3.3|~4.0", + "symfony/yaml": "~2.8|~3.0|~4.0" }, "suggest": { - "ext-mbstring": "For best performance" + "symfony/asset": "For using the AssetExtension", + "symfony/expression-language": "For using the ExpressionExtension", + "symfony/finder": "", + "symfony/form": "For using the FormExtension", + "symfony/http-kernel": "For using the HttpKernelExtension", + "symfony/routing": "For using the RoutingExtension", + "symfony/security": "For using the SecurityExtension", + "symfony/stopwatch": "For using the StopwatchExtension", + "symfony/templating": "For using the TwigEngine", + "symfony/translation": "For using the TranslationExtension", + "symfony/var-dumper": "For using the DumpExtension", + "symfony/web-link": "For using the WebLinkExtension", + "symfony/yaml": "For using the YamlExtension" }, - "type": "library", + "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" + "Symfony\\Bridge\\Twig\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2673,55 +4140,71 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Symfony Twig Bridge", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-04-02T13:55:46+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.7.0", + "name": "symfony/twig-bundle", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8" + "url": "https://github.com/symfony/twig-bundle.git", + "reference": "c06e47e4b93500c1e6dbf9a29d10f88845d7958c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/ebc999ce5f14204c5150b9bd15f8f04e621409d8", - "reference": "ebc999ce5f14204c5150b9bd15f8f04e621409d8", + "url": "https://api.github.com/repos/symfony/twig-bundle/zipball/c06e47e4b93500c1e6dbf9a29d10f88845d7958c", + "reference": "c06e47e4b93500c1e6dbf9a29d10f88845d7958c", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": "^5.5.9|>=7.0.8", + "symfony/config": "~3.2|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "^3.3|~4.0", + "symfony/twig-bridge": "^3.4.3|^4.0.3", + "twig/twig": "~1.34|~2.4" }, - "type": "library", + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<3.3.1" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "symfony/asset": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/form": "~2.8|~3.0|~4.0", + "symfony/framework-bundle": "^3.3.11|~4.0", + "symfony/routing": "~2.8|~3.0|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0", + "symfony/templating": "~2.8|~3.0|~4.0", + "symfony/web-link": "~3.3|~4.0", + "symfony/yaml": "~2.8|~3.0|~4.0" + }, + "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" + "Symfony\\Bundle\\TwigBundle\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2730,57 +4213,82 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony TwigBundle", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-02-14T12:23:44+00:00" }, { - "name": "symfony/polyfill-php70", - "version": "v1.7.0", + "name": "symfony/validator", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" + "url": "https://github.com/symfony/validator.git", + "reference": "6fa41262dcbd50eedb1e841cfd97f5a1956cf2e7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", + "url": "https://api.github.com/repos/symfony/validator/zipball/6fa41262dcbd50eedb1e841cfd97f5a1956cf2e7", + "reference": "6fa41262dcbd50eedb1e841cfd97f5a1956cf2e7", "shasum": "" }, - "require": { - "paragonie/random_compat": "~1.0|~2.0", - "php": ">=5.3.3" + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation": "~2.8|~3.0|~4.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/dependency-injection": "<3.3", + "symfony/http-kernel": "<3.3.5", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "doctrine/cache": "~1.0", + "egulias/email-validator": "^1.2.8|~2.0", + "symfony/cache": "~3.1|~4.0", + "symfony/config": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.3|~4.0", + "symfony/expression-language": "~2.8|~3.0|~4.0", + "symfony/http-foundation": "~2.8|~3.0|~4.0", + "symfony/http-kernel": "^3.3.5|~4.0", + "symfony/intl": "^2.8.18|^3.2.5|~4.0", + "symfony/property-access": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.", + "doctrine/cache": "For using the default cached annotation reader and metadata cache.", + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "", + "symfony/expression-language": "For using the Expression validator", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For accessing properties within comparison constraints", + "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php70\\": "" + "Symfony\\Component\\Validator\\": "" }, - "files": [ - "bootstrap.php" - ], - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2789,51 +4297,64 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", + "description": "Symfony Validator Component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-04-06T07:35:25+00:00" }, { - "name": "symfony/polyfill-util", - "version": "v1.7.0", + "name": "symfony/var-dumper", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "951643091b39a6fd40fce56cd16e21e12bef3feb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/e17c808ec4228026d4f5a8832afa19be85979563", - "reference": "e17c808ec4228026d4f5a8832afa19be85979563", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/951643091b39a6fd40fce56cd16e21e12bef3feb", + "reference": "951643091b39a6fd40fce56cd16e21e12bef3feb", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" + }, + "require-dev": { + "ext-iconv": "*", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "ext-symfony_debug": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "3.4-dev" } }, "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } + "Symfony\\Component\\VarDumper\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2849,185 +4370,106 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony utilities for portability of PHP codes", + "description": "Symfony mechanism for exploring and dumping PHP variables", "homepage": "https://symfony.com", "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" + "debug", + "dump" ], - "time": "2018-01-31T18:08:44+00:00" + "time": "2018-04-03T20:34:11+00:00" }, { - "name": "symfony/swiftmailer-bundle", - "version": "v2.6.7", + "name": "symfony/web-profiler-bundle", + "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/swiftmailer-bundle.git", - "reference": "c4808f5169efc05567be983909d00f00521c53ec" + "url": "https://github.com/symfony/web-profiler-bundle.git", + "reference": "a6a1390c444d11bdb9dcabe42237dc584c2ef20e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/swiftmailer-bundle/zipball/c4808f5169efc05567be983909d00f00521c53ec", - "reference": "c4808f5169efc05567be983909d00f00521c53ec", + "url": "https://api.github.com/repos/symfony/web-profiler-bundle/zipball/a6a1390c444d11bdb9dcabe42237dc584c2ef20e", + "reference": "a6a1390c444d11bdb9dcabe42237dc584c2ef20e", "shasum": "" }, "require": { - "php": ">=5.3.2", - "swiftmailer/swiftmailer": "~4.2|~5.0", - "symfony/config": "~2.7|~3.0", - "symfony/dependency-injection": "~2.7|~3.0", - "symfony/http-kernel": "~2.7|~3.0" + "php": "^5.5.9|>=7.0.8", + "symfony/http-kernel": "~3.3|~4.0", + "symfony/polyfill-php70": "~1.0", + "symfony/routing": "~2.8|~3.0|~4.0", + "symfony/twig-bridge": "~2.8|~3.0|~4.0", + "symfony/var-dumper": "~3.3|~4.0", + "twig/twig": "~1.34|~2.4" }, - "require-dev": { - "symfony/console": "~2.7|~3.0", - "symfony/framework-bundle": "~2.7|~3.0", - "symfony/phpunit-bridge": "~3.3@dev", - "symfony/yaml": "~2.7|~3.0" + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<3.3.1", + "symfony/var-dumper": "<3.3" }, - "suggest": { - "psr/log": "Allows logging" + "require-dev": { + "symfony/config": "~3.4|~4.0", + "symfony/console": "~2.8|~3.0|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/stopwatch": "~2.8|~3.0|~4.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Bundle\\SwiftmailerBundle\\": "" - } + "Symfony\\Bundle\\WebProfilerBundle\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ - { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony SwiftmailerBundle", - "homepage": "http://symfony.com", - "time": "2017-10-19T01:06:41+00:00" + "description": "Symfony WebProfilerBundle", + "homepage": "https://symfony.com", + "time": "2018-04-04T12:14:22+00:00" }, { - "name": "symfony/symfony", + "name": "symfony/yaml", "version": "v3.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/symfony.git", - "reference": "5304a36c5efbb01af7efe2bb5b1953dbaeebc293" + "url": "https://github.com/symfony/yaml.git", + "reference": "a42f9da85c7c38d59f5e53f076fe81a091f894d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/symfony/zipball/5304a36c5efbb01af7efe2bb5b1953dbaeebc293", - "reference": "5304a36c5efbb01af7efe2bb5b1953dbaeebc293", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a42f9da85c7c38d59f5e53f076fe81a091f894d0", + "reference": "a42f9da85c7c38d59f5e53f076fe81a091f894d0", "shasum": "" }, "require": { - "doctrine/common": "~2.4", - "ext-xml": "*", - "fig/link-util": "^1.0", - "php": "^5.5.9|>=7.0.8", - "psr/cache": "~1.0", - "psr/container": "^1.0", - "psr/link": "^1.0", - "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "symfony/polyfill-apcu": "~1.1", - "symfony/polyfill-intl-icu": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php56": "~1.0", - "symfony/polyfill-php70": "~1.6", - "twig/twig": "^1.35|^2.4.4" + "php": "^5.5.9|>=7.0.8" }, "conflict": { - "phpdocumentor/reflection-docblock": "<3.0||>=3.2.0,<3.2.2", - "phpdocumentor/type-resolver": "<0.2.1", - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0" - }, - "provide": { - "psr/cache-implementation": "1.0", - "psr/container-implementation": "1.0", - "psr/log-implementation": "1.0", - "psr/simple-cache-implementation": "1.0" - }, - "replace": { - "symfony/asset": "self.version", - "symfony/browser-kit": "self.version", - "symfony/cache": "self.version", - "symfony/class-loader": "self.version", - "symfony/config": "self.version", - "symfony/console": "self.version", - "symfony/css-selector": "self.version", - "symfony/debug": "self.version", - "symfony/debug-bundle": "self.version", - "symfony/dependency-injection": "self.version", - "symfony/doctrine-bridge": "self.version", - "symfony/dom-crawler": "self.version", - "symfony/dotenv": "self.version", - "symfony/event-dispatcher": "self.version", - "symfony/expression-language": "self.version", - "symfony/filesystem": "self.version", - "symfony/finder": "self.version", - "symfony/form": "self.version", - "symfony/framework-bundle": "self.version", - "symfony/http-foundation": "self.version", - "symfony/http-kernel": "self.version", - "symfony/inflector": "self.version", - "symfony/intl": "self.version", - "symfony/ldap": "self.version", - "symfony/lock": "self.version", - "symfony/monolog-bridge": "self.version", - "symfony/options-resolver": "self.version", - "symfony/process": "self.version", - "symfony/property-access": "self.version", - "symfony/property-info": "self.version", - "symfony/proxy-manager-bridge": "self.version", - "symfony/routing": "self.version", - "symfony/security": "self.version", - "symfony/security-bundle": "self.version", - "symfony/security-core": "self.version", - "symfony/security-csrf": "self.version", - "symfony/security-guard": "self.version", - "symfony/security-http": "self.version", - "symfony/serializer": "self.version", - "symfony/stopwatch": "self.version", - "symfony/templating": "self.version", - "symfony/translation": "self.version", - "symfony/twig-bridge": "self.version", - "symfony/twig-bundle": "self.version", - "symfony/validator": "self.version", - "symfony/var-dumper": "self.version", - "symfony/web-link": "self.version", - "symfony/web-profiler-bundle": "self.version", - "symfony/web-server-bundle": "self.version", - "symfony/workflow": "self.version", - "symfony/yaml": "self.version" + "symfony/console": "<3.4" }, "require-dev": { - "cache/integration-tests": "dev-master", - "doctrine/annotations": "~1.0", - "doctrine/cache": "~1.6", - "doctrine/data-fixtures": "1.0.*", - "doctrine/dbal": "~2.4", - "doctrine/doctrine-bundle": "~1.4", - "doctrine/orm": "~2.4,>=2.4.5", - "egulias/email-validator": "~1.2,>=1.2.8|~2.0", - "monolog/monolog": "~1.11", - "ocramius/proxy-manager": "~0.4|~1.0|~2.0", - "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "predis/predis": "~1.0", - "symfony/phpunit-bridge": "~3.4|~4.0", - "symfony/security-acl": "~2.8|~3.0" + "symfony/console": "~3.4|~4.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { @@ -3037,18 +4479,10 @@ }, "autoload": { "psr-4": { - "Symfony\\Bridge\\Doctrine\\": "src/Symfony/Bridge/Doctrine/", - "Symfony\\Bridge\\Monolog\\": "src/Symfony/Bridge/Monolog/", - "Symfony\\Bridge\\ProxyManager\\": "src/Symfony/Bridge/ProxyManager/", - "Symfony\\Bridge\\Twig\\": "src/Symfony/Bridge/Twig/", - "Symfony\\Bundle\\": "src/Symfony/Bundle/", - "Symfony\\Component\\": "src/Symfony/Component/" + "Symfony\\Component\\Yaml\\": "" }, - "classmap": [ - "src/Symfony/Component/Intl/Resources/stubs" - ], "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3065,29 +4499,27 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "The Symfony PHP framework", + "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "keywords": [ - "framework" - ], - "time": "2018-04-06T15:20:04+00:00" + "time": "2018-04-03T05:14:20+00:00" }, { "name": "twig/twig", - "version": "v1.35.3", + "version": "v2.4.8", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "b48680b6eb7d16b5025b9bfc4108d86f6b8af86f" + "reference": "7b604c89da162034bdf4bb66310f358d313dd16d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/b48680b6eb7d16b5025b9bfc4108d86f6b8af86f", - "reference": "b48680b6eb7d16b5025b9bfc4108d86f6b8af86f", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/7b604c89da162034bdf4bb66310f358d313dd16d", + "reference": "7b604c89da162034bdf4bb66310f358d313dd16d", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0", + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { "psr/container": "^1.0", @@ -3097,7 +4529,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.35-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -3135,7 +4567,7 @@ "keywords": [ "templating" ], - "time": "2018-03-20T04:25:58+00:00" + "time": "2018-04-02T09:24:19+00:00" } ], "packages-dev": [ @@ -3346,6 +4778,119 @@ ], "time": "2018-02-15T16:58:55+00:00" }, + { + "name": "symfony/browser-kit", + "version": "v3.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/browser-kit.git", + "reference": "840bb6f0d5b3701fd768b68adf7193c2d0f98f79" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/840bb6f0d5b3701fd768b68adf7193c2d0f98f79", + "reference": "840bb6f0d5b3701fd768b68adf7193c2d0f98f79", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/dom-crawler": "~2.8|~3.0|~4.0" + }, + "require-dev": { + "symfony/css-selector": "~2.8|~3.0|~4.0", + "symfony/process": "~2.8|~3.0|~4.0" + }, + "suggest": { + "symfony/process": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\BrowserKit\\": "" + }, + "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 BrowserKit Component", + "homepage": "https://symfony.com", + "time": "2018-03-19T22:32:39+00:00" + }, + { + "name": "symfony/dom-crawler", + "version": "v3.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/dom-crawler.git", + "reference": "1a4cffeb059226ff6bee9f48acb388faf674afff" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/1a4cffeb059226ff6bee9f48acb388faf674afff", + "reference": "1a4cffeb059226ff6bee9f48acb388faf674afff", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8", + "symfony/polyfill-mbstring": "~1.0" + }, + "require-dev": { + "symfony/css-selector": "~2.8|~3.0|~4.0" + }, + "suggest": { + "symfony/css-selector": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\DomCrawler\\": "" + }, + "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 DomCrawler Component", + "homepage": "https://symfony.com", + "time": "2018-03-19T22:32:39+00:00" + }, { "name": "symfony/phpunit-bridge", "version": "v3.4.8", @@ -3466,6 +5011,55 @@ "shim" ], "time": "2018-01-31T17:43:24+00:00" + }, + { + "name": "symfony/stopwatch", + "version": "v3.4.8", + "source": { + "type": "git", + "url": "https://github.com/symfony/stopwatch.git", + "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/eb17cfa072cab26537ac37e9c4ece6c0361369af", + "reference": "eb17cfa072cab26537ac37e9c4ece6c0361369af", + "shasum": "" + }, + "require": { + "php": "^5.5.9|>=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Stopwatch\\": "" + }, + "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 Stopwatch Component", + "homepage": "https://symfony.com", + "time": "2018-02-17T14:55:25+00:00" } ], "aliases": [], @@ -3474,8 +5068,9 @@ "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": ">=7.0", - "ext-mbstring": "*" + "php": ">=7.1", + "ext-mbstring": "*", + "ext-zip": "*" }, "platform-dev": [] } diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..34bcc0e --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,43 @@ +version: '3' + +services: + app: + build: + context: . + dockerfile: ./Dockerfile + environment: + # Change "dev" to "prod" in production + - APP_ENV=dev + - APP_DEBUG=true + - GH_TOKEN=putAValidGithubToken + - GH_SECURED_TOKEN=putAValidSecuredToken + volumes: + # Comment out the next line in production + - ./:/srv/prestonbot:rw + # This is for assets:install + - ./web:/srv/prestonbot/web:rw + # If you develop on Linux, comment out the following volumes to just use bind-mounted project directory from host + - /srv/prestonbot/var + - /srv/prestonbot/var/cache + - /srv/prestonbot/var/logs + - /srv/prestonbot/var/sessions + - /srv/prestonbot/vendor + networks: + - prestonbot + nginx: + image: nginx:1.11-alpine + depends_on: + - app + ports: + - '81:80' + volumes: + - ./docker/nginx/conf.d:/etc/nginx/conf.d:ro + - ./web:/srv/prestonbot/web:ro + networks: + - prestonbot + +volumes: + app-web: {} + +networks: + prestonbot: ~ diff --git a/docker/app/docker-entrypoint.sh b/docker/app/docker-entrypoint.sh new file mode 100644 index 0000000..2882a73 --- /dev/null +++ b/docker/app/docker-entrypoint.sh @@ -0,0 +1,24 @@ +#!/bin/sh +set -e + +# first arg is `-f` or `--some-option` +if [ "${1#-}" != "$1" ]; then + set -- php-fpm "$@" +fi + +if [ "$1" = 'php-fpm' ] || [ "$1" = 'bin/console' ]; then + # Detect the host IP + export DOCKER_BRIDGE_IP + DOCKER_BRIDGE_IP=$(ip ro | grep default | cut -d' ' -f 3) + + if [ "$SYMFONY_ENV" = 'prod' ]; then + composer install --prefer-dist --no-dev --no-progress --no-suggest --optimize-autoloader --classmap-authoritative --no-interaction + else + composer install --prefer-dist --no-progress --no-suggest --no-interaction + fi + + # Permissions hack because setfacl does not work on Mac and Windows + chown -R www-data var +fi + +exec docker-php-entrypoint "$@" diff --git a/docker/app/install-composer.sh b/docker/app/install-composer.sh new file mode 100644 index 0000000..f4ad41b --- /dev/null +++ b/docker/app/install-composer.sh @@ -0,0 +1,21 @@ +#!/bin/sh + +# Copyright (c) Nils Adermann, Jordi Boggiano +# Origin: https://github.com/composer/composer/blob/master/doc/faqs/how-to-install-composer-programmatically.md +# Licence: MIT + +EXPECTED_SIGNATURE=$(wget -q -O - https://composer.github.io/installer.sig) +php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" +ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") + +if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ] +then + >&2 echo 'ERROR: Invalid installer signature' + rm composer-setup.php + exit 1 +fi + +php composer-setup.php --quiet +RESULT=$? +rm composer-setup.php +exit $RESULT diff --git a/docker/app/php.ini b/docker/app/php.ini new file mode 100644 index 0000000..2f8c7eb --- /dev/null +++ b/docker/app/php.ini @@ -0,0 +1,9 @@ +apc.enable_cli = 1 +date.timezone = UTC +session.auto_start = Off +short_open_tag = Off + +# http://symfony.com/doc/current/performance.html +opcache.max_accelerated_files = 20000 +realpath_cache_size = 4096K +realpath_cache_ttl = 600 diff --git a/docker/nginx/conf.d/default.conf b/docker/nginx/conf.d/default.conf new file mode 100644 index 0000000..2b50443 --- /dev/null +++ b/docker/nginx/conf.d/default.conf @@ -0,0 +1,34 @@ +server { + root /srv/prestonbot/web; + resolver 127.0.0.11; + + location / { + # try to serve file directly, fallback to index.php + try_files $uri /index.php$is_args$args; + } + location ~ ^/index\.php(/|$) { + set $upstream_host app; + fastcgi_pass $upstream_host:9000; + fastcgi_split_path_info ^(.+\.php)(/.*)$; + include fastcgi_params; + # When you are using symlinks to link the document root to the + # current version of your application, you should pass the real + # application path instead of the path to the symlink to PHP + # FPM. + # Otherwise, PHP's OPcache may not properly detect changes to + # your PHP files (see https://github.com/zendtech/ZendOptimizerPlus/issues/126 + # for more information). + fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; + fastcgi_param DOCUMENT_ROOT $realpath_root; + # Prevents URIs that include the front controller. This will 404: + # http://domain.tld/app.php/some-path + # Remove the internal directive to allow URIs like this + internal; + } + + # return 404 for all other php files not matching the front controller + # this prevents access to other php files you don't want to be accessible. + location ~ \.php$ { + return 404; + } +} diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 98cdee7..769cab6 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -20,7 +20,10 @@ - + + + + diff --git a/src/AppBundle/Command/SendPullRequestReportCommand.php b/src/AppBundle/Command/SendPullRequestReportCommand.php index 91484a5..487afca 100644 --- a/src/AppBundle/Command/SendPullRequestReportCommand.php +++ b/src/AppBundle/Command/SendPullRequestReportCommand.php @@ -2,7 +2,9 @@ namespace AppBundle\Command; -use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; +use AppBundle\Mailer\Mailer; +use AppBundle\PullRequests\Reporter; +use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; @@ -12,17 +14,48 @@ * Generate report of repository activity to a group a defined users * and send it by email. */ -class SendPullRequestReportCommand extends ContainerAwareCommand +class SendPullRequestReportCommand extends Command { const DEFAULT_BRANCH = 'develop'; + protected static $defaultName = 'pull_request:report:send_mail'; + + /** + * @var Reporter + */ + private $reporter; + + /** + * @var Mailer + */ + private $mailer; + + /** + * @var array + */ + private $recipients; + + /** + * @var string + */ + private $adminMail; + + public function __construct(Reporter $reporter, Mailer $mailer, array $recipients, string $adminMail) + { + parent::__construct(); + + $this->reporter = $reporter; + $this->mailer = $mailer; + $this->recipients = $recipients; + $this->adminMail = $adminMail; + } + /** * {@inheritdoc} */ protected function configure() { $this - ->setName('pull_request:report:send_mail') ->setDescription('Send pull requests by tag report mails.') ->addArgument( 'branch', @@ -40,26 +73,22 @@ protected function execute(InputInterface $input, OutputInterface $output) { $io = new SymfonyStyle($input, $output); $branch = $input->getArgument('branch') ? $input->getArgument('branch') : self::DEFAULT_BRANCH; - - $groups = $this->getContainer()->getParameter('recipients'); - $reporter = $this->getContainer()->get('app.pull_requests.reporter'); - $mailer = $this->getContainer()->get('app.mailer'); $nbMails = 0; $io->title('Pull requests Reporter'); $io->comment('List of recipients'); $headers = ['Group', 'Emails']; - $io->table($headers, $this->getRows($groups)); + $io->table($headers, $this->getRows($this->recipients)); try { - foreach ($groups as $groupName => $groupMembers) { + foreach ($this->recipients as $groupName => $groupMembers) { foreach ($groupMembers as $groupMember) { - $nbMails += $mailer->send( + $nbMails += $this->mailer->send( 'Daily report '.date('d/m/Y'), - $this->getContainer()->getParameter('admin_mail'), + $this->adminMail, $groupMember, 'mail/pr_sumup_for_mail.html.twig', - $reporter->reportActivity($branch) + $this->reporter->reportActivity($branch) ); } } diff --git a/src/AppBundle/Comments/CommentApi.php b/src/AppBundle/Comments/CommentApi.php index 33ac126..51a4c59 100644 --- a/src/AppBundle/Comments/CommentApi.php +++ b/src/AppBundle/Comments/CommentApi.php @@ -19,7 +19,7 @@ class CommentApi implements CommentApiInterface /** * @var string */ - private $repositoryUsername; + private $repositoryOwner; /** * @var string @@ -31,10 +31,10 @@ class CommentApi implements CommentApiInterface */ private $twig; - public function __construct(KnpCommentApi $knpCommentApi, $repositoryUsername, $repositoryName, Twig_Environment $twig) + public function __construct(KnpCommentApi $knpCommentApi, $repositoryOwner, $repositoryName, Twig_Environment $twig) { $this->knpCommentApi = $knpCommentApi; - $this->repositoryUsername = $repositoryUsername; + $this->repositoryOwner = $repositoryOwner; $this->repositoryName = $repositoryName; $this->twig = $twig; } @@ -46,7 +46,7 @@ public function send(PullRequest $pullRequest, $comment) { $this->knpCommentApi ->create( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $pullRequest->getNumber(), [ 'body' => $comment, @@ -63,7 +63,7 @@ public function sendWithTemplate(PullRequest $pullRequest, $templateName, $param $comment = $this->twig->render($templateName, $params); $this->knpCommentApi ->create( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $pullRequest->getNumber(), [ 'body' => $comment, @@ -79,7 +79,7 @@ public function remove($commentId) { $this->knpCommentApi ->remove( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $commentId ); diff --git a/src/AppBundle/Commits/Repository.php b/src/AppBundle/Commits/Repository.php index d1968f8..6cc02ab 100644 --- a/src/AppBundle/Commits/Repository.php +++ b/src/AppBundle/Commits/Repository.php @@ -24,7 +24,7 @@ class Repository implements RepositoryInterface /** * @var string */ - private $repositoryUsername; + private $repositoryOwner; /** * @var string @@ -34,12 +34,12 @@ class Repository implements RepositoryInterface public function __construct( CommitsApi $commitsApi, PullRequestApi $pullRequestApi, - $repositoryUsername, + $repositoryOwner, $repositoryName ) { $this->commitsApi = $commitsApi; $this->pullRequestApi = $pullRequestApi; - $this->repositoryUsername = $repositoryUsername; + $this->repositoryOwner = $repositoryOwner; $this->repositoryName = $repositoryName; } @@ -50,7 +50,7 @@ public function findAllByPullRequest(PullRequest $pullRequest) { try { $responseApi = $this->pullRequestApi->commits( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $pullRequest->getNumber() ); @@ -70,7 +70,7 @@ public function findAllByUser(User $user) $responseApi = $this->commitsApi ->getCommits() ->all( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, ['author' => $user->getLogin()] ); diff --git a/src/AppBundle/Controller/HomeController.php b/src/AppBundle/Controller/HomeController.php index 1f323de..9188fa9 100644 --- a/src/AppBundle/Controller/HomeController.php +++ b/src/AppBundle/Controller/HomeController.php @@ -2,18 +2,17 @@ namespace AppBundle\Controller; +use AppBundle\Issues\StatusApi; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; -use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; -class HomeController extends Controller +class HomeController extends AbstractController { /** * @Route("/", name="home_page") */ - public function homepageAction() + public function homepageAction(StatusApi $statusApi) { - $statusApi = $this->get('app.status_api'); - return $this->render('default/homepage.html.twig', [ 'needsReviewUrl' => $statusApi->getNeedsReviewUrl(), 'waitingForQAUrl' => $statusApi->getWaitingForQAUrl(), diff --git a/src/AppBundle/Controller/WebhookController.php b/src/AppBundle/Controller/WebhookController.php index b8df20a..7c40377 100644 --- a/src/AppBundle/Controller/WebhookController.php +++ b/src/AppBundle/Controller/WebhookController.php @@ -3,29 +3,33 @@ namespace AppBundle\Controller; use AppBundle\Event\GitHubEvent; +use Psr\Log\LoggerInterface; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; -use Symfony\Bundle\FrameworkBundle\Controller\Controller; +use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; +use Symfony\Component\EventDispatcher\EventDispatcherInterface; use Symfony\Component\HttpFoundation\JsonResponse; -class WebhookController extends Controller +class WebhookController extends AbstractController { /** * @Route("/webhooks/github", name="webhooks_github") * @Method("POST") */ - public function githubAction(GithubEvent $event = null) + public function githubAction(?GitHubEvent $event, LoggerInterface $logger, EventDispatcherInterface $eventDispatcher): JsonResponse { if (null === $event) { return new JsonResponse('[err] event not found.'); } + $eventName = strtolower($event->getName()).'_'.$event->getEvent()->getAction(); - $this->get('logger')->info(sprintf('[Event] %s (%s) received', + $logger->info(sprintf('[Event] %s (%s) received', $event->getName(), $event->getEvent()->getAction() )); - $this->get('event_dispatcher')->dispatch($eventName, $event); + + $eventDispatcher->dispatch($eventName, $event); return new JsonResponse($event->getStatuses()); } diff --git a/src/AppBundle/Event/GitHubEvent.php b/src/AppBundle/Event/GitHubEvent.php index 0352c69..ff2e161 100644 --- a/src/AppBundle/Event/GitHubEvent.php +++ b/src/AppBundle/Event/GitHubEvent.php @@ -2,6 +2,7 @@ namespace AppBundle\Event; +use Lpdigital\Github\Entity\PullRequest; use Lpdigital\Github\EventType\ActionableEventInterface; use Symfony\Component\EventDispatcher\Event; @@ -30,33 +31,26 @@ public function __construct(string $name, ActionableEventInterface $event) $this->statuses = []; } - /** - * @return string - */ - public function getName() + public function getName(): string { return $this->name; } - /** - * @return ActionableEventInterface - */ - public function getEvent() + public function getEvent(): ActionableEventInterface { return $this->event; } - /** - * @return array - */ - public function getStatuses() + public function getPullRequest(): ?PullRequest + { + return property_exists($this->event, 'pullRequest') ? $this->event->pullRequest : null; + } + + public function getStatuses(): array { return $this->statuses; } - /** - * @param array $status - */ public function addStatus(array $status) { $this->statuses[] = $status; diff --git a/src/AppBundle/Event/GitHubEventResolver.php b/src/AppBundle/Event/GitHubEventResolver.php index f1a7ff2..8c93ba9 100644 --- a/src/AppBundle/Event/GitHubEventResolver.php +++ b/src/AppBundle/Event/GitHubEventResolver.php @@ -33,17 +33,11 @@ class GitHubEventResolver implements ArgumentValueResolverInterface */ private $repositoryName; - /** - * @param WebhookResolver $resolver - * @param $repositoryOnwer - * @param $repositoryName - * @param mixed $repositoryOwner - */ public function __construct( WebhookResolver $resolver, LoggerInterface $logger, - $repositoryOwner, - $repositoryName + string $repositoryOwner, + string $repositoryName ) { $this->resolver = $resolver; $this->logger = $logger; @@ -51,11 +45,19 @@ public function __construct( $this->repositoryName = $repositoryName; } - public function supports(Request $request, ArgumentMetadata $argument) + public function supports(Request $request, ArgumentMetadata $argument): bool { return GitHubEvent::class === $argument->getType(); } + /** + * @param Request $request + * @param ArgumentMetadata $argument + * + * @return \Generator + * + * @throws \Lpdigital\Github\Exception\EventNotFoundException + */ public function resolve(Request $request, ArgumentMetadata $argument) { $payload = json_decode($request->getContent(), true); @@ -91,10 +93,9 @@ public function resolve(Request $request, ArgumentMetadata $argument) * * @return bool */ - private function isValid(ActionableEventInterface $event) + private function isValid(ActionableEventInterface $event): bool { - $repository = $event->getRepository(); - list($repositoryUsername, $repositoryName) = explode('/', $repository->getFullName()); + [$repositoryUsername, $repositoryName] = explode('/', $event->getRepository()->getFullName()); return $repositoryUsername === $this->repositoryOwner && $repositoryName === $this->repositoryName; } diff --git a/src/AppBundle/EventSubscriber/IssueCommentSubscriber.php b/src/AppBundle/EventSubscriber/IssueCommentSubscriber.php deleted file mode 100644 index 75ed532..0000000 --- a/src/AppBundle/EventSubscriber/IssueCommentSubscriber.php +++ /dev/null @@ -1,57 +0,0 @@ -container = $container; - } - - /** - * @return array - */ - public static function getSubscribedEvents() - { - return [ - 'issuecommentevent_created' => [ - ['addLabels', 255], - ], - ]; - } - - /** - * @param GitHubEvent $githubEvent - */ - public function addLabels(GitHubEvent $githubEvent) - { - if (true === $this->container->getParameter('enable_labels')) { - $event = $githubEvent->getEvent(); - - $this->container - ->get('app.issue_listener') - ->handleCommentAddedEvent( - $event->issue->getNumber(), - $event->comment->getBody() - ); - - $githubEvent->addStatus([ - 'event' => 'issue_comment_created', - 'action' => 'add labels if required', - ]); - } - } -} diff --git a/src/AppBundle/EventSubscriber/PullRequestSubscriber.php b/src/AppBundle/EventSubscriber/PullRequestSubscriber.php index 6546ea6..a4362c5 100644 --- a/src/AppBundle/EventSubscriber/PullRequestSubscriber.php +++ b/src/AppBundle/EventSubscriber/PullRequestSubscriber.php @@ -4,7 +4,8 @@ use AppBundle\Diff\Diff; use AppBundle\Event\GitHubEvent; -use Symfony\Component\DependencyInjection\ContainerInterface; +use AppBundle\Issues\Listener as IssuesListener; +use AppBundle\PullRequests\Listener as PullRequestsListener; use Symfony\Component\EventDispatcher\EventSubscriberInterface; class PullRequestSubscriber implements EventSubscriberInterface @@ -13,25 +14,33 @@ class PullRequestSubscriber implements EventSubscriberInterface const CLASSIC_PATH = '#^themes\/classic\/#'; /** - * @param ContainerInterface $container + * @var IssuesListener */ - public function setContainer(ContainerInterface $container) + private $issuesListener; + + /** + * @var PullRequestsListener + */ + private $pullRequestsListener; + + public function __construct(IssuesListener $issuesListener, PullRequestsListener $pullRequestsListener) { - $this->container = $container; + $this->issuesListener = $issuesListener; + $this->pullRequestsListener = $pullRequestsListener; } /** * @return array */ - public static function getSubscribedEvents() + public static function getSubscribedEvents(): array { return [ 'pullrequestevent_opened' => [ ['checkForTableDescription', 254], ['welcomePeople', 255], ['checkForNewTranslations', 252], - ['initLabels', 254], ['initBranchLabel', 254], + ['initPullRequestTypeLabel', 254], ['checkForClassicChanges', 252], ['checkIfPrFixCriticalIssue', 253], ], @@ -40,47 +49,38 @@ public static function getSubscribedEvents() ['checkForNewTranslations', 252], ['checkForClassicChanges', 252], ['initBranchLabel', 254], + ['initPullRequestTypeLabel', 254], ], ]; } /** - * @param GitHubEvent $githubEvent + * @param gitHubEvent $githubEvent * - * For now, only add "Needs Review" label + * Add the branch label according to the branch selected in PR template */ - public function initLabels(GitHubEvent $githubEvent) + public function initBranchLabel(GitHubEvent $githubEvent) { - $pullRequest = $githubEvent->getEvent()->pullRequest; - - if (true === $this->container->getParameter('labels_pr_creation')) { - $this->container - ->get('app.issue_listener') - ->handlePullRequestCreatedEvent($pullRequest->getNumber()); + $this->issuesListener->addBranchLabel($githubEvent->getPullRequest()); - $githubEvent->addStatus([ - 'event' => 'pr_opened', - 'action' => 'labels initialized', - ]); - } + $githubEvent->addStatus([ + 'event' => 'pr_opened', + 'action' => 'branch label initialized', + ]); } /** * @param gitHubEvent $githubEvent * - * Add the branch label according to the branch selected in PR template + * Add the pull request type according to the type selected in PR template */ - public function initBranchLabel(GitHubEvent $githubEvent) + public function initPullRequestTypeLabel(GitHubEvent $githubEvent) { - $pullRequest = $githubEvent->getEvent()->pullRequest; - - $this->container - ->get('app.issue_listener') - ->addBranchLabel($pullRequest); + $this->issuesListener->addPullRequestTypeLabel($githubEvent->getPullRequest()); $githubEvent->addStatus([ 'event' => 'pr_opened', - 'action' => 'branch label initialized', + 'action' => 'pr type label initialized', ]); } @@ -91,11 +91,7 @@ public function initBranchLabel(GitHubEvent $githubEvent) */ public function checkForTableDescription(GitHubEvent $githubEvent) { - $pullRequest = $githubEvent->getEvent()->pullRequest; - - $this->container - ->get('app.pullrequest_listener') - ->checkForTableDescription($pullRequest); + $this->pullRequestsListener->checkForTableDescription($githubEvent->getPullRequest()); $githubEvent->addStatus([ 'event' => 'pr_opened', @@ -116,9 +112,7 @@ public function checkForNewTranslations(GitHubEvent $githubEvent) $diff = Diff::create(file_get_contents($pullRequest->getDiffUrl())); if ($found = $diff->additions()->contains(self::TRANS_PATTERN)->match()) { - $this->container - ->get('app.issue_listener') - ->handleWaitingForWordingEvent($pullRequest->getNumber()); + $this->issuesListener->handleWaitingForWordingEvent($pullRequest->getNumber()); } $eventStatus = 'opened' === $event->getAction() ? 'opened' : 'edited'; @@ -132,9 +126,7 @@ public function checkForNewTranslations(GitHubEvent $githubEvent) public function checkIfPrFixCriticalIssue(GitHubEvent $githubEvent) { - $labelWasAdded = $this->container - ->get('app.issue_listener') - ->addLabelCriticalLabelIfNeeded($githubEvent->getEvent()->pullRequest); + $labelWasAdded = $this->issuesListener->addLabelCriticalLabelIfNeeded($githubEvent->getPullRequest()); if ($labelWasAdded) { $githubEvent->addStatus([ @@ -157,9 +149,7 @@ public function checkForClassicChanges(GitHubEvent $githubEvent) $diff = Diff::create(file_get_contents($pullRequest->getDiffUrl())); if ($found = $diff->path(self::CLASSIC_PATH)->match()) { - $this->container - ->get('app.issue_listener') - ->handleClassicChangesEvent($pullRequest->getNumber()); + $this->issuesListener->handleClassicChangesEvent($pullRequest->getNumber()); } $eventStatus = 'opened' === $event->getAction() ? 'opened' : 'edited'; @@ -179,12 +169,9 @@ public function checkForClassicChanges(GitHubEvent $githubEvent) */ public function welcomePeople(GitHubEvent $githubEvent) { - $pullRequest = $githubEvent->getEvent()->pullRequest; $sender = $githubEvent->getEvent()->sender; - $this->container - ->get('app.pullrequest_listener') - ->welcomePeople($pullRequest, $sender); + $this->pullRequestsListener->welcomePeople($githubEvent->getPullRequest(), $sender); $githubEvent->addStatus([ 'event' => 'pr_opened', @@ -199,15 +186,13 @@ public function welcomePeople(GitHubEvent $githubEvent) */ public function removePullRequestValidationComment(GithubEvent $githubEvent) { - $pullRequest = $githubEvent->getEvent()->pullRequest; + $pullRequest = $githubEvent->getPullRequest(); if ($pullRequest->isClosed() || $pullRequest->isMerged()) { return; } - $success = $this->container - ->get('app.pullrequest_listener') - ->removePullRequestValidationComment($pullRequest); + $success = $this->pullRequestsListener->removePullRequestValidationComment($pullRequest); if ($success) { $githubEvent->addStatus([ diff --git a/src/AppBundle/Issues/CachedLabelsApi.php b/src/AppBundle/Issues/CachedLabelsApi.php index 1efc61c..8d5c948 100644 --- a/src/AppBundle/Issues/CachedLabelsApi.php +++ b/src/AppBundle/Issues/CachedLabelsApi.php @@ -22,17 +22,17 @@ class CachedLabelsApi /** * @var string */ - private $repositoryUsername; + private $repositoryOwner; /** * @var string */ private $repositoryName; - public function __construct(Labels $labelsApi, $repositoryUsername, $repositoryName) + public function __construct(Labels $labelsApi, $repositoryOwner, $repositoryName) { $this->labelsApi = $labelsApi; - $this->repositoryUsername = $repositoryUsername; + $this->repositoryOwner = $repositoryOwner; $this->repositoryName = $repositoryName; } @@ -47,7 +47,7 @@ public function getIssueLabels($issueNumber) $this->labelCache[$issueNumber] = []; $labelsData = $this->labelsApi->all( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $issueNumber ); @@ -72,7 +72,7 @@ public function addIssueLabel($issueNumber, $label) } $this->labelsApi->add( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $issueNumber, $label @@ -95,7 +95,7 @@ public function removeIssueLabel($issueNumber, $label) } $this->labelsApi->remove( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $issueNumber, $label diff --git a/src/AppBundle/Issues/Listener.php b/src/AppBundle/Issues/Listener.php index cf0ec02..5fd6441 100644 --- a/src/AppBundle/Issues/Listener.php +++ b/src/AppBundle/Issues/Listener.php @@ -8,13 +8,6 @@ class Listener { - private static $triggerWordToStatus = [ - 'needs review' => Status::NEEDS_REVIEW, - 'code reviewed' => Status::CODE_REVIEWED, - 'qa approved' => Status::QA_APPROVED, - 'pm approved' => Status::PM_APPROVED, - ]; - /** * @var StatusApi */ @@ -31,54 +24,6 @@ public function __construct(StatusApi $statusApi, LoggerInterface $logger) $this->logger = $logger; } - /** - * Parses the text of the comment and looks for keywords to see - * if this should cause any status change. - * - * Returns the status that this comment is causing or null of there - * should be no status change. - * - * @param int $issueNumber The issue number - * @param string $comment The text of the comment - * - * @return null|string The status that the issue was moved to or null - */ - public function handleCommentAddedEvent($issueNumber, $comment) - { - $triggerWord = implode('|', array_keys(self::$triggerWordToStatus)); - $formatting = '[\\s\\*]*'; - - // Match first character after "status:" - // Case insensitive ("i"), ignores formatting with "*" before or after the ":" - $pattern = "~(?=\n|^)${formatting}status${formatting}:${formatting}[\"']?($triggerWord)[\"']?${formatting}[.!]?${formatting}(?<=\r\n|\n|$)~i"; - - if (preg_match_all($pattern, $comment, $matches)) { - // Second subpattern = first status character - $newStatus = self::$triggerWordToStatus[strtolower(end($matches[1]))]; - $this->statusApi->addIssueLabel($issueNumber, $newStatus); - $this->log($issueNumber, $newStatus); - - return $newStatus; - } - } - - /** - * Adds a "Needs Review" label to new PRs. - * - * @param int $prNumber The number of the PR - * - * @return string The new status - */ - public function handlePullRequestCreatedEvent($prNumber) - { - $newStatus = Status::NEEDS_REVIEW; - - $this->statusApi->addIssueLabel($prNumber, $newStatus); - $this->log($prNumber, $newStatus); - - return $newStatus; - } - /** * Add "waiting for wording" label to an issue. * @@ -86,7 +31,7 @@ public function handlePullRequestCreatedEvent($prNumber) * * @return string The new status */ - public function handleWaitingForWordingEvent($issueNumber) + public function handleWaitingForWordingEvent($issueNumber): string { $newStatus = Status::WAITING_FOR_WORDING; @@ -101,7 +46,7 @@ public function handleWaitingForWordingEvent($issueNumber) * * @return bool */ - public function addLabelCriticalLabelIfNeeded(PullRequest $pullRequest) + public function addLabelCriticalLabelIfNeeded(PullRequest $pullRequest): bool { $bodyParser = new BodyParser($pullRequest->getBody()); @@ -121,17 +66,38 @@ public function addLabelCriticalLabelIfNeeded(PullRequest $pullRequest) * Add a label for a branch described in Pull Request template. * * @param PullRequest $pullRequest + * + * @return bool */ - public function addBranchLabel(PullRequest $pullRequest) + public function addBranchLabel(PullRequest $pullRequest): bool { $bodyParser = new BodyParser($pullRequest->getBody()); $issueNumber = $pullRequest->getNumber(); $branch = trim($bodyParser->getBranch()); - if (in_array($branch, Status::$branches, true)) { + if (\in_array($branch, Status::$branches, true)) { $this->statusApi->addIssueLabel($issueNumber, $branch); $this->log($issueNumber, $branch); + + return true; } + + return false; + } + + /** + * Add a label for a type described in Pull Request template. + * + * @param PullRequest $pullRequest + */ + public function addPullRequestTypeLabel(PullRequest $pullRequest) + { + $bodyParser = new BodyParser($pullRequest->getBody()); + $issueNumber = $pullRequest->getNumber(); + $pullRequestType = trim($bodyParser->getType()); + + $this->statusApi->addIssueLabel($issueNumber, $pullRequestType); + $this->log($issueNumber, $pullRequestType); } /** @@ -141,7 +107,7 @@ public function addBranchLabel(PullRequest $pullRequest) * * @return string The new status */ - public function handleClassicChangesEvent($issueNumber) + public function handleClassicChangesEvent($issueNumber): string { $newStatus = Status::REPORT_ON_STARTER_THEME; diff --git a/src/AppBundle/Issues/StatusApi.php b/src/AppBundle/Issues/StatusApi.php index f65cba7..834de5b 100644 --- a/src/AppBundle/Issues/StatusApi.php +++ b/src/AppBundle/Issues/StatusApi.php @@ -14,17 +14,17 @@ class StatusApi /** * @var string */ - private $repositoryUsername; + private $repositoryOwner; /** * @var string */ private $repositoryName; - public function __construct(CachedLabelsApi $labelsApi, $repositoryUsername, $repositoryName) + public function __construct(CachedLabelsApi $labelsApi, $repositoryOwner, $repositoryName) { $this->labelsApi = $labelsApi; - $this->repositoryUsername = $repositoryUsername; + $this->repositoryOwner = $repositoryOwner; $this->repositoryName = $repositoryName; } @@ -62,7 +62,7 @@ public function getNeedsReviewUrl() { return sprintf( 'https://github.com/%s/%s/labels/%s', - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, rawurlencode(Labels::WAITING_FOR_CODE_REVIEW) ); @@ -75,7 +75,7 @@ public function getWaitingForQAUrl() { return sprintf( 'https://github.com/%s/%s/labels/%s', - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, rawurlencode(Labels::WAITING_FOR_QA_FEEDBACK) ); @@ -88,7 +88,7 @@ public function getWaitingForPMUrl() { return sprintf( 'https://github.com/%s/%s/labels/%s', - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, rawurlencode(Labels::WAITING_FOR_PM_FEEDBACK) ); diff --git a/src/AppBundle/Services/Mailer.php b/src/AppBundle/Mailer/Mailer.php similarity index 84% rename from src/AppBundle/Services/Mailer.php rename to src/AppBundle/Mailer/Mailer.php index 0cd4766..4a92f35 100644 --- a/src/AppBundle/Services/Mailer.php +++ b/src/AppBundle/Mailer/Mailer.php @@ -1,6 +1,6 @@ setSubject($subject) + $message = (new \Swift_Message($subject)) ->setFrom($sender) ->setTo($recipient) ->setContentType('text/html') diff --git a/src/AppBundle/PullRequests/Repository.php b/src/AppBundle/PullRequests/Repository.php index d196edb..d30710a 100644 --- a/src/AppBundle/PullRequests/Repository.php +++ b/src/AppBundle/PullRequests/Repository.php @@ -27,7 +27,7 @@ class Repository implements RepositoryInterface /** * @var */ - private $repositoryUsername; + private $repositoryOwner; /** * @var */ @@ -36,12 +36,12 @@ class Repository implements RepositoryInterface public function __construct( SearchRepository $searchRepository, KnpCommentsApi $knpCommentsApi, - $repositoryUsername, + $repositoryOwner, $repositoryName ) { $this->searchRepository = $searchRepository; $this->knpCommentsApi = $knpCommentsApi; - $this->repositoryUsername = $repositoryUsername; + $this->repositoryOwner = $repositoryOwner; $this->repositoryName = $repositoryName; } @@ -88,7 +88,7 @@ public function getComments(PullRequest $pullRequest) try { $commentsApi = $this->knpCommentsApi ->all( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $pullRequest->getNumber() ) @@ -157,7 +157,7 @@ public function removeCommentsIfExists(PullRequest $pullRequest, $pattern, $user if (count($comments) > 0) { foreach ($comments as $comment) { $this->knpCommentsApi->remove( - $this->repositoryUsername, + $this->repositoryOwner, $this->repositoryName, $comment->getId() ); diff --git a/src/AppBundle/Repositories/Repository.php b/src/AppBundle/Repositories/Repository.php index f461db5..d70d794 100644 --- a/src/AppBundle/Repositories/Repository.php +++ b/src/AppBundle/Repositories/Repository.php @@ -14,17 +14,17 @@ class Repository /** * @var string */ - private $repositoryUsername; + private $repositoryOwner; /** * @var string */ private $repositoryName; - public function __construct(Repo $repositoryApi, string $repositoryUsername, string $repositoryName) + public function __construct(Repo $repositoryApi, string $repositoryOwner, string $repositoryName) { $this->repositoryApi = $repositoryApi; - $this->repositoryUsername = $repositoryUsername; + $this->repositoryOwner = $repositoryOwner; $this->repositoryName = $repositoryName; } @@ -42,7 +42,7 @@ public function getName() public function getActivity() { return $this->repositoryApi - ->activity($this->repositoryUsername, $this->repositoryName) + ->activity($this->repositoryOwner, $this->repositoryName) ; } @@ -52,7 +52,7 @@ public function getActivity() public function getStatistics() { return $this->repositoryApi - ->statistics($this->repositoryUsername, $this->repositoryName) + ->statistics($this->repositoryOwner, $this->repositoryName) ; } @@ -62,7 +62,7 @@ public function getStatistics() public function getTopContributors() { return $this->repositoryApi - ->contributors($this->repositoryUsername, $this->repositoryName, true) + ->contributors($this->repositoryOwner, $this->repositoryName, true) ; } @@ -72,7 +72,7 @@ public function getTopContributors() public function getStars() { return $this->repositoryApi - ->stargazers($this->repositoryUsername, $this->repositoryName) + ->stargazers($this->repositoryOwner, $this->repositoryName) ; } @@ -99,7 +99,7 @@ public function getMembers() { return $this->repositoryApi ->collaborators() - ->all($this->repositoryUsername, $this->repositoryName) + ->all($this->repositoryOwner, $this->repositoryName) ; } } diff --git a/src/AppBundle/Search/Repository.php b/src/AppBundle/Search/Repository.php index 9189c3e..6532c94 100644 --- a/src/AppBundle/Search/Repository.php +++ b/src/AppBundle/Search/Repository.php @@ -18,16 +18,16 @@ class Repository /** * @var string */ - private $repositoryUsername; + private $repositoryOwner; /** * @var string */ private $repositoryName; - public function __construct(Search $searchApi, string $repositoryUsername, string $repositoryName) + public function __construct(Search $searchApi, string $repositoryOwner, string $repositoryName) { $this->searchApi = $searchApi; - $this->repositoryUsername = $repositoryUsername; + $this->repositoryOwner = $repositoryOwner; $this->repositoryName = $repositoryName; } @@ -36,12 +36,12 @@ public function __construct(Search $searchApi, string $repositoryUsername, strin * * @return array */ - public function getPullRequests($filters = []) + public function getPullRequests($filters = []): array { $basicFilters = [ 'type' => 'pr', 'state' => 'open', - 'repo' => $this->repositoryUsername.'/'.$this->repositoryName, + 'repo' => $this->repositoryOwner.'/'.$this->repositoryName, ]; $allFilters = array_merge($basicFilters, $filters); diff --git a/tests/AppBundle/Command/SendPullRequestReportCommandTest.php b/tests/AppBundle/Command/SendPullRequestReportCommandTest.php index d4b2b11..3d796e7 100644 --- a/tests/AppBundle/Command/SendPullRequestReportCommandTest.php +++ b/tests/AppBundle/Command/SendPullRequestReportCommandTest.php @@ -2,32 +2,29 @@ namespace tests\AppBundle\Command; -use AppBundle\Command\SendPullRequestReportCommand; use Symfony\Bundle\FrameworkBundle\Console\Application; -use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; +use Symfony\Bundle\FrameworkBundle\Test\KernelTestCase; use Symfony\Component\Console\Tester\CommandTester; -class SendPullRequestReportCommandTest extends WebTestCase +class SendPullRequestReportCommandTest extends KernelTestCase { - protected function setUp() - { - static::$kernel = static::createKernel(); - static::$kernel->boot(); - } - public function testExecute() { - $application = new Application(static::$kernel); - $application->add(new SendPullRequestReportCommand()); + $kernel = static::createKernel(); + $kernel->boot(); + + $application = new Application($kernel); $command = $application->find('pull_request:report:send_mail'); $commandTester = new CommandTester($command); $commandTester->execute(['command' => $command->getName()]); - $this->assertRegExp('/Pull requests Reporter/', $commandTester->getDisplay()); - $this->assertRegExp('/\/\/ List of recipients/', $commandTester->getDisplay()); - $this->assertRegExp('/waiting for code review/', $commandTester->getDisplay()); - $this->assertRegExp('/waiting for QA feedback/', $commandTester->getDisplay()); - $this->assertRegExp('/waiting for PM feedback/', $commandTester->getDisplay()); + $output = $commandTester->getDisplay(); + + static::assertRegExp('/Pull requests Reporter/', $output); + static::assertRegExp('/\/\/ List of recipients/', $output); + static::assertRegExp('/waiting for code review/', $output); + static::assertRegExp('/waiting for QA feedback/', $output); + static::assertRegExp('/waiting for PM feedback/', $output); } } diff --git a/tests/AppBundle/Controller/MinimalControllerTest.php b/tests/AppBundle/Controller/MinimalControllerTest.php index a5493c0..846299f 100644 --- a/tests/AppBundle/Controller/MinimalControllerTest.php +++ b/tests/AppBundle/Controller/MinimalControllerTest.php @@ -5,15 +5,18 @@ use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; /** - * @tdodo: use data provider + * Functional tests for pages of PrestonBot website. */ class MinimalControllerTest extends WebTestCase { + /** + * @var Symfony\Bundle\FrameworkBundle\Client + */ private $client; protected function setUp() { - $this->client = $this->createClient(); + $this->client = static::createClient(); } public function testHomepageOk() @@ -21,6 +24,6 @@ public function testHomepageOk() $this->client->request('HEAD', '/'); $response = $this->client->getResponse(); - $this->assertSame(200, $response->getStatusCode()); + static::assertSame(200, $response->getStatusCode()); } } diff --git a/tests/AppBundle/Controller/WebhookControllerTest.php b/tests/AppBundle/Controller/WebhookControllerTest.php index b8baef5..33cd065 100644 --- a/tests/AppBundle/Controller/WebhookControllerTest.php +++ b/tests/AppBundle/Controller/WebhookControllerTest.php @@ -50,16 +50,6 @@ public function testActions($eventHeader, $payloadFilename, $expectedResponse, $ public function getTests() { $tests = []; - $tests['Issue comments'] = [ - 'issue_comment', - 'issue_comment.created.json', - [ - [ - 'event' => 'issue_comment_created', - 'action' => 'add labels if required', - ], - ], - ]; $tests['Pull request creation'] = [ 'pull_request', 'pull_request.opened.json', @@ -74,11 +64,11 @@ public function getTests() ], [ 'event' => 'pr_opened', - 'action' => 'labels initialized', + 'action' => 'branch label initialized', ], [ 'event' => 'pr_opened', - 'action' => 'branch label initialized', + 'action' => 'pr type label initialized', ], [ 'event' => 'pr_opened', @@ -106,11 +96,11 @@ public function getTests() ], [ 'event' => 'pr_opened', - 'action' => 'labels initialized', + 'action' => 'branch label initialized', ], [ 'event' => 'pr_opened', - 'action' => 'branch label initialized', + 'action' => 'pr type label initialized', ], [ 'event' => 'pr_opened', @@ -138,11 +128,11 @@ public function getTests() ], [ 'event' => 'pr_opened', - 'action' => 'labels initialized', + 'action' => 'branch label initialized', ], [ 'event' => 'pr_opened', - 'action' => 'branch label initialized', + 'action' => 'pr type label initialized', ], [ 'event' => 'pr_opened', diff --git a/tests/AppBundle/Issues/IssueListenerTest.php b/tests/AppBundle/Issues/IssueListenerTest.php index 0cccfe0..5106736 100644 --- a/tests/AppBundle/Issues/IssueListenerTest.php +++ b/tests/AppBundle/Issues/IssueListenerTest.php @@ -28,133 +28,14 @@ protected function setUp() $this->listener = new Listener($this->statusApi, new NullLogger()); } - /** - * @dataProvider getCommentsForStatusChange - * - * @param mixed $comment - * @param mixed $expectedStatus - */ - public function testHandleCommentAddedEvent($comment, $expectedStatus) - { - if (null !== $expectedStatus) { - $this->statusApi->expects($this->once()) - ->method('addIssueLabel') - ->with(1234, $expectedStatus); - } - - $newStatus = $this->listener->handleCommentAddedEvent(1234, $comment); - - $this->assertSame($expectedStatus, $newStatus); - } - - public function getCommentsForStatusChange() - { - $tests = []; - $tests[] = [ - 'Have a great day!', - null, - ]; - $tests[] = [ - "Status: 'PM approved'", - Status::PM_APPROVED, - ]; - $tests[] = [ - "Status: 'QA approved'", - Status::QA_APPROVED, - ]; - // basic tests for status change - $tests[] = [ - 'Status: needs review', - Status::NEEDS_REVIEW, - ]; - $tests[] = [ - 'Status: Code reviewed', - Status::CODE_REVIEWED, - ]; - - // accept quotes - $tests[] = [ - 'Status: "Code reviewed"', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - "Status: 'Code reviewed'", - Status::CODE_REVIEWED, - ]; - // play with different formatting - $tests[] = [ - 'STATUS: CODE REVIEWED', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - '**Status**: code reviewed', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - '**Status:** code reviewed', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - '**Status: code reviewed**', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - '**Status: code reviewed!**', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - '**Status: code reviewed**.', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - 'Status:code reviewed', - Status::CODE_REVIEWED, - ]; - $tests[] = [ - 'Status: code reviewed', - Status::CODE_REVIEWED, - ]; - - // reject missing colon - $tests[] = [ - 'Status code reviewed', - null, - ]; - - // multiple matches - use the last one - $tests[] = [ - "Status: needs review \r\n that is what the issue *was* marked as.\r\n Status: Code reviewed", - Status::CODE_REVIEWED, - ]; - // "needs review" does not come directly after status: , so there is no status change - $tests[] = [ - 'Here is my status: I\'m really happy! I realize this needs review, but I\'m, having too much fun Googling cats!', - null, - ]; - - // reject if the status is not on a line of its own - // use case: someone posts instructions about how to change a status - // in a comment - $tests[] = [ - 'You should include e.g. the line `Status: needs review` in your comment', - null, - ]; - $tests[] = [ - 'Before the ticket was in state "Status: Code reviewed", but then the status was changed', - null, - ]; - - return $tests; - } - - public function testHandlePullRequestCreatedEvent() + public function testHandleWaitingForWordingEvent() { - $this->statusApi->expects($this->once()) + $this->statusApi->expects(static::once()) ->method('addIssueLabel') - ->with(1234, Status::NEEDS_REVIEW); + ->with(1234, Status::WAITING_FOR_WORDING); - $newStatus = $this->listener->handlePullRequestCreatedEvent(1234); + $newStatus = $this->listener->handleWaitingForWordingEvent(1234); - $this->assertSame(Status::NEEDS_REVIEW, $newStatus); + static::assertSame(Status::WAITING_FOR_WORDING, $newStatus); } } diff --git a/var/SymfonyRequirements.php b/var/SymfonyRequirements.php index 6e9f8c6..3b14a40 100644 --- a/var/SymfonyRequirements.php +++ b/var/SymfonyRequirements.php @@ -118,7 +118,7 @@ class PhpIniRequirement extends Requirement * Constructor that initializes the requirement. * * @param string $cfgName The configuration name used for ini_get() - * @param bool|callable $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, + * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. @@ -154,7 +154,7 @@ public function __construct($cfgName, $evaluation, $approveCfgAbsence = false, $ ); } - $fulfilled = $evaluation === $cfgValue; + $fulfilled = $evaluation == $cfgValue; } parent::__construct($fulfilled || ($approveCfgAbsence && false === $cfgValue), $testMessage, $helpHtml, $helpText, $optional); @@ -171,7 +171,7 @@ class RequirementCollection implements IteratorAggregate /** * @var Requirement[] */ - private $requirements = []; + private $requirements = array(); /** * Gets the current RequirementCollection as an Iterator. @@ -223,7 +223,7 @@ public function addRecommendation($fulfilled, $testMessage, $helpHtml, $helpText * Adds a mandatory requirement in form of a php.ini configuration. * * @param string $cfgName The configuration name used for ini_get() - * @param bool|callable $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, + * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. @@ -241,7 +241,7 @@ public function addPhpIniRequirement($cfgName, $evaluation, $approveCfgAbsence = * Adds an optional recommendation in form of a php.ini configuration. * * @param string $cfgName The configuration name used for ini_get() - * @param bool|callable $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, + * @param bool|callback $evaluation Either a boolean indicating whether the configuration should evaluate to true or false, * or a callback function receiving the configuration value as parameter to determine the fulfillment of the requirement * @param bool $approveCfgAbsence If true the Requirement will be fulfilled even if the configuration option does not exist, i.e. ini_get() returns false. * This is helpful for abandoned configs in later PHP versions or configs of an optional extension, like Suhosin. @@ -260,7 +260,7 @@ public function addPhpIniRecommendation($cfgName, $evaluation, $approveCfgAbsenc * * @param RequirementCollection $collection A RequirementCollection instance */ - public function addCollection(self $collection) + public function addCollection(RequirementCollection $collection) { $this->requirements = array_merge($this->requirements, $collection->all()); } @@ -282,7 +282,7 @@ public function all() */ public function getRequirements() { - $array = []; + $array = array(); foreach ($this->requirements as $req) { if (!$req->isOptional()) { $array[] = $req; @@ -299,7 +299,7 @@ public function getRequirements() */ public function getFailedRequirements() { - $array = []; + $array = array(); foreach ($this->requirements as $req) { if (!$req->isFulfilled() && !$req->isOptional()) { $array[] = $req; @@ -316,7 +316,7 @@ public function getFailedRequirements() */ public function getRecommendations() { - $array = []; + $array = array(); foreach ($this->requirements as $req) { if ($req->isOptional()) { $array[] = $req; @@ -333,7 +333,7 @@ public function getRecommendations() */ public function getFailedRecommendations() { - $array = []; + $array = array(); foreach ($this->requirements as $req) { if (!$req->isFulfilled() && $req->isOptional()) { $array[] = $req; @@ -389,7 +389,7 @@ public function __construct() { /* mandatory requirements follow */ - $installedPhpVersion = PHP_VERSION; + $installedPhpVersion = phpversion(); $requiredPhpVersion = $this->getPhpRequiredVersion(); $this->addRecommendation( @@ -448,7 +448,7 @@ public function __construct() } if (false !== $requiredPhpVersion && version_compare($installedPhpVersion, $requiredPhpVersion, '>=')) { - $timezones = []; + $timezones = array(); foreach (DateTimeZone::listAbbreviations() as $abbreviations) { foreach ($abbreviations as $abbreviation) { $timezones[$abbreviation['timezone_id']] = true; @@ -731,7 +731,7 @@ function_exists('posix_isatty'), 'Install and/or enable a PHP accelerator (highly recommended).' ); - if ('WIN' === strtoupper(substr(PHP_OS, 0, 3))) { + if (strtoupper(substr(PHP_OS, 0, 3)) === 'WIN') { $this->addRecommendation( $this->getRealpathCacheSize() >= 5 * 1024 * 1024, 'realpath_cache_size should be at least 5M in php.ini', diff --git a/web/app.php b/web/app.php deleted file mode 100644 index 2d8a7e2..0000000 --- a/web/app.php +++ /dev/null @@ -1,18 +0,0 @@ -loadClassCache(); -$kernel = new AppCache($kernel); - -$request = Request::createFromGlobals(); -$response = $kernel->handle($request); -$response->send(); -$kernel->terminate($request, $response); diff --git a/web/app_dev.php b/web/app_dev.php deleted file mode 100644 index f6cdfa3..0000000 --- a/web/app_dev.php +++ /dev/null @@ -1,32 +0,0 @@ -loadClassCache(); -$request = Request::createFromGlobals(); -$response = $kernel->handle($request); -$response->send(); -$kernel->terminate($request, $response); diff --git a/web/index.php b/web/index.php new file mode 100644 index 0000000..b3dcaaf --- /dev/null +++ b/web/index.php @@ -0,0 +1,28 @@ +load(__DIR__.'/../.env'); +} + +if (getenv('APP_DEBUG')) { + // WARNING: You should setup permissions the proper way! + // REMOVE the following PHP line and read + // https://symfony.com/doc/current/book/installation.html#checking-symfony-application-configuration-and-setup + umask(0000); + Debug::enable(); +} + +Request::setTrustedProxies(['0.0.0.0/0'], Request::HEADER_FORWARDED); +$kernel = new AppKernel(getenv('APP_ENV'), getenv('APP_DEBUG')); + +$request = Request::createFromGlobals(); +$response = $kernel->handle($request); +$response->send(); +$kernel->terminate($request, $response);