From 038e2c565374dcac9373400949f5bd1e2096a622 Mon Sep 17 00:00:00 2001 From: Kai Date: Thu, 30 Jan 2020 17:01:03 +0100 Subject: [PATCH 01/11] Symfony 5 support With BC compatibility I hope --- .travis.yml | 6 +++ EventListener/RateLimitAnnotationListener.php | 25 ++++++++--- Events/AbstractEvent.php | 22 ++++++++++ Events/CheckedRateLimitEvent.php | 3 +- Events/GenerateKeyEvent.php | 3 +- .../RateLimitAnnotationListenerTest.php | 43 +++++++++++++------ composer.json | 2 +- 7 files changed, 81 insertions(+), 23 deletions(-) create mode 100644 Events/AbstractEvent.php diff --git a/.travis.yml b/.travis.yml index 8790591..1549261 100644 --- a/.travis.yml +++ b/.travis.yml @@ -80,6 +80,12 @@ matrix: env: SYMFONY_VERSION=4.1.* - php: 7.1 env: SYMFONY_VERSION=4.2.* + - php: 7.1 + env: SYMFONY_VERSION=4.3.* + - php: 7.1 + env: SYMFONY_VERSION=4.4.* + - php: 7.1 + env: SYMFONY_VERSION=5.0.* allow_failures: - php: 5.6 diff --git a/EventListener/RateLimitAnnotationListener.php b/EventListener/RateLimitAnnotationListener.php index 00fc499..5c670db 100644 --- a/EventListener/RateLimitAnnotationListener.php +++ b/EventListener/RateLimitAnnotationListener.php @@ -9,18 +9,19 @@ use Noxlogic\RateLimitBundle\Exception\RateLimitExceptionInterface; use Noxlogic\RateLimitBundle\Service\RateLimitService; use Noxlogic\RateLimitBundle\Util\PathLimitProcessor; -use Symfony\Component\EventDispatcher\EventDispatcherInterface; +use Symfony\Component\EventDispatcher\EventDispatcherInterface as LegacyEventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; use Symfony\Component\Routing\Route; +use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class RateLimitAnnotationListener extends BaseListener { /** - * @var eventDispatcherInterface + * @var EventDispatcherInterface | LegacyEventDispatcherInterface */ protected $eventDispatcher; @@ -38,7 +39,7 @@ class RateLimitAnnotationListener extends BaseListener * @param RateLimitService $rateLimitService */ public function __construct( - EventDispatcherInterface $eventDispatcher, + $eventDispatcher, RateLimitService $rateLimitService, PathLimitProcessor $pathLimitProcessor ) { @@ -68,7 +69,7 @@ public function onKernelController(FilterControllerEvent $event) // Another treatment before applying RateLimit ? $checkedRateLimitEvent = new CheckedRateLimitEvent($event->getRequest(), $rateLimit); - $this->eventDispatcher->dispatch(RateLimitEvents::CHECKED_RATE_LIMIT, $checkedRateLimitEvent); + $this->dispatch(RateLimitEvents::CHECKED_RATE_LIMIT, $checkedRateLimitEvent); $rateLimit = $checkedRateLimitEvent->getRateLimit(); // No matching annotation found @@ -168,7 +169,7 @@ private function getKey(FilterControllerEvent $event, RateLimit $rateLimit, arra // Let listeners manipulate the key $keyEvent = new GenerateKeyEvent($event->getRequest(), '', $rateLimit->getPayload()); - $rateLimitMethods = join('.', $rateLimit->getMethods()); + $rateLimitMethods = implode('.', $rateLimit->getMethods()); $keyEvent->addToKey($rateLimitMethods); $rateLimitAlias = count($annotations) === 0 @@ -176,7 +177,7 @@ private function getKey(FilterControllerEvent $event, RateLimit $rateLimit, arra : $this->getAliasForRequest($event); $keyEvent->addToKey($rateLimitAlias); - $this->eventDispatcher->dispatch(RateLimitEvents::GENERATE_KEY, $keyEvent); + $this->dispatch(RateLimitEvents::GENERATE_KEY, $keyEvent); return $keyEvent->getKey(); } @@ -207,4 +208,16 @@ private function getAliasForRequest(FilterControllerEvent $event) return 'other'; } + + private function dispatch($eventName, $event) + { + if (get_class($this->eventDispatcher) === 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface') { + // Symfony >= 4.3 + $this->eventDispatcher->dispatch($event, $eventName); + } else { + // Symfony 3.4 + $this->eventDispatcher->dispatch($eventName, $event); + } + } + } diff --git a/Events/AbstractEvent.php b/Events/AbstractEvent.php new file mode 100644 index 0000000..b6c2d1b --- /dev/null +++ b/Events/AbstractEvent.php @@ -0,0 +1,22 @@ += 4.3 + */ + abstract class AbstractEvent extends Event + { + } +} diff --git a/Events/CheckedRateLimitEvent.php b/Events/CheckedRateLimitEvent.php index adde3c7..0d12acb 100644 --- a/Events/CheckedRateLimitEvent.php +++ b/Events/CheckedRateLimitEvent.php @@ -3,10 +3,9 @@ namespace Noxlogic\RateLimitBundle\Events; use Noxlogic\RateLimitBundle\Annotation\RateLimit; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\HttpFoundation\Request; -class CheckedRateLimitEvent extends Event +class CheckedRateLimitEvent extends AbstractEvent { /** diff --git a/Events/GenerateKeyEvent.php b/Events/GenerateKeyEvent.php index 0030d12..6b65370 100644 --- a/Events/GenerateKeyEvent.php +++ b/Events/GenerateKeyEvent.php @@ -2,10 +2,9 @@ namespace Noxlogic\RateLimitBundle\Events; -use Symfony\Component\EventDispatcher\Event; use Symfony\Component\HttpFoundation\Request; -class GenerateKeyEvent extends Event +class GenerateKeyEvent extends AbstractEvent { /** @var Request */ diff --git a/Tests/EventListener/RateLimitAnnotationListenerTest.php b/Tests/EventListener/RateLimitAnnotationListenerTest.php index ffadf97..fe5efe2 100644 --- a/Tests/EventListener/RateLimitAnnotationListenerTest.php +++ b/Tests/EventListener/RateLimitAnnotationListenerTest.php @@ -4,7 +4,7 @@ use Noxlogic\RateLimitBundle\Annotation\RateLimit; use Noxlogic\RateLimitBundle\EventListener\RateLimitAnnotationListener; -use Noxlogic\RateLimitBundle\Events\GenerateKeyEvent; +use Noxlogic\RateLimitBundle\Events\AbstractEvent; use Noxlogic\RateLimitBundle\Events\RateLimitEvents; use Noxlogic\RateLimitBundle\Service\RateLimitService; use Noxlogic\RateLimitBundle\Tests\EventListener\MockStorage; @@ -23,6 +23,18 @@ function mockAction() { } class RateLimitAnnotationListenerTest extends TestCase { + static $usedDispatcher; + + public static function setUpBeforeClass() + { + parent::setUpBeforeClass(); + if (!class_exists('Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface')) { + self::$usedDispatcher = 'Symfony\\Component\\EventDispatcher\\EventDispatcherInterface'; + } else { + self::$usedDispatcher = 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface'; + } + } + /** * @var MockStorage */ @@ -31,7 +43,7 @@ class RateLimitAnnotationListenerTest extends TestCase /** @var \PHPUnit_Framework_MockObject_MockObject */ protected $mockPathLimitProcessor; - protected function setUp() + protected function setUp(): void { $this->mockStorage = new MockStorage(); $this->mockPathLimitProcessor = $this->getMockBuilder('Noxlogic\RateLimitBundle\Util\PathLimitProcessor') @@ -325,7 +337,7 @@ protected function createEvent($type = HttpKernelInterface::MASTER_REQUEST, Requ protected function createListener($expects) { - $mockDispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface')->getMock(); + $mockDispatcher = $this->getMockBuilder(self::$usedDispatcher)->getMock(); $mockDispatcher ->expects($expects) ->method('dispatch'); @@ -349,19 +361,26 @@ public function testRateLimitKeyGenerationEventHasPayload() )); $generated = false; - $mockDispatcher = $this->getMockBuilder('Symfony\\Component\\EventDispatcher\\EventDispatcherInterface')->getMock(); + $mockDispatcher = $this->getMockBuilder(self::$usedDispatcher)->getMock(); + $generatedCallback = function ($name, $event) use ($request, &$generated) { + if ($name !== RateLimitEvents::GENERATE_KEY) { + return; + } + $generated = true; + $this->assertSame(RateLimitEvents::GENERATE_KEY, $name); + $this->assertSame($request, $event->getRequest()); + $this->assertSame(['foo'], $event->getPayload()); + $this->assertSame('Noxlogic.RateLimitBundle.EventListener.Tests.MockController.mockAction', $event->getKey()); + }; $mockDispatcher ->expects($this->any()) ->method('dispatch') - ->willReturnCallback(function ($name, $event) use ($request, &$generated) { - if ($name !== RateLimitEvents::GENERATE_KEY) { - return; + ->willReturnCallback(function ($arg1, $arg2) use ($generatedCallback) { + if ($arg1 instanceof AbstractEvent) { + $generatedCallback($arg2,$arg1); + } else { + $generatedCallback($arg1,$arg2); } - $generated = true; - $this->assertSame(RateLimitEvents::GENERATE_KEY, $name); - $this->assertSame($request, $event->getRequest()); - $this->assertSame(['foo'], $event->getPayload()); - $this->assertSame('Noxlogic.RateLimitBundle.EventListener.Tests.MockController.mockAction', $event->getKey()); }); $storage = $this->getMockStorage(); diff --git a/composer.json b/composer.json index ab40ee7..a709c7f 100644 --- a/composer.json +++ b/composer.json @@ -11,7 +11,7 @@ } ], "require": { - "symfony/framework-bundle": "^2.3|^3.0|^4.0", + "symfony/framework-bundle": "^2.3|^3.0|^4.0|^5.0", "sensio/framework-extra-bundle": "^2.3|^3.0|^4.0|^5.0" }, "require-dev": { From b02e850426721c503a6eb8ca77d54c9d59cec307 Mon Sep 17 00:00:00 2001 From: Kai Date: Thu, 30 Jan 2020 17:11:06 +0100 Subject: [PATCH 02/11] Missed a void return --- Tests/EventListener/RateLimitAnnotationListenerTest.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tests/EventListener/RateLimitAnnotationListenerTest.php b/Tests/EventListener/RateLimitAnnotationListenerTest.php index fe5efe2..4b4faa8 100644 --- a/Tests/EventListener/RateLimitAnnotationListenerTest.php +++ b/Tests/EventListener/RateLimitAnnotationListenerTest.php @@ -43,7 +43,7 @@ public static function setUpBeforeClass() /** @var \PHPUnit_Framework_MockObject_MockObject */ protected $mockPathLimitProcessor; - protected function setUp(): void + protected function setUp() { $this->mockStorage = new MockStorage(); $this->mockPathLimitProcessor = $this->getMockBuilder('Noxlogic\RateLimitBundle\Util\PathLimitProcessor') From be5e9a900f30b752b73b095fdaa15ae61d7f95eb Mon Sep 17 00:00:00 2001 From: Kai Date: Thu, 30 Jan 2020 17:26:21 +0100 Subject: [PATCH 03/11] Conditionally load test classes since those also change --- .travis.yml | 1 + .../DependencyInjection/ConfigurationTest.php | 2 +- .../NoxlogicRateLimitExtensionTest.php | 2 +- Tests/TestCase.php | 16 ++++++++++++-- Tests/WebTestCase.php | 22 +++++++++++++++++++ 5 files changed, 39 insertions(+), 4 deletions(-) create mode 100644 Tests/WebTestCase.php diff --git a/.travis.yml b/.travis.yml index 1549261..c5d8686 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,3 +1,4 @@ +dist: trusty language: php php: diff --git a/Tests/DependencyInjection/ConfigurationTest.php b/Tests/DependencyInjection/ConfigurationTest.php index cceea5f..c1dc52a 100644 --- a/Tests/DependencyInjection/ConfigurationTest.php +++ b/Tests/DependencyInjection/ConfigurationTest.php @@ -3,7 +3,7 @@ namespace Noxlogic\RateLimitBundle\Tests\DependencyInjection; use Noxlogic\RateLimitBundle\DependencyInjection\Configuration; -use Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase; +use Noxlogic\RateLimitBundle\Tests\WebTestCase; use Symfony\Component\Config\Definition\Processor; /** diff --git a/Tests/DependencyInjection/NoxlogicRateLimitExtensionTest.php b/Tests/DependencyInjection/NoxlogicRateLimitExtensionTest.php index d0b1c60..7a59b97 100644 --- a/Tests/DependencyInjection/NoxlogicRateLimitExtensionTest.php +++ b/Tests/DependencyInjection/NoxlogicRateLimitExtensionTest.php @@ -5,7 +5,7 @@ use Noxlogic\RateLimitBundle\DependencyInjection\Configuration; use Noxlogic\RateLimitBundle\DependencyInjection\NoxlogicRateLimitExtension; use Noxlogic\RateLimitBundle\Service\Storage\DoctrineCache; -use Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase; +use Noxlogic\RateLimitBundle\Tests\WebTestCase; use Symfony\Component\Config\Definition\Processor; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\ParameterBag\ParameterBag; diff --git a/Tests/TestCase.php b/Tests/TestCase.php index 7893fa6..8599a1b 100644 --- a/Tests/TestCase.php +++ b/Tests/TestCase.php @@ -2,6 +2,18 @@ namespace Noxlogic\RateLimitBundle\Tests; -class TestCase extends \PHPUnit_Framework_TestCase -{ +if (!class_exists('\\PHPUnit\\Framework\\TestCase')) { + /** + * Old PHPUnit + */ + abstract class TestCase extends \PHPUnit_Framework_TestCase + { + } +} else { + /** + * New PHPUnit + */ + abstract class TestCase extends \PHPUnit\Framework\TestCase + { + } } diff --git a/Tests/WebTestCase.php b/Tests/WebTestCase.php new file mode 100644 index 0000000..66ac23f --- /dev/null +++ b/Tests/WebTestCase.php @@ -0,0 +1,22 @@ + Date: Thu, 30 Jan 2020 17:36:57 +0100 Subject: [PATCH 04/11] test SF5 on 7.2 only --- .travis.yml | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c5d8686..961f578 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,7 @@ php: - 5.6 - 7.0 - 7.1 + - 7.2 sudo: false @@ -85,7 +86,37 @@ matrix: env: SYMFONY_VERSION=4.3.* - php: 7.1 env: SYMFONY_VERSION=4.4.* - - php: 7.1 + - php: 7.2 + env: COMPOSER_FLAGS="--prefer-lowest" + - php: 7.2 + env: SYMFONY_VERSION=2.3.* + - php: 7.2 + env: SYMFONY_VERSION=2.6.* + - php: 7.2 + env: SYMFONY_VERSION=2.7.* + - php: 7.2 + env: SYMFONY_VERSION=2.8.* + - php: 7.2 + env: SYMFONY_VERSION=3.0.* + - php: 7.2 + env: SYMFONY_VERSION=3.1.* + - php: 7.2 + env: SYMFONY_VERSION=3.2.* + - php: 7.2 + env: SYMFONY_VERSION=3.3.* + - php: 7.2 + env: SYMFONY_VERSION=3.4.* + - php: 7.2 + env: SYMFONY_VERSION=4.0.* + - php: 7.2 + env: SYMFONY_VERSION=4.1.* + - php: 7.2 + env: SYMFONY_VERSION=4.2.* + - php: 7.2 + env: SYMFONY_VERSION=4.3.* + - php: 7.2 + env: SYMFONY_VERSION=4.4.* + - php: 7.2 env: SYMFONY_VERSION=5.0.* allow_failures: - php: 5.6 From a0cc1b5ecad7e5fac62ed48e8dba20827f3500cc Mon Sep 17 00:00:00 2001 From: Kai Date: Fri, 31 Jan 2020 11:18:04 +0100 Subject: [PATCH 05/11] Also abstract FilterControllerEvent --- EventListener/RateLimitAnnotationListener.php | 11 +++++----- Events/AbstractFilterControllerEvent.php | 22 +++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) create mode 100644 Events/AbstractFilterControllerEvent.php diff --git a/EventListener/RateLimitAnnotationListener.php b/EventListener/RateLimitAnnotationListener.php index 5c670db..7088a13 100644 --- a/EventListener/RateLimitAnnotationListener.php +++ b/EventListener/RateLimitAnnotationListener.php @@ -3,6 +3,7 @@ namespace Noxlogic\RateLimitBundle\EventListener; use Noxlogic\RateLimitBundle\Annotation\RateLimit; +use Noxlogic\RateLimitBundle\Events\AbstractFilterControllerEvent; use Noxlogic\RateLimitBundle\Events\CheckedRateLimitEvent; use Noxlogic\RateLimitBundle\Events\GenerateKeyEvent; use Noxlogic\RateLimitBundle\Events\RateLimitEvents; @@ -12,9 +13,7 @@ use Symfony\Component\EventDispatcher\EventDispatcherInterface as LegacyEventDispatcherInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; -use Symfony\Component\Routing\Route; use Symfony\Contracts\EventDispatcher\EventDispatcherInterface; class RateLimitAnnotationListener extends BaseListener @@ -49,9 +48,9 @@ public function __construct( } /** - * @param FilterControllerEvent $event + * @param AbstractFilterControllerEvent $event */ - public function onKernelController(FilterControllerEvent $event) + public function onKernelController(AbstractFilterControllerEvent $event) { // Skip if the bundle isn't enabled (for instance in test environment) if( ! $this->getParameter('enabled', true)) { @@ -164,7 +163,7 @@ protected function findBestMethodMatch(Request $request, array $annotations) return $best_match; } - private function getKey(FilterControllerEvent $event, RateLimit $rateLimit, array $annotations) + private function getKey(AbstractFilterControllerEvent $event, RateLimit $rateLimit, array $annotations) { // Let listeners manipulate the key $keyEvent = new GenerateKeyEvent($event->getRequest(), '', $rateLimit->getPayload()); @@ -182,7 +181,7 @@ private function getKey(FilterControllerEvent $event, RateLimit $rateLimit, arra return $keyEvent->getKey(); } - private function getAliasForRequest(FilterControllerEvent $event) + private function getAliasForRequest(AbstractFilterControllerEvent $event) { if (($route = $event->getRequest()->attributes->get('_route'))) { return $route; diff --git a/Events/AbstractFilterControllerEvent.php b/Events/AbstractFilterControllerEvent.php new file mode 100644 index 0000000..79d41a6 --- /dev/null +++ b/Events/AbstractFilterControllerEvent.php @@ -0,0 +1,22 @@ += 4.3 + */ + abstract class AbstractFilterControllerEvent extends ControllerEvent + { + } +} From 6eba99862cef00d7f0e64d114942041ce7b12416 Mon Sep 17 00:00:00 2001 From: Kai Date: Fri, 31 Jan 2020 11:18:40 +0100 Subject: [PATCH 06/11] Use instance off here --- EventListener/RateLimitAnnotationListener.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/EventListener/RateLimitAnnotationListener.php b/EventListener/RateLimitAnnotationListener.php index 7088a13..8656b29 100644 --- a/EventListener/RateLimitAnnotationListener.php +++ b/EventListener/RateLimitAnnotationListener.php @@ -210,7 +210,7 @@ private function getAliasForRequest(AbstractFilterControllerEvent $event) private function dispatch($eventName, $event) { - if (get_class($this->eventDispatcher) === 'Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface') { + if ($this->eventDispatcher instanceof EventDispatcherInterface) { // Symfony >= 4.3 $this->eventDispatcher->dispatch($event, $eventName); } else { From f782c7186de148163d908126163a74189baab445 Mon Sep 17 00:00:00 2001 From: Kai Date: Fri, 31 Jan 2020 12:14:08 +0100 Subject: [PATCH 07/11] Drop support for PHP < 7.2 --- .travis.yml | 78 - EventListener/RateLimitAnnotationListener.php | 10 +- ...ent.php => ProxyFilterControllerEvent.php} | 4 +- .../DependencyInjection/ConfigurationTest.php | 2 +- .../OauthKeyGenerateListenerTest.php | 4 +- .../RateLimitAnnotationListenerTest.php | 13 +- Tests/Service/Storage/MemcacheTest.php | 2 +- Tests/Service/Storage/PhpRedisTest.php | 2 +- Tests/TestCase.php | 16 +- Tests/WebTestCase.php | 4 +- composer.json | 3 +- composer.lock | 2189 +++++++++++------ 12 files changed, 1433 insertions(+), 894 deletions(-) rename Events/{AbstractFilterControllerEvent.php => ProxyFilterControllerEvent.php} (72%) diff --git a/.travis.yml b/.travis.yml index 961f578..3e8332a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,6 @@ -dist: trusty language: php php: - - 5.4 - - 5.5 - - 5.6 - - 7.0 - - 7.1 - 7.2 sudo: false @@ -14,78 +8,6 @@ sudo: false matrix: fast_finish: true include: - - php: 5.4 - env: COMPOSER_FLAGS="--prefer-lowest" - - php: 5.5 - env: COMPOSER_FLAGS="--prefer-lowest" - - php: 5.6 - env: SYMFONY_VERSION=2.3.* - - php: 5.6 - env: SYMFONY_VERSION=2.6.* - - php: 5.6 - env: SYMFONY_VERSION=2.7.* - - php: 5.6 - env: SYMFONY_VERSION=2.8.* - - php: 5.6 - env: SYMFONY_VERSION=3.0.* - - php: 5.6 - env: SYMFONY_VERSION=3.1.* - - php: 5.6 - env: SYMFONY_VERSION=3.2.* - - php: 5.6 - env: SYMFONY_VERSION=3.3.* - - php: 5.6 - env: SYMFONY_VERSION=3.4.* - - php: 7.0 - env: COMPOSER_FLAGS="--prefer-lowest" - - php: 7.0 - env: SYMFONY_VERSION=2.3.* - - php: 7.0 - env: SYMFONY_VERSION=2.6.* - - php: 7.0 - env: SYMFONY_VERSION=2.7.* - - php: 7.0 - env: SYMFONY_VERSION=2.8.* - - php: 7.0 - env: SYMFONY_VERSION=3.0.* - - php: 7.0 - env: SYMFONY_VERSION=3.1.* - - php: 7.0 - env: SYMFONY_VERSION=3.2.* - - php: 7.0 - env: SYMFONY_VERSION=3.3.* - - php: 7.0 - env: SYMFONY_VERSION=3.4.* - - php: 7.1 - env: COMPOSER_FLAGS="--prefer-lowest" - - php: 7.1 - env: SYMFONY_VERSION=2.3.* - - php: 7.1 - env: SYMFONY_VERSION=2.6.* - - php: 7.1 - env: SYMFONY_VERSION=2.7.* - - php: 7.1 - env: SYMFONY_VERSION=2.8.* - - php: 7.1 - env: SYMFONY_VERSION=3.0.* - - php: 7.1 - env: SYMFONY_VERSION=3.1.* - - php: 7.1 - env: SYMFONY_VERSION=3.2.* - - php: 7.1 - env: SYMFONY_VERSION=3.3.* - - php: 7.1 - env: SYMFONY_VERSION=3.4.* - - php: 7.1 - env: SYMFONY_VERSION=4.0.* - - php: 7.1 - env: SYMFONY_VERSION=4.1.* - - php: 7.1 - env: SYMFONY_VERSION=4.2.* - - php: 7.1 - env: SYMFONY_VERSION=4.3.* - - php: 7.1 - env: SYMFONY_VERSION=4.4.* - php: 7.2 env: COMPOSER_FLAGS="--prefer-lowest" - php: 7.2 diff --git a/EventListener/RateLimitAnnotationListener.php b/EventListener/RateLimitAnnotationListener.php index 8656b29..ccc905a 100644 --- a/EventListener/RateLimitAnnotationListener.php +++ b/EventListener/RateLimitAnnotationListener.php @@ -3,7 +3,7 @@ namespace Noxlogic\RateLimitBundle\EventListener; use Noxlogic\RateLimitBundle\Annotation\RateLimit; -use Noxlogic\RateLimitBundle\Events\AbstractFilterControllerEvent; +use Noxlogic\RateLimitBundle\Events\ProxyFilterControllerEvent; use Noxlogic\RateLimitBundle\Events\CheckedRateLimitEvent; use Noxlogic\RateLimitBundle\Events\GenerateKeyEvent; use Noxlogic\RateLimitBundle\Events\RateLimitEvents; @@ -48,9 +48,9 @@ public function __construct( } /** - * @param AbstractFilterControllerEvent $event + * @param ProxyFilterControllerEvent $event */ - public function onKernelController(AbstractFilterControllerEvent $event) + public function onKernelController(ProxyFilterControllerEvent $event) { // Skip if the bundle isn't enabled (for instance in test environment) if( ! $this->getParameter('enabled', true)) { @@ -163,7 +163,7 @@ protected function findBestMethodMatch(Request $request, array $annotations) return $best_match; } - private function getKey(AbstractFilterControllerEvent $event, RateLimit $rateLimit, array $annotations) + private function getKey(ProxyFilterControllerEvent $event, RateLimit $rateLimit, array $annotations) { // Let listeners manipulate the key $keyEvent = new GenerateKeyEvent($event->getRequest(), '', $rateLimit->getPayload()); @@ -181,7 +181,7 @@ private function getKey(AbstractFilterControllerEvent $event, RateLimit $rateLim return $keyEvent->getKey(); } - private function getAliasForRequest(AbstractFilterControllerEvent $event) + private function getAliasForRequest(ProxyFilterControllerEvent $event) { if (($route = $event->getRequest()->attributes->get('_route'))) { return $route; diff --git a/Events/AbstractFilterControllerEvent.php b/Events/ProxyFilterControllerEvent.php similarity index 72% rename from Events/AbstractFilterControllerEvent.php rename to Events/ProxyFilterControllerEvent.php index 79d41a6..025399d 100644 --- a/Events/AbstractFilterControllerEvent.php +++ b/Events/ProxyFilterControllerEvent.php @@ -9,14 +9,14 @@ /** * Symfony 3.4 */ - abstract class AbstractFilterControllerEvent extends LegacyEvent + class ProxyFilterControllerEvent extends LegacyEvent { } } else { /** * Symfony >= 4.3 */ - abstract class AbstractFilterControllerEvent extends ControllerEvent + class ProxyFilterControllerEvent extends ControllerEvent { } } diff --git a/Tests/DependencyInjection/ConfigurationTest.php b/Tests/DependencyInjection/ConfigurationTest.php index c1dc52a..13a8d61 100644 --- a/Tests/DependencyInjection/ConfigurationTest.php +++ b/Tests/DependencyInjection/ConfigurationTest.php @@ -16,7 +16,7 @@ class ConfigurationTest extends WebTestCase */ private $processor; - public function setUp() + public function setUp():void { $this->processor = new Processor(); } diff --git a/Tests/EventListener/OauthKeyGenerateListenerTest.php b/Tests/EventListener/OauthKeyGenerateListenerTest.php index 5c04541..b91d003 100644 --- a/Tests/EventListener/OauthKeyGenerateListenerTest.php +++ b/Tests/EventListener/OauthKeyGenerateListenerTest.php @@ -11,7 +11,7 @@ class OauthKeyGenerateListenerTest extends TestCase { protected $mockContext; - public function setUp() { + public function setUp(): void { if (interface_exists('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')) { $this->mockContext = $this->getMockBuilder('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')->getMock(); } else { @@ -36,7 +36,7 @@ public function testListener() $this->assertEquals('foo.mocktoken', $event->getKey()); } - + public function testListenerWithoutOAuthToken() { $mockContext = $this->mockContext; diff --git a/Tests/EventListener/RateLimitAnnotationListenerTest.php b/Tests/EventListener/RateLimitAnnotationListenerTest.php index 4b4faa8..f2cefc9 100644 --- a/Tests/EventListener/RateLimitAnnotationListenerTest.php +++ b/Tests/EventListener/RateLimitAnnotationListenerTest.php @@ -5,6 +5,7 @@ use Noxlogic\RateLimitBundle\Annotation\RateLimit; use Noxlogic\RateLimitBundle\EventListener\RateLimitAnnotationListener; use Noxlogic\RateLimitBundle\Events\AbstractEvent; +use Noxlogic\RateLimitBundle\Events\ProxyFilterControllerEvent; use Noxlogic\RateLimitBundle\Events\RateLimitEvents; use Noxlogic\RateLimitBundle\Service\RateLimitService; use Noxlogic\RateLimitBundle\Tests\EventListener\MockStorage; @@ -25,7 +26,7 @@ class RateLimitAnnotationListenerTest extends TestCase static $usedDispatcher; - public static function setUpBeforeClass() + public static function setUpBeforeClass(): void { parent::setUpBeforeClass(); if (!class_exists('Symfony\\Contracts\\EventDispatcher\\EventDispatcherInterface')) { @@ -40,10 +41,10 @@ public static function setUpBeforeClass() */ protected $mockStorage; - /** @var \PHPUnit_Framework_MockObject_MockObject */ + /** @var \PHPUnit\Framework\MockObject\MockObject */ protected $mockPathLimitProcessor; - protected function setUp() + protected function setUp(): void { $this->mockStorage = new MockStorage(); $this->mockPathLimitProcessor = $this->getMockBuilder('Noxlogic\RateLimitBundle\Util\PathLimitProcessor') @@ -83,7 +84,7 @@ public function testReturnedWhenNoControllerFound() $kernel = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\HttpKernelInterface')->getMock(); $request = new Request(); - $event = new FilterControllerEvent($kernel, function() {}, $request, HttpKernelInterface::MASTER_REQUEST); + $event = new ProxyFilterControllerEvent($kernel, function() {}, $request, HttpKernelInterface::MASTER_REQUEST); $listener->onKernelController($event); } @@ -320,7 +321,7 @@ public function testFindBestMethodMatchMatchingMultipleAnnotations() } /** - * @return FilterControllerEvent + * @return ProxyFilterControllerEvent */ protected function createEvent($type = HttpKernelInterface::MASTER_REQUEST, Request $request = null) { @@ -330,7 +331,7 @@ protected function createEvent($type = HttpKernelInterface::MASTER_REQUEST, Requ $action = 'mockAction'; $request = $request === null ? new Request() : $request; - $event = new FilterControllerEvent($kernel, array($controller, $action), $request, $type); + $event = new ProxyFilterControllerEvent($kernel, array($controller, $action), $request, $type); return $event; } diff --git a/Tests/Service/Storage/MemcacheTest.php b/Tests/Service/Storage/MemcacheTest.php index 30c88c0..b3be682 100644 --- a/Tests/Service/Storage/MemcacheTest.php +++ b/Tests/Service/Storage/MemcacheTest.php @@ -7,7 +7,7 @@ class MemcacheTest extends TestCase { - public function setUp() + public function setUp(): void { if (!class_exists('\\MemCached')) { $this->markTestSkipped('MemCached extension not installed'); diff --git a/Tests/Service/Storage/PhpRedisTest.php b/Tests/Service/Storage/PhpRedisTest.php index c0f6b4d..f0c172e 100644 --- a/Tests/Service/Storage/PhpRedisTest.php +++ b/Tests/Service/Storage/PhpRedisTest.php @@ -8,7 +8,7 @@ class PhpRedisTest extends TestCase { - public function setUp() { + public function setUp(): void { if (! class_exists('\Redis')) { $this->markTestSkipped('Php Redis client not installed'); } diff --git a/Tests/TestCase.php b/Tests/TestCase.php index 8599a1b..fcac3a7 100644 --- a/Tests/TestCase.php +++ b/Tests/TestCase.php @@ -2,18 +2,6 @@ namespace Noxlogic\RateLimitBundle\Tests; -if (!class_exists('\\PHPUnit\\Framework\\TestCase')) { - /** - * Old PHPUnit - */ - abstract class TestCase extends \PHPUnit_Framework_TestCase - { - } -} else { - /** - * New PHPUnit - */ - abstract class TestCase extends \PHPUnit\Framework\TestCase - { - } +abstract class TestCase extends \PHPUnit\Framework\TestCase +{ } diff --git a/Tests/WebTestCase.php b/Tests/WebTestCase.php index 66ac23f..7209f36 100644 --- a/Tests/WebTestCase.php +++ b/Tests/WebTestCase.php @@ -7,14 +7,14 @@ if (!class_exists('Symfony\\Bundle\\FrameworkBundle\\Test\WebTestCase')) { /** - * Old PHPUnit + * Old Framework Bundle */ abstract class WebTestCase extends LegacyWebTestCase { } } else { /** - * New PHPUnit + * New Framework Bundle */ abstract class WebTestCase extends CurrentWebTestCase { diff --git a/composer.json b/composer.json index a709c7f..294917f 100644 --- a/composer.json +++ b/composer.json @@ -11,11 +11,12 @@ } ], "require": { + "php": "^7.2", "symfony/framework-bundle": "^2.3|^3.0|^4.0|^5.0", "sensio/framework-extra-bundle": "^2.3|^3.0|^4.0|^5.0" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.0", + "phpunit/phpunit": "^8.5", "psr/simple-cache": "^1.0", "doctrine/cache": "^1.5", "psr/cache": "^1.0", diff --git a/composer.lock b/composer.lock index ee51d87..e54d647 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "cd266b8d08e70ac6a28aa1a53365fc45", + "content-hash": "b2b050d15d574f252c58a0d11bd7f9ed", "packages": [ { "name": "doctrine/annotations", @@ -746,16 +746,16 @@ }, { "name": "psr/log", - "version": "1.1.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", - "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, "require": { @@ -764,7 +764,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -789,55 +789,7 @@ "psr", "psr-3" ], - "time": "2018-11-20T15:27:04+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" + "time": "2019-11-01T11:05:21+00:00" }, { "name": "sensio/framework-extra-bundle", @@ -912,49 +864,51 @@ }, { "name": "symfony/cache", - "version": "v4.2.1", + "version": "v5.0.3", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "5c4b50d6ba4f1c8955c3454444c1e3cfddaaad41" + "reference": "b503e72c8e2fa55eed9e2d3dd6a166f3eaaabb9a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/5c4b50d6ba4f1c8955c3454444c1e3cfddaaad41", - "reference": "5c4b50d6ba4f1c8955c3454444c1e3cfddaaad41", + "url": "https://api.github.com/repos/symfony/cache/zipball/b503e72c8e2fa55eed9e2d3dd6a166f3eaaabb9a", + "reference": "b503e72c8e2fa55eed9e2d3dd6a166f3eaaabb9a", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "psr/cache": "~1.0", "psr/log": "~1.0", - "psr/simple-cache": "^1.0", - "symfony/contracts": "^1.0", - "symfony/var-exporter": "^4.2" + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/service-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" }, "conflict": { "doctrine/dbal": "<2.5", - "symfony/dependency-injection": "<3.4", - "symfony/var-dumper": "<3.4" + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" }, "provide": { "psr/cache-implementation": "1.0", "psr/simple-cache-implementation": "1.0", - "symfony/cache-contracts-implementation": "1.0" + "symfony/cache-implementation": "1.0" }, "require-dev": { "cache/integration-tests": "dev-master", "doctrine/cache": "~1.6", "doctrine/dbal": "~2.5", "predis/predis": "~1.1", - "symfony/config": "~4.2", - "symfony/dependency-injection": "~3.4|~4.1", - "symfony/var-dumper": "^4.1.1" + "psr/simple-cache": "^1.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -985,52 +939,39 @@ "caching", "psr6" ], - "time": "2018-12-06T11:00:08+00:00" + "time": "2020-01-10T21:57:37+00:00" }, { - "name": "symfony/config", - "version": "v4.2.1", + "name": "symfony/cache-contracts", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/config.git", - "reference": "005d9a083d03f588677d15391a716b1ac9b887c0" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/005d9a083d03f588677d15391a716b1ac9b887c0", - "reference": "005d9a083d03f588677d15391a716b1ac9b887c0", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", + "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/filesystem": "~3.4|~4.0", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/finder": "<3.4" - }, - "require-dev": { - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "php": "^7.2.5", + "psr/cache": "^1.0" }, "suggest": { - "symfony/yaml": "To use the yaml reference dumper" + "symfony/cache-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "2.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Config\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1038,58 +979,70 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Config Component", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", - "time": "2018-11-30T22:21:14+00:00" + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" }, { - "name": "symfony/contracts", - "version": "v1.0.2", + "name": "symfony/config", + "version": "v4.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" + "url": "https://github.com/symfony/config.git", + "reference": "4d3979f54472637169080f802dc82197e21fdcce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", - "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "url": "https://api.github.com/repos/symfony/config/zipball/4d3979f54472637169080f802dc82197e21fdcce", + "reference": "4d3979f54472637169080f802dc82197e21fdcce", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.1.3", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/finder": "<3.4" }, "require-dev": { - "psr/cache": "^1.0", - "psr/container": "^1.0" + "symfony/event-dispatcher": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/messenger": "^4.1|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { - "psr/cache": "When using the Cache contracts", - "psr/container": "When using the Service contracts", - "symfony/cache-contracts-implementation": "", - "symfony/service-contracts-implementation": "", - "symfony/translation-contracts-implementation": "" + "symfony/yaml": "To use the yaml reference dumper" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" + "Symfony\\Component\\Config\\": "" }, "exclude-from-classmap": [ - "**/Tests/" + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1098,38 +1051,30 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Symfony Config Component", "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "time": "2018-12-05T08:06:11+00:00" + "time": "2020-01-04T13:00:46+00:00" }, { "name": "symfony/debug", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "e0a2b92ee0b5b934f973d90c2f58e18af109d276" + "reference": "89c3fd5c299b940333bc6fe9f1b8db1b0912c759" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/e0a2b92ee0b5b934f973d90c2f58e18af109d276", - "reference": "e0a2b92ee0b5b934f973d90c2f58e18af109d276", + "url": "https://api.github.com/repos/symfony/debug/zipball/89c3fd5c299b940333bc6fe9f1b8db1b0912c759", + "reference": "89c3fd5c299b940333bc6fe9f1b8db1b0912c759", "shasum": "" }, "require": { @@ -1140,12 +1085,12 @@ "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/http-kernel": "~3.4|~4.0" + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1172,41 +1117,41 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-11-28T18:24:18+00:00" + "time": "2020-01-08T17:29:02+00:00" }, { "name": "symfony/dependency-injection", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "e4adc57a48d3fa7f394edfffa9e954086d7740e5" + "reference": "6faf589e1f6af78692aed3ab6b3c336c58d5d83c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/e4adc57a48d3fa7f394edfffa9e954086d7740e5", - "reference": "e4adc57a48d3fa7f394edfffa9e954086d7740e5", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/6faf589e1f6af78692aed3ab6b3c336c58d5d83c", + "reference": "6faf589e1f6af78692aed3ab6b3c336c58d5d83c", "shasum": "" }, "require": { "php": "^7.1.3", "psr/container": "^1.0", - "symfony/contracts": "^1.0" + "symfony/service-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/config": "<4.2", + "symfony/config": "<4.3|>=5.0", "symfony/finder": "<3.4", "symfony/proxy-manager-bridge": "<3.4", "symfony/yaml": "<3.4" }, "provide": { "psr/container-implementation": "1.0", - "symfony/service-contracts-implementation": "1.0" + "symfony/service-implementation": "1.0" }, "require-dev": { - "symfony/config": "~4.2", - "symfony/expression-language": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "symfony/config": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/config": "", @@ -1218,7 +1163,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1245,35 +1190,97 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-12-02T15:59:36+00:00" + "time": "2020-01-21T07:39:36+00:00" + }, + { + "name": "symfony/error-handler", + "version": "v4.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/error-handler.git", + "reference": "a59789092e40ad08465dc2cdc55651be503d0d5a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/a59789092e40ad08465dc2cdc55651be503d0d5a", + "reference": "a59789092e40ad08465dc2cdc55651be503d0d5a", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/log": "~1.0", + "symfony/debug": "^4.4", + "symfony/var-dumper": "^4.4|^5.0" + }, + "require-dev": { + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\ErrorHandler\\": "" + }, + "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 ErrorHandler Component", + "homepage": "https://symfony.com", + "time": "2020-01-08T17:29:02+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "921f49c3158a276d27c0d770a5a347a3b718b328" + "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/921f49c3158a276d27c0d770a5a347a3b718b328", - "reference": "921f49c3158a276d27c0d770a5a347a3b718b328", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/9e3de195e5bc301704dd6915df55892f6dfc208b", + "reference": "9e3de195e5bc301704dd6915df55892f6dfc208b", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/contracts": "^1.0" + "symfony/event-dispatcher-contracts": "^1.1" }, "conflict": { "symfony/dependency-injection": "<3.4" }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" + }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~3.4|~4.0", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -1282,7 +1289,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1309,30 +1316,88 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-12-01T08:52:38+00:00" + "time": "2020-01-10T21:54:01+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-09-17T09:54:03+00:00" }, { "name": "symfony/filesystem", - "version": "v4.2.1", + "version": "v5.0.3", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "2f4c8b999b3b7cadb2a69390b01af70886753710" + "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/2f4c8b999b3b7cadb2a69390b01af70886753710", - "reference": "2f4c8b999b3b7cadb2a69390b01af70886753710", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/3afadc0f57cd74f86379d073e694b0f2cda2a88c", + "reference": "3afadc0f57cd74f86379d073e694b0f2cda2a88c", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1359,29 +1424,29 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:52:12+00:00" + "time": "2020-01-21T08:40:24+00:00" }, { "name": "symfony/finder", - "version": "v4.2.1", + "version": "v5.0.3", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d" + "reference": "4176e7cb846fe08f32518b7e0ed8462e2db8d9bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/e53d477d7b5c4982d0e1bfd2298dbee63d01441d", - "reference": "e53d477d7b5c4982d0e1bfd2298dbee63d01441d", + "url": "https://api.github.com/repos/symfony/finder/zipball/4176e7cb846fe08f32518b7e0ed8462e2db8d9bb", + "reference": "4176e7cb846fe08f32518b7e0ed8462e2db8d9bb", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1408,88 +1473,98 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-11-11T19:52:12+00:00" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/framework-bundle", - "version": "v4.2.1", + "version": "v4.4.1", "source": { "type": "git", "url": "https://github.com/symfony/framework-bundle.git", - "reference": "eb32d67140510f04fe9cc5fb9ad38fda09591db1" + "reference": "69ac426bfaca9270e549cea184eece00357f2675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/eb32d67140510f04fe9cc5fb9ad38fda09591db1", - "reference": "eb32d67140510f04fe9cc5fb9ad38fda09591db1", + "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/69ac426bfaca9270e549cea184eece00357f2675", + "reference": "69ac426bfaca9270e549cea184eece00357f2675", "shasum": "" }, "require": { "ext-xml": "*", "php": "^7.1.3", - "symfony/cache": "~4.2", - "symfony/config": "~4.2", - "symfony/contracts": "^1.0.2", - "symfony/dependency-injection": "^4.2", - "symfony/event-dispatcher": "^4.1", - "symfony/filesystem": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/http-foundation": "^4.1.2", - "symfony/http-kernel": "^4.2", + "symfony/cache": "^4.4|^5.0", + "symfony/config": "^4.3.4|^5.0", + "symfony/dependency-injection": "^4.4.1|^5.0.1", + "symfony/error-handler": "^4.4.1|^5.0.1", + "symfony/filesystem": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", "symfony/polyfill-mbstring": "~1.0", - "symfony/routing": "^4.1" + "symfony/routing": "^4.4|^5.0" }, "conflict": { "phpdocumentor/reflection-docblock": "<3.0", "phpdocumentor/type-resolver": "<0.2.1", "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", "symfony/asset": "<3.4", - "symfony/console": "<3.4", - "symfony/dotenv": "<4.2", - "symfony/form": "<4.2", - "symfony/messenger": "<4.2", + "symfony/browser-kit": "<4.3", + "symfony/console": "<4.3", + "symfony/dom-crawler": "<4.3", + "symfony/dotenv": "<4.3.6", + "symfony/form": "<4.3.5", + "symfony/http-client": "<4.4", + "symfony/lock": "<4.4", + "symfony/mailer": "<4.4", + "symfony/messenger": "<4.4", + "symfony/mime": "<4.4", "symfony/property-info": "<3.4", - "symfony/serializer": "<4.2", + "symfony/security-bundle": "<4.4", + "symfony/serializer": "<4.4", "symfony/stopwatch": "<3.4", - "symfony/translation": "<4.2", + "symfony/translation": "<4.4", "symfony/twig-bridge": "<4.1.1", - "symfony/validator": "<4.1", - "symfony/workflow": "<4.1" + "symfony/twig-bundle": "<4.4", + "symfony/validator": "<4.4", + "symfony/web-profiler-bundle": "<4.4", + "symfony/workflow": "<4.3.6" }, "require-dev": { - "doctrine/annotations": "~1.0", + "doctrine/annotations": "~1.7", "doctrine/cache": "~1.0", - "fig/link-util": "^1.0", + "paragonie/sodium_compat": "^1.8", "phpdocumentor/reflection-docblock": "^3.0|^4.0", - "symfony/asset": "~3.4|~4.0", - "symfony/browser-kit": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/form": "^4.2", - "symfony/lock": "~3.4|~4.0", - "symfony/messenger": "^4.2", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/console": "^4.3.4|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^4.3|^5.0", + "symfony/dotenv": "^4.3.6|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^4.3.5|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/lock": "^4.4|^5.0", + "symfony/mailer": "^4.4|^5.0", + "symfony/messenger": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0", "symfony/polyfill-intl-icu": "~1.0", - "symfony/process": "~3.4|~4.0", - "symfony/property-info": "~3.4|~4.0", - "symfony/security": "~3.4|~4.0", - "symfony/security-core": "~3.4|~4.0", - "symfony/security-csrf": "~3.4|~4.0", - "symfony/serializer": "^4.2", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/validator": "^4.1", - "symfony/var-dumper": "~3.4|~4.0", - "symfony/web-link": "~3.4|~4.0", - "symfony/workflow": "^4.1", - "symfony/yaml": "~3.4|~4.0", - "twig/twig": "~1.34|~2.4" + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/property-info": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4|^4.0|^5.0", + "symfony/security-http": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.4|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^4.4|^5.0", + "symfony/web-link": "^4.4|^5.0", + "symfony/workflow": "^4.3.6|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.41|^2.10|^3.0" }, "suggest": { "ext-apcu": "For best performance of the system caches", - "phpdocumentor/reflection-docblock": "For display additional information in debug:container", "symfony/console": "For using the console commands", "symfony/form": "For using forms", "symfony/property-info": "For using the property_info service", @@ -1501,7 +1576,7 @@ "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1528,42 +1603,423 @@ ], "description": "Symfony FrameworkBundle", "homepage": "https://symfony.com", - "time": "2018-12-05T08:06:11+00:00" + "time": "2019-11-28T14:12:27+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851" + "reference": "c33998709f3fe9b8e27e0277535b07fbf6fde37a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1b31f3017fadd8cb05cf2c8aebdbf3b12a943851", - "reference": "1b31f3017fadd8cb05cf2c8aebdbf3b12a943851", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/c33998709f3fe9b8e27e0277535b07fbf6fde37a", + "reference": "c33998709f3fe9b8e27e0277535b07fbf6fde37a", "shasum": "" }, "require": { "php": "^7.1.3", + "symfony/mime": "^4.3|^5.0", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "~3.4|~4.0" + "symfony/expression-language": "^3.4|^4.0|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpFoundation\\": "" + }, + "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 HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2020-01-04T13:00:46+00:00" + }, + { + "name": "symfony/http-kernel", + "version": "v4.4.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-kernel.git", + "reference": "16f2aa3c54b08483fba5375938f60b1ff83b6bd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/16f2aa3c54b08483fba5375938f60b1ff83b6bd2", + "reference": "16f2aa3c54b08483fba5375938f60b1ff83b6bd2", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "psr/log": "~1.0", + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9" + }, + "conflict": { + "symfony/browser-kit": "<4.3", + "symfony/config": "<3.4", + "symfony/console": ">=5", + "symfony/dependency-injection": "<4.3", + "symfony/translation": "<4.2", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" + }, + "require-dev": { + "psr/cache": "~1.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^4.3|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.2|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^1.34|^2.4|^3.0" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.4-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpKernel\\": "" + }, + "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 HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2020-01-21T13:23:17+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.0.3", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/2a3c7fee1f1a0961fa9cf360d5da553d05095e59", + "reference": "2a3c7fee1f1a0961fa9cf360d5da553d05095e59", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10", + "symfony/dependency-injection": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "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": "A library to manipulate MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "time": "2020-01-04T14:08:26+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2019-11-27T13:56:44+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.9" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T13:56:44+00:00" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", + "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.13-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T14:18:11+00:00" + }, + { + "name": "symfony/polyfill-php72", + "version": "v1.13.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", + "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "1.13-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" + "Symfony\\Polyfill\\Php72\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1572,87 +2028,56 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpFoundation Component", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", - "time": "2018-11-26T10:55:26+00:00" + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T13:56:44+00:00" }, { - "name": "symfony/http-kernel", - "version": "v4.2.1", + "name": "symfony/polyfill-php73", + "version": "v1.13.1", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "b39ceffc0388232c309cbde3a7c3685f2ec0a624" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/b39ceffc0388232c309cbde3a7c3685f2ec0a624", - "reference": "b39ceffc0388232c309cbde3a7c3685f2ec0a624", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", + "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/contracts": "^1.0.2", - "symfony/debug": "~3.4|~4.0", - "symfony/event-dispatcher": "~4.1", - "symfony/http-foundation": "^4.1.1", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<4.2", - "symfony/translation": "<4.2", - "symfony/var-dumper": "<4.1.1", - "twig/twig": "<1.34|<2.4,>=2" - }, - "provide": { - "psr/log-implementation": "1.0" - }, - "require-dev": { - "psr/cache": "~1.0", - "symfony/browser-kit": "~3.4|~4.0", - "symfony/config": "~3.4|~4.0", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dependency-injection": "^4.2", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/finder": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/routing": "~3.4|~4.0", - "symfony/stopwatch": "~3.4|~4.0", - "symfony/templating": "~3.4|~4.0", - "symfony/translation": "~4.2", - "symfony/var-dumper": "^4.1.1" - }, - "suggest": { - "symfony/browser-kit": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/var-dumper": "" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "1.13-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" + "Symfony\\Polyfill\\Php73\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1661,50 +2086,74 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", - "time": "2018-12-06T17:39:52+00:00" + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2019-11-27T16:25:15+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.10.0", + "name": "symfony/routing", + "version": "v4.4.3", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + "url": "https://github.com/symfony/routing.git", + "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", - "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "url": "https://api.github.com/repos/symfony/routing/zipball/7bf4e38573728e317b926ca4482ad30470d0e86a", + "reference": "7bf4e38573728e317b926ca4482ad30470d0e86a", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1.3" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.2", + "psr/log": "~1.0", + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { - "ext-ctype": "For best performance" + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Component\\Routing\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1713,57 +2162,55 @@ ], "authors": [ { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony Routing Component", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" + "router", + "routing", + "uri", + "url" ], - "time": "2018-08-06T14:22:27+00:00" + "time": "2020-01-08T17:29:02+00:00" }, { - "name": "symfony/polyfill-mbstring", - "version": "v1.10.0", + "name": "symfony/service-contracts", + "version": "v2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "144c5e51266b281231e947b51223ba14acf1a749" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", - "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.2.5", + "psr/container": "^1.0" }, "suggest": { - "ext-mbstring": "For best performance" + "symfony/service-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.9-dev" + "dev-master": "2.0-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, - "files": [ - "bootstrap.php" - ] + "Symfony\\Contracts\\Service\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1779,65 +2226,66 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Mbstring extension", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], - "time": "2018-09-21T13:07:52+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { - "name": "symfony/routing", - "version": "v4.2.1", + "name": "symfony/var-dumper", + "version": "v5.0.3", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "649460207e77da6c545326c7f53618d23ad2c866" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "ccb1be566ae15f790020f917f06d1da0b04fe47b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/649460207e77da6c545326c7f53618d23ad2c866", - "reference": "649460207e77da6c545326c7f53618d23ad2c866", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ccb1be566ae15f790020f917f06d1da0b04fe47b", + "reference": "ccb1be566ae15f790020f917f06d1da0b04fe47b", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { - "doctrine/annotations": "~1.0", - "psr/log": "~1.0", - "symfony/config": "~4.2", - "symfony/dependency-injection": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0" + "ext-iconv": "*", + "symfony/console": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^2.4|^3.0" }, "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/http-foundation": "For using a Symfony Request object", - "symfony/yaml": "For using the YAML loader" + "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", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\Routing\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1849,48 +2297,46 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Routing Component", + "description": "Symfony mechanism for exploring and dumping PHP variables", "homepage": "https://symfony.com", "keywords": [ - "router", - "routing", - "uri", - "url" + "debug", + "dump" ], - "time": "2018-12-03T22:08:12+00:00" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/var-exporter", - "version": "v4.2.1", + "version": "v5.0.3", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "a39222e357362424b61dcde50e2f7b5a7d3306db" + "reference": "960f9ac0fdbd642461ed29d7717aeb2a94d428b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a39222e357362424b61dcde50e2f7b5a7d3306db", - "reference": "a39222e357362424b61dcde50e2f7b5a7d3306db", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/960f9ac0fdbd642461ed29d7717aeb2a94d428b9", + "reference": "960f9ac0fdbd642461ed29d7717aeb2a94d428b9", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "require-dev": { - "symfony/var-dumper": "^4.1.1" + "symfony/var-dumper": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1925,33 +2371,35 @@ "instantiate", "serialize" ], - "time": "2018-12-03T22:40:09+00:00" + "time": "2020-01-04T14:08:26+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.1.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", - "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "^6.2.3", - "squizlabs/php_codesniffer": "^3.0.2" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { @@ -1976,12 +2424,12 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2017-07-22T11:58:36+00:00" + "time": "2019-10-21T16:45:58+00:00" }, { "name": "friendsofsymfony/oauth-server-bundle", @@ -2122,16 +2570,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.8.1", + "version": "1.9.5", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", - "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", "shasum": "" }, "require": { @@ -2166,7 +2614,7 @@ "object", "object graph" ], - "time": "2018-06-11T23:09:50+00:00" + "time": "2020-01-17T21:11:47+00:00" }, { "name": "paragonie/random_compat", @@ -2217,37 +2665,137 @@ ], "time": "2019-01-03T20:59:08+00:00" }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" + }, { "name": "phpdocumentor/reflection-common", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", - "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2269,31 +2817,32 @@ "reflection", "static analysis" ], - "time": "2017-09-11T18:02:19+00:00" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "4.3.0", + "version": "4.3.4", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08" + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", - "reference": "94fd0001232e47129dd3504189fa1c7225010d08", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", + "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", "shasum": "" }, "require": { "php": "^7.0", - "phpdocumentor/reflection-common": "^1.0.0", - "phpdocumentor/type-resolver": "^0.4.0", + "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", + "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", "webmozart/assert": "^1.0" }, "require-dev": { - "doctrine/instantiator": "~1.0.5", + "doctrine/instantiator": "^1.0.5", "mockery/mockery": "^1.0", + "phpdocumentor/type-resolver": "0.4.*", "phpunit/phpunit": "^6.4" }, "type": "library", @@ -2320,41 +2869,40 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2017-11-30T07:14:17+00:00" + "time": "2019-12-28T18:55:12+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.4.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", - "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", + "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", "shasum": "" }, "require": { - "php": "^5.5 || ^7.0", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.1", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "^7.1", + "mockery/mockery": "~1", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2367,42 +2915,43 @@ "email": "me@mikevanriel.com" } ], - "time": "2017-07-14T14:27:02+00:00" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2019-08-22T18:11:29+00:00" }, { "name": "phpspec/prophecy", - "version": "1.8.0", + "version": "v1.10.2", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", - "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/b4400efc9d206e83138e2bb97ed7f5b14b831cd9", + "reference": "b4400efc9d206e83138e2bb97ed7f5b14b831cd9", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0|^3.0", - "sebastian/recursion-context": "^1.0|^2.0|^3.0" + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.5|^3.2", + "phpspec/phpspec": "^2.5 || ^3.2", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.8.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -2430,44 +2979,44 @@ "spy", "stub" ], - "time": "2018-08-05T17:53:17+00:00" + "time": "2020-01-20T15:57:02+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "4.0.8", + "version": "7.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d" + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ef7b2f56815df854e66ceaee8ebe9393ae36a40d", - "reference": "ef7b2f56815df854e66ceaee8ebe9393ae36a40d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^5.6 || ^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.2 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", - "sebastian/environment": "^1.3.2 || ^2.0", - "sebastian/version": "^1.0 || ^2.0" + "php": "^7.2", + "phpunit/php-file-iterator": "^2.0.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.1.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^4.2.2", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "ext-xdebug": "^2.1.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-xdebug": "^2.5.1" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -2482,7 +3031,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2493,29 +3042,32 @@ "testing", "xunit" ], - "time": "2017-04-02T07:44:40+00:00" + "time": "2019-11-20T13:55:58+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.5", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", - "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2530,7 +3082,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2540,7 +3092,7 @@ "filesystem", "iterator" ], - "time": "2017-11-27T13:52:08+00:00" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -2585,28 +3137,28 @@ }, { "name": "phpunit/php-timer", - "version": "1.0.9", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", - "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -2621,7 +3173,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2630,33 +3182,33 @@ "keywords": [ "timer" ], - "time": "2017-02-26T11:10:40+00:00" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "2.0.2", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "791198a2c6254db10131eecfe8c06670700904db" + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", - "reference": "791198a2c6254db10131eecfe8c06670700904db", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": "^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^6.2.4" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -2679,55 +3231,56 @@ "keywords": [ "tokenizer" ], - "time": "2017-11-27T05:48:46+00:00" + "time": "2019-09-17T06:23:10+00:00" }, { "name": "phpunit/phpunit", - "version": "5.7.27", + "version": "8.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c" + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", - "reference": "b7803aeca3ccb99ad0a506fa80b64cd6a56bbc0c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.2.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "~1.3", - "php": "^5.6 || ^7.0", - "phpspec/prophecy": "^1.6.2", - "phpunit/php-code-coverage": "^4.0.4", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "^3.2", - "sebastian/comparator": "^1.2.4", - "sebastian/diff": "^1.4.3", - "sebastian/environment": "^1.3.4 || ^2.0", - "sebastian/exporter": "~2.0", - "sebastian/global-state": "^1.1", - "sebastian/object-enumerator": "~2.0", - "sebastian/resource-operations": "~1.0", - "sebastian/version": "^1.0.6|^2.0.1", - "symfony/yaml": "~2.1|~3.0|~4.0" - }, - "conflict": { - "phpdocumentor/reflection-docblock": "3.0.2" + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.2", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^7.0.7", + "phpunit/php-file-iterator": "^2.0.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.2", + "sebastian/exporter": "^3.1.1", + "sebastian/global-state": "^3.0.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", + "sebastian/version": "^2.0.1" }, "require-dev": { "ext-pdo": "*" }, "suggest": { + "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "~1.1" + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -2735,7 +3288,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.7.x-dev" + "dev-master": "8.5-dev" } }, "autoload": { @@ -2761,95 +3314,84 @@ "testing", "xunit" ], - "time": "2018-02-01T05:50:59+00:00" + "time": "2020-01-08T08:49:49+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "3.4.4", + "name": "predis/predis", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118" + "url": "https://github.com/nrk/predis.git", + "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/a23b761686d50a560cc56233b9ecf49597cc9118", - "reference": "a23b761686d50a560cc56233b9ecf49597cc9118", + "url": "https://api.github.com/repos/nrk/predis/zipball/f0210e38881631afeafb56ab43405a92cafd9fd1", + "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": "^5.6 || ^7.0", - "phpunit/php-text-template": "^1.2", - "sebastian/exporter": "^1.2 || ^2.0" - }, - "conflict": { - "phpunit/phpunit": "<5.4.0" + "php": ">=5.3.9" }, "require-dev": { - "phpunit/phpunit": "^5.4" + "phpunit/phpunit": "~4.8" }, "suggest": { - "ext-soap": "*" + "ext-curl": "Allows access to Webdis when paired with phpiredis", + "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.2.x-dev" - } - }, "autoload": { - "classmap": [ - "src/" - ] + "psr-4": { + "Predis\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "name": "Daniele Alessandri", + "email": "suppakilla@gmail.com", + "homepage": "http://clorophilla.net" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", + "description": "Flexible and feature-complete Redis client for PHP and HHVM", + "homepage": "http://github.com/nrk/predis", "keywords": [ - "mock", - "xunit" + "nosql", + "predis", + "redis" ], - "time": "2017-06-30T09:13:00+00:00" + "time": "2016-06-16T16:22:20+00:00" }, { - "name": "predis/predis", - "version": "v1.1.1", + "name": "psr/simple-cache", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/nrk/predis.git", - "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nrk/predis/zipball/f0210e38881631afeafb56ab43405a92cafd9fd1", - "reference": "f0210e38881631afeafb56ab43405a92cafd9fd1", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": ">=5.3.9" - }, - "require-dev": { - "phpunit/phpunit": "~4.8" - }, - "suggest": { - "ext-curl": "Allows access to Webdis when paired with phpiredis", - "ext-phpiredis": "Allows faster serialization and deserialization of the Redis protocol" + "php": ">=5.3.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-4": { - "Predis\\": "src/" + "Psr\\SimpleCache\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2858,19 +3400,19 @@ ], "authors": [ { - "name": "Daniele Alessandri", - "email": "suppakilla@gmail.com", - "homepage": "http://clorophilla.net" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Flexible and feature-complete Redis client for PHP and HHVM", - "homepage": "http://github.com/nrk/predis", + "description": "Common interfaces for simple caching", "keywords": [ - "nosql", - "predis", - "redis" + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" ], - "time": "2016-06-16T16:22:20+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -2919,30 +3461,30 @@ }, { "name": "sebastian/comparator", - "version": "1.2.4", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", - "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2 || ~2.0" + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2973,38 +3515,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2017-01-29T09:50:25+00:00" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.3", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", - "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3029,34 +3572,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2017-05-22T07:24:03+00:00" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "2.0.0", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", - "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^5.0" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -3081,34 +3630,34 @@ "environment", "hhvm" ], - "time": "2016-11-26T07:53:53+00:00" + "time": "2019-11-20T08:46:58+00:00" }, { "name": "sebastian/exporter", - "version": "2.0.0", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4" + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", - "reference": "ce474bdd1a34744d7ac5d6aad3a46d48d9bac4c4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -3121,6 +3670,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -3129,17 +3682,13 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -3148,27 +3697,30 @@ "export", "exporter" ], - "time": "2016-11-19T08:54:04+00:00" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -3176,7 +3728,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3199,33 +3751,34 @@ "keywords": [ "global state" ], - "time": "2015-10-12T03:26:01+00:00" + "time": "2019-02-01T05:30:01+00:00" }, { "name": "sebastian/object-enumerator", - "version": "2.0.1", + "version": "3.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7" + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/1311872ac850040a79c3c058bea3e22d0f09cbb7", - "reference": "1311872ac850040a79c3c058bea3e22d0f09cbb7", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", "shasum": "" }, "require": { - "php": ">=5.6", - "sebastian/recursion-context": "~2.0" + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -3245,32 +3798,77 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "time": "2017-02-18T15:18:39+00:00" + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a" + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2c3ba150cbec723aa057506e73a8d33bdb286c9a", - "reference": "2c3ba150cbec723aa057506e73a8d33bdb286c9a", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -3298,29 +3896,29 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2016-11-19T07:33:16+00:00" + "time": "2017-03-03T06:23:57+00:00" }, { "name": "sebastian/resource-operations", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", - "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", "shasum": "" }, "require": { - "php": ">=5.6.0" + "php": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3340,7 +3938,53 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "time": "2015-07-28T20:34:47+00:00" + "time": "2018-10-04T04:07:39+00:00" + }, + { + "name": "sebastian/type", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2019-07-02T08:10:15+00:00" }, { "name": "sebastian/version", @@ -3387,26 +4031,26 @@ }, { "name": "symfony/inflector", - "version": "v4.2.1", + "version": "v5.0.3", "source": { "type": "git", "url": "https://github.com/symfony/inflector.git", - "reference": "f9a637c0359f74404d44cf0da0a3ce53bae0787e" + "reference": "e375603b6bd12e8e3aec3fc1b640ac18a4ef4cb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/inflector/zipball/f9a637c0359f74404d44cf0da0a3ce53bae0787e", - "reference": "f9a637c0359f74404d44cf0da0a3ce53bae0787e", + "url": "https://api.github.com/repos/symfony/inflector/zipball/e375603b6bd12e8e3aec3fc1b640ac18a4ef4cb2", + "reference": "e375603b6bd12e8e3aec3fc1b640ac18a4ef4cb2", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-ctype": "~1.8" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3441,28 +4085,28 @@ "symfony", "words" ], - "time": "2018-11-11T19:52:12+00:00" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/property-access", - "version": "v4.2.1", + "version": "v5.0.3", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "b6df4e1849f389468edb36e2e59877d4a8170723" + "reference": "18617a8c26b97a262f816c78765eb3cd91630e19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/b6df4e1849f389468edb36e2e59877d4a8170723", - "reference": "b6df4e1849f389468edb36e2e59877d4a8170723", + "url": "https://api.github.com/repos/symfony/property-access/zipball/18617a8c26b97a262f816c78765eb3cd91630e19", + "reference": "18617a8c26b97a262f816c78765eb3cd91630e19", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/inflector": "~3.4|~4.0" + "php": "^7.2.5", + "symfony/inflector": "^4.4|^5.0" }, "require-dev": { - "symfony/cache": "~3.4|~4.0" + "symfony/cache": "^4.4|^5.0" }, "suggest": { "psr/cache-implementation": "To cache access methods." @@ -3470,7 +4114,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3508,66 +4152,63 @@ "property path", "reflection" ], - "time": "2018-11-29T14:48:32+00:00" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/security-bundle", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-bundle.git", - "reference": "705b5852306fb2bbf3b7903e7929eed01fc2c9d9" + "reference": "99ac9cd1735fbfec88e5e7cf55ed7fa046cb456e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-bundle/zipball/705b5852306fb2bbf3b7903e7929eed01fc2c9d9", - "reference": "705b5852306fb2bbf3b7903e7929eed01fc2c9d9", + "url": "https://api.github.com/repos/symfony/security-bundle/zipball/99ac9cd1735fbfec88e5e7cf55ed7fa046cb456e", + "reference": "99ac9cd1735fbfec88e5e7cf55ed7fa046cb456e", "shasum": "" }, "require": { "ext-xml": "*", "php": "^7.1.3", - "symfony/config": "^4.2", - "symfony/dependency-injection": "^4.2", - "symfony/http-kernel": "^4.1", - "symfony/security-core": "~4.2", - "symfony/security-csrf": "~4.2", - "symfony/security-guard": "~4.2", - "symfony/security-http": "~4.2" + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/security-core": "^4.4", + "symfony/security-csrf": "^4.2|^5.0", + "symfony/security-guard": "^4.2|^5.0", + "symfony/security-http": "^4.4.3" }, "conflict": { "symfony/browser-kit": "<4.2", "symfony/console": "<3.4", - "symfony/event-dispatcher": "<3.4", - "symfony/framework-bundle": "<4.2", - "symfony/twig-bundle": "<4.2", - "symfony/var-dumper": "<3.4" + "symfony/framework-bundle": "<4.4", + "symfony/ldap": "<4.4", + "symfony/twig-bundle": "<4.4" }, "require-dev": { - "doctrine/doctrine-bundle": "~1.5", - "symfony/asset": "~3.4|~4.0", - "symfony/browser-kit": "~4.2", - "symfony/console": "~3.4|~4.0", - "symfony/css-selector": "~3.4|~4.0", - "symfony/dom-crawler": "~3.4|~4.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/form": "~3.4|~4.0", - "symfony/framework-bundle": "~4.2", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/process": "~3.4|~4.0", - "symfony/translation": "~3.4|~4.0", - "symfony/twig-bridge": "~3.4|~4.0", - "symfony/twig-bundle": "~4.2", - "symfony/validator": "~3.4|~4.0", - "symfony/var-dumper": "~3.4|~4.0", - "symfony/yaml": "~3.4|~4.0", - "twig/twig": "~1.34|~2.4" + "doctrine/doctrine-bundle": "^1.5|^2.0", + "symfony/asset": "^3.4|^4.0|^5.0", + "symfony/browser-kit": "^4.2|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/form": "^3.4|^4.0|^5.0", + "symfony/framework-bundle": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/serializer": "^4.4|^5.0", + "symfony/translation": "^3.4|^4.0|^5.0", + "symfony/twig-bridge": "^3.4|^4.0|^5.0", + "symfony/twig-bundle": "^4.4|^5.0", + "symfony/validator": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0", + "twig/twig": "^1.41|^2.10|^3.0" }, "type": "symfony-bundle", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -3594,34 +4235,40 @@ ], "description": "Symfony SecurityBundle", "homepage": "https://symfony.com", - "time": "2018-11-14T19:14:06+00:00" + "time": "2020-01-21T11:47:55+00:00" }, { "name": "symfony/security-core", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-core.git", - "reference": "faad8794fb93779a32d41cd312265480a417b375" + "reference": "b2c02d5204f1eac0fb6497a7a479312d499fca31" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-core/zipball/faad8794fb93779a32d41cd312265480a417b375", - "reference": "faad8794fb93779a32d41cd312265480a417b375", + "url": "https://api.github.com/repos/symfony/security-core/zipball/b2c02d5204f1eac0fb6497a7a479312d499fca31", + "reference": "b2c02d5204f1eac0fb6497a7a479312d499fca31", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/contracts": "^1.0" + "symfony/event-dispatcher-contracts": "^1.1|^2", + "symfony/service-contracts": "^1.1.6|^2" + }, + "conflict": { + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/ldap": "<4.4", + "symfony/security-guard": "<4.3" }, "require-dev": { "psr/container": "^1.0", "psr/log": "~1.0", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/expression-language": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/ldap": "~3.4|~4.0", - "symfony/validator": "~3.4|~4.0" + "symfony/event-dispatcher": "^4.3", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/ldap": "^4.4|^5.0", + "symfony/validator": "^3.4.31|^4.3.4|^5.0" }, "suggest": { "psr/container-implementation": "To instantiate the Security class", @@ -3634,7 +4281,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -3661,31 +4308,31 @@ ], "description": "Symfony Security Component - Core Library", "homepage": "https://symfony.com", - "time": "2018-11-11T19:52:12+00:00" + "time": "2020-01-21T11:12:16+00:00" }, { "name": "symfony/security-csrf", - "version": "v4.2.1", + "version": "v5.0.3", "source": { "type": "git", "url": "https://github.com/symfony/security-csrf.git", - "reference": "0aed738ad254d8bad49f845cfaf3984079934967" + "reference": "65066f7e0f6e38a8c5507c706e86e7a52fd7ff3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-csrf/zipball/0aed738ad254d8bad49f845cfaf3984079934967", - "reference": "0aed738ad254d8bad49f845cfaf3984079934967", + "url": "https://api.github.com/repos/symfony/security-csrf/zipball/65066f7e0f6e38a8c5507c706e86e7a52fd7ff3e", + "reference": "65066f7e0f6e38a8c5507c706e86e7a52fd7ff3e", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/security-core": "~3.4|~4.0" + "php": "^7.2.5", + "symfony/security-core": "^4.4|^5.0" }, "conflict": { - "symfony/http-foundation": "<3.4" + "symfony/http-foundation": "<4.4" }, "require-dev": { - "symfony/http-foundation": "~3.4|~4.0" + "symfony/http-foundation": "^4.4|^5.0" }, "suggest": { "symfony/http-foundation": "For using the class SessionTokenStorage." @@ -3693,7 +4340,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3720,26 +4367,26 @@ ], "description": "Symfony Security Component - CSRF Library", "homepage": "https://symfony.com", - "time": "2018-11-11T19:52:12+00:00" + "time": "2020-01-04T14:08:26+00:00" }, { "name": "symfony/security-guard", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-guard.git", - "reference": "62335fd15d9f1289b1ebaff0ae72ebd9fcac3dd2" + "reference": "f457f2d6d7392259b1ede1d036a26b6c1fa20202" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-guard/zipball/62335fd15d9f1289b1ebaff0ae72ebd9fcac3dd2", - "reference": "62335fd15d9f1289b1ebaff0ae72ebd9fcac3dd2", + "url": "https://api.github.com/repos/symfony/security-guard/zipball/f457f2d6d7392259b1ede1d036a26b6c1fa20202", + "reference": "f457f2d6d7392259b1ede1d036a26b6c1fa20202", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/security-core": "~3.4|~4.0", - "symfony/security-http": "~3.4|~4.0" + "symfony/security-core": "^3.4.22|^4.2.3|^5.0", + "symfony/security-http": "^4.4.1" }, "require-dev": { "psr/log": "~1.0" @@ -3747,7 +4394,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -3774,37 +4421,37 @@ ], "description": "Symfony Security Component - Guard", "homepage": "https://symfony.com", - "time": "2018-11-11T19:52:12+00:00" + "time": "2020-01-08T17:29:02+00:00" }, { "name": "symfony/security-http", - "version": "v4.2.1", + "version": "v4.4.3", "source": { "type": "git", "url": "https://github.com/symfony/security-http.git", - "reference": "2c3b60af1f2884d6afbde03d1c5eefb625defed7" + "reference": "3a872eac6be8e446592f72bddcbd293d831a1e1a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/security-http/zipball/2c3b60af1f2884d6afbde03d1c5eefb625defed7", - "reference": "2c3b60af1f2884d6afbde03d1c5eefb625defed7", + "url": "https://api.github.com/repos/symfony/security-http/zipball/3a872eac6be8e446592f72bddcbd293d831a1e1a", + "reference": "3a872eac6be8e446592f72bddcbd293d831a1e1a", "shasum": "" }, "require": { "php": "^7.1.3", - "symfony/event-dispatcher": "~3.4|~4.0", - "symfony/http-foundation": "~3.4|~4.0", - "symfony/http-kernel": "~3.4|~4.0", - "symfony/property-access": "~3.4|~4.0", - "symfony/security-core": "~3.4|~4.0" + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/property-access": "^3.4|^4.0|^5.0", + "symfony/security-core": "^4.4" }, "conflict": { + "symfony/event-dispatcher": ">=5", "symfony/security-csrf": "<3.4.11|~4.0,<4.0.11" }, "require-dev": { "psr/log": "~1.0", - "symfony/routing": "~3.4|~4.0", - "symfony/security-csrf": "^3.4.11|^4.0.11" + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/security-csrf": "^3.4.11|^4.0.11|^5.0" }, "suggest": { "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", @@ -3813,7 +4460,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.2-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -3840,95 +4487,73 @@ ], "description": "Symfony Security Component - HTTP Integration", "homepage": "https://symfony.com", - "time": "2018-12-06T11:36:58+00:00" + "time": "2020-01-21T11:12:16+00:00" }, { - "name": "symfony/yaml", - "version": "v4.2.1", + "name": "theseer/tokenizer", + "version": "1.1.3", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "c41175c801e3edfda90f32e292619d10c27103d7" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/c41175c801e3edfda90f32e292619d10c27103d7", - "reference": "c41175c801e3edfda90f32e292619d10c27103d7", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-ctype": "~1.8" - }, - "conflict": { - "symfony/console": "<3.4" - }, - "require-dev": { - "symfony/console": "~3.4|~4.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.2-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2018-11-11T19:52:12+00:00" + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" }, { "name": "webmozart/assert", - "version": "1.4.0", + "version": "1.6.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", - "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", + "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", + "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", "shasum": "" }, "require": { "php": "^5.3.3 || ^7.0", "symfony/polyfill-ctype": "^1.8" }, + "conflict": { + "vimeo/psalm": "<3.6.0" + }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.3-dev" - } - }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -3950,7 +4575,7 @@ "check", "validate" ], - "time": "2018-12-25T11:19:39+00:00" + "time": "2019-11-24T13:36:37+00:00" } ], "aliases": [], @@ -3958,6 +4583,8 @@ "stability-flags": [], "prefer-stable": false, "prefer-lowest": false, - "platform": [], + "platform": { + "php": "^7.2" + }, "platform-dev": [] } From ad13335a12e766c41975a17eb99ab3e158b8595e Mon Sep 17 00:00:00 2001 From: Kai Date: Fri, 31 Jan 2020 13:24:00 +0100 Subject: [PATCH 08/11] remove phpunit deprecations --- .../DependencyInjection/ConfigurationTest.php | 5 ++-- .../RateLimitAnnotationListenerTest.php | 29 +++++++++---------- Tests/Service/RateLimitServiceTest.php | 4 +-- phpunit.xml.dist | 1 - 4 files changed, 16 insertions(+), 23 deletions(-) diff --git a/Tests/DependencyInjection/ConfigurationTest.php b/Tests/DependencyInjection/ConfigurationTest.php index 13a8d61..d09931e 100644 --- a/Tests/DependencyInjection/ConfigurationTest.php +++ b/Tests/DependencyInjection/ConfigurationTest.php @@ -4,6 +4,7 @@ use Noxlogic\RateLimitBundle\DependencyInjection\Configuration; use Noxlogic\RateLimitBundle\Tests\WebTestCase; +use Symfony\Component\Config\Definition\Exception\InvalidConfigurationException; use Symfony\Component\Config\Definition\Processor; /** @@ -136,11 +137,9 @@ public function testDefaultPathLimitMethods() $this->assertEquals($pathLimits, $configuration['path_limits']); } - /** - * @expectedException \Symfony\Component\Config\Definition\Exception\InvalidConfigurationException - */ public function testMustBeBasedOnExceptionClass() { + $this->expectException(InvalidConfigurationException::class); $configuration = $this->getConfigs(array('rate_response_exception' => '\StdClass')); } diff --git a/Tests/EventListener/RateLimitAnnotationListenerTest.php b/Tests/EventListener/RateLimitAnnotationListenerTest.php index f2cefc9..b78b46e 100644 --- a/Tests/EventListener/RateLimitAnnotationListenerTest.php +++ b/Tests/EventListener/RateLimitAnnotationListenerTest.php @@ -13,7 +13,6 @@ use ReflectionMethod; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; -use Symfony\Component\HttpKernel\Event\FilterControllerEvent; use Symfony\Component\HttpKernel\HttpKernelInterface; class MockController { @@ -173,21 +172,21 @@ public function testRateLimit() )); $listener->onKernelController($event); - $this->assertInternalType('array', $event->getController()); + $this->assertIsArray($event->getController()); $listener->onKernelController($event); - $this->assertInternalType('array', $event->getController()); + $this->assertIsArray( $event->getController()); $listener->onKernelController($event); - $this->assertInternalType('array', $event->getController()); + $this->assertIsArray($event->getController()); $listener->onKernelController($event); - $this->assertInternalType('array', $event->getController()); + $this->assertIsArray($event->getController()); $listener->onKernelController($event); - $this->assertInternalType('array', $event->getController()); + $this->assertIsArray($event->getController()); $listener->onKernelController($event); - $this->assertNotInternalType('array', $event->getController()); + $this->assertIsNotArray($event->getController()); $listener->onKernelController($event); - $this->assertNotInternalType('array', $event->getController()); + $this->assertIsNotArray($event->getController()); $listener->onKernelController($event); - $this->assertNotInternalType('array', $event->getController()); + $this->assertIsNotArray($event->getController()); } public function testRateLimitThrottling() @@ -203,7 +202,7 @@ public function testRateLimitThrottling() $storage = $this->getMockStorage(); $storage->createMockRate('Noxlogic.RateLimitBundle.EventListener.Tests.MockController.mockAction', 5, 10, 6); $listener->onKernelController($event); - $this->assertNotInternalType('array', $event->getController()); + $this->assertIsNotArray($event->getController()); } public function testRateLimitExpiring() @@ -219,7 +218,7 @@ public function testRateLimitExpiring() $storage = $this->getMockStorage(); $storage->createMockRate('Noxlogic.RateLimitBundle.EventListener.Tests.MockController.mockAction', 5, -10, 12); $listener->onKernelController($event); - $this->assertInternalType('array', $event->getController()); + $this->assertIsArray($event->getController()); } public function testBestMethodMatch() @@ -424,13 +423,11 @@ public function testRateLimitThrottlingWithExceptionAndPayload() } } - /** - * @expectedException \BadFunctionCallException - * @expectedExceptionCode 123 - * @expectedExceptionMessage a message - */ public function testRateLimitThrottlingWithException() { + $this->expectException(\BadFunctionCallException::class); + $this->expectExceptionCode(123); + $this->expectDeprecationMessage('a message'); $listener = $this->createListener($this->any()); $listener->setParameter('rate_response_exception', '\BadFunctionCallException'); $listener->setParameter('rate_response_code', 123); diff --git a/Tests/Service/RateLimitServiceTest.php b/Tests/Service/RateLimitServiceTest.php index 39c109b..c933b9e 100644 --- a/Tests/Service/RateLimitServiceTest.php +++ b/Tests/Service/RateLimitServiceTest.php @@ -22,11 +22,9 @@ public function testSetStorage() $this->assertEquals($mockStorage, $service->getStorage()); } - /** - * @expectedException \RuntimeException - */ public function testRuntimeExceptionWhenNoStorageIsSet() { + $this->expectException(\RuntimeException::class); $service = new RateLimitService(); $service->getStorage(); } diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 8bfc0f8..d703cee 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -8,7 +8,6 @@ convertWarningsToExceptions = "true" processIsolation = "false" stopOnFailure = "false" - syntaxCheck = "false" bootstrap = "Tests/bootstrap.php"> From 4d24fefd1991488d7109bbb51f02fbff31de6f50 Mon Sep 17 00:00:00 2001 From: Kai Date: Fri, 31 Jan 2020 13:37:59 +0100 Subject: [PATCH 09/11] Drop Symfony < 3.4 and < 4.3 --- .travis.yml | 47 +++++++++---------- .../NoxlogicRateLimitExtension.php | 8 +--- EventListener/HeaderModificationListener.php | 6 +-- EventListener/OauthKeyGenerateListener.php | 3 +- Events/ProxyFilterResponseEvent.php | 22 +++++++++ .../HeaderModificationListenerTest.php | 3 +- Util/PathLimitProcessor.php | 4 +- composer.json | 4 +- 8 files changed, 55 insertions(+), 42 deletions(-) create mode 100644 Events/ProxyFilterResponseEvent.php diff --git a/.travis.yml b/.travis.yml index 3e8332a..45f0535 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,6 +2,8 @@ language: php php: - 7.2 + - 7.3 + - 7.4 sudo: false @@ -10,39 +12,34 @@ matrix: include: - php: 7.2 env: COMPOSER_FLAGS="--prefer-lowest" - - php: 7.2 - env: SYMFONY_VERSION=2.3.* - - php: 7.2 - env: SYMFONY_VERSION=2.6.* - - php: 7.2 - env: SYMFONY_VERSION=2.7.* - - php: 7.2 - env: SYMFONY_VERSION=2.8.* - - php: 7.2 - env: SYMFONY_VERSION=3.0.* - - php: 7.2 - env: SYMFONY_VERSION=3.1.* - - php: 7.2 - env: SYMFONY_VERSION=3.2.* - - php: 7.2 - env: SYMFONY_VERSION=3.3.* - php: 7.2 env: SYMFONY_VERSION=3.4.* - - php: 7.2 - env: SYMFONY_VERSION=4.0.* - - php: 7.2 - env: SYMFONY_VERSION=4.1.* - - php: 7.2 - env: SYMFONY_VERSION=4.2.* - php: 7.2 env: SYMFONY_VERSION=4.3.* - php: 7.2 env: SYMFONY_VERSION=4.4.* - php: 7.2 env: SYMFONY_VERSION=5.0.* - allow_failures: - - php: 5.6 - + - php: 7.3 + env: COMPOSER_FLAGS="--prefer-lowest" + - php: 7.3 + env: SYMFONY_VERSION=3.4.* + - php: 7.3 + env: SYMFONY_VERSION=4.3.* + - php: 7.3 + env: SYMFONY_VERSION=4.4.* + - php: 7.3 + env: SYMFONY_VERSION=5.0.* + - php: 7.4 + env: COMPOSER_FLAGS="--prefer-lowest" + - php: 7.4 + env: SYMFONY_VERSION=3.4.* + - php: 7.4 + env: SYMFONY_VERSION=4.3.* + - php: 7.4 + env: SYMFONY_VERSION=4.4.* + - php: 7.4 + env: SYMFONY_VERSION=5.0.* before_install: - echo "extension = redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini before_script: diff --git a/DependencyInjection/NoxlogicRateLimitExtension.php b/DependencyInjection/NoxlogicRateLimitExtension.php index 2323da4..ab75876 100644 --- a/DependencyInjection/NoxlogicRateLimitExtension.php +++ b/DependencyInjection/NoxlogicRateLimitExtension.php @@ -105,13 +105,7 @@ private function loadServices(ContainerBuilder $container, array $config) } if ($config['fos_oauth_key_listener']) { - // Set the SecurityContext for Symfony < 2.6 - // Replace with xml when < 2.6 is dropped. - if (interface_exists('Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface')) { - $tokenStorageReference = new Reference('security.token_storage'); - } else { - $tokenStorageReference = new Reference('security.context'); - } + $tokenStorageReference = new Reference('security.token_storage'); $container->getDefinition('noxlogic_rate_limit.oauth_key_generate_listener')->replaceArgument(0, $tokenStorageReference); } else { $container->removeDefinition('noxlogic_rate_limit.oauth_key_generate_listener'); diff --git a/EventListener/HeaderModificationListener.php b/EventListener/HeaderModificationListener.php index db89178..5ed73c3 100644 --- a/EventListener/HeaderModificationListener.php +++ b/EventListener/HeaderModificationListener.php @@ -2,8 +2,8 @@ namespace Noxlogic\RateLimitBundle\EventListener; +use Noxlogic\RateLimitBundle\Events\ProxyFilterResponseEvent; use Noxlogic\RateLimitBundle\Service\RateLimitInfo; -use Symfony\Component\HttpKernel\Event\FilterResponseEvent; class HeaderModificationListener extends BaseListener { @@ -17,9 +17,9 @@ public function __construct($defaultParameters = array()) } /** - * @param FilterResponseEvent $event + * @param ProxyFilterResponseEvent $event */ - public function onKernelResponse(FilterResponseEvent $event) + public function onKernelResponse(ProxyFilterResponseEvent $event) { $request = $event->getRequest(); diff --git a/EventListener/OauthKeyGenerateListener.php b/EventListener/OauthKeyGenerateListener.php index f4f8cfa..a5e3668 100644 --- a/EventListener/OauthKeyGenerateListener.php +++ b/EventListener/OauthKeyGenerateListener.php @@ -3,13 +3,12 @@ namespace Noxlogic\RateLimitBundle\EventListener; use Noxlogic\RateLimitBundle\Events\GenerateKeyEvent; -use Symfony\Component\Security\Core\SecurityContextInterface; use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface; class OauthKeyGenerateListener { /** - * @var SecurityContextInterface|TokenStorageInterface + * @var TokenStorageInterface */ protected $tokenStorage; diff --git a/Events/ProxyFilterResponseEvent.php b/Events/ProxyFilterResponseEvent.php new file mode 100644 index 0000000..08088b5 --- /dev/null +++ b/Events/ProxyFilterResponseEvent.php @@ -0,0 +1,22 @@ += 4.3 + */ + class ProxyFilterResponseEvent extends ResponseEvent + { + } +} diff --git a/Tests/EventListener/HeaderModificationListenerTest.php b/Tests/EventListener/HeaderModificationListenerTest.php index 41632a2..5e280ca 100644 --- a/Tests/EventListener/HeaderModificationListenerTest.php +++ b/Tests/EventListener/HeaderModificationListenerTest.php @@ -5,6 +5,7 @@ use Noxlogic\RateLimitBundle\EventListener\HeaderModificationListener; use Noxlogic\RateLimitBundle\EventListener\OauthKeyGenerateListener; use Noxlogic\RateLimitBundle\Events\GenerateKeyEvent; +use Noxlogic\RateLimitBundle\Events\ProxyFilterResponseEvent; use Noxlogic\RateLimitBundle\Service\RateLimitInfo; use Noxlogic\RateLimitBundle\Tests\TestCase; use Symfony\Component\EventDispatcher\EventDispatcher; @@ -143,7 +144,7 @@ protected function createEvent() $request = new Request(); $response = new Response(); - $event = $this->getMockBuilder('Symfony\\Component\\HttpKernel\\Event\\FilterResponseEvent') + $event = $this->getMockBuilder(ProxyFilterResponseEvent::class) ->disableOriginalConstructor() ->getMock(); $event diff --git a/Util/PathLimitProcessor.php b/Util/PathLimitProcessor.php index ebe4723..53238ee 100644 --- a/Util/PathLimitProcessor.php +++ b/Util/PathLimitProcessor.php @@ -80,7 +80,7 @@ private function pathMatched($expectedPath, $path) $expectedParts = explode('/', $expectedPath); $actualParts = explode('/', $path); - if (sizeof($actualParts) < sizeof($expectedParts)) { + if (count($actualParts) < count($expectedParts)) { return false; } @@ -92,4 +92,4 @@ private function pathMatched($expectedPath, $path) return true; } -} \ No newline at end of file +} diff --git a/composer.json b/composer.json index 294917f..e7eae77 100644 --- a/composer.json +++ b/composer.json @@ -12,8 +12,8 @@ ], "require": { "php": "^7.2", - "symfony/framework-bundle": "^2.3|^3.0|^4.0|^5.0", - "sensio/framework-extra-bundle": "^2.3|^3.0|^4.0|^5.0" + "symfony/framework-bundle": "^3.4|^4.3|^5.0", + "sensio/framework-extra-bundle": "^3.0|^4.0|^5.0" }, "require-dev": { "phpunit/phpunit": "^8.5", From ae5356832e65e50afcb344f7386d04bf80566b21 Mon Sep 17 00:00:00 2001 From: Kai Date: Fri, 31 Jan 2020 13:49:17 +0100 Subject: [PATCH 10/11] remove framework-bundle 3.4 Doesn't support void returns --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index e7eae77..11cdfdd 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ ], "require": { "php": "^7.2", - "symfony/framework-bundle": "^3.4|^4.3|^5.0", + "symfony/framework-bundle": "^4.2|^5.0", "sensio/framework-extra-bundle": "^3.0|^4.0|^5.0" }, "require-dev": { From 5dd9235f670b12751f096319117bac66c87968b0 Mon Sep 17 00:00:00 2001 From: Kai Date: Fri, 31 Jan 2020 13:58:29 +0100 Subject: [PATCH 11/11] Dropping framework 3.4 but allow prefer lowest to fail --- .travis.yml | 3 +++ composer.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 45f0535..6dcfc4d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -40,6 +40,9 @@ matrix: env: SYMFONY_VERSION=4.4.* - php: 7.4 env: SYMFONY_VERSION=5.0.* + allow_failures: + - env: COMPOSER_FLAGS="--prefer-lowest" + - env: SYMFONY_VERSION=5.0.* before_install: - echo "extension = redis.so" >> ~/.phpenv/versions/$(phpenv version-name)/etc/php.ini before_script: diff --git a/composer.json b/composer.json index 11cdfdd..e7eae77 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ ], "require": { "php": "^7.2", - "symfony/framework-bundle": "^4.2|^5.0", + "symfony/framework-bundle": "^3.4|^4.3|^5.0", "sensio/framework-extra-bundle": "^3.0|^4.0|^5.0" }, "require-dev": {