├── .gitignore ├── README.md ├── composer.json ├── composer.lock └── src ├── Concerns ├── WithAuthenticationTrait.php ├── WithClientAutoInitializeTrait.php ├── WithClientTrait.php ├── WithContainerTrait.php ├── WithDatabaseTrait.php └── WithFakerTrait.php ├── Exception ├── ClientNotCreatedException.php └── ContainerNotInitializedException.php └── WebTestCase.php /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Symfony Test Helpers 2 | 3 | Providing smooth and fresh helpers for your functional tests! 4 | 5 | ## Contents 6 | 7 | 1. [Installation](#installation) 8 | 1. [Basic Usage](#basic-usage) 9 | 1. [Details](#details) 10 | 11 | ## Installation 12 | 13 | ```bash 14 | composer require liorchamla/symfony-test-helpers 15 | ``` 16 | 17 | Since _it is not a bundle_, you don't need any more configuration 👍 18 | 19 | ## Basic Usage 20 | 21 | Get everything out of the box by extending `Liior\SymfonyTestHelpers\WebTestCase` 💪 22 | 23 | ```php 24 | get('/'); 35 | 36 | $this->assertSee('Hello World!'); 37 | } 38 | } 39 | ``` 40 | 41 | ## Details 42 | 43 | The library contains several _traits_ and a base class called `Liior\SymfonyTestHelpers\WebTestCase`. By extending this `WebTestCase` class, you automatically use all the traits, but you can also use only one or several traits on a normal WebTestCase class. 44 | 45 | **You can use whatever you see below, out of the box, by extending `Liior\SymfonyTestHelpers\WebTestCase`** 46 | 47 | ## WithClientTrait part 1: No need to initialize a client anymore 48 | 49 | With this trait, you get a `KernelBrowser` (a.k.a. client) out of the box. 50 | 51 | ```php 52 | get('/my/route'); 64 | 65 | // Asserts that 'Hello World' is in the content of the response 66 | $this->assertSee('Hello World!'); 67 | 68 | // Asserts that 'foobar' is not in the content of the response 69 | $this->assertNotSee('foobar') 70 | } 71 | } 72 | ``` 73 | 74 | ## WithClientTrait part 2: HTTP methods made easy 75 | 76 | With this trait, you get shortcuts for five HTTP methods : 77 | 78 | ```php 79 | get('/'); // equivalent to $this->client->request('GET', '/') 91 | $this->post('/'); // equivalent to $this->client->request('POST', '/') 92 | $this->put('/'); // equivalent to $this->client->request('PUT', '/') 93 | $this->patch('/'); // equivalent to $this->client->request('PATCH', '/') 94 | $this->delete('/'); // equivalent to $this->client->request('DELETE', '/') 95 | } 96 | } 97 | ``` 98 | 99 | ## WithAuthenticationTrait: Act as an authenticated user with chosen roles 100 | 101 | With this trait, you get shortcut methods to act as an authenticated user: 102 | 103 | ```php 104 | authenticate($client, "fakeUserName", 'my_firewall_name'); 119 | $client->request('GET', '/protected/route'); 120 | 121 | // You can pass custom roles for your simulated user 122 | $this->authenticate($client, "fakeUserName", 'my_firewall_name', ['ROLE_ADMIN']); 123 | $client->request('GET', '/admin/foo'); 124 | 125 | // A shortcut to authenticate as an admin 126 | $this->authenticateAsAdmin($client, "fakeUserName", 'my_firewall_name'); 127 | $client->request('GET', '/admin/foo'); 128 | } 129 | } 130 | ``` 131 | 132 | You can also authenticate with a real user ! 133 | 134 | ```php 135 | setEmail("any@email.com") 154 | ->setPassword("password") 155 | ->setRoles(['ROLE_MANAGER', 'ROLE_AUTHOR']); 156 | 157 | // You get this from WithDatabaseTrait 158 | $this->getManager()->persist($user); 159 | $this->getManager()->flush(); 160 | 161 | // Then you can authenticate with this user 162 | $this->authenticate($client, $user, "my_firewall_name"); 163 | $client->request('GET', '/protected/route'); 164 | 165 | // You can also override roles : 166 | $this->authenticate($client, $user, "my_firewall_name", ['ROLE_MODERATOR', 'ROLE_ADMIN']); 167 | $client->request('GET', '/admin/foo'); 168 | } 169 | } 170 | ``` 171 | 172 | ## WithDatabaseTrait: Interaction with database made easy 173 | 174 | With this trait, you can retrieve Doctrine EntityManager, Repositories and assert that a string is found in a table (experimental) 175 | 176 | ```php 177 | getRepository(Task::class); 193 | $tasks = $repository->findAll(); 194 | 195 | // Retrieve a manager 196 | $task = new Task(); 197 | $task->setTitle('A task'); 198 | $manager = $this->getManager(); 199 | $manager->persist($task); 200 | $manager->flush(); 201 | 202 | // Shortcut function to create a row inside database (returns the persisted entity) 203 | $task = $this->createOne(Task::class, function(Task $entity) { 204 | $entity 205 | ->setTitle("A task") 206 | ->setDescription("A description") 207 | ->setDueDate(new \DateTime()) 208 | ; 209 | }); 210 | 211 | // Shortcut function to create several rows inside database (returns an array of persisted entities) 212 | $tasks = $this->createMany(Task::class, function(Task $entity, int $index) { 213 | $entity 214 | ->setTitle("Task n°$index") 215 | ->setDescription("Description for task $index") 216 | ->setDueDate(new \DateTime('+'.$index.' days')) 217 | ; 218 | }); 219 | 220 | // Experimental! An assertion function which looks up data in a table 221 | // With a simple string 222 | $this->assertDatabaseHas('A title', Task::class); 223 | 224 | // With an array of data 225 | $this->assertDatabaseHas([ 226 | 'title' => 'A title', 227 | 'description' => 'A description' 228 | ], Task::class); 229 | 230 | // With a customized query 231 | $this->assertDatabaseHas('James', Task::class, function(\Doctrine\ORM\QueryBuilder $qb) { 232 | $qb->addSelect('a.name') 233 | ->innerJoin($root. '.author', 'a'); 234 | }); 235 | 236 | // Inversed logic : asserts that database is missing 'foo' in Task entity 237 | $this->assertDatabaseNotHas('foo', Task::class); 238 | } 239 | } 240 | ``` 241 | 242 | ## WithFakerTrait: Using faker made easy 243 | 244 | With this trait, you gain access to faker. 245 | 246 | ```php 247 | fake()->sentence; 265 | $paragraph = $this->fake()->paragraph; 266 | 267 | // You can also tweak the way Faker's generator is created 268 | // and set providers as you want. 269 | $this->initializeFaker(function(){ 270 | $faker = Factory::create('fr_FR'); 271 | $faker->addProvider(new PricesProvider($faker)); 272 | 273 | return $faker; 274 | }); 275 | } 276 | } 277 | ``` 278 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "liorchamla/symfony-test-helpers", 3 | "description": "Provides cool tools to make testing over symfony smoothie and great !", 4 | "type": "library", 5 | "require-dev": {}, 6 | "minimum-stability": "stable", 7 | "license": "MIT", 8 | "authors": [ 9 | { 10 | "name": "Lior Chamla", 11 | "email": "lchamla@gmail.com" 12 | } 13 | ], 14 | "require": { 15 | "php": "^7.2.5", 16 | "symfony/framework-bundle": "^5.0", 17 | "fzaninotto/faker": "^1.9", 18 | "doctrine/doctrine-bundle": "^2.0", 19 | "symfony/security-bundle": "^5.0", 20 | "symfony/browser-kit": "^5.0", 21 | "doctrine/orm": "^2.7", 22 | "symfony/phpunit-bridge": "^5.0" 23 | }, 24 | "autoload": { 25 | "psr-4": { 26 | "Liior\\SymfonyTestHelpers\\": "src" 27 | } 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "93b18e20faf15de7a7dd3482d7abcb35", 8 | "packages": [ 9 | { 10 | "name": "doctrine/annotations", 11 | "version": "v1.8.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/annotations.git", 15 | "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/904dca4eb10715b92569fbcd79e201d5c349b6bc", 20 | "reference": "904dca4eb10715b92569fbcd79e201d5c349b6bc", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "doctrine/lexer": "1.*", 25 | "php": "^7.1" 26 | }, 27 | "require-dev": { 28 | "doctrine/cache": "1.*", 29 | "phpunit/phpunit": "^7.5" 30 | }, 31 | "type": "library", 32 | "extra": { 33 | "branch-alias": { 34 | "dev-master": "1.7.x-dev" 35 | } 36 | }, 37 | "autoload": { 38 | "psr-4": { 39 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 40 | } 41 | }, 42 | "notification-url": "https://packagist.org/downloads/", 43 | "license": [ 44 | "MIT" 45 | ], 46 | "authors": [ 47 | { 48 | "name": "Guilherme Blanco", 49 | "email": "guilhermeblanco@gmail.com" 50 | }, 51 | { 52 | "name": "Roman Borschel", 53 | "email": "roman@code-factory.org" 54 | }, 55 | { 56 | "name": "Benjamin Eberlei", 57 | "email": "kontakt@beberlei.de" 58 | }, 59 | { 60 | "name": "Jonathan Wage", 61 | "email": "jonwage@gmail.com" 62 | }, 63 | { 64 | "name": "Johannes Schmitt", 65 | "email": "schmittjoh@gmail.com" 66 | } 67 | ], 68 | "description": "Docblock Annotations Parser", 69 | "homepage": "http://www.doctrine-project.org", 70 | "keywords": [ 71 | "annotations", 72 | "docblock", 73 | "parser" 74 | ], 75 | "time": "2019-10-01T18:55:10+00:00" 76 | }, 77 | { 78 | "name": "doctrine/cache", 79 | "version": "1.10.0", 80 | "source": { 81 | "type": "git", 82 | "url": "https://github.com/doctrine/cache.git", 83 | "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62" 84 | }, 85 | "dist": { 86 | "type": "zip", 87 | "url": "https://api.github.com/repos/doctrine/cache/zipball/382e7f4db9a12dc6c19431743a2b096041bcdd62", 88 | "reference": "382e7f4db9a12dc6c19431743a2b096041bcdd62", 89 | "shasum": "" 90 | }, 91 | "require": { 92 | "php": "~7.1" 93 | }, 94 | "conflict": { 95 | "doctrine/common": ">2.2,<2.4" 96 | }, 97 | "require-dev": { 98 | "alcaeus/mongo-php-adapter": "^1.1", 99 | "doctrine/coding-standard": "^6.0", 100 | "mongodb/mongodb": "^1.1", 101 | "phpunit/phpunit": "^7.0", 102 | "predis/predis": "~1.0" 103 | }, 104 | "suggest": { 105 | "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" 106 | }, 107 | "type": "library", 108 | "extra": { 109 | "branch-alias": { 110 | "dev-master": "1.9.x-dev" 111 | } 112 | }, 113 | "autoload": { 114 | "psr-4": { 115 | "Doctrine\\Common\\Cache\\": "lib/Doctrine/Common/Cache" 116 | } 117 | }, 118 | "notification-url": "https://packagist.org/downloads/", 119 | "license": [ 120 | "MIT" 121 | ], 122 | "authors": [ 123 | { 124 | "name": "Guilherme Blanco", 125 | "email": "guilhermeblanco@gmail.com" 126 | }, 127 | { 128 | "name": "Roman Borschel", 129 | "email": "roman@code-factory.org" 130 | }, 131 | { 132 | "name": "Benjamin Eberlei", 133 | "email": "kontakt@beberlei.de" 134 | }, 135 | { 136 | "name": "Jonathan Wage", 137 | "email": "jonwage@gmail.com" 138 | }, 139 | { 140 | "name": "Johannes Schmitt", 141 | "email": "schmittjoh@gmail.com" 142 | } 143 | ], 144 | "description": "PHP Doctrine Cache library is a popular cache implementation that supports many different drivers such as redis, memcache, apc, mongodb and others.", 145 | "homepage": "https://www.doctrine-project.org/projects/cache.html", 146 | "keywords": [ 147 | "abstraction", 148 | "apcu", 149 | "cache", 150 | "caching", 151 | "couchdb", 152 | "memcached", 153 | "php", 154 | "redis", 155 | "xcache" 156 | ], 157 | "time": "2019-11-29T15:36:20+00:00" 158 | }, 159 | { 160 | "name": "doctrine/collections", 161 | "version": "1.6.4", 162 | "source": { 163 | "type": "git", 164 | "url": "https://github.com/doctrine/collections.git", 165 | "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7" 166 | }, 167 | "dist": { 168 | "type": "zip", 169 | "url": "https://api.github.com/repos/doctrine/collections/zipball/6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", 170 | "reference": "6b1e4b2b66f6d6e49983cebfe23a21b7ccc5b0d7", 171 | "shasum": "" 172 | }, 173 | "require": { 174 | "php": "^7.1.3" 175 | }, 176 | "require-dev": { 177 | "doctrine/coding-standard": "^6.0", 178 | "phpstan/phpstan-shim": "^0.9.2", 179 | "phpunit/phpunit": "^7.0", 180 | "vimeo/psalm": "^3.2.2" 181 | }, 182 | "type": "library", 183 | "extra": { 184 | "branch-alias": { 185 | "dev-master": "1.6.x-dev" 186 | } 187 | }, 188 | "autoload": { 189 | "psr-4": { 190 | "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" 191 | } 192 | }, 193 | "notification-url": "https://packagist.org/downloads/", 194 | "license": [ 195 | "MIT" 196 | ], 197 | "authors": [ 198 | { 199 | "name": "Guilherme Blanco", 200 | "email": "guilhermeblanco@gmail.com" 201 | }, 202 | { 203 | "name": "Roman Borschel", 204 | "email": "roman@code-factory.org" 205 | }, 206 | { 207 | "name": "Benjamin Eberlei", 208 | "email": "kontakt@beberlei.de" 209 | }, 210 | { 211 | "name": "Jonathan Wage", 212 | "email": "jonwage@gmail.com" 213 | }, 214 | { 215 | "name": "Johannes Schmitt", 216 | "email": "schmittjoh@gmail.com" 217 | } 218 | ], 219 | "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", 220 | "homepage": "https://www.doctrine-project.org/projects/collections.html", 221 | "keywords": [ 222 | "array", 223 | "collections", 224 | "iterators", 225 | "php" 226 | ], 227 | "time": "2019-11-13T13:07:11+00:00" 228 | }, 229 | { 230 | "name": "doctrine/common", 231 | "version": "v2.11.0", 232 | "source": { 233 | "type": "git", 234 | "url": "https://github.com/doctrine/common.git", 235 | "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff" 236 | }, 237 | "dist": { 238 | "type": "zip", 239 | "url": "https://api.github.com/repos/doctrine/common/zipball/b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff", 240 | "reference": "b8ca1dcf6b0dc8a2af7a09baac8d0c48345df4ff", 241 | "shasum": "" 242 | }, 243 | "require": { 244 | "doctrine/annotations": "^1.0", 245 | "doctrine/cache": "^1.0", 246 | "doctrine/collections": "^1.0", 247 | "doctrine/event-manager": "^1.0", 248 | "doctrine/inflector": "^1.0", 249 | "doctrine/lexer": "^1.0", 250 | "doctrine/persistence": "^1.1", 251 | "doctrine/reflection": "^1.0", 252 | "php": "^7.1" 253 | }, 254 | "require-dev": { 255 | "doctrine/coding-standard": "^1.0", 256 | "phpstan/phpstan": "^0.11", 257 | "phpstan/phpstan-phpunit": "^0.11", 258 | "phpunit/phpunit": "^7.0", 259 | "squizlabs/php_codesniffer": "^3.0", 260 | "symfony/phpunit-bridge": "^4.0.5" 261 | }, 262 | "type": "library", 263 | "extra": { 264 | "branch-alias": { 265 | "dev-master": "2.11.x-dev" 266 | } 267 | }, 268 | "autoload": { 269 | "psr-4": { 270 | "Doctrine\\Common\\": "lib/Doctrine/Common" 271 | } 272 | }, 273 | "notification-url": "https://packagist.org/downloads/", 274 | "license": [ 275 | "MIT" 276 | ], 277 | "authors": [ 278 | { 279 | "name": "Guilherme Blanco", 280 | "email": "guilhermeblanco@gmail.com" 281 | }, 282 | { 283 | "name": "Roman Borschel", 284 | "email": "roman@code-factory.org" 285 | }, 286 | { 287 | "name": "Benjamin Eberlei", 288 | "email": "kontakt@beberlei.de" 289 | }, 290 | { 291 | "name": "Jonathan Wage", 292 | "email": "jonwage@gmail.com" 293 | }, 294 | { 295 | "name": "Johannes Schmitt", 296 | "email": "schmittjoh@gmail.com" 297 | }, 298 | { 299 | "name": "Marco Pivetta", 300 | "email": "ocramius@gmail.com" 301 | } 302 | ], 303 | "description": "PHP Doctrine Common project is a library that provides additional functionality that other Doctrine projects depend on such as better reflection support, persistence interfaces, proxies, event system and much more.", 304 | "homepage": "https://www.doctrine-project.org/projects/common.html", 305 | "keywords": [ 306 | "common", 307 | "doctrine", 308 | "php" 309 | ], 310 | "time": "2019-09-10T10:10:14+00:00" 311 | }, 312 | { 313 | "name": "doctrine/dbal", 314 | "version": "v2.10.0", 315 | "source": { 316 | "type": "git", 317 | "url": "https://github.com/doctrine/dbal.git", 318 | "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934" 319 | }, 320 | "dist": { 321 | "type": "zip", 322 | "url": "https://api.github.com/repos/doctrine/dbal/zipball/0c9a646775ef549eb0a213a4f9bd4381d9b4d934", 323 | "reference": "0c9a646775ef549eb0a213a4f9bd4381d9b4d934", 324 | "shasum": "" 325 | }, 326 | "require": { 327 | "doctrine/cache": "^1.0", 328 | "doctrine/event-manager": "^1.0", 329 | "ext-pdo": "*", 330 | "php": "^7.2" 331 | }, 332 | "require-dev": { 333 | "doctrine/coding-standard": "^6.0", 334 | "jetbrains/phpstorm-stubs": "^2019.1", 335 | "phpstan/phpstan": "^0.11.3", 336 | "phpunit/phpunit": "^8.4.1", 337 | "symfony/console": "^2.0.5|^3.0|^4.0|^5.0" 338 | }, 339 | "suggest": { 340 | "symfony/console": "For helpful console commands such as SQL execution and import of files." 341 | }, 342 | "bin": [ 343 | "bin/doctrine-dbal" 344 | ], 345 | "type": "library", 346 | "extra": { 347 | "branch-alias": { 348 | "dev-master": "2.10.x-dev", 349 | "dev-develop": "3.0.x-dev" 350 | } 351 | }, 352 | "autoload": { 353 | "psr-4": { 354 | "Doctrine\\DBAL\\": "lib/Doctrine/DBAL" 355 | } 356 | }, 357 | "notification-url": "https://packagist.org/downloads/", 358 | "license": [ 359 | "MIT" 360 | ], 361 | "authors": [ 362 | { 363 | "name": "Guilherme Blanco", 364 | "email": "guilhermeblanco@gmail.com" 365 | }, 366 | { 367 | "name": "Roman Borschel", 368 | "email": "roman@code-factory.org" 369 | }, 370 | { 371 | "name": "Benjamin Eberlei", 372 | "email": "kontakt@beberlei.de" 373 | }, 374 | { 375 | "name": "Jonathan Wage", 376 | "email": "jonwage@gmail.com" 377 | } 378 | ], 379 | "description": "Powerful PHP database abstraction layer (DBAL) with many features for database schema introspection and management.", 380 | "homepage": "https://www.doctrine-project.org/projects/dbal.html", 381 | "keywords": [ 382 | "abstraction", 383 | "database", 384 | "db2", 385 | "dbal", 386 | "mariadb", 387 | "mssql", 388 | "mysql", 389 | "oci8", 390 | "oracle", 391 | "pdo", 392 | "pgsql", 393 | "postgresql", 394 | "queryobject", 395 | "sasql", 396 | "sql", 397 | "sqlanywhere", 398 | "sqlite", 399 | "sqlserver", 400 | "sqlsrv" 401 | ], 402 | "time": "2019-11-03T16:50:43+00:00" 403 | }, 404 | { 405 | "name": "doctrine/doctrine-bundle", 406 | "version": "2.0.6", 407 | "source": { 408 | "type": "git", 409 | "url": "https://github.com/doctrine/DoctrineBundle.git", 410 | "reference": "0ef972d3b730f975c80db9fffa4b2a0258c91442" 411 | }, 412 | "dist": { 413 | "type": "zip", 414 | "url": "https://api.github.com/repos/doctrine/DoctrineBundle/zipball/0ef972d3b730f975c80db9fffa4b2a0258c91442", 415 | "reference": "0ef972d3b730f975c80db9fffa4b2a0258c91442", 416 | "shasum": "" 417 | }, 418 | "require": { 419 | "doctrine/dbal": "^2.9.0", 420 | "doctrine/persistence": "^1.3.3", 421 | "jdorn/sql-formatter": "^1.2.16", 422 | "php": "^7.1", 423 | "symfony/cache": "^4.3.3|^5.0", 424 | "symfony/config": "^4.3.3|^5.0", 425 | "symfony/console": "^3.4.30|^4.3.3|^5.0", 426 | "symfony/dependency-injection": "^4.3.3|^5.0", 427 | "symfony/doctrine-bridge": "^4.3.7|^5.0", 428 | "symfony/framework-bundle": "^3.4.30|^4.3.3|^5.0", 429 | "symfony/service-contracts": "^1.1.1|^2.0" 430 | }, 431 | "conflict": { 432 | "doctrine/orm": "<2.6", 433 | "twig/twig": "<1.34|>=2.0,<2.4" 434 | }, 435 | "require-dev": { 436 | "doctrine/coding-standard": "^6.0", 437 | "doctrine/orm": "^2.6", 438 | "ocramius/proxy-manager": "^2.1", 439 | "phpunit/phpunit": "^7.5", 440 | "symfony/phpunit-bridge": "^4.2", 441 | "symfony/property-info": "^4.3.3|^5.0", 442 | "symfony/twig-bridge": "^3.4.30|^4.3.3|^5.0", 443 | "symfony/validator": "^3.4.30|^4.3.3|^5.0", 444 | "symfony/web-profiler-bundle": "^3.4.30|^4.3.3|^5.0", 445 | "symfony/yaml": "^3.4.30|^4.3.3|^5.0", 446 | "twig/twig": "^1.34|^2.12" 447 | }, 448 | "suggest": { 449 | "doctrine/orm": "The Doctrine ORM integration is optional in the bundle.", 450 | "symfony/web-profiler-bundle": "To use the data collector." 451 | }, 452 | "type": "symfony-bundle", 453 | "extra": { 454 | "branch-alias": { 455 | "dev-master": "2.0.x-dev" 456 | } 457 | }, 458 | "autoload": { 459 | "psr-4": { 460 | "Doctrine\\Bundle\\DoctrineBundle\\": "" 461 | } 462 | }, 463 | "notification-url": "https://packagist.org/downloads/", 464 | "license": [ 465 | "MIT" 466 | ], 467 | "authors": [ 468 | { 469 | "name": "Fabien Potencier", 470 | "email": "fabien@symfony.com" 471 | }, 472 | { 473 | "name": "Benjamin Eberlei", 474 | "email": "kontakt@beberlei.de" 475 | }, 476 | { 477 | "name": "Symfony Community", 478 | "homepage": "http://symfony.com/contributors" 479 | }, 480 | { 481 | "name": "Doctrine Project", 482 | "homepage": "http://www.doctrine-project.org/" 483 | } 484 | ], 485 | "description": "Symfony DoctrineBundle", 486 | "homepage": "http://www.doctrine-project.org", 487 | "keywords": [ 488 | "database", 489 | "dbal", 490 | "orm", 491 | "persistence" 492 | ], 493 | "time": "2019-12-19T13:47:07+00:00" 494 | }, 495 | { 496 | "name": "doctrine/event-manager", 497 | "version": "1.1.0", 498 | "source": { 499 | "type": "git", 500 | "url": "https://github.com/doctrine/event-manager.git", 501 | "reference": "629572819973f13486371cb611386eb17851e85c" 502 | }, 503 | "dist": { 504 | "type": "zip", 505 | "url": "https://api.github.com/repos/doctrine/event-manager/zipball/629572819973f13486371cb611386eb17851e85c", 506 | "reference": "629572819973f13486371cb611386eb17851e85c", 507 | "shasum": "" 508 | }, 509 | "require": { 510 | "php": "^7.1" 511 | }, 512 | "conflict": { 513 | "doctrine/common": "<2.9@dev" 514 | }, 515 | "require-dev": { 516 | "doctrine/coding-standard": "^6.0", 517 | "phpunit/phpunit": "^7.0" 518 | }, 519 | "type": "library", 520 | "extra": { 521 | "branch-alias": { 522 | "dev-master": "1.0.x-dev" 523 | } 524 | }, 525 | "autoload": { 526 | "psr-4": { 527 | "Doctrine\\Common\\": "lib/Doctrine/Common" 528 | } 529 | }, 530 | "notification-url": "https://packagist.org/downloads/", 531 | "license": [ 532 | "MIT" 533 | ], 534 | "authors": [ 535 | { 536 | "name": "Guilherme Blanco", 537 | "email": "guilhermeblanco@gmail.com" 538 | }, 539 | { 540 | "name": "Roman Borschel", 541 | "email": "roman@code-factory.org" 542 | }, 543 | { 544 | "name": "Benjamin Eberlei", 545 | "email": "kontakt@beberlei.de" 546 | }, 547 | { 548 | "name": "Jonathan Wage", 549 | "email": "jonwage@gmail.com" 550 | }, 551 | { 552 | "name": "Johannes Schmitt", 553 | "email": "schmittjoh@gmail.com" 554 | }, 555 | { 556 | "name": "Marco Pivetta", 557 | "email": "ocramius@gmail.com" 558 | } 559 | ], 560 | "description": "The Doctrine Event Manager is a simple PHP event system that was built to be used with the various Doctrine projects.", 561 | "homepage": "https://www.doctrine-project.org/projects/event-manager.html", 562 | "keywords": [ 563 | "event", 564 | "event dispatcher", 565 | "event manager", 566 | "event system", 567 | "events" 568 | ], 569 | "time": "2019-11-10T09:48:07+00:00" 570 | }, 571 | { 572 | "name": "doctrine/inflector", 573 | "version": "1.3.1", 574 | "source": { 575 | "type": "git", 576 | "url": "https://github.com/doctrine/inflector.git", 577 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" 578 | }, 579 | "dist": { 580 | "type": "zip", 581 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 582 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 583 | "shasum": "" 584 | }, 585 | "require": { 586 | "php": "^7.1" 587 | }, 588 | "require-dev": { 589 | "phpunit/phpunit": "^6.2" 590 | }, 591 | "type": "library", 592 | "extra": { 593 | "branch-alias": { 594 | "dev-master": "1.3.x-dev" 595 | } 596 | }, 597 | "autoload": { 598 | "psr-4": { 599 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 600 | } 601 | }, 602 | "notification-url": "https://packagist.org/downloads/", 603 | "license": [ 604 | "MIT" 605 | ], 606 | "authors": [ 607 | { 608 | "name": "Guilherme Blanco", 609 | "email": "guilhermeblanco@gmail.com" 610 | }, 611 | { 612 | "name": "Roman Borschel", 613 | "email": "roman@code-factory.org" 614 | }, 615 | { 616 | "name": "Benjamin Eberlei", 617 | "email": "kontakt@beberlei.de" 618 | }, 619 | { 620 | "name": "Jonathan Wage", 621 | "email": "jonwage@gmail.com" 622 | }, 623 | { 624 | "name": "Johannes Schmitt", 625 | "email": "schmittjoh@gmail.com" 626 | } 627 | ], 628 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 629 | "homepage": "http://www.doctrine-project.org", 630 | "keywords": [ 631 | "inflection", 632 | "pluralize", 633 | "singularize", 634 | "string" 635 | ], 636 | "time": "2019-10-30T19:59:35+00:00" 637 | }, 638 | { 639 | "name": "doctrine/instantiator", 640 | "version": "1.3.0", 641 | "source": { 642 | "type": "git", 643 | "url": "https://github.com/doctrine/instantiator.git", 644 | "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" 645 | }, 646 | "dist": { 647 | "type": "zip", 648 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", 649 | "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", 650 | "shasum": "" 651 | }, 652 | "require": { 653 | "php": "^7.1" 654 | }, 655 | "require-dev": { 656 | "doctrine/coding-standard": "^6.0", 657 | "ext-pdo": "*", 658 | "ext-phar": "*", 659 | "phpbench/phpbench": "^0.13", 660 | "phpstan/phpstan-phpunit": "^0.11", 661 | "phpstan/phpstan-shim": "^0.11", 662 | "phpunit/phpunit": "^7.0" 663 | }, 664 | "type": "library", 665 | "extra": { 666 | "branch-alias": { 667 | "dev-master": "1.2.x-dev" 668 | } 669 | }, 670 | "autoload": { 671 | "psr-4": { 672 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 673 | } 674 | }, 675 | "notification-url": "https://packagist.org/downloads/", 676 | "license": [ 677 | "MIT" 678 | ], 679 | "authors": [ 680 | { 681 | "name": "Marco Pivetta", 682 | "email": "ocramius@gmail.com", 683 | "homepage": "http://ocramius.github.com/" 684 | } 685 | ], 686 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 687 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 688 | "keywords": [ 689 | "constructor", 690 | "instantiate" 691 | ], 692 | "time": "2019-10-21T16:45:58+00:00" 693 | }, 694 | { 695 | "name": "doctrine/lexer", 696 | "version": "1.2.0", 697 | "source": { 698 | "type": "git", 699 | "url": "https://github.com/doctrine/lexer.git", 700 | "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" 701 | }, 702 | "dist": { 703 | "type": "zip", 704 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", 705 | "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", 706 | "shasum": "" 707 | }, 708 | "require": { 709 | "php": "^7.2" 710 | }, 711 | "require-dev": { 712 | "doctrine/coding-standard": "^6.0", 713 | "phpstan/phpstan": "^0.11.8", 714 | "phpunit/phpunit": "^8.2" 715 | }, 716 | "type": "library", 717 | "extra": { 718 | "branch-alias": { 719 | "dev-master": "1.2.x-dev" 720 | } 721 | }, 722 | "autoload": { 723 | "psr-4": { 724 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 725 | } 726 | }, 727 | "notification-url": "https://packagist.org/downloads/", 728 | "license": [ 729 | "MIT" 730 | ], 731 | "authors": [ 732 | { 733 | "name": "Guilherme Blanco", 734 | "email": "guilhermeblanco@gmail.com" 735 | }, 736 | { 737 | "name": "Roman Borschel", 738 | "email": "roman@code-factory.org" 739 | }, 740 | { 741 | "name": "Johannes Schmitt", 742 | "email": "schmittjoh@gmail.com" 743 | } 744 | ], 745 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 746 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 747 | "keywords": [ 748 | "annotations", 749 | "docblock", 750 | "lexer", 751 | "parser", 752 | "php" 753 | ], 754 | "time": "2019-10-30T14:39:59+00:00" 755 | }, 756 | { 757 | "name": "doctrine/orm", 758 | "version": "v2.7.0", 759 | "source": { 760 | "type": "git", 761 | "url": "https://github.com/doctrine/orm.git", 762 | "reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62" 763 | }, 764 | "dist": { 765 | "type": "zip", 766 | "url": "https://api.github.com/repos/doctrine/orm/zipball/4d763ca4c925f647b248b9fa01b5f47aa3685d62", 767 | "reference": "4d763ca4c925f647b248b9fa01b5f47aa3685d62", 768 | "shasum": "" 769 | }, 770 | "require": { 771 | "doctrine/annotations": "^1.8", 772 | "doctrine/cache": "^1.9.1", 773 | "doctrine/collections": "^1.5", 774 | "doctrine/common": "^2.11", 775 | "doctrine/dbal": "^2.9.3", 776 | "doctrine/event-manager": "^1.1", 777 | "doctrine/instantiator": "^1.3", 778 | "doctrine/persistence": "^1.2", 779 | "ext-pdo": "*", 780 | "php": "^7.1", 781 | "symfony/console": "^3.0|^4.0|^5.0" 782 | }, 783 | "require-dev": { 784 | "doctrine/coding-standard": "^5.0", 785 | "phpunit/phpunit": "^7.5", 786 | "symfony/yaml": "^3.4|^4.0|^5.0" 787 | }, 788 | "suggest": { 789 | "symfony/yaml": "If you want to use YAML Metadata Mapping Driver" 790 | }, 791 | "bin": [ 792 | "bin/doctrine" 793 | ], 794 | "type": "library", 795 | "extra": { 796 | "branch-alias": { 797 | "dev-master": "2.7.x-dev" 798 | } 799 | }, 800 | "autoload": { 801 | "psr-4": { 802 | "Doctrine\\ORM\\": "lib/Doctrine/ORM" 803 | } 804 | }, 805 | "notification-url": "https://packagist.org/downloads/", 806 | "license": [ 807 | "MIT" 808 | ], 809 | "authors": [ 810 | { 811 | "name": "Guilherme Blanco", 812 | "email": "guilhermeblanco@gmail.com" 813 | }, 814 | { 815 | "name": "Roman Borschel", 816 | "email": "roman@code-factory.org" 817 | }, 818 | { 819 | "name": "Benjamin Eberlei", 820 | "email": "kontakt@beberlei.de" 821 | }, 822 | { 823 | "name": "Jonathan Wage", 824 | "email": "jonwage@gmail.com" 825 | }, 826 | { 827 | "name": "Marco Pivetta", 828 | "email": "ocramius@gmail.com" 829 | } 830 | ], 831 | "description": "Object-Relational-Mapper for PHP", 832 | "homepage": "https://www.doctrine-project.org/projects/orm.html", 833 | "keywords": [ 834 | "database", 835 | "orm" 836 | ], 837 | "time": "2019-11-19T08:38:05+00:00" 838 | }, 839 | { 840 | "name": "doctrine/persistence", 841 | "version": "1.3.3", 842 | "source": { 843 | "type": "git", 844 | "url": "https://github.com/doctrine/persistence.git", 845 | "reference": "99b196bbd4715a94fa100fac664a351ffa46d6a5" 846 | }, 847 | "dist": { 848 | "type": "zip", 849 | "url": "https://api.github.com/repos/doctrine/persistence/zipball/99b196bbd4715a94fa100fac664a351ffa46d6a5", 850 | "reference": "99b196bbd4715a94fa100fac664a351ffa46d6a5", 851 | "shasum": "" 852 | }, 853 | "require": { 854 | "doctrine/annotations": "^1.0", 855 | "doctrine/cache": "^1.0", 856 | "doctrine/collections": "^1.0", 857 | "doctrine/event-manager": "^1.0", 858 | "doctrine/reflection": "^1.0", 859 | "php": "^7.1" 860 | }, 861 | "conflict": { 862 | "doctrine/common": "<2.10@dev" 863 | }, 864 | "require-dev": { 865 | "doctrine/coding-standard": "^6.0", 866 | "phpstan/phpstan": "^0.11", 867 | "phpunit/phpunit": "^7.0" 868 | }, 869 | "type": "library", 870 | "extra": { 871 | "branch-alias": { 872 | "dev-master": "1.3.x-dev" 873 | } 874 | }, 875 | "autoload": { 876 | "psr-4": { 877 | "Doctrine\\Common\\": "lib/Doctrine/Common", 878 | "Doctrine\\Persistence\\": "lib/Doctrine/Persistence" 879 | } 880 | }, 881 | "notification-url": "https://packagist.org/downloads/", 882 | "license": [ 883 | "MIT" 884 | ], 885 | "authors": [ 886 | { 887 | "name": "Guilherme Blanco", 888 | "email": "guilhermeblanco@gmail.com" 889 | }, 890 | { 891 | "name": "Roman Borschel", 892 | "email": "roman@code-factory.org" 893 | }, 894 | { 895 | "name": "Benjamin Eberlei", 896 | "email": "kontakt@beberlei.de" 897 | }, 898 | { 899 | "name": "Jonathan Wage", 900 | "email": "jonwage@gmail.com" 901 | }, 902 | { 903 | "name": "Johannes Schmitt", 904 | "email": "schmittjoh@gmail.com" 905 | }, 906 | { 907 | "name": "Marco Pivetta", 908 | "email": "ocramius@gmail.com" 909 | } 910 | ], 911 | "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", 912 | "homepage": "https://doctrine-project.org/projects/persistence.html", 913 | "keywords": [ 914 | "mapper", 915 | "object", 916 | "odm", 917 | "orm", 918 | "persistence" 919 | ], 920 | "time": "2019-12-13T10:43:02+00:00" 921 | }, 922 | { 923 | "name": "doctrine/reflection", 924 | "version": "v1.0.0", 925 | "source": { 926 | "type": "git", 927 | "url": "https://github.com/doctrine/reflection.git", 928 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" 929 | }, 930 | "dist": { 931 | "type": "zip", 932 | "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", 933 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", 934 | "shasum": "" 935 | }, 936 | "require": { 937 | "doctrine/annotations": "^1.0", 938 | "ext-tokenizer": "*", 939 | "php": "^7.1" 940 | }, 941 | "require-dev": { 942 | "doctrine/coding-standard": "^4.0", 943 | "doctrine/common": "^2.8", 944 | "phpstan/phpstan": "^0.9.2", 945 | "phpstan/phpstan-phpunit": "^0.9.4", 946 | "phpunit/phpunit": "^7.0", 947 | "squizlabs/php_codesniffer": "^3.0" 948 | }, 949 | "type": "library", 950 | "extra": { 951 | "branch-alias": { 952 | "dev-master": "1.0.x-dev" 953 | } 954 | }, 955 | "autoload": { 956 | "psr-4": { 957 | "Doctrine\\Common\\": "lib/Doctrine/Common" 958 | } 959 | }, 960 | "notification-url": "https://packagist.org/downloads/", 961 | "license": [ 962 | "MIT" 963 | ], 964 | "authors": [ 965 | { 966 | "name": "Roman Borschel", 967 | "email": "roman@code-factory.org" 968 | }, 969 | { 970 | "name": "Benjamin Eberlei", 971 | "email": "kontakt@beberlei.de" 972 | }, 973 | { 974 | "name": "Guilherme Blanco", 975 | "email": "guilhermeblanco@gmail.com" 976 | }, 977 | { 978 | "name": "Jonathan Wage", 979 | "email": "jonwage@gmail.com" 980 | }, 981 | { 982 | "name": "Johannes Schmitt", 983 | "email": "schmittjoh@gmail.com" 984 | }, 985 | { 986 | "name": "Marco Pivetta", 987 | "email": "ocramius@gmail.com" 988 | } 989 | ], 990 | "description": "Doctrine Reflection component", 991 | "homepage": "https://www.doctrine-project.org/projects/reflection.html", 992 | "keywords": [ 993 | "reflection" 994 | ], 995 | "time": "2018-06-14T14:45:07+00:00" 996 | }, 997 | { 998 | "name": "fzaninotto/faker", 999 | "version": "v1.9.1", 1000 | "source": { 1001 | "type": "git", 1002 | "url": "https://github.com/fzaninotto/Faker.git", 1003 | "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" 1004 | }, 1005 | "dist": { 1006 | "type": "zip", 1007 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", 1008 | "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", 1009 | "shasum": "" 1010 | }, 1011 | "require": { 1012 | "php": "^5.3.3 || ^7.0" 1013 | }, 1014 | "require-dev": { 1015 | "ext-intl": "*", 1016 | "phpunit/phpunit": "^4.8.35 || ^5.7", 1017 | "squizlabs/php_codesniffer": "^2.9.2" 1018 | }, 1019 | "type": "library", 1020 | "extra": { 1021 | "branch-alias": { 1022 | "dev-master": "1.9-dev" 1023 | } 1024 | }, 1025 | "autoload": { 1026 | "psr-4": { 1027 | "Faker\\": "src/Faker/" 1028 | } 1029 | }, 1030 | "notification-url": "https://packagist.org/downloads/", 1031 | "license": [ 1032 | "MIT" 1033 | ], 1034 | "authors": [ 1035 | { 1036 | "name": "François Zaninotto" 1037 | } 1038 | ], 1039 | "description": "Faker is a PHP library that generates fake data for you.", 1040 | "keywords": [ 1041 | "data", 1042 | "faker", 1043 | "fixtures" 1044 | ], 1045 | "time": "2019-12-12T13:22:17+00:00" 1046 | }, 1047 | { 1048 | "name": "jdorn/sql-formatter", 1049 | "version": "v1.2.17", 1050 | "source": { 1051 | "type": "git", 1052 | "url": "https://github.com/jdorn/sql-formatter.git", 1053 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc" 1054 | }, 1055 | "dist": { 1056 | "type": "zip", 1057 | "url": "https://api.github.com/repos/jdorn/sql-formatter/zipball/64990d96e0959dff8e059dfcdc1af130728d92bc", 1058 | "reference": "64990d96e0959dff8e059dfcdc1af130728d92bc", 1059 | "shasum": "" 1060 | }, 1061 | "require": { 1062 | "php": ">=5.2.4" 1063 | }, 1064 | "require-dev": { 1065 | "phpunit/phpunit": "3.7.*" 1066 | }, 1067 | "type": "library", 1068 | "extra": { 1069 | "branch-alias": { 1070 | "dev-master": "1.3.x-dev" 1071 | } 1072 | }, 1073 | "autoload": { 1074 | "classmap": [ 1075 | "lib" 1076 | ] 1077 | }, 1078 | "notification-url": "https://packagist.org/downloads/", 1079 | "license": [ 1080 | "MIT" 1081 | ], 1082 | "authors": [ 1083 | { 1084 | "name": "Jeremy Dorn", 1085 | "email": "jeremy@jeremydorn.com", 1086 | "homepage": "http://jeremydorn.com/" 1087 | } 1088 | ], 1089 | "description": "a PHP SQL highlighting library", 1090 | "homepage": "https://github.com/jdorn/sql-formatter/", 1091 | "keywords": [ 1092 | "highlight", 1093 | "sql" 1094 | ], 1095 | "time": "2014-01-12T16:20:24+00:00" 1096 | }, 1097 | { 1098 | "name": "myclabs/deep-copy", 1099 | "version": "1.9.4", 1100 | "source": { 1101 | "type": "git", 1102 | "url": "https://github.com/myclabs/DeepCopy.git", 1103 | "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7" 1104 | }, 1105 | "dist": { 1106 | "type": "zip", 1107 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/579bb7356d91f9456ccd505f24ca8b667966a0a7", 1108 | "reference": "579bb7356d91f9456ccd505f24ca8b667966a0a7", 1109 | "shasum": "" 1110 | }, 1111 | "require": { 1112 | "php": "^7.1" 1113 | }, 1114 | "replace": { 1115 | "myclabs/deep-copy": "self.version" 1116 | }, 1117 | "require-dev": { 1118 | "doctrine/collections": "^1.0", 1119 | "doctrine/common": "^2.6", 1120 | "phpunit/phpunit": "^7.1" 1121 | }, 1122 | "type": "library", 1123 | "autoload": { 1124 | "psr-4": { 1125 | "DeepCopy\\": "src/DeepCopy/" 1126 | }, 1127 | "files": [ 1128 | "src/DeepCopy/deep_copy.php" 1129 | ] 1130 | }, 1131 | "notification-url": "https://packagist.org/downloads/", 1132 | "license": [ 1133 | "MIT" 1134 | ], 1135 | "description": "Create deep copies (clones) of your objects", 1136 | "keywords": [ 1137 | "clone", 1138 | "copy", 1139 | "duplicate", 1140 | "object", 1141 | "object graph" 1142 | ], 1143 | "time": "2019-12-15T19:12:40+00:00" 1144 | }, 1145 | { 1146 | "name": "phar-io/manifest", 1147 | "version": "1.0.3", 1148 | "source": { 1149 | "type": "git", 1150 | "url": "https://github.com/phar-io/manifest.git", 1151 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 1152 | }, 1153 | "dist": { 1154 | "type": "zip", 1155 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1156 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1157 | "shasum": "" 1158 | }, 1159 | "require": { 1160 | "ext-dom": "*", 1161 | "ext-phar": "*", 1162 | "phar-io/version": "^2.0", 1163 | "php": "^5.6 || ^7.0" 1164 | }, 1165 | "type": "library", 1166 | "extra": { 1167 | "branch-alias": { 1168 | "dev-master": "1.0.x-dev" 1169 | } 1170 | }, 1171 | "autoload": { 1172 | "classmap": [ 1173 | "src/" 1174 | ] 1175 | }, 1176 | "notification-url": "https://packagist.org/downloads/", 1177 | "license": [ 1178 | "BSD-3-Clause" 1179 | ], 1180 | "authors": [ 1181 | { 1182 | "name": "Arne Blankerts", 1183 | "email": "arne@blankerts.de", 1184 | "role": "Developer" 1185 | }, 1186 | { 1187 | "name": "Sebastian Heuer", 1188 | "email": "sebastian@phpeople.de", 1189 | "role": "Developer" 1190 | }, 1191 | { 1192 | "name": "Sebastian Bergmann", 1193 | "email": "sebastian@phpunit.de", 1194 | "role": "Developer" 1195 | } 1196 | ], 1197 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1198 | "time": "2018-07-08T19:23:20+00:00" 1199 | }, 1200 | { 1201 | "name": "phar-io/version", 1202 | "version": "2.0.1", 1203 | "source": { 1204 | "type": "git", 1205 | "url": "https://github.com/phar-io/version.git", 1206 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 1207 | }, 1208 | "dist": { 1209 | "type": "zip", 1210 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1211 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1212 | "shasum": "" 1213 | }, 1214 | "require": { 1215 | "php": "^5.6 || ^7.0" 1216 | }, 1217 | "type": "library", 1218 | "autoload": { 1219 | "classmap": [ 1220 | "src/" 1221 | ] 1222 | }, 1223 | "notification-url": "https://packagist.org/downloads/", 1224 | "license": [ 1225 | "BSD-3-Clause" 1226 | ], 1227 | "authors": [ 1228 | { 1229 | "name": "Arne Blankerts", 1230 | "email": "arne@blankerts.de", 1231 | "role": "Developer" 1232 | }, 1233 | { 1234 | "name": "Sebastian Heuer", 1235 | "email": "sebastian@phpeople.de", 1236 | "role": "Developer" 1237 | }, 1238 | { 1239 | "name": "Sebastian Bergmann", 1240 | "email": "sebastian@phpunit.de", 1241 | "role": "Developer" 1242 | } 1243 | ], 1244 | "description": "Library for handling version information and constraints", 1245 | "time": "2018-07-08T19:19:57+00:00" 1246 | }, 1247 | { 1248 | "name": "phpdocumentor/reflection-common", 1249 | "version": "2.0.0", 1250 | "source": { 1251 | "type": "git", 1252 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1253 | "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" 1254 | }, 1255 | "dist": { 1256 | "type": "zip", 1257 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", 1258 | "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", 1259 | "shasum": "" 1260 | }, 1261 | "require": { 1262 | "php": ">=7.1" 1263 | }, 1264 | "require-dev": { 1265 | "phpunit/phpunit": "~6" 1266 | }, 1267 | "type": "library", 1268 | "extra": { 1269 | "branch-alias": { 1270 | "dev-master": "2.x-dev" 1271 | } 1272 | }, 1273 | "autoload": { 1274 | "psr-4": { 1275 | "phpDocumentor\\Reflection\\": "src/" 1276 | } 1277 | }, 1278 | "notification-url": "https://packagist.org/downloads/", 1279 | "license": [ 1280 | "MIT" 1281 | ], 1282 | "authors": [ 1283 | { 1284 | "name": "Jaap van Otterdijk", 1285 | "email": "opensource@ijaap.nl" 1286 | } 1287 | ], 1288 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1289 | "homepage": "http://www.phpdoc.org", 1290 | "keywords": [ 1291 | "FQSEN", 1292 | "phpDocumentor", 1293 | "phpdoc", 1294 | "reflection", 1295 | "static analysis" 1296 | ], 1297 | "time": "2018-08-07T13:53:10+00:00" 1298 | }, 1299 | { 1300 | "name": "phpdocumentor/reflection-docblock", 1301 | "version": "4.3.4", 1302 | "source": { 1303 | "type": "git", 1304 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1305 | "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c" 1306 | }, 1307 | "dist": { 1308 | "type": "zip", 1309 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/da3fd972d6bafd628114f7e7e036f45944b62e9c", 1310 | "reference": "da3fd972d6bafd628114f7e7e036f45944b62e9c", 1311 | "shasum": "" 1312 | }, 1313 | "require": { 1314 | "php": "^7.0", 1315 | "phpdocumentor/reflection-common": "^1.0.0 || ^2.0.0", 1316 | "phpdocumentor/type-resolver": "~0.4 || ^1.0.0", 1317 | "webmozart/assert": "^1.0" 1318 | }, 1319 | "require-dev": { 1320 | "doctrine/instantiator": "^1.0.5", 1321 | "mockery/mockery": "^1.0", 1322 | "phpdocumentor/type-resolver": "0.4.*", 1323 | "phpunit/phpunit": "^6.4" 1324 | }, 1325 | "type": "library", 1326 | "extra": { 1327 | "branch-alias": { 1328 | "dev-master": "4.x-dev" 1329 | } 1330 | }, 1331 | "autoload": { 1332 | "psr-4": { 1333 | "phpDocumentor\\Reflection\\": [ 1334 | "src/" 1335 | ] 1336 | } 1337 | }, 1338 | "notification-url": "https://packagist.org/downloads/", 1339 | "license": [ 1340 | "MIT" 1341 | ], 1342 | "authors": [ 1343 | { 1344 | "name": "Mike van Riel", 1345 | "email": "me@mikevanriel.com" 1346 | } 1347 | ], 1348 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1349 | "time": "2019-12-28T18:55:12+00:00" 1350 | }, 1351 | { 1352 | "name": "phpdocumentor/type-resolver", 1353 | "version": "1.0.1", 1354 | "source": { 1355 | "type": "git", 1356 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1357 | "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9" 1358 | }, 1359 | "dist": { 1360 | "type": "zip", 1361 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", 1362 | "reference": "2e32a6d48972b2c1976ed5d8967145b6cec4a4a9", 1363 | "shasum": "" 1364 | }, 1365 | "require": { 1366 | "php": "^7.1", 1367 | "phpdocumentor/reflection-common": "^2.0" 1368 | }, 1369 | "require-dev": { 1370 | "ext-tokenizer": "^7.1", 1371 | "mockery/mockery": "~1", 1372 | "phpunit/phpunit": "^7.0" 1373 | }, 1374 | "type": "library", 1375 | "extra": { 1376 | "branch-alias": { 1377 | "dev-master": "1.x-dev" 1378 | } 1379 | }, 1380 | "autoload": { 1381 | "psr-4": { 1382 | "phpDocumentor\\Reflection\\": "src" 1383 | } 1384 | }, 1385 | "notification-url": "https://packagist.org/downloads/", 1386 | "license": [ 1387 | "MIT" 1388 | ], 1389 | "authors": [ 1390 | { 1391 | "name": "Mike van Riel", 1392 | "email": "me@mikevanriel.com" 1393 | } 1394 | ], 1395 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 1396 | "time": "2019-08-22T18:11:29+00:00" 1397 | }, 1398 | { 1399 | "name": "phpspec/prophecy", 1400 | "version": "1.10.1", 1401 | "source": { 1402 | "type": "git", 1403 | "url": "https://github.com/phpspec/prophecy.git", 1404 | "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc" 1405 | }, 1406 | "dist": { 1407 | "type": "zip", 1408 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/cbe1df668b3fe136bcc909126a0f529a78d4cbbc", 1409 | "reference": "cbe1df668b3fe136bcc909126a0f529a78d4cbbc", 1410 | "shasum": "" 1411 | }, 1412 | "require": { 1413 | "doctrine/instantiator": "^1.0.2", 1414 | "php": "^5.3|^7.0", 1415 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", 1416 | "sebastian/comparator": "^1.2.3|^2.0|^3.0", 1417 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 1418 | }, 1419 | "require-dev": { 1420 | "phpspec/phpspec": "^2.5 || ^3.2", 1421 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 1422 | }, 1423 | "type": "library", 1424 | "extra": { 1425 | "branch-alias": { 1426 | "dev-master": "1.10.x-dev" 1427 | } 1428 | }, 1429 | "autoload": { 1430 | "psr-4": { 1431 | "Prophecy\\": "src/Prophecy" 1432 | } 1433 | }, 1434 | "notification-url": "https://packagist.org/downloads/", 1435 | "license": [ 1436 | "MIT" 1437 | ], 1438 | "authors": [ 1439 | { 1440 | "name": "Konstantin Kudryashov", 1441 | "email": "ever.zet@gmail.com", 1442 | "homepage": "http://everzet.com" 1443 | }, 1444 | { 1445 | "name": "Marcello Duarte", 1446 | "email": "marcello.duarte@gmail.com" 1447 | } 1448 | ], 1449 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1450 | "homepage": "https://github.com/phpspec/prophecy", 1451 | "keywords": [ 1452 | "Double", 1453 | "Dummy", 1454 | "fake", 1455 | "mock", 1456 | "spy", 1457 | "stub" 1458 | ], 1459 | "time": "2019-12-22T21:05:45+00:00" 1460 | }, 1461 | { 1462 | "name": "phpunit/php-code-coverage", 1463 | "version": "7.0.10", 1464 | "source": { 1465 | "type": "git", 1466 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1467 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" 1468 | }, 1469 | "dist": { 1470 | "type": "zip", 1471 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", 1472 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", 1473 | "shasum": "" 1474 | }, 1475 | "require": { 1476 | "ext-dom": "*", 1477 | "ext-xmlwriter": "*", 1478 | "php": "^7.2", 1479 | "phpunit/php-file-iterator": "^2.0.2", 1480 | "phpunit/php-text-template": "^1.2.1", 1481 | "phpunit/php-token-stream": "^3.1.1", 1482 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1483 | "sebastian/environment": "^4.2.2", 1484 | "sebastian/version": "^2.0.1", 1485 | "theseer/tokenizer": "^1.1.3" 1486 | }, 1487 | "require-dev": { 1488 | "phpunit/phpunit": "^8.2.2" 1489 | }, 1490 | "suggest": { 1491 | "ext-xdebug": "^2.7.2" 1492 | }, 1493 | "type": "library", 1494 | "extra": { 1495 | "branch-alias": { 1496 | "dev-master": "7.0-dev" 1497 | } 1498 | }, 1499 | "autoload": { 1500 | "classmap": [ 1501 | "src/" 1502 | ] 1503 | }, 1504 | "notification-url": "https://packagist.org/downloads/", 1505 | "license": [ 1506 | "BSD-3-Clause" 1507 | ], 1508 | "authors": [ 1509 | { 1510 | "name": "Sebastian Bergmann", 1511 | "email": "sebastian@phpunit.de", 1512 | "role": "lead" 1513 | } 1514 | ], 1515 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1516 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1517 | "keywords": [ 1518 | "coverage", 1519 | "testing", 1520 | "xunit" 1521 | ], 1522 | "time": "2019-11-20T13:55:58+00:00" 1523 | }, 1524 | { 1525 | "name": "phpunit/php-file-iterator", 1526 | "version": "2.0.2", 1527 | "source": { 1528 | "type": "git", 1529 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1530 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 1531 | }, 1532 | "dist": { 1533 | "type": "zip", 1534 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 1535 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 1536 | "shasum": "" 1537 | }, 1538 | "require": { 1539 | "php": "^7.1" 1540 | }, 1541 | "require-dev": { 1542 | "phpunit/phpunit": "^7.1" 1543 | }, 1544 | "type": "library", 1545 | "extra": { 1546 | "branch-alias": { 1547 | "dev-master": "2.0.x-dev" 1548 | } 1549 | }, 1550 | "autoload": { 1551 | "classmap": [ 1552 | "src/" 1553 | ] 1554 | }, 1555 | "notification-url": "https://packagist.org/downloads/", 1556 | "license": [ 1557 | "BSD-3-Clause" 1558 | ], 1559 | "authors": [ 1560 | { 1561 | "name": "Sebastian Bergmann", 1562 | "email": "sebastian@phpunit.de", 1563 | "role": "lead" 1564 | } 1565 | ], 1566 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1567 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1568 | "keywords": [ 1569 | "filesystem", 1570 | "iterator" 1571 | ], 1572 | "time": "2018-09-13T20:33:42+00:00" 1573 | }, 1574 | { 1575 | "name": "phpunit/php-text-template", 1576 | "version": "1.2.1", 1577 | "source": { 1578 | "type": "git", 1579 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1580 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1581 | }, 1582 | "dist": { 1583 | "type": "zip", 1584 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1585 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1586 | "shasum": "" 1587 | }, 1588 | "require": { 1589 | "php": ">=5.3.3" 1590 | }, 1591 | "type": "library", 1592 | "autoload": { 1593 | "classmap": [ 1594 | "src/" 1595 | ] 1596 | }, 1597 | "notification-url": "https://packagist.org/downloads/", 1598 | "license": [ 1599 | "BSD-3-Clause" 1600 | ], 1601 | "authors": [ 1602 | { 1603 | "name": "Sebastian Bergmann", 1604 | "email": "sebastian@phpunit.de", 1605 | "role": "lead" 1606 | } 1607 | ], 1608 | "description": "Simple template engine.", 1609 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1610 | "keywords": [ 1611 | "template" 1612 | ], 1613 | "time": "2015-06-21T13:50:34+00:00" 1614 | }, 1615 | { 1616 | "name": "phpunit/php-timer", 1617 | "version": "2.1.2", 1618 | "source": { 1619 | "type": "git", 1620 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1621 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 1622 | }, 1623 | "dist": { 1624 | "type": "zip", 1625 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 1626 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 1627 | "shasum": "" 1628 | }, 1629 | "require": { 1630 | "php": "^7.1" 1631 | }, 1632 | "require-dev": { 1633 | "phpunit/phpunit": "^7.0" 1634 | }, 1635 | "type": "library", 1636 | "extra": { 1637 | "branch-alias": { 1638 | "dev-master": "2.1-dev" 1639 | } 1640 | }, 1641 | "autoload": { 1642 | "classmap": [ 1643 | "src/" 1644 | ] 1645 | }, 1646 | "notification-url": "https://packagist.org/downloads/", 1647 | "license": [ 1648 | "BSD-3-Clause" 1649 | ], 1650 | "authors": [ 1651 | { 1652 | "name": "Sebastian Bergmann", 1653 | "email": "sebastian@phpunit.de", 1654 | "role": "lead" 1655 | } 1656 | ], 1657 | "description": "Utility class for timing", 1658 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1659 | "keywords": [ 1660 | "timer" 1661 | ], 1662 | "time": "2019-06-07T04:22:29+00:00" 1663 | }, 1664 | { 1665 | "name": "phpunit/php-token-stream", 1666 | "version": "3.1.1", 1667 | "source": { 1668 | "type": "git", 1669 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1670 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" 1671 | }, 1672 | "dist": { 1673 | "type": "zip", 1674 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", 1675 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", 1676 | "shasum": "" 1677 | }, 1678 | "require": { 1679 | "ext-tokenizer": "*", 1680 | "php": "^7.1" 1681 | }, 1682 | "require-dev": { 1683 | "phpunit/phpunit": "^7.0" 1684 | }, 1685 | "type": "library", 1686 | "extra": { 1687 | "branch-alias": { 1688 | "dev-master": "3.1-dev" 1689 | } 1690 | }, 1691 | "autoload": { 1692 | "classmap": [ 1693 | "src/" 1694 | ] 1695 | }, 1696 | "notification-url": "https://packagist.org/downloads/", 1697 | "license": [ 1698 | "BSD-3-Clause" 1699 | ], 1700 | "authors": [ 1701 | { 1702 | "name": "Sebastian Bergmann", 1703 | "email": "sebastian@phpunit.de" 1704 | } 1705 | ], 1706 | "description": "Wrapper around PHP's tokenizer extension.", 1707 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1708 | "keywords": [ 1709 | "tokenizer" 1710 | ], 1711 | "time": "2019-09-17T06:23:10+00:00" 1712 | }, 1713 | { 1714 | "name": "phpunit/phpunit", 1715 | "version": "8.5.1", 1716 | "source": { 1717 | "type": "git", 1718 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1719 | "reference": "7870c78da3c5e4883eaef36ae47853ebb3cb86f2" 1720 | }, 1721 | "dist": { 1722 | "type": "zip", 1723 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/7870c78da3c5e4883eaef36ae47853ebb3cb86f2", 1724 | "reference": "7870c78da3c5e4883eaef36ae47853ebb3cb86f2", 1725 | "shasum": "" 1726 | }, 1727 | "require": { 1728 | "doctrine/instantiator": "^1.2.0", 1729 | "ext-dom": "*", 1730 | "ext-json": "*", 1731 | "ext-libxml": "*", 1732 | "ext-mbstring": "*", 1733 | "ext-xml": "*", 1734 | "ext-xmlwriter": "*", 1735 | "myclabs/deep-copy": "^1.9.1", 1736 | "phar-io/manifest": "^1.0.3", 1737 | "phar-io/version": "^2.0.1", 1738 | "php": "^7.2", 1739 | "phpspec/prophecy": "^1.8.1", 1740 | "phpunit/php-code-coverage": "^7.0.7", 1741 | "phpunit/php-file-iterator": "^2.0.2", 1742 | "phpunit/php-text-template": "^1.2.1", 1743 | "phpunit/php-timer": "^2.1.2", 1744 | "sebastian/comparator": "^3.0.2", 1745 | "sebastian/diff": "^3.0.2", 1746 | "sebastian/environment": "^4.2.2", 1747 | "sebastian/exporter": "^3.1.1", 1748 | "sebastian/global-state": "^3.0.0", 1749 | "sebastian/object-enumerator": "^3.0.3", 1750 | "sebastian/resource-operations": "^2.0.1", 1751 | "sebastian/type": "^1.1.3", 1752 | "sebastian/version": "^2.0.1" 1753 | }, 1754 | "require-dev": { 1755 | "ext-pdo": "*" 1756 | }, 1757 | "suggest": { 1758 | "ext-soap": "*", 1759 | "ext-xdebug": "*", 1760 | "phpunit/php-invoker": "^2.0.0" 1761 | }, 1762 | "bin": [ 1763 | "phpunit" 1764 | ], 1765 | "type": "library", 1766 | "extra": { 1767 | "branch-alias": { 1768 | "dev-master": "8.5-dev" 1769 | } 1770 | }, 1771 | "autoload": { 1772 | "classmap": [ 1773 | "src/" 1774 | ] 1775 | }, 1776 | "notification-url": "https://packagist.org/downloads/", 1777 | "license": [ 1778 | "BSD-3-Clause" 1779 | ], 1780 | "authors": [ 1781 | { 1782 | "name": "Sebastian Bergmann", 1783 | "email": "sebastian@phpunit.de", 1784 | "role": "lead" 1785 | } 1786 | ], 1787 | "description": "The PHP Unit Testing framework.", 1788 | "homepage": "https://phpunit.de/", 1789 | "keywords": [ 1790 | "phpunit", 1791 | "testing", 1792 | "xunit" 1793 | ], 1794 | "time": "2019-12-25T14:49:39+00:00" 1795 | }, 1796 | { 1797 | "name": "psr/cache", 1798 | "version": "1.0.1", 1799 | "source": { 1800 | "type": "git", 1801 | "url": "https://github.com/php-fig/cache.git", 1802 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" 1803 | }, 1804 | "dist": { 1805 | "type": "zip", 1806 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", 1807 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", 1808 | "shasum": "" 1809 | }, 1810 | "require": { 1811 | "php": ">=5.3.0" 1812 | }, 1813 | "type": "library", 1814 | "extra": { 1815 | "branch-alias": { 1816 | "dev-master": "1.0.x-dev" 1817 | } 1818 | }, 1819 | "autoload": { 1820 | "psr-4": { 1821 | "Psr\\Cache\\": "src/" 1822 | } 1823 | }, 1824 | "notification-url": "https://packagist.org/downloads/", 1825 | "license": [ 1826 | "MIT" 1827 | ], 1828 | "authors": [ 1829 | { 1830 | "name": "PHP-FIG", 1831 | "homepage": "http://www.php-fig.org/" 1832 | } 1833 | ], 1834 | "description": "Common interface for caching libraries", 1835 | "keywords": [ 1836 | "cache", 1837 | "psr", 1838 | "psr-6" 1839 | ], 1840 | "time": "2016-08-06T20:24:11+00:00" 1841 | }, 1842 | { 1843 | "name": "psr/container", 1844 | "version": "1.0.0", 1845 | "source": { 1846 | "type": "git", 1847 | "url": "https://github.com/php-fig/container.git", 1848 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1849 | }, 1850 | "dist": { 1851 | "type": "zip", 1852 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1853 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1854 | "shasum": "" 1855 | }, 1856 | "require": { 1857 | "php": ">=5.3.0" 1858 | }, 1859 | "type": "library", 1860 | "extra": { 1861 | "branch-alias": { 1862 | "dev-master": "1.0.x-dev" 1863 | } 1864 | }, 1865 | "autoload": { 1866 | "psr-4": { 1867 | "Psr\\Container\\": "src/" 1868 | } 1869 | }, 1870 | "notification-url": "https://packagist.org/downloads/", 1871 | "license": [ 1872 | "MIT" 1873 | ], 1874 | "authors": [ 1875 | { 1876 | "name": "PHP-FIG", 1877 | "homepage": "http://www.php-fig.org/" 1878 | } 1879 | ], 1880 | "description": "Common Container Interface (PHP FIG PSR-11)", 1881 | "homepage": "https://github.com/php-fig/container", 1882 | "keywords": [ 1883 | "PSR-11", 1884 | "container", 1885 | "container-interface", 1886 | "container-interop", 1887 | "psr" 1888 | ], 1889 | "time": "2017-02-14T16:28:37+00:00" 1890 | }, 1891 | { 1892 | "name": "psr/event-dispatcher", 1893 | "version": "1.0.0", 1894 | "source": { 1895 | "type": "git", 1896 | "url": "https://github.com/php-fig/event-dispatcher.git", 1897 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1898 | }, 1899 | "dist": { 1900 | "type": "zip", 1901 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1902 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1903 | "shasum": "" 1904 | }, 1905 | "require": { 1906 | "php": ">=7.2.0" 1907 | }, 1908 | "type": "library", 1909 | "extra": { 1910 | "branch-alias": { 1911 | "dev-master": "1.0.x-dev" 1912 | } 1913 | }, 1914 | "autoload": { 1915 | "psr-4": { 1916 | "Psr\\EventDispatcher\\": "src/" 1917 | } 1918 | }, 1919 | "notification-url": "https://packagist.org/downloads/", 1920 | "license": [ 1921 | "MIT" 1922 | ], 1923 | "authors": [ 1924 | { 1925 | "name": "PHP-FIG", 1926 | "homepage": "http://www.php-fig.org/" 1927 | } 1928 | ], 1929 | "description": "Standard interfaces for event handling.", 1930 | "keywords": [ 1931 | "events", 1932 | "psr", 1933 | "psr-14" 1934 | ], 1935 | "time": "2019-01-08T18:20:26+00:00" 1936 | }, 1937 | { 1938 | "name": "psr/log", 1939 | "version": "1.1.2", 1940 | "source": { 1941 | "type": "git", 1942 | "url": "https://github.com/php-fig/log.git", 1943 | "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" 1944 | }, 1945 | "dist": { 1946 | "type": "zip", 1947 | "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", 1948 | "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", 1949 | "shasum": "" 1950 | }, 1951 | "require": { 1952 | "php": ">=5.3.0" 1953 | }, 1954 | "type": "library", 1955 | "extra": { 1956 | "branch-alias": { 1957 | "dev-master": "1.1.x-dev" 1958 | } 1959 | }, 1960 | "autoload": { 1961 | "psr-4": { 1962 | "Psr\\Log\\": "Psr/Log/" 1963 | } 1964 | }, 1965 | "notification-url": "https://packagist.org/downloads/", 1966 | "license": [ 1967 | "MIT" 1968 | ], 1969 | "authors": [ 1970 | { 1971 | "name": "PHP-FIG", 1972 | "homepage": "http://www.php-fig.org/" 1973 | } 1974 | ], 1975 | "description": "Common interface for logging libraries", 1976 | "homepage": "https://github.com/php-fig/log", 1977 | "keywords": [ 1978 | "log", 1979 | "psr", 1980 | "psr-3" 1981 | ], 1982 | "time": "2019-11-01T11:05:21+00:00" 1983 | }, 1984 | { 1985 | "name": "sebastian/code-unit-reverse-lookup", 1986 | "version": "1.0.1", 1987 | "source": { 1988 | "type": "git", 1989 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1990 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1991 | }, 1992 | "dist": { 1993 | "type": "zip", 1994 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1995 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1996 | "shasum": "" 1997 | }, 1998 | "require": { 1999 | "php": "^5.6 || ^7.0" 2000 | }, 2001 | "require-dev": { 2002 | "phpunit/phpunit": "^5.7 || ^6.0" 2003 | }, 2004 | "type": "library", 2005 | "extra": { 2006 | "branch-alias": { 2007 | "dev-master": "1.0.x-dev" 2008 | } 2009 | }, 2010 | "autoload": { 2011 | "classmap": [ 2012 | "src/" 2013 | ] 2014 | }, 2015 | "notification-url": "https://packagist.org/downloads/", 2016 | "license": [ 2017 | "BSD-3-Clause" 2018 | ], 2019 | "authors": [ 2020 | { 2021 | "name": "Sebastian Bergmann", 2022 | "email": "sebastian@phpunit.de" 2023 | } 2024 | ], 2025 | "description": "Looks up which function or method a line of code belongs to", 2026 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 2027 | "time": "2017-03-04T06:30:41+00:00" 2028 | }, 2029 | { 2030 | "name": "sebastian/comparator", 2031 | "version": "3.0.2", 2032 | "source": { 2033 | "type": "git", 2034 | "url": "https://github.com/sebastianbergmann/comparator.git", 2035 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 2036 | }, 2037 | "dist": { 2038 | "type": "zip", 2039 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 2040 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 2041 | "shasum": "" 2042 | }, 2043 | "require": { 2044 | "php": "^7.1", 2045 | "sebastian/diff": "^3.0", 2046 | "sebastian/exporter": "^3.1" 2047 | }, 2048 | "require-dev": { 2049 | "phpunit/phpunit": "^7.1" 2050 | }, 2051 | "type": "library", 2052 | "extra": { 2053 | "branch-alias": { 2054 | "dev-master": "3.0-dev" 2055 | } 2056 | }, 2057 | "autoload": { 2058 | "classmap": [ 2059 | "src/" 2060 | ] 2061 | }, 2062 | "notification-url": "https://packagist.org/downloads/", 2063 | "license": [ 2064 | "BSD-3-Clause" 2065 | ], 2066 | "authors": [ 2067 | { 2068 | "name": "Jeff Welch", 2069 | "email": "whatthejeff@gmail.com" 2070 | }, 2071 | { 2072 | "name": "Volker Dusch", 2073 | "email": "github@wallbash.com" 2074 | }, 2075 | { 2076 | "name": "Bernhard Schussek", 2077 | "email": "bschussek@2bepublished.at" 2078 | }, 2079 | { 2080 | "name": "Sebastian Bergmann", 2081 | "email": "sebastian@phpunit.de" 2082 | } 2083 | ], 2084 | "description": "Provides the functionality to compare PHP values for equality", 2085 | "homepage": "https://github.com/sebastianbergmann/comparator", 2086 | "keywords": [ 2087 | "comparator", 2088 | "compare", 2089 | "equality" 2090 | ], 2091 | "time": "2018-07-12T15:12:46+00:00" 2092 | }, 2093 | { 2094 | "name": "sebastian/diff", 2095 | "version": "3.0.2", 2096 | "source": { 2097 | "type": "git", 2098 | "url": "https://github.com/sebastianbergmann/diff.git", 2099 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 2100 | }, 2101 | "dist": { 2102 | "type": "zip", 2103 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 2104 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 2105 | "shasum": "" 2106 | }, 2107 | "require": { 2108 | "php": "^7.1" 2109 | }, 2110 | "require-dev": { 2111 | "phpunit/phpunit": "^7.5 || ^8.0", 2112 | "symfony/process": "^2 || ^3.3 || ^4" 2113 | }, 2114 | "type": "library", 2115 | "extra": { 2116 | "branch-alias": { 2117 | "dev-master": "3.0-dev" 2118 | } 2119 | }, 2120 | "autoload": { 2121 | "classmap": [ 2122 | "src/" 2123 | ] 2124 | }, 2125 | "notification-url": "https://packagist.org/downloads/", 2126 | "license": [ 2127 | "BSD-3-Clause" 2128 | ], 2129 | "authors": [ 2130 | { 2131 | "name": "Kore Nordmann", 2132 | "email": "mail@kore-nordmann.de" 2133 | }, 2134 | { 2135 | "name": "Sebastian Bergmann", 2136 | "email": "sebastian@phpunit.de" 2137 | } 2138 | ], 2139 | "description": "Diff implementation", 2140 | "homepage": "https://github.com/sebastianbergmann/diff", 2141 | "keywords": [ 2142 | "diff", 2143 | "udiff", 2144 | "unidiff", 2145 | "unified diff" 2146 | ], 2147 | "time": "2019-02-04T06:01:07+00:00" 2148 | }, 2149 | { 2150 | "name": "sebastian/environment", 2151 | "version": "4.2.3", 2152 | "source": { 2153 | "type": "git", 2154 | "url": "https://github.com/sebastianbergmann/environment.git", 2155 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" 2156 | }, 2157 | "dist": { 2158 | "type": "zip", 2159 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 2160 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 2161 | "shasum": "" 2162 | }, 2163 | "require": { 2164 | "php": "^7.1" 2165 | }, 2166 | "require-dev": { 2167 | "phpunit/phpunit": "^7.5" 2168 | }, 2169 | "suggest": { 2170 | "ext-posix": "*" 2171 | }, 2172 | "type": "library", 2173 | "extra": { 2174 | "branch-alias": { 2175 | "dev-master": "4.2-dev" 2176 | } 2177 | }, 2178 | "autoload": { 2179 | "classmap": [ 2180 | "src/" 2181 | ] 2182 | }, 2183 | "notification-url": "https://packagist.org/downloads/", 2184 | "license": [ 2185 | "BSD-3-Clause" 2186 | ], 2187 | "authors": [ 2188 | { 2189 | "name": "Sebastian Bergmann", 2190 | "email": "sebastian@phpunit.de" 2191 | } 2192 | ], 2193 | "description": "Provides functionality to handle HHVM/PHP environments", 2194 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2195 | "keywords": [ 2196 | "Xdebug", 2197 | "environment", 2198 | "hhvm" 2199 | ], 2200 | "time": "2019-11-20T08:46:58+00:00" 2201 | }, 2202 | { 2203 | "name": "sebastian/exporter", 2204 | "version": "3.1.2", 2205 | "source": { 2206 | "type": "git", 2207 | "url": "https://github.com/sebastianbergmann/exporter.git", 2208 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" 2209 | }, 2210 | "dist": { 2211 | "type": "zip", 2212 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", 2213 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", 2214 | "shasum": "" 2215 | }, 2216 | "require": { 2217 | "php": "^7.0", 2218 | "sebastian/recursion-context": "^3.0" 2219 | }, 2220 | "require-dev": { 2221 | "ext-mbstring": "*", 2222 | "phpunit/phpunit": "^6.0" 2223 | }, 2224 | "type": "library", 2225 | "extra": { 2226 | "branch-alias": { 2227 | "dev-master": "3.1.x-dev" 2228 | } 2229 | }, 2230 | "autoload": { 2231 | "classmap": [ 2232 | "src/" 2233 | ] 2234 | }, 2235 | "notification-url": "https://packagist.org/downloads/", 2236 | "license": [ 2237 | "BSD-3-Clause" 2238 | ], 2239 | "authors": [ 2240 | { 2241 | "name": "Sebastian Bergmann", 2242 | "email": "sebastian@phpunit.de" 2243 | }, 2244 | { 2245 | "name": "Jeff Welch", 2246 | "email": "whatthejeff@gmail.com" 2247 | }, 2248 | { 2249 | "name": "Volker Dusch", 2250 | "email": "github@wallbash.com" 2251 | }, 2252 | { 2253 | "name": "Adam Harvey", 2254 | "email": "aharvey@php.net" 2255 | }, 2256 | { 2257 | "name": "Bernhard Schussek", 2258 | "email": "bschussek@gmail.com" 2259 | } 2260 | ], 2261 | "description": "Provides the functionality to export PHP variables for visualization", 2262 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2263 | "keywords": [ 2264 | "export", 2265 | "exporter" 2266 | ], 2267 | "time": "2019-09-14T09:02:43+00:00" 2268 | }, 2269 | { 2270 | "name": "sebastian/global-state", 2271 | "version": "3.0.0", 2272 | "source": { 2273 | "type": "git", 2274 | "url": "https://github.com/sebastianbergmann/global-state.git", 2275 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" 2276 | }, 2277 | "dist": { 2278 | "type": "zip", 2279 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 2280 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 2281 | "shasum": "" 2282 | }, 2283 | "require": { 2284 | "php": "^7.2", 2285 | "sebastian/object-reflector": "^1.1.1", 2286 | "sebastian/recursion-context": "^3.0" 2287 | }, 2288 | "require-dev": { 2289 | "ext-dom": "*", 2290 | "phpunit/phpunit": "^8.0" 2291 | }, 2292 | "suggest": { 2293 | "ext-uopz": "*" 2294 | }, 2295 | "type": "library", 2296 | "extra": { 2297 | "branch-alias": { 2298 | "dev-master": "3.0-dev" 2299 | } 2300 | }, 2301 | "autoload": { 2302 | "classmap": [ 2303 | "src/" 2304 | ] 2305 | }, 2306 | "notification-url": "https://packagist.org/downloads/", 2307 | "license": [ 2308 | "BSD-3-Clause" 2309 | ], 2310 | "authors": [ 2311 | { 2312 | "name": "Sebastian Bergmann", 2313 | "email": "sebastian@phpunit.de" 2314 | } 2315 | ], 2316 | "description": "Snapshotting of global state", 2317 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2318 | "keywords": [ 2319 | "global state" 2320 | ], 2321 | "time": "2019-02-01T05:30:01+00:00" 2322 | }, 2323 | { 2324 | "name": "sebastian/object-enumerator", 2325 | "version": "3.0.3", 2326 | "source": { 2327 | "type": "git", 2328 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2329 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 2330 | }, 2331 | "dist": { 2332 | "type": "zip", 2333 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2334 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2335 | "shasum": "" 2336 | }, 2337 | "require": { 2338 | "php": "^7.0", 2339 | "sebastian/object-reflector": "^1.1.1", 2340 | "sebastian/recursion-context": "^3.0" 2341 | }, 2342 | "require-dev": { 2343 | "phpunit/phpunit": "^6.0" 2344 | }, 2345 | "type": "library", 2346 | "extra": { 2347 | "branch-alias": { 2348 | "dev-master": "3.0.x-dev" 2349 | } 2350 | }, 2351 | "autoload": { 2352 | "classmap": [ 2353 | "src/" 2354 | ] 2355 | }, 2356 | "notification-url": "https://packagist.org/downloads/", 2357 | "license": [ 2358 | "BSD-3-Clause" 2359 | ], 2360 | "authors": [ 2361 | { 2362 | "name": "Sebastian Bergmann", 2363 | "email": "sebastian@phpunit.de" 2364 | } 2365 | ], 2366 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2367 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2368 | "time": "2017-08-03T12:35:26+00:00" 2369 | }, 2370 | { 2371 | "name": "sebastian/object-reflector", 2372 | "version": "1.1.1", 2373 | "source": { 2374 | "type": "git", 2375 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2376 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 2377 | }, 2378 | "dist": { 2379 | "type": "zip", 2380 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 2381 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 2382 | "shasum": "" 2383 | }, 2384 | "require": { 2385 | "php": "^7.0" 2386 | }, 2387 | "require-dev": { 2388 | "phpunit/phpunit": "^6.0" 2389 | }, 2390 | "type": "library", 2391 | "extra": { 2392 | "branch-alias": { 2393 | "dev-master": "1.1-dev" 2394 | } 2395 | }, 2396 | "autoload": { 2397 | "classmap": [ 2398 | "src/" 2399 | ] 2400 | }, 2401 | "notification-url": "https://packagist.org/downloads/", 2402 | "license": [ 2403 | "BSD-3-Clause" 2404 | ], 2405 | "authors": [ 2406 | { 2407 | "name": "Sebastian Bergmann", 2408 | "email": "sebastian@phpunit.de" 2409 | } 2410 | ], 2411 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2412 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2413 | "time": "2017-03-29T09:07:27+00:00" 2414 | }, 2415 | { 2416 | "name": "sebastian/recursion-context", 2417 | "version": "3.0.0", 2418 | "source": { 2419 | "type": "git", 2420 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2421 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 2422 | }, 2423 | "dist": { 2424 | "type": "zip", 2425 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2426 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2427 | "shasum": "" 2428 | }, 2429 | "require": { 2430 | "php": "^7.0" 2431 | }, 2432 | "require-dev": { 2433 | "phpunit/phpunit": "^6.0" 2434 | }, 2435 | "type": "library", 2436 | "extra": { 2437 | "branch-alias": { 2438 | "dev-master": "3.0.x-dev" 2439 | } 2440 | }, 2441 | "autoload": { 2442 | "classmap": [ 2443 | "src/" 2444 | ] 2445 | }, 2446 | "notification-url": "https://packagist.org/downloads/", 2447 | "license": [ 2448 | "BSD-3-Clause" 2449 | ], 2450 | "authors": [ 2451 | { 2452 | "name": "Jeff Welch", 2453 | "email": "whatthejeff@gmail.com" 2454 | }, 2455 | { 2456 | "name": "Sebastian Bergmann", 2457 | "email": "sebastian@phpunit.de" 2458 | }, 2459 | { 2460 | "name": "Adam Harvey", 2461 | "email": "aharvey@php.net" 2462 | } 2463 | ], 2464 | "description": "Provides functionality to recursively process PHP variables", 2465 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2466 | "time": "2017-03-03T06:23:57+00:00" 2467 | }, 2468 | { 2469 | "name": "sebastian/resource-operations", 2470 | "version": "2.0.1", 2471 | "source": { 2472 | "type": "git", 2473 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2474 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 2475 | }, 2476 | "dist": { 2477 | "type": "zip", 2478 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2479 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2480 | "shasum": "" 2481 | }, 2482 | "require": { 2483 | "php": "^7.1" 2484 | }, 2485 | "type": "library", 2486 | "extra": { 2487 | "branch-alias": { 2488 | "dev-master": "2.0-dev" 2489 | } 2490 | }, 2491 | "autoload": { 2492 | "classmap": [ 2493 | "src/" 2494 | ] 2495 | }, 2496 | "notification-url": "https://packagist.org/downloads/", 2497 | "license": [ 2498 | "BSD-3-Clause" 2499 | ], 2500 | "authors": [ 2501 | { 2502 | "name": "Sebastian Bergmann", 2503 | "email": "sebastian@phpunit.de" 2504 | } 2505 | ], 2506 | "description": "Provides a list of PHP built-in functions that operate on resources", 2507 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2508 | "time": "2018-10-04T04:07:39+00:00" 2509 | }, 2510 | { 2511 | "name": "sebastian/type", 2512 | "version": "1.1.3", 2513 | "source": { 2514 | "type": "git", 2515 | "url": "https://github.com/sebastianbergmann/type.git", 2516 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" 2517 | }, 2518 | "dist": { 2519 | "type": "zip", 2520 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", 2521 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", 2522 | "shasum": "" 2523 | }, 2524 | "require": { 2525 | "php": "^7.2" 2526 | }, 2527 | "require-dev": { 2528 | "phpunit/phpunit": "^8.2" 2529 | }, 2530 | "type": "library", 2531 | "extra": { 2532 | "branch-alias": { 2533 | "dev-master": "1.1-dev" 2534 | } 2535 | }, 2536 | "autoload": { 2537 | "classmap": [ 2538 | "src/" 2539 | ] 2540 | }, 2541 | "notification-url": "https://packagist.org/downloads/", 2542 | "license": [ 2543 | "BSD-3-Clause" 2544 | ], 2545 | "authors": [ 2546 | { 2547 | "name": "Sebastian Bergmann", 2548 | "email": "sebastian@phpunit.de", 2549 | "role": "lead" 2550 | } 2551 | ], 2552 | "description": "Collection of value objects that represent the types of the PHP type system", 2553 | "homepage": "https://github.com/sebastianbergmann/type", 2554 | "time": "2019-07-02T08:10:15+00:00" 2555 | }, 2556 | { 2557 | "name": "sebastian/version", 2558 | "version": "2.0.1", 2559 | "source": { 2560 | "type": "git", 2561 | "url": "https://github.com/sebastianbergmann/version.git", 2562 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 2563 | }, 2564 | "dist": { 2565 | "type": "zip", 2566 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 2567 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 2568 | "shasum": "" 2569 | }, 2570 | "require": { 2571 | "php": ">=5.6" 2572 | }, 2573 | "type": "library", 2574 | "extra": { 2575 | "branch-alias": { 2576 | "dev-master": "2.0.x-dev" 2577 | } 2578 | }, 2579 | "autoload": { 2580 | "classmap": [ 2581 | "src/" 2582 | ] 2583 | }, 2584 | "notification-url": "https://packagist.org/downloads/", 2585 | "license": [ 2586 | "BSD-3-Clause" 2587 | ], 2588 | "authors": [ 2589 | { 2590 | "name": "Sebastian Bergmann", 2591 | "email": "sebastian@phpunit.de", 2592 | "role": "lead" 2593 | } 2594 | ], 2595 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2596 | "homepage": "https://github.com/sebastianbergmann/version", 2597 | "time": "2016-10-03T07:35:21+00:00" 2598 | }, 2599 | { 2600 | "name": "symfony/browser-kit", 2601 | "version": "v5.0.2", 2602 | "source": { 2603 | "type": "git", 2604 | "url": "https://github.com/symfony/browser-kit.git", 2605 | "reference": "a195f83b0ba20e622a5baa726af96826b8f5616b" 2606 | }, 2607 | "dist": { 2608 | "type": "zip", 2609 | "url": "https://api.github.com/repos/symfony/browser-kit/zipball/a195f83b0ba20e622a5baa726af96826b8f5616b", 2610 | "reference": "a195f83b0ba20e622a5baa726af96826b8f5616b", 2611 | "shasum": "" 2612 | }, 2613 | "require": { 2614 | "php": "^7.2.5", 2615 | "symfony/dom-crawler": "^4.4|^5.0" 2616 | }, 2617 | "require-dev": { 2618 | "symfony/css-selector": "^4.4|^5.0", 2619 | "symfony/http-client": "^4.4|^5.0", 2620 | "symfony/mime": "^4.4|^5.0", 2621 | "symfony/process": "^4.4|^5.0" 2622 | }, 2623 | "suggest": { 2624 | "symfony/process": "" 2625 | }, 2626 | "type": "library", 2627 | "extra": { 2628 | "branch-alias": { 2629 | "dev-master": "5.0-dev" 2630 | } 2631 | }, 2632 | "autoload": { 2633 | "psr-4": { 2634 | "Symfony\\Component\\BrowserKit\\": "" 2635 | }, 2636 | "exclude-from-classmap": [ 2637 | "/Tests/" 2638 | ] 2639 | }, 2640 | "notification-url": "https://packagist.org/downloads/", 2641 | "license": [ 2642 | "MIT" 2643 | ], 2644 | "authors": [ 2645 | { 2646 | "name": "Fabien Potencier", 2647 | "email": "fabien@symfony.com" 2648 | }, 2649 | { 2650 | "name": "Symfony Community", 2651 | "homepage": "https://symfony.com/contributors" 2652 | } 2653 | ], 2654 | "description": "Symfony BrowserKit Component", 2655 | "homepage": "https://symfony.com", 2656 | "time": "2019-11-18T17:27:11+00:00" 2657 | }, 2658 | { 2659 | "name": "symfony/cache", 2660 | "version": "v5.0.2", 2661 | "source": { 2662 | "type": "git", 2663 | "url": "https://github.com/symfony/cache.git", 2664 | "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9" 2665 | }, 2666 | "dist": { 2667 | "type": "zip", 2668 | "url": "https://api.github.com/repos/symfony/cache/zipball/6e8d978878ae5de705ec9fabbb6011cc18776bc9", 2669 | "reference": "6e8d978878ae5de705ec9fabbb6011cc18776bc9", 2670 | "shasum": "" 2671 | }, 2672 | "require": { 2673 | "php": "^7.2.5", 2674 | "psr/cache": "~1.0", 2675 | "psr/log": "~1.0", 2676 | "symfony/cache-contracts": "^1.1.7|^2", 2677 | "symfony/service-contracts": "^1.1|^2", 2678 | "symfony/var-exporter": "^4.4|^5.0" 2679 | }, 2680 | "conflict": { 2681 | "doctrine/dbal": "<2.5", 2682 | "symfony/dependency-injection": "<4.4", 2683 | "symfony/http-kernel": "<4.4", 2684 | "symfony/var-dumper": "<4.4" 2685 | }, 2686 | "provide": { 2687 | "psr/cache-implementation": "1.0", 2688 | "psr/simple-cache-implementation": "1.0", 2689 | "symfony/cache-implementation": "1.0" 2690 | }, 2691 | "require-dev": { 2692 | "cache/integration-tests": "dev-master", 2693 | "doctrine/cache": "~1.6", 2694 | "doctrine/dbal": "~2.5", 2695 | "predis/predis": "~1.1", 2696 | "psr/simple-cache": "^1.0", 2697 | "symfony/config": "^4.4|^5.0", 2698 | "symfony/dependency-injection": "^4.4|^5.0", 2699 | "symfony/var-dumper": "^4.4|^5.0" 2700 | }, 2701 | "type": "library", 2702 | "extra": { 2703 | "branch-alias": { 2704 | "dev-master": "5.0-dev" 2705 | } 2706 | }, 2707 | "autoload": { 2708 | "psr-4": { 2709 | "Symfony\\Component\\Cache\\": "" 2710 | }, 2711 | "exclude-from-classmap": [ 2712 | "/Tests/" 2713 | ] 2714 | }, 2715 | "notification-url": "https://packagist.org/downloads/", 2716 | "license": [ 2717 | "MIT" 2718 | ], 2719 | "authors": [ 2720 | { 2721 | "name": "Nicolas Grekas", 2722 | "email": "p@tchwork.com" 2723 | }, 2724 | { 2725 | "name": "Symfony Community", 2726 | "homepage": "https://symfony.com/contributors" 2727 | } 2728 | ], 2729 | "description": "Symfony Cache component with PSR-6, PSR-16, and tags", 2730 | "homepage": "https://symfony.com", 2731 | "keywords": [ 2732 | "caching", 2733 | "psr6" 2734 | ], 2735 | "time": "2019-12-12T13:03:32+00:00" 2736 | }, 2737 | { 2738 | "name": "symfony/cache-contracts", 2739 | "version": "v2.0.1", 2740 | "source": { 2741 | "type": "git", 2742 | "url": "https://github.com/symfony/cache-contracts.git", 2743 | "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16" 2744 | }, 2745 | "dist": { 2746 | "type": "zip", 2747 | "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", 2748 | "reference": "23ed8bfc1a4115feca942cb5f1aacdf3dcdf3c16", 2749 | "shasum": "" 2750 | }, 2751 | "require": { 2752 | "php": "^7.2.5", 2753 | "psr/cache": "^1.0" 2754 | }, 2755 | "suggest": { 2756 | "symfony/cache-implementation": "" 2757 | }, 2758 | "type": "library", 2759 | "extra": { 2760 | "branch-alias": { 2761 | "dev-master": "2.0-dev" 2762 | } 2763 | }, 2764 | "autoload": { 2765 | "psr-4": { 2766 | "Symfony\\Contracts\\Cache\\": "" 2767 | } 2768 | }, 2769 | "notification-url": "https://packagist.org/downloads/", 2770 | "license": [ 2771 | "MIT" 2772 | ], 2773 | "authors": [ 2774 | { 2775 | "name": "Nicolas Grekas", 2776 | "email": "p@tchwork.com" 2777 | }, 2778 | { 2779 | "name": "Symfony Community", 2780 | "homepage": "https://symfony.com/contributors" 2781 | } 2782 | ], 2783 | "description": "Generic abstractions related to caching", 2784 | "homepage": "https://symfony.com", 2785 | "keywords": [ 2786 | "abstractions", 2787 | "contracts", 2788 | "decoupling", 2789 | "interfaces", 2790 | "interoperability", 2791 | "standards" 2792 | ], 2793 | "time": "2019-11-18T17:27:11+00:00" 2794 | }, 2795 | { 2796 | "name": "symfony/config", 2797 | "version": "v5.0.2", 2798 | "source": { 2799 | "type": "git", 2800 | "url": "https://github.com/symfony/config.git", 2801 | "reference": "7f930484966350906185ba0a604728f7898b7ba0" 2802 | }, 2803 | "dist": { 2804 | "type": "zip", 2805 | "url": "https://api.github.com/repos/symfony/config/zipball/7f930484966350906185ba0a604728f7898b7ba0", 2806 | "reference": "7f930484966350906185ba0a604728f7898b7ba0", 2807 | "shasum": "" 2808 | }, 2809 | "require": { 2810 | "php": "^7.2.5", 2811 | "symfony/filesystem": "^4.4|^5.0", 2812 | "symfony/polyfill-ctype": "~1.8" 2813 | }, 2814 | "conflict": { 2815 | "symfony/finder": "<4.4" 2816 | }, 2817 | "require-dev": { 2818 | "symfony/event-dispatcher": "^4.4|^5.0", 2819 | "symfony/finder": "^4.4|^5.0", 2820 | "symfony/messenger": "^4.4|^5.0", 2821 | "symfony/service-contracts": "^1.1|^2", 2822 | "symfony/yaml": "^4.4|^5.0" 2823 | }, 2824 | "suggest": { 2825 | "symfony/yaml": "To use the yaml reference dumper" 2826 | }, 2827 | "type": "library", 2828 | "extra": { 2829 | "branch-alias": { 2830 | "dev-master": "5.0-dev" 2831 | } 2832 | }, 2833 | "autoload": { 2834 | "psr-4": { 2835 | "Symfony\\Component\\Config\\": "" 2836 | }, 2837 | "exclude-from-classmap": [ 2838 | "/Tests/" 2839 | ] 2840 | }, 2841 | "notification-url": "https://packagist.org/downloads/", 2842 | "license": [ 2843 | "MIT" 2844 | ], 2845 | "authors": [ 2846 | { 2847 | "name": "Fabien Potencier", 2848 | "email": "fabien@symfony.com" 2849 | }, 2850 | { 2851 | "name": "Symfony Community", 2852 | "homepage": "https://symfony.com/contributors" 2853 | } 2854 | ], 2855 | "description": "Symfony Config Component", 2856 | "homepage": "https://symfony.com", 2857 | "time": "2019-12-18T13:50:31+00:00" 2858 | }, 2859 | { 2860 | "name": "symfony/console", 2861 | "version": "v5.0.2", 2862 | "source": { 2863 | "type": "git", 2864 | "url": "https://github.com/symfony/console.git", 2865 | "reference": "fe6e3cd889ca64172d7a742a2eb058541404ef47" 2866 | }, 2867 | "dist": { 2868 | "type": "zip", 2869 | "url": "https://api.github.com/repos/symfony/console/zipball/fe6e3cd889ca64172d7a742a2eb058541404ef47", 2870 | "reference": "fe6e3cd889ca64172d7a742a2eb058541404ef47", 2871 | "shasum": "" 2872 | }, 2873 | "require": { 2874 | "php": "^7.2.5", 2875 | "symfony/polyfill-mbstring": "~1.0", 2876 | "symfony/polyfill-php73": "^1.8", 2877 | "symfony/service-contracts": "^1.1|^2" 2878 | }, 2879 | "conflict": { 2880 | "symfony/dependency-injection": "<4.4", 2881 | "symfony/event-dispatcher": "<4.4", 2882 | "symfony/lock": "<4.4", 2883 | "symfony/process": "<4.4" 2884 | }, 2885 | "provide": { 2886 | "psr/log-implementation": "1.0" 2887 | }, 2888 | "require-dev": { 2889 | "psr/log": "~1.0", 2890 | "symfony/config": "^4.4|^5.0", 2891 | "symfony/dependency-injection": "^4.4|^5.0", 2892 | "symfony/event-dispatcher": "^4.4|^5.0", 2893 | "symfony/lock": "^4.4|^5.0", 2894 | "symfony/process": "^4.4|^5.0", 2895 | "symfony/var-dumper": "^4.4|^5.0" 2896 | }, 2897 | "suggest": { 2898 | "psr/log": "For using the console logger", 2899 | "symfony/event-dispatcher": "", 2900 | "symfony/lock": "", 2901 | "symfony/process": "" 2902 | }, 2903 | "type": "library", 2904 | "extra": { 2905 | "branch-alias": { 2906 | "dev-master": "5.0-dev" 2907 | } 2908 | }, 2909 | "autoload": { 2910 | "psr-4": { 2911 | "Symfony\\Component\\Console\\": "" 2912 | }, 2913 | "exclude-from-classmap": [ 2914 | "/Tests/" 2915 | ] 2916 | }, 2917 | "notification-url": "https://packagist.org/downloads/", 2918 | "license": [ 2919 | "MIT" 2920 | ], 2921 | "authors": [ 2922 | { 2923 | "name": "Fabien Potencier", 2924 | "email": "fabien@symfony.com" 2925 | }, 2926 | { 2927 | "name": "Symfony Community", 2928 | "homepage": "https://symfony.com/contributors" 2929 | } 2930 | ], 2931 | "description": "Symfony Console Component", 2932 | "homepage": "https://symfony.com", 2933 | "time": "2019-12-17T13:20:22+00:00" 2934 | }, 2935 | { 2936 | "name": "symfony/dependency-injection", 2937 | "version": "v5.0.2", 2938 | "source": { 2939 | "type": "git", 2940 | "url": "https://github.com/symfony/dependency-injection.git", 2941 | "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2" 2942 | }, 2943 | "dist": { 2944 | "type": "zip", 2945 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f9dbfbf487d08f60b1c83220edcd16559d1e40a2", 2946 | "reference": "f9dbfbf487d08f60b1c83220edcd16559d1e40a2", 2947 | "shasum": "" 2948 | }, 2949 | "require": { 2950 | "php": "^7.2.5", 2951 | "psr/container": "^1.0", 2952 | "symfony/service-contracts": "^1.1.6|^2" 2953 | }, 2954 | "conflict": { 2955 | "symfony/config": "<5.0", 2956 | "symfony/finder": "<4.4", 2957 | "symfony/proxy-manager-bridge": "<4.4", 2958 | "symfony/yaml": "<4.4" 2959 | }, 2960 | "provide": { 2961 | "psr/container-implementation": "1.0", 2962 | "symfony/service-implementation": "1.0" 2963 | }, 2964 | "require-dev": { 2965 | "symfony/config": "^5.0", 2966 | "symfony/expression-language": "^4.4|^5.0", 2967 | "symfony/yaml": "^4.4|^5.0" 2968 | }, 2969 | "suggest": { 2970 | "symfony/config": "", 2971 | "symfony/expression-language": "For using expressions in service container configuration", 2972 | "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", 2973 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", 2974 | "symfony/yaml": "" 2975 | }, 2976 | "type": "library", 2977 | "extra": { 2978 | "branch-alias": { 2979 | "dev-master": "5.0-dev" 2980 | } 2981 | }, 2982 | "autoload": { 2983 | "psr-4": { 2984 | "Symfony\\Component\\DependencyInjection\\": "" 2985 | }, 2986 | "exclude-from-classmap": [ 2987 | "/Tests/" 2988 | ] 2989 | }, 2990 | "notification-url": "https://packagist.org/downloads/", 2991 | "license": [ 2992 | "MIT" 2993 | ], 2994 | "authors": [ 2995 | { 2996 | "name": "Fabien Potencier", 2997 | "email": "fabien@symfony.com" 2998 | }, 2999 | { 3000 | "name": "Symfony Community", 3001 | "homepage": "https://symfony.com/contributors" 3002 | } 3003 | ], 3004 | "description": "Symfony DependencyInjection Component", 3005 | "homepage": "https://symfony.com", 3006 | "time": "2019-12-19T16:01:11+00:00" 3007 | }, 3008 | { 3009 | "name": "symfony/doctrine-bridge", 3010 | "version": "v5.0.2", 3011 | "source": { 3012 | "type": "git", 3013 | "url": "https://github.com/symfony/doctrine-bridge.git", 3014 | "reference": "0bdb2d31741cacacb95130d28fbac939c4d574f2" 3015 | }, 3016 | "dist": { 3017 | "type": "zip", 3018 | "url": "https://api.github.com/repos/symfony/doctrine-bridge/zipball/0bdb2d31741cacacb95130d28fbac939c4d574f2", 3019 | "reference": "0bdb2d31741cacacb95130d28fbac939c4d574f2", 3020 | "shasum": "" 3021 | }, 3022 | "require": { 3023 | "doctrine/event-manager": "~1.0", 3024 | "doctrine/persistence": "^1.3", 3025 | "php": "^7.2.5", 3026 | "symfony/polyfill-ctype": "~1.8", 3027 | "symfony/polyfill-mbstring": "~1.0", 3028 | "symfony/service-contracts": "^1.1|^2" 3029 | }, 3030 | "conflict": { 3031 | "phpunit/phpunit": "<5.4.3", 3032 | "symfony/dependency-injection": "<4.4", 3033 | "symfony/form": "<5", 3034 | "symfony/http-kernel": "<5", 3035 | "symfony/messenger": "<4.4", 3036 | "symfony/property-info": "<5", 3037 | "symfony/security-bundle": "<5", 3038 | "symfony/security-core": "<5", 3039 | "symfony/validator": "<5.0.2" 3040 | }, 3041 | "require-dev": { 3042 | "doctrine/annotations": "~1.7", 3043 | "doctrine/cache": "~1.6", 3044 | "doctrine/collections": "~1.0", 3045 | "doctrine/data-fixtures": "1.0.*", 3046 | "doctrine/dbal": "~2.4", 3047 | "doctrine/orm": "^2.6.3", 3048 | "doctrine/reflection": "~1.0", 3049 | "symfony/config": "^4.4|^5.0", 3050 | "symfony/dependency-injection": "^4.4|^5.0", 3051 | "symfony/expression-language": "^4.4|^5.0", 3052 | "symfony/form": "^5.0", 3053 | "symfony/http-kernel": "^5.0", 3054 | "symfony/messenger": "^4.4|^5.0", 3055 | "symfony/property-access": "^4.4|^5.0", 3056 | "symfony/property-info": "^5.0", 3057 | "symfony/proxy-manager-bridge": "^4.4|^5.0", 3058 | "symfony/security-core": "^5.0", 3059 | "symfony/stopwatch": "^4.4|^5.0", 3060 | "symfony/translation": "^4.4|^5.0", 3061 | "symfony/validator": "^5.0.2", 3062 | "symfony/var-dumper": "^4.4|^5.0" 3063 | }, 3064 | "suggest": { 3065 | "doctrine/data-fixtures": "", 3066 | "doctrine/dbal": "", 3067 | "doctrine/orm": "", 3068 | "symfony/form": "", 3069 | "symfony/property-info": "", 3070 | "symfony/validator": "" 3071 | }, 3072 | "type": "symfony-bridge", 3073 | "extra": { 3074 | "branch-alias": { 3075 | "dev-master": "5.0-dev" 3076 | } 3077 | }, 3078 | "autoload": { 3079 | "psr-4": { 3080 | "Symfony\\Bridge\\Doctrine\\": "" 3081 | }, 3082 | "exclude-from-classmap": [ 3083 | "/Tests/" 3084 | ] 3085 | }, 3086 | "notification-url": "https://packagist.org/downloads/", 3087 | "license": [ 3088 | "MIT" 3089 | ], 3090 | "authors": [ 3091 | { 3092 | "name": "Fabien Potencier", 3093 | "email": "fabien@symfony.com" 3094 | }, 3095 | { 3096 | "name": "Symfony Community", 3097 | "homepage": "https://symfony.com/contributors" 3098 | } 3099 | ], 3100 | "description": "Symfony Doctrine Bridge", 3101 | "homepage": "https://symfony.com", 3102 | "time": "2019-12-19T12:10:29+00:00" 3103 | }, 3104 | { 3105 | "name": "symfony/dom-crawler", 3106 | "version": "v5.0.2", 3107 | "source": { 3108 | "type": "git", 3109 | "url": "https://github.com/symfony/dom-crawler.git", 3110 | "reference": "0a0a73a0836926898b6fcd6817fe697487a73d97" 3111 | }, 3112 | "dist": { 3113 | "type": "zip", 3114 | "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/0a0a73a0836926898b6fcd6817fe697487a73d97", 3115 | "reference": "0a0a73a0836926898b6fcd6817fe697487a73d97", 3116 | "shasum": "" 3117 | }, 3118 | "require": { 3119 | "php": "^7.2.5", 3120 | "symfony/polyfill-ctype": "~1.8", 3121 | "symfony/polyfill-mbstring": "~1.0" 3122 | }, 3123 | "conflict": { 3124 | "masterminds/html5": "<2.6" 3125 | }, 3126 | "require-dev": { 3127 | "masterminds/html5": "^2.6", 3128 | "symfony/css-selector": "^4.4|^5.0" 3129 | }, 3130 | "suggest": { 3131 | "symfony/css-selector": "" 3132 | }, 3133 | "type": "library", 3134 | "extra": { 3135 | "branch-alias": { 3136 | "dev-master": "5.0-dev" 3137 | } 3138 | }, 3139 | "autoload": { 3140 | "psr-4": { 3141 | "Symfony\\Component\\DomCrawler\\": "" 3142 | }, 3143 | "exclude-from-classmap": [ 3144 | "/Tests/" 3145 | ] 3146 | }, 3147 | "notification-url": "https://packagist.org/downloads/", 3148 | "license": [ 3149 | "MIT" 3150 | ], 3151 | "authors": [ 3152 | { 3153 | "name": "Fabien Potencier", 3154 | "email": "fabien@symfony.com" 3155 | }, 3156 | { 3157 | "name": "Symfony Community", 3158 | "homepage": "https://symfony.com/contributors" 3159 | } 3160 | ], 3161 | "description": "Symfony DomCrawler Component", 3162 | "homepage": "https://symfony.com", 3163 | "time": "2019-11-18T17:27:11+00:00" 3164 | }, 3165 | { 3166 | "name": "symfony/error-handler", 3167 | "version": "v5.0.2", 3168 | "source": { 3169 | "type": "git", 3170 | "url": "https://github.com/symfony/error-handler.git", 3171 | "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5" 3172 | }, 3173 | "dist": { 3174 | "type": "zip", 3175 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/460863313bd3212d7c38e1b40602cbcfeeeea4a5", 3176 | "reference": "460863313bd3212d7c38e1b40602cbcfeeeea4a5", 3177 | "shasum": "" 3178 | }, 3179 | "require": { 3180 | "php": "^7.2.5", 3181 | "psr/log": "^1.0", 3182 | "symfony/var-dumper": "^4.4|^5.0" 3183 | }, 3184 | "require-dev": { 3185 | "symfony/http-kernel": "^4.4|^5.0", 3186 | "symfony/serializer": "^4.4|^5.0" 3187 | }, 3188 | "type": "library", 3189 | "extra": { 3190 | "branch-alias": { 3191 | "dev-master": "5.0-dev" 3192 | } 3193 | }, 3194 | "autoload": { 3195 | "psr-4": { 3196 | "Symfony\\Component\\ErrorHandler\\": "" 3197 | }, 3198 | "exclude-from-classmap": [ 3199 | "/Tests/" 3200 | ] 3201 | }, 3202 | "notification-url": "https://packagist.org/downloads/", 3203 | "license": [ 3204 | "MIT" 3205 | ], 3206 | "authors": [ 3207 | { 3208 | "name": "Fabien Potencier", 3209 | "email": "fabien@symfony.com" 3210 | }, 3211 | { 3212 | "name": "Symfony Community", 3213 | "homepage": "https://symfony.com/contributors" 3214 | } 3215 | ], 3216 | "description": "Symfony ErrorHandler Component", 3217 | "homepage": "https://symfony.com", 3218 | "time": "2019-12-16T14:48:47+00:00" 3219 | }, 3220 | { 3221 | "name": "symfony/event-dispatcher", 3222 | "version": "v5.0.2", 3223 | "source": { 3224 | "type": "git", 3225 | "url": "https://github.com/symfony/event-dispatcher.git", 3226 | "reference": "7b738a51645e10f864cc25c24d232fb03f37b475" 3227 | }, 3228 | "dist": { 3229 | "type": "zip", 3230 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7b738a51645e10f864cc25c24d232fb03f37b475", 3231 | "reference": "7b738a51645e10f864cc25c24d232fb03f37b475", 3232 | "shasum": "" 3233 | }, 3234 | "require": { 3235 | "php": "^7.2.5", 3236 | "symfony/event-dispatcher-contracts": "^2" 3237 | }, 3238 | "conflict": { 3239 | "symfony/dependency-injection": "<4.4" 3240 | }, 3241 | "provide": { 3242 | "psr/event-dispatcher-implementation": "1.0", 3243 | "symfony/event-dispatcher-implementation": "2.0" 3244 | }, 3245 | "require-dev": { 3246 | "psr/log": "~1.0", 3247 | "symfony/config": "^4.4|^5.0", 3248 | "symfony/dependency-injection": "^4.4|^5.0", 3249 | "symfony/expression-language": "^4.4|^5.0", 3250 | "symfony/http-foundation": "^4.4|^5.0", 3251 | "symfony/service-contracts": "^1.1|^2", 3252 | "symfony/stopwatch": "^4.4|^5.0" 3253 | }, 3254 | "suggest": { 3255 | "symfony/dependency-injection": "", 3256 | "symfony/http-kernel": "" 3257 | }, 3258 | "type": "library", 3259 | "extra": { 3260 | "branch-alias": { 3261 | "dev-master": "5.0-dev" 3262 | } 3263 | }, 3264 | "autoload": { 3265 | "psr-4": { 3266 | "Symfony\\Component\\EventDispatcher\\": "" 3267 | }, 3268 | "exclude-from-classmap": [ 3269 | "/Tests/" 3270 | ] 3271 | }, 3272 | "notification-url": "https://packagist.org/downloads/", 3273 | "license": [ 3274 | "MIT" 3275 | ], 3276 | "authors": [ 3277 | { 3278 | "name": "Fabien Potencier", 3279 | "email": "fabien@symfony.com" 3280 | }, 3281 | { 3282 | "name": "Symfony Community", 3283 | "homepage": "https://symfony.com/contributors" 3284 | } 3285 | ], 3286 | "description": "Symfony EventDispatcher Component", 3287 | "homepage": "https://symfony.com", 3288 | "time": "2019-11-18T17:27:11+00:00" 3289 | }, 3290 | { 3291 | "name": "symfony/event-dispatcher-contracts", 3292 | "version": "v2.0.1", 3293 | "source": { 3294 | "type": "git", 3295 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 3296 | "reference": "af23c2584d4577d54661c434446fb8fbed6025dd" 3297 | }, 3298 | "dist": { 3299 | "type": "zip", 3300 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd", 3301 | "reference": "af23c2584d4577d54661c434446fb8fbed6025dd", 3302 | "shasum": "" 3303 | }, 3304 | "require": { 3305 | "php": "^7.2.5", 3306 | "psr/event-dispatcher": "^1" 3307 | }, 3308 | "suggest": { 3309 | "symfony/event-dispatcher-implementation": "" 3310 | }, 3311 | "type": "library", 3312 | "extra": { 3313 | "branch-alias": { 3314 | "dev-master": "2.0-dev" 3315 | } 3316 | }, 3317 | "autoload": { 3318 | "psr-4": { 3319 | "Symfony\\Contracts\\EventDispatcher\\": "" 3320 | } 3321 | }, 3322 | "notification-url": "https://packagist.org/downloads/", 3323 | "license": [ 3324 | "MIT" 3325 | ], 3326 | "authors": [ 3327 | { 3328 | "name": "Nicolas Grekas", 3329 | "email": "p@tchwork.com" 3330 | }, 3331 | { 3332 | "name": "Symfony Community", 3333 | "homepage": "https://symfony.com/contributors" 3334 | } 3335 | ], 3336 | "description": "Generic abstractions related to dispatching event", 3337 | "homepage": "https://symfony.com", 3338 | "keywords": [ 3339 | "abstractions", 3340 | "contracts", 3341 | "decoupling", 3342 | "interfaces", 3343 | "interoperability", 3344 | "standards" 3345 | ], 3346 | "time": "2019-11-18T17:27:11+00:00" 3347 | }, 3348 | { 3349 | "name": "symfony/filesystem", 3350 | "version": "v5.0.2", 3351 | "source": { 3352 | "type": "git", 3353 | "url": "https://github.com/symfony/filesystem.git", 3354 | "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6" 3355 | }, 3356 | "dist": { 3357 | "type": "zip", 3358 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/1d71f670bc5a07b9ccc97dc44f932177a322d4e6", 3359 | "reference": "1d71f670bc5a07b9ccc97dc44f932177a322d4e6", 3360 | "shasum": "" 3361 | }, 3362 | "require": { 3363 | "php": "^7.2.5", 3364 | "symfony/polyfill-ctype": "~1.8" 3365 | }, 3366 | "type": "library", 3367 | "extra": { 3368 | "branch-alias": { 3369 | "dev-master": "5.0-dev" 3370 | } 3371 | }, 3372 | "autoload": { 3373 | "psr-4": { 3374 | "Symfony\\Component\\Filesystem\\": "" 3375 | }, 3376 | "exclude-from-classmap": [ 3377 | "/Tests/" 3378 | ] 3379 | }, 3380 | "notification-url": "https://packagist.org/downloads/", 3381 | "license": [ 3382 | "MIT" 3383 | ], 3384 | "authors": [ 3385 | { 3386 | "name": "Fabien Potencier", 3387 | "email": "fabien@symfony.com" 3388 | }, 3389 | { 3390 | "name": "Symfony Community", 3391 | "homepage": "https://symfony.com/contributors" 3392 | } 3393 | ], 3394 | "description": "Symfony Filesystem Component", 3395 | "homepage": "https://symfony.com", 3396 | "time": "2019-11-26T23:25:11+00:00" 3397 | }, 3398 | { 3399 | "name": "symfony/finder", 3400 | "version": "v5.0.2", 3401 | "source": { 3402 | "type": "git", 3403 | "url": "https://github.com/symfony/finder.git", 3404 | "reference": "17874dd8ab9a19422028ad56172fb294287a701b" 3405 | }, 3406 | "dist": { 3407 | "type": "zip", 3408 | "url": "https://api.github.com/repos/symfony/finder/zipball/17874dd8ab9a19422028ad56172fb294287a701b", 3409 | "reference": "17874dd8ab9a19422028ad56172fb294287a701b", 3410 | "shasum": "" 3411 | }, 3412 | "require": { 3413 | "php": "^7.2.5" 3414 | }, 3415 | "type": "library", 3416 | "extra": { 3417 | "branch-alias": { 3418 | "dev-master": "5.0-dev" 3419 | } 3420 | }, 3421 | "autoload": { 3422 | "psr-4": { 3423 | "Symfony\\Component\\Finder\\": "" 3424 | }, 3425 | "exclude-from-classmap": [ 3426 | "/Tests/" 3427 | ] 3428 | }, 3429 | "notification-url": "https://packagist.org/downloads/", 3430 | "license": [ 3431 | "MIT" 3432 | ], 3433 | "authors": [ 3434 | { 3435 | "name": "Fabien Potencier", 3436 | "email": "fabien@symfony.com" 3437 | }, 3438 | { 3439 | "name": "Symfony Community", 3440 | "homepage": "https://symfony.com/contributors" 3441 | } 3442 | ], 3443 | "description": "Symfony Finder Component", 3444 | "homepage": "https://symfony.com", 3445 | "time": "2019-11-18T17:27:11+00:00" 3446 | }, 3447 | { 3448 | "name": "symfony/framework-bundle", 3449 | "version": "v5.0.2", 3450 | "source": { 3451 | "type": "git", 3452 | "url": "https://github.com/symfony/framework-bundle.git", 3453 | "reference": "36e51776b231d8e224da4ce4c60079540acd1c55" 3454 | }, 3455 | "dist": { 3456 | "type": "zip", 3457 | "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/36e51776b231d8e224da4ce4c60079540acd1c55", 3458 | "reference": "36e51776b231d8e224da4ce4c60079540acd1c55", 3459 | "shasum": "" 3460 | }, 3461 | "require": { 3462 | "ext-xml": "*", 3463 | "php": "^7.2.5", 3464 | "symfony/cache": "^4.4|^5.0", 3465 | "symfony/config": "^5.0", 3466 | "symfony/dependency-injection": "^5.0.1", 3467 | "symfony/error-handler": "^4.4.1|^5.0.1", 3468 | "symfony/filesystem": "^4.4|^5.0", 3469 | "symfony/finder": "^4.4|^5.0", 3470 | "symfony/http-foundation": "^4.4|^5.0", 3471 | "symfony/http-kernel": "^5.0", 3472 | "symfony/polyfill-mbstring": "~1.0", 3473 | "symfony/routing": "^5.0" 3474 | }, 3475 | "conflict": { 3476 | "doctrine/persistence": "<1.3", 3477 | "phpdocumentor/reflection-docblock": "<3.0", 3478 | "phpdocumentor/type-resolver": "<0.2.1", 3479 | "phpunit/phpunit": "<5.4.3", 3480 | "symfony/asset": "<4.4", 3481 | "symfony/browser-kit": "<4.4", 3482 | "symfony/console": "<4.4", 3483 | "symfony/dom-crawler": "<4.4", 3484 | "symfony/dotenv": "<4.4", 3485 | "symfony/form": "<4.4", 3486 | "symfony/http-client": "<4.4", 3487 | "symfony/lock": "<4.4", 3488 | "symfony/mailer": "<4.4", 3489 | "symfony/messenger": "<4.4", 3490 | "symfony/mime": "<4.4", 3491 | "symfony/property-info": "<4.4", 3492 | "symfony/serializer": "<4.4", 3493 | "symfony/stopwatch": "<4.4", 3494 | "symfony/translation": "<5.0", 3495 | "symfony/twig-bridge": "<4.4", 3496 | "symfony/twig-bundle": "<4.4", 3497 | "symfony/validator": "<4.4", 3498 | "symfony/web-profiler-bundle": "<4.4", 3499 | "symfony/workflow": "<4.4" 3500 | }, 3501 | "require-dev": { 3502 | "doctrine/annotations": "~1.7", 3503 | "doctrine/cache": "~1.0", 3504 | "paragonie/sodium_compat": "^1.8", 3505 | "phpdocumentor/reflection-docblock": "^3.0|^4.0", 3506 | "symfony/asset": "^4.4|^5.0", 3507 | "symfony/browser-kit": "^4.4|^5.0", 3508 | "symfony/console": "^4.4|^5.0", 3509 | "symfony/css-selector": "^4.4|^5.0", 3510 | "symfony/dom-crawler": "^4.4|^5.0", 3511 | "symfony/dotenv": "^4.4|^5.0", 3512 | "symfony/expression-language": "^4.4|^5.0", 3513 | "symfony/form": "^4.4|^5.0", 3514 | "symfony/http-client": "^4.4|^5.0", 3515 | "symfony/lock": "^4.4|^5.0", 3516 | "symfony/mailer": "^4.4|^5.0", 3517 | "symfony/messenger": "^4.4|^5.0", 3518 | "symfony/mime": "^4.4|^5.0", 3519 | "symfony/polyfill-intl-icu": "~1.0", 3520 | "symfony/process": "^4.4|^5.0", 3521 | "symfony/property-info": "^4.4|^5.0", 3522 | "symfony/security-csrf": "^4.4|^5.0", 3523 | "symfony/security-http": "^4.4|^5.0", 3524 | "symfony/serializer": "^4.4|^5.0", 3525 | "symfony/stopwatch": "^4.4|^5.0", 3526 | "symfony/string": "~5.0.0", 3527 | "symfony/translation": "^5.0", 3528 | "symfony/twig-bundle": "^4.4|^5.0", 3529 | "symfony/validator": "^4.4|^5.0", 3530 | "symfony/web-link": "^4.4|^5.0", 3531 | "symfony/workflow": "^4.4|^5.0", 3532 | "symfony/yaml": "^4.4|^5.0", 3533 | "twig/twig": "^2.10|^3.0" 3534 | }, 3535 | "suggest": { 3536 | "ext-apcu": "For best performance of the system caches", 3537 | "symfony/console": "For using the console commands", 3538 | "symfony/form": "For using forms", 3539 | "symfony/property-info": "For using the property_info service", 3540 | "symfony/serializer": "For using the serializer service", 3541 | "symfony/validator": "For using validation", 3542 | "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", 3543 | "symfony/yaml": "For using the debug:config and lint:yaml commands" 3544 | }, 3545 | "type": "symfony-bundle", 3546 | "extra": { 3547 | "branch-alias": { 3548 | "dev-master": "5.0-dev" 3549 | } 3550 | }, 3551 | "autoload": { 3552 | "psr-4": { 3553 | "Symfony\\Bundle\\FrameworkBundle\\": "" 3554 | }, 3555 | "exclude-from-classmap": [ 3556 | "/Tests/" 3557 | ] 3558 | }, 3559 | "notification-url": "https://packagist.org/downloads/", 3560 | "license": [ 3561 | "MIT" 3562 | ], 3563 | "authors": [ 3564 | { 3565 | "name": "Fabien Potencier", 3566 | "email": "fabien@symfony.com" 3567 | }, 3568 | { 3569 | "name": "Symfony Community", 3570 | "homepage": "https://symfony.com/contributors" 3571 | } 3572 | ], 3573 | "description": "Symfony FrameworkBundle", 3574 | "homepage": "https://symfony.com", 3575 | "time": "2019-12-17T10:33:13+00:00" 3576 | }, 3577 | { 3578 | "name": "symfony/http-foundation", 3579 | "version": "v5.0.2", 3580 | "source": { 3581 | "type": "git", 3582 | "url": "https://github.com/symfony/http-foundation.git", 3583 | "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b" 3584 | }, 3585 | "dist": { 3586 | "type": "zip", 3587 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/5dd7f6be6e62d86ba6f3154cf40e78936367978b", 3588 | "reference": "5dd7f6be6e62d86ba6f3154cf40e78936367978b", 3589 | "shasum": "" 3590 | }, 3591 | "require": { 3592 | "php": "^7.2.5", 3593 | "symfony/mime": "^4.4|^5.0", 3594 | "symfony/polyfill-mbstring": "~1.1" 3595 | }, 3596 | "require-dev": { 3597 | "predis/predis": "~1.0", 3598 | "symfony/expression-language": "^4.4|^5.0" 3599 | }, 3600 | "type": "library", 3601 | "extra": { 3602 | "branch-alias": { 3603 | "dev-master": "5.0-dev" 3604 | } 3605 | }, 3606 | "autoload": { 3607 | "psr-4": { 3608 | "Symfony\\Component\\HttpFoundation\\": "" 3609 | }, 3610 | "exclude-from-classmap": [ 3611 | "/Tests/" 3612 | ] 3613 | }, 3614 | "notification-url": "https://packagist.org/downloads/", 3615 | "license": [ 3616 | "MIT" 3617 | ], 3618 | "authors": [ 3619 | { 3620 | "name": "Fabien Potencier", 3621 | "email": "fabien@symfony.com" 3622 | }, 3623 | { 3624 | "name": "Symfony Community", 3625 | "homepage": "https://symfony.com/contributors" 3626 | } 3627 | ], 3628 | "description": "Symfony HttpFoundation Component", 3629 | "homepage": "https://symfony.com", 3630 | "time": "2019-12-19T16:01:11+00:00" 3631 | }, 3632 | { 3633 | "name": "symfony/http-kernel", 3634 | "version": "v5.0.2", 3635 | "source": { 3636 | "type": "git", 3637 | "url": "https://github.com/symfony/http-kernel.git", 3638 | "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e" 3639 | }, 3640 | "dist": { 3641 | "type": "zip", 3642 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/00ce30602f3f690e66a63c327743d7b26c723b2e", 3643 | "reference": "00ce30602f3f690e66a63c327743d7b26c723b2e", 3644 | "shasum": "" 3645 | }, 3646 | "require": { 3647 | "php": "^7.2.5", 3648 | "psr/log": "~1.0", 3649 | "symfony/error-handler": "^4.4|^5.0", 3650 | "symfony/event-dispatcher": "^5.0", 3651 | "symfony/http-foundation": "^4.4|^5.0", 3652 | "symfony/polyfill-ctype": "^1.8", 3653 | "symfony/polyfill-php73": "^1.9" 3654 | }, 3655 | "conflict": { 3656 | "symfony/browser-kit": "<4.4", 3657 | "symfony/cache": "<5.0", 3658 | "symfony/config": "<5.0", 3659 | "symfony/dependency-injection": "<4.4", 3660 | "symfony/doctrine-bridge": "<5.0", 3661 | "symfony/form": "<5.0", 3662 | "symfony/http-client": "<5.0", 3663 | "symfony/mailer": "<5.0", 3664 | "symfony/messenger": "<5.0", 3665 | "symfony/translation": "<5.0", 3666 | "symfony/twig-bridge": "<5.0", 3667 | "symfony/validator": "<5.0", 3668 | "twig/twig": "<2.4" 3669 | }, 3670 | "provide": { 3671 | "psr/log-implementation": "1.0" 3672 | }, 3673 | "require-dev": { 3674 | "psr/cache": "~1.0", 3675 | "symfony/browser-kit": "^4.4|^5.0", 3676 | "symfony/config": "^5.0", 3677 | "symfony/console": "^4.4|^5.0", 3678 | "symfony/css-selector": "^4.4|^5.0", 3679 | "symfony/dependency-injection": "^4.4|^5.0", 3680 | "symfony/dom-crawler": "^4.4|^5.0", 3681 | "symfony/expression-language": "^4.4|^5.0", 3682 | "symfony/finder": "^4.4|^5.0", 3683 | "symfony/process": "^4.4|^5.0", 3684 | "symfony/routing": "^4.4|^5.0", 3685 | "symfony/stopwatch": "^4.4|^5.0", 3686 | "symfony/translation": "^4.4|^5.0", 3687 | "symfony/translation-contracts": "^1.1|^2", 3688 | "twig/twig": "^2.4|^3.0" 3689 | }, 3690 | "suggest": { 3691 | "symfony/browser-kit": "", 3692 | "symfony/config": "", 3693 | "symfony/console": "", 3694 | "symfony/dependency-injection": "" 3695 | }, 3696 | "type": "library", 3697 | "extra": { 3698 | "branch-alias": { 3699 | "dev-master": "5.0-dev" 3700 | } 3701 | }, 3702 | "autoload": { 3703 | "psr-4": { 3704 | "Symfony\\Component\\HttpKernel\\": "" 3705 | }, 3706 | "exclude-from-classmap": [ 3707 | "/Tests/" 3708 | ] 3709 | }, 3710 | "notification-url": "https://packagist.org/downloads/", 3711 | "license": [ 3712 | "MIT" 3713 | ], 3714 | "authors": [ 3715 | { 3716 | "name": "Fabien Potencier", 3717 | "email": "fabien@symfony.com" 3718 | }, 3719 | { 3720 | "name": "Symfony Community", 3721 | "homepage": "https://symfony.com/contributors" 3722 | } 3723 | ], 3724 | "description": "Symfony HttpKernel Component", 3725 | "homepage": "https://symfony.com", 3726 | "time": "2019-12-19T18:35:03+00:00" 3727 | }, 3728 | { 3729 | "name": "symfony/inflector", 3730 | "version": "v5.0.2", 3731 | "source": { 3732 | "type": "git", 3733 | "url": "https://github.com/symfony/inflector.git", 3734 | "reference": "aaeb5e293294070d1b061fa3d7889bac69909320" 3735 | }, 3736 | "dist": { 3737 | "type": "zip", 3738 | "url": "https://api.github.com/repos/symfony/inflector/zipball/aaeb5e293294070d1b061fa3d7889bac69909320", 3739 | "reference": "aaeb5e293294070d1b061fa3d7889bac69909320", 3740 | "shasum": "" 3741 | }, 3742 | "require": { 3743 | "php": "^7.2.5", 3744 | "symfony/polyfill-ctype": "~1.8" 3745 | }, 3746 | "type": "library", 3747 | "extra": { 3748 | "branch-alias": { 3749 | "dev-master": "5.0-dev" 3750 | } 3751 | }, 3752 | "autoload": { 3753 | "psr-4": { 3754 | "Symfony\\Component\\Inflector\\": "" 3755 | }, 3756 | "exclude-from-classmap": [ 3757 | "/Tests/" 3758 | ] 3759 | }, 3760 | "notification-url": "https://packagist.org/downloads/", 3761 | "license": [ 3762 | "MIT" 3763 | ], 3764 | "authors": [ 3765 | { 3766 | "name": "Bernhard Schussek", 3767 | "email": "bschussek@gmail.com" 3768 | }, 3769 | { 3770 | "name": "Symfony Community", 3771 | "homepage": "https://symfony.com/contributors" 3772 | } 3773 | ], 3774 | "description": "Symfony Inflector Component", 3775 | "homepage": "https://symfony.com", 3776 | "keywords": [ 3777 | "inflection", 3778 | "pluralize", 3779 | "singularize", 3780 | "string", 3781 | "symfony", 3782 | "words" 3783 | ], 3784 | "time": "2019-11-18T17:27:11+00:00" 3785 | }, 3786 | { 3787 | "name": "symfony/mime", 3788 | "version": "v5.0.2", 3789 | "source": { 3790 | "type": "git", 3791 | "url": "https://github.com/symfony/mime.git", 3792 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79" 3793 | }, 3794 | "dist": { 3795 | "type": "zip", 3796 | "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79", 3797 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79", 3798 | "shasum": "" 3799 | }, 3800 | "require": { 3801 | "php": "^7.2.5", 3802 | "symfony/polyfill-intl-idn": "^1.10", 3803 | "symfony/polyfill-mbstring": "^1.0" 3804 | }, 3805 | "conflict": { 3806 | "symfony/mailer": "<4.4" 3807 | }, 3808 | "require-dev": { 3809 | "egulias/email-validator": "^2.1.10", 3810 | "symfony/dependency-injection": "^4.4|^5.0" 3811 | }, 3812 | "type": "library", 3813 | "extra": { 3814 | "branch-alias": { 3815 | "dev-master": "5.0-dev" 3816 | } 3817 | }, 3818 | "autoload": { 3819 | "psr-4": { 3820 | "Symfony\\Component\\Mime\\": "" 3821 | }, 3822 | "exclude-from-classmap": [ 3823 | "/Tests/" 3824 | ] 3825 | }, 3826 | "notification-url": "https://packagist.org/downloads/", 3827 | "license": [ 3828 | "MIT" 3829 | ], 3830 | "authors": [ 3831 | { 3832 | "name": "Fabien Potencier", 3833 | "email": "fabien@symfony.com" 3834 | }, 3835 | { 3836 | "name": "Symfony Community", 3837 | "homepage": "https://symfony.com/contributors" 3838 | } 3839 | ], 3840 | "description": "A library to manipulate MIME messages", 3841 | "homepage": "https://symfony.com", 3842 | "keywords": [ 3843 | "mime", 3844 | "mime-type" 3845 | ], 3846 | "time": "2019-11-30T14:12:50+00:00" 3847 | }, 3848 | { 3849 | "name": "symfony/polyfill-ctype", 3850 | "version": "v1.13.1", 3851 | "source": { 3852 | "type": "git", 3853 | "url": "https://github.com/symfony/polyfill-ctype.git", 3854 | "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3" 3855 | }, 3856 | "dist": { 3857 | "type": "zip", 3858 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", 3859 | "reference": "f8f0b461be3385e56d6de3dbb5a0df24c0c275e3", 3860 | "shasum": "" 3861 | }, 3862 | "require": { 3863 | "php": ">=5.3.3" 3864 | }, 3865 | "suggest": { 3866 | "ext-ctype": "For best performance" 3867 | }, 3868 | "type": "library", 3869 | "extra": { 3870 | "branch-alias": { 3871 | "dev-master": "1.13-dev" 3872 | } 3873 | }, 3874 | "autoload": { 3875 | "psr-4": { 3876 | "Symfony\\Polyfill\\Ctype\\": "" 3877 | }, 3878 | "files": [ 3879 | "bootstrap.php" 3880 | ] 3881 | }, 3882 | "notification-url": "https://packagist.org/downloads/", 3883 | "license": [ 3884 | "MIT" 3885 | ], 3886 | "authors": [ 3887 | { 3888 | "name": "Gert de Pagter", 3889 | "email": "BackEndTea@gmail.com" 3890 | }, 3891 | { 3892 | "name": "Symfony Community", 3893 | "homepage": "https://symfony.com/contributors" 3894 | } 3895 | ], 3896 | "description": "Symfony polyfill for ctype functions", 3897 | "homepage": "https://symfony.com", 3898 | "keywords": [ 3899 | "compatibility", 3900 | "ctype", 3901 | "polyfill", 3902 | "portable" 3903 | ], 3904 | "time": "2019-11-27T13:56:44+00:00" 3905 | }, 3906 | { 3907 | "name": "symfony/polyfill-intl-idn", 3908 | "version": "v1.13.1", 3909 | "source": { 3910 | "type": "git", 3911 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 3912 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" 3913 | }, 3914 | "dist": { 3915 | "type": "zip", 3916 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 3917 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 3918 | "shasum": "" 3919 | }, 3920 | "require": { 3921 | "php": ">=5.3.3", 3922 | "symfony/polyfill-mbstring": "^1.3", 3923 | "symfony/polyfill-php72": "^1.9" 3924 | }, 3925 | "suggest": { 3926 | "ext-intl": "For best performance" 3927 | }, 3928 | "type": "library", 3929 | "extra": { 3930 | "branch-alias": { 3931 | "dev-master": "1.13-dev" 3932 | } 3933 | }, 3934 | "autoload": { 3935 | "psr-4": { 3936 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 3937 | }, 3938 | "files": [ 3939 | "bootstrap.php" 3940 | ] 3941 | }, 3942 | "notification-url": "https://packagist.org/downloads/", 3943 | "license": [ 3944 | "MIT" 3945 | ], 3946 | "authors": [ 3947 | { 3948 | "name": "Laurent Bassin", 3949 | "email": "laurent@bassin.info" 3950 | }, 3951 | { 3952 | "name": "Symfony Community", 3953 | "homepage": "https://symfony.com/contributors" 3954 | } 3955 | ], 3956 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 3957 | "homepage": "https://symfony.com", 3958 | "keywords": [ 3959 | "compatibility", 3960 | "idn", 3961 | "intl", 3962 | "polyfill", 3963 | "portable", 3964 | "shim" 3965 | ], 3966 | "time": "2019-11-27T13:56:44+00:00" 3967 | }, 3968 | { 3969 | "name": "symfony/polyfill-mbstring", 3970 | "version": "v1.13.1", 3971 | "source": { 3972 | "type": "git", 3973 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3974 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" 3975 | }, 3976 | "dist": { 3977 | "type": "zip", 3978 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", 3979 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", 3980 | "shasum": "" 3981 | }, 3982 | "require": { 3983 | "php": ">=5.3.3" 3984 | }, 3985 | "suggest": { 3986 | "ext-mbstring": "For best performance" 3987 | }, 3988 | "type": "library", 3989 | "extra": { 3990 | "branch-alias": { 3991 | "dev-master": "1.13-dev" 3992 | } 3993 | }, 3994 | "autoload": { 3995 | "psr-4": { 3996 | "Symfony\\Polyfill\\Mbstring\\": "" 3997 | }, 3998 | "files": [ 3999 | "bootstrap.php" 4000 | ] 4001 | }, 4002 | "notification-url": "https://packagist.org/downloads/", 4003 | "license": [ 4004 | "MIT" 4005 | ], 4006 | "authors": [ 4007 | { 4008 | "name": "Nicolas Grekas", 4009 | "email": "p@tchwork.com" 4010 | }, 4011 | { 4012 | "name": "Symfony Community", 4013 | "homepage": "https://symfony.com/contributors" 4014 | } 4015 | ], 4016 | "description": "Symfony polyfill for the Mbstring extension", 4017 | "homepage": "https://symfony.com", 4018 | "keywords": [ 4019 | "compatibility", 4020 | "mbstring", 4021 | "polyfill", 4022 | "portable", 4023 | "shim" 4024 | ], 4025 | "time": "2019-11-27T14:18:11+00:00" 4026 | }, 4027 | { 4028 | "name": "symfony/polyfill-php72", 4029 | "version": "v1.13.1", 4030 | "source": { 4031 | "type": "git", 4032 | "url": "https://github.com/symfony/polyfill-php72.git", 4033 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" 4034 | }, 4035 | "dist": { 4036 | "type": "zip", 4037 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", 4038 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", 4039 | "shasum": "" 4040 | }, 4041 | "require": { 4042 | "php": ">=5.3.3" 4043 | }, 4044 | "type": "library", 4045 | "extra": { 4046 | "branch-alias": { 4047 | "dev-master": "1.13-dev" 4048 | } 4049 | }, 4050 | "autoload": { 4051 | "psr-4": { 4052 | "Symfony\\Polyfill\\Php72\\": "" 4053 | }, 4054 | "files": [ 4055 | "bootstrap.php" 4056 | ] 4057 | }, 4058 | "notification-url": "https://packagist.org/downloads/", 4059 | "license": [ 4060 | "MIT" 4061 | ], 4062 | "authors": [ 4063 | { 4064 | "name": "Nicolas Grekas", 4065 | "email": "p@tchwork.com" 4066 | }, 4067 | { 4068 | "name": "Symfony Community", 4069 | "homepage": "https://symfony.com/contributors" 4070 | } 4071 | ], 4072 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 4073 | "homepage": "https://symfony.com", 4074 | "keywords": [ 4075 | "compatibility", 4076 | "polyfill", 4077 | "portable", 4078 | "shim" 4079 | ], 4080 | "time": "2019-11-27T13:56:44+00:00" 4081 | }, 4082 | { 4083 | "name": "symfony/polyfill-php73", 4084 | "version": "v1.13.1", 4085 | "source": { 4086 | "type": "git", 4087 | "url": "https://github.com/symfony/polyfill-php73.git", 4088 | "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f" 4089 | }, 4090 | "dist": { 4091 | "type": "zip", 4092 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/4b0e2222c55a25b4541305a053013d5647d3a25f", 4093 | "reference": "4b0e2222c55a25b4541305a053013d5647d3a25f", 4094 | "shasum": "" 4095 | }, 4096 | "require": { 4097 | "php": ">=5.3.3" 4098 | }, 4099 | "type": "library", 4100 | "extra": { 4101 | "branch-alias": { 4102 | "dev-master": "1.13-dev" 4103 | } 4104 | }, 4105 | "autoload": { 4106 | "psr-4": { 4107 | "Symfony\\Polyfill\\Php73\\": "" 4108 | }, 4109 | "files": [ 4110 | "bootstrap.php" 4111 | ], 4112 | "classmap": [ 4113 | "Resources/stubs" 4114 | ] 4115 | }, 4116 | "notification-url": "https://packagist.org/downloads/", 4117 | "license": [ 4118 | "MIT" 4119 | ], 4120 | "authors": [ 4121 | { 4122 | "name": "Nicolas Grekas", 4123 | "email": "p@tchwork.com" 4124 | }, 4125 | { 4126 | "name": "Symfony Community", 4127 | "homepage": "https://symfony.com/contributors" 4128 | } 4129 | ], 4130 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 4131 | "homepage": "https://symfony.com", 4132 | "keywords": [ 4133 | "compatibility", 4134 | "polyfill", 4135 | "portable", 4136 | "shim" 4137 | ], 4138 | "time": "2019-11-27T16:25:15+00:00" 4139 | }, 4140 | { 4141 | "name": "symfony/property-access", 4142 | "version": "v5.0.2", 4143 | "source": { 4144 | "type": "git", 4145 | "url": "https://github.com/symfony/property-access.git", 4146 | "reference": "b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23" 4147 | }, 4148 | "dist": { 4149 | "type": "zip", 4150 | "url": "https://api.github.com/repos/symfony/property-access/zipball/b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23", 4151 | "reference": "b597c4f4dffc522bc4ed4bedcef9ed08d3ae3d23", 4152 | "shasum": "" 4153 | }, 4154 | "require": { 4155 | "php": "^7.2.5", 4156 | "symfony/inflector": "^4.4|^5.0" 4157 | }, 4158 | "require-dev": { 4159 | "symfony/cache": "^4.4|^5.0" 4160 | }, 4161 | "suggest": { 4162 | "psr/cache-implementation": "To cache access methods." 4163 | }, 4164 | "type": "library", 4165 | "extra": { 4166 | "branch-alias": { 4167 | "dev-master": "5.0-dev" 4168 | } 4169 | }, 4170 | "autoload": { 4171 | "psr-4": { 4172 | "Symfony\\Component\\PropertyAccess\\": "" 4173 | }, 4174 | "exclude-from-classmap": [ 4175 | "/Tests/" 4176 | ] 4177 | }, 4178 | "notification-url": "https://packagist.org/downloads/", 4179 | "license": [ 4180 | "MIT" 4181 | ], 4182 | "authors": [ 4183 | { 4184 | "name": "Fabien Potencier", 4185 | "email": "fabien@symfony.com" 4186 | }, 4187 | { 4188 | "name": "Symfony Community", 4189 | "homepage": "https://symfony.com/contributors" 4190 | } 4191 | ], 4192 | "description": "Symfony PropertyAccess Component", 4193 | "homepage": "https://symfony.com", 4194 | "keywords": [ 4195 | "access", 4196 | "array", 4197 | "extraction", 4198 | "index", 4199 | "injection", 4200 | "object", 4201 | "property", 4202 | "property path", 4203 | "reflection" 4204 | ], 4205 | "time": "2019-12-10T11:06:55+00:00" 4206 | }, 4207 | { 4208 | "name": "symfony/routing", 4209 | "version": "v5.0.2", 4210 | "source": { 4211 | "type": "git", 4212 | "url": "https://github.com/symfony/routing.git", 4213 | "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301" 4214 | }, 4215 | "dist": { 4216 | "type": "zip", 4217 | "url": "https://api.github.com/repos/symfony/routing/zipball/120c5fa4f4ef5466cbb510ece8126e0007285301", 4218 | "reference": "120c5fa4f4ef5466cbb510ece8126e0007285301", 4219 | "shasum": "" 4220 | }, 4221 | "require": { 4222 | "php": "^7.2.5" 4223 | }, 4224 | "conflict": { 4225 | "symfony/config": "<5.0", 4226 | "symfony/dependency-injection": "<4.4", 4227 | "symfony/yaml": "<4.4" 4228 | }, 4229 | "require-dev": { 4230 | "doctrine/annotations": "~1.2", 4231 | "psr/log": "~1.0", 4232 | "symfony/config": "^5.0", 4233 | "symfony/dependency-injection": "^4.4|^5.0", 4234 | "symfony/expression-language": "^4.4|^5.0", 4235 | "symfony/http-foundation": "^4.4|^5.0", 4236 | "symfony/yaml": "^4.4|^5.0" 4237 | }, 4238 | "suggest": { 4239 | "doctrine/annotations": "For using the annotation loader", 4240 | "symfony/config": "For using the all-in-one router or any loader", 4241 | "symfony/expression-language": "For using expression matching", 4242 | "symfony/http-foundation": "For using a Symfony Request object", 4243 | "symfony/yaml": "For using the YAML loader" 4244 | }, 4245 | "type": "library", 4246 | "extra": { 4247 | "branch-alias": { 4248 | "dev-master": "5.0-dev" 4249 | } 4250 | }, 4251 | "autoload": { 4252 | "psr-4": { 4253 | "Symfony\\Component\\Routing\\": "" 4254 | }, 4255 | "exclude-from-classmap": [ 4256 | "/Tests/" 4257 | ] 4258 | }, 4259 | "notification-url": "https://packagist.org/downloads/", 4260 | "license": [ 4261 | "MIT" 4262 | ], 4263 | "authors": [ 4264 | { 4265 | "name": "Fabien Potencier", 4266 | "email": "fabien@symfony.com" 4267 | }, 4268 | { 4269 | "name": "Symfony Community", 4270 | "homepage": "https://symfony.com/contributors" 4271 | } 4272 | ], 4273 | "description": "Symfony Routing Component", 4274 | "homepage": "https://symfony.com", 4275 | "keywords": [ 4276 | "router", 4277 | "routing", 4278 | "uri", 4279 | "url" 4280 | ], 4281 | "time": "2019-12-12T13:03:32+00:00" 4282 | }, 4283 | { 4284 | "name": "symfony/security-bundle", 4285 | "version": "v5.0.2", 4286 | "source": { 4287 | "type": "git", 4288 | "url": "https://github.com/symfony/security-bundle.git", 4289 | "reference": "5cf83dea155ae9666dd491470d760c126e4dab98" 4290 | }, 4291 | "dist": { 4292 | "type": "zip", 4293 | "url": "https://api.github.com/repos/symfony/security-bundle/zipball/5cf83dea155ae9666dd491470d760c126e4dab98", 4294 | "reference": "5cf83dea155ae9666dd491470d760c126e4dab98", 4295 | "shasum": "" 4296 | }, 4297 | "require": { 4298 | "ext-xml": "*", 4299 | "php": "^7.2.5", 4300 | "symfony/config": "^4.4|^5.0", 4301 | "symfony/dependency-injection": "^4.4|^5.0", 4302 | "symfony/http-kernel": "^5.0", 4303 | "symfony/security-core": "^4.4|^5.0", 4304 | "symfony/security-csrf": "^4.4|^5.0", 4305 | "symfony/security-guard": "^4.4|^5.0", 4306 | "symfony/security-http": "^4.4.1|^5.0.1" 4307 | }, 4308 | "conflict": { 4309 | "symfony/browser-kit": "<4.4", 4310 | "symfony/console": "<4.4", 4311 | "symfony/framework-bundle": "<4.4", 4312 | "symfony/ldap": "<4.4", 4313 | "symfony/twig-bundle": "<4.4" 4314 | }, 4315 | "require-dev": { 4316 | "doctrine/doctrine-bundle": "^1.5|^2.0", 4317 | "symfony/asset": "^4.4|^5.0", 4318 | "symfony/browser-kit": "^4.4|^5.0", 4319 | "symfony/console": "^4.4|^5.0", 4320 | "symfony/css-selector": "^4.4|^5.0", 4321 | "symfony/dom-crawler": "^4.4|^5.0", 4322 | "symfony/expression-language": "^4.4|^5.0", 4323 | "symfony/form": "^4.4|^5.0", 4324 | "symfony/framework-bundle": "^4.4|^5.0", 4325 | "symfony/process": "^4.4|^5.0", 4326 | "symfony/serializer": "^4.4|^5.0", 4327 | "symfony/translation": "^4.4|^5.0", 4328 | "symfony/twig-bridge": "^4.4|^5.0", 4329 | "symfony/twig-bundle": "^4.4|^5.0", 4330 | "symfony/validator": "^4.4|^5.0", 4331 | "symfony/yaml": "^4.4|^5.0", 4332 | "twig/twig": "^2.10|^3.0" 4333 | }, 4334 | "type": "symfony-bundle", 4335 | "extra": { 4336 | "branch-alias": { 4337 | "dev-master": "5.0-dev" 4338 | } 4339 | }, 4340 | "autoload": { 4341 | "psr-4": { 4342 | "Symfony\\Bundle\\SecurityBundle\\": "" 4343 | }, 4344 | "exclude-from-classmap": [ 4345 | "/Tests/" 4346 | ] 4347 | }, 4348 | "notification-url": "https://packagist.org/downloads/", 4349 | "license": [ 4350 | "MIT" 4351 | ], 4352 | "authors": [ 4353 | { 4354 | "name": "Fabien Potencier", 4355 | "email": "fabien@symfony.com" 4356 | }, 4357 | { 4358 | "name": "Symfony Community", 4359 | "homepage": "https://symfony.com/contributors" 4360 | } 4361 | ], 4362 | "description": "Symfony SecurityBundle", 4363 | "homepage": "https://symfony.com", 4364 | "time": "2019-12-16T10:47:49+00:00" 4365 | }, 4366 | { 4367 | "name": "symfony/security-core", 4368 | "version": "v5.0.2", 4369 | "source": { 4370 | "type": "git", 4371 | "url": "https://github.com/symfony/security-core.git", 4372 | "reference": "4fa0454de2fab0f6c2e9990976d8872b16a0e0a9" 4373 | }, 4374 | "dist": { 4375 | "type": "zip", 4376 | "url": "https://api.github.com/repos/symfony/security-core/zipball/4fa0454de2fab0f6c2e9990976d8872b16a0e0a9", 4377 | "reference": "4fa0454de2fab0f6c2e9990976d8872b16a0e0a9", 4378 | "shasum": "" 4379 | }, 4380 | "require": { 4381 | "php": "^7.2.5", 4382 | "symfony/event-dispatcher-contracts": "^1.1|^2", 4383 | "symfony/service-contracts": "^1.1.6|^2" 4384 | }, 4385 | "conflict": { 4386 | "symfony/event-dispatcher": "<4.4", 4387 | "symfony/ldap": "<4.4", 4388 | "symfony/security-guard": "<4.4" 4389 | }, 4390 | "require-dev": { 4391 | "psr/container": "^1.0", 4392 | "psr/log": "~1.0", 4393 | "symfony/event-dispatcher": "^4.4|^5.0", 4394 | "symfony/expression-language": "^4.4|^5.0", 4395 | "symfony/http-foundation": "^4.4|^5.0", 4396 | "symfony/ldap": "^4.4|^5.0", 4397 | "symfony/validator": "^4.4|^5.0" 4398 | }, 4399 | "suggest": { 4400 | "psr/container-implementation": "To instantiate the Security class", 4401 | "symfony/event-dispatcher": "", 4402 | "symfony/expression-language": "For using the expression voter", 4403 | "symfony/http-foundation": "", 4404 | "symfony/ldap": "For using LDAP integration", 4405 | "symfony/validator": "For using the user password constraint" 4406 | }, 4407 | "type": "library", 4408 | "extra": { 4409 | "branch-alias": { 4410 | "dev-master": "5.0-dev" 4411 | } 4412 | }, 4413 | "autoload": { 4414 | "psr-4": { 4415 | "Symfony\\Component\\Security\\Core\\": "" 4416 | }, 4417 | "exclude-from-classmap": [ 4418 | "/Tests/" 4419 | ] 4420 | }, 4421 | "notification-url": "https://packagist.org/downloads/", 4422 | "license": [ 4423 | "MIT" 4424 | ], 4425 | "authors": [ 4426 | { 4427 | "name": "Fabien Potencier", 4428 | "email": "fabien@symfony.com" 4429 | }, 4430 | { 4431 | "name": "Symfony Community", 4432 | "homepage": "https://symfony.com/contributors" 4433 | } 4434 | ], 4435 | "description": "Symfony Security Component - Core Library", 4436 | "homepage": "https://symfony.com", 4437 | "time": "2019-12-16T11:08:25+00:00" 4438 | }, 4439 | { 4440 | "name": "symfony/security-csrf", 4441 | "version": "v5.0.2", 4442 | "source": { 4443 | "type": "git", 4444 | "url": "https://github.com/symfony/security-csrf.git", 4445 | "reference": "df14c3ebed8ed99750e8d27a6333918f80b5a8ea" 4446 | }, 4447 | "dist": { 4448 | "type": "zip", 4449 | "url": "https://api.github.com/repos/symfony/security-csrf/zipball/df14c3ebed8ed99750e8d27a6333918f80b5a8ea", 4450 | "reference": "df14c3ebed8ed99750e8d27a6333918f80b5a8ea", 4451 | "shasum": "" 4452 | }, 4453 | "require": { 4454 | "php": "^7.2.5", 4455 | "symfony/security-core": "^4.4|^5.0" 4456 | }, 4457 | "conflict": { 4458 | "symfony/http-foundation": "<4.4" 4459 | }, 4460 | "require-dev": { 4461 | "symfony/http-foundation": "^4.4|^5.0" 4462 | }, 4463 | "suggest": { 4464 | "symfony/http-foundation": "For using the class SessionTokenStorage." 4465 | }, 4466 | "type": "library", 4467 | "extra": { 4468 | "branch-alias": { 4469 | "dev-master": "5.0-dev" 4470 | } 4471 | }, 4472 | "autoload": { 4473 | "psr-4": { 4474 | "Symfony\\Component\\Security\\Csrf\\": "" 4475 | }, 4476 | "exclude-from-classmap": [ 4477 | "/Tests/" 4478 | ] 4479 | }, 4480 | "notification-url": "https://packagist.org/downloads/", 4481 | "license": [ 4482 | "MIT" 4483 | ], 4484 | "authors": [ 4485 | { 4486 | "name": "Fabien Potencier", 4487 | "email": "fabien@symfony.com" 4488 | }, 4489 | { 4490 | "name": "Symfony Community", 4491 | "homepage": "https://symfony.com/contributors" 4492 | } 4493 | ], 4494 | "description": "Symfony Security Component - CSRF Library", 4495 | "homepage": "https://symfony.com", 4496 | "time": "2019-11-18T17:27:11+00:00" 4497 | }, 4498 | { 4499 | "name": "symfony/security-guard", 4500 | "version": "v5.0.2", 4501 | "source": { 4502 | "type": "git", 4503 | "url": "https://github.com/symfony/security-guard.git", 4504 | "reference": "3e724cb9c186986e66ca2c1aaaba16fe4aa9abf9" 4505 | }, 4506 | "dist": { 4507 | "type": "zip", 4508 | "url": "https://api.github.com/repos/symfony/security-guard/zipball/3e724cb9c186986e66ca2c1aaaba16fe4aa9abf9", 4509 | "reference": "3e724cb9c186986e66ca2c1aaaba16fe4aa9abf9", 4510 | "shasum": "" 4511 | }, 4512 | "require": { 4513 | "php": "^7.2.5", 4514 | "symfony/security-core": "^5.0", 4515 | "symfony/security-http": "^4.4.1|^5.0.1" 4516 | }, 4517 | "require-dev": { 4518 | "psr/log": "~1.0" 4519 | }, 4520 | "type": "library", 4521 | "extra": { 4522 | "branch-alias": { 4523 | "dev-master": "5.0-dev" 4524 | } 4525 | }, 4526 | "autoload": { 4527 | "psr-4": { 4528 | "Symfony\\Component\\Security\\Guard\\": "" 4529 | }, 4530 | "exclude-from-classmap": [ 4531 | "/Tests/" 4532 | ] 4533 | }, 4534 | "notification-url": "https://packagist.org/downloads/", 4535 | "license": [ 4536 | "MIT" 4537 | ], 4538 | "authors": [ 4539 | { 4540 | "name": "Fabien Potencier", 4541 | "email": "fabien@symfony.com" 4542 | }, 4543 | { 4544 | "name": "Symfony Community", 4545 | "homepage": "https://symfony.com/contributors" 4546 | } 4547 | ], 4548 | "description": "Symfony Security Component - Guard", 4549 | "homepage": "https://symfony.com", 4550 | "time": "2019-11-30T14:12:50+00:00" 4551 | }, 4552 | { 4553 | "name": "symfony/security-http", 4554 | "version": "v5.0.2", 4555 | "source": { 4556 | "type": "git", 4557 | "url": "https://github.com/symfony/security-http.git", 4558 | "reference": "64afb9eb9161c65f87de6fc31e3633843bddc02a" 4559 | }, 4560 | "dist": { 4561 | "type": "zip", 4562 | "url": "https://api.github.com/repos/symfony/security-http/zipball/64afb9eb9161c65f87de6fc31e3633843bddc02a", 4563 | "reference": "64afb9eb9161c65f87de6fc31e3633843bddc02a", 4564 | "shasum": "" 4565 | }, 4566 | "require": { 4567 | "php": "^7.2.5", 4568 | "symfony/http-foundation": "^4.4|^5.0", 4569 | "symfony/http-kernel": "^4.4|^5.0", 4570 | "symfony/property-access": "^4.4|^5.0", 4571 | "symfony/security-core": "^4.4|^5.0" 4572 | }, 4573 | "conflict": { 4574 | "symfony/security-csrf": "<4.4" 4575 | }, 4576 | "require-dev": { 4577 | "psr/log": "~1.0", 4578 | "symfony/routing": "^4.4|^5.0", 4579 | "symfony/security-csrf": "^4.4|^5.0" 4580 | }, 4581 | "suggest": { 4582 | "symfony/routing": "For using the HttpUtils class to create sub-requests, redirect the user, and match URLs", 4583 | "symfony/security-csrf": "For using tokens to protect authentication/logout attempts" 4584 | }, 4585 | "type": "library", 4586 | "extra": { 4587 | "branch-alias": { 4588 | "dev-master": "5.0-dev" 4589 | } 4590 | }, 4591 | "autoload": { 4592 | "psr-4": { 4593 | "Symfony\\Component\\Security\\Http\\": "" 4594 | }, 4595 | "exclude-from-classmap": [ 4596 | "/Tests/" 4597 | ] 4598 | }, 4599 | "notification-url": "https://packagist.org/downloads/", 4600 | "license": [ 4601 | "MIT" 4602 | ], 4603 | "authors": [ 4604 | { 4605 | "name": "Fabien Potencier", 4606 | "email": "fabien@symfony.com" 4607 | }, 4608 | { 4609 | "name": "Symfony Community", 4610 | "homepage": "https://symfony.com/contributors" 4611 | } 4612 | ], 4613 | "description": "Symfony Security Component - HTTP Integration", 4614 | "homepage": "https://symfony.com", 4615 | "time": "2019-12-16T10:47:49+00:00" 4616 | }, 4617 | { 4618 | "name": "symfony/service-contracts", 4619 | "version": "v2.0.1", 4620 | "source": { 4621 | "type": "git", 4622 | "url": "https://github.com/symfony/service-contracts.git", 4623 | "reference": "144c5e51266b281231e947b51223ba14acf1a749" 4624 | }, 4625 | "dist": { 4626 | "type": "zip", 4627 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", 4628 | "reference": "144c5e51266b281231e947b51223ba14acf1a749", 4629 | "shasum": "" 4630 | }, 4631 | "require": { 4632 | "php": "^7.2.5", 4633 | "psr/container": "^1.0" 4634 | }, 4635 | "suggest": { 4636 | "symfony/service-implementation": "" 4637 | }, 4638 | "type": "library", 4639 | "extra": { 4640 | "branch-alias": { 4641 | "dev-master": "2.0-dev" 4642 | } 4643 | }, 4644 | "autoload": { 4645 | "psr-4": { 4646 | "Symfony\\Contracts\\Service\\": "" 4647 | } 4648 | }, 4649 | "notification-url": "https://packagist.org/downloads/", 4650 | "license": [ 4651 | "MIT" 4652 | ], 4653 | "authors": [ 4654 | { 4655 | "name": "Nicolas Grekas", 4656 | "email": "p@tchwork.com" 4657 | }, 4658 | { 4659 | "name": "Symfony Community", 4660 | "homepage": "https://symfony.com/contributors" 4661 | } 4662 | ], 4663 | "description": "Generic abstractions related to writing services", 4664 | "homepage": "https://symfony.com", 4665 | "keywords": [ 4666 | "abstractions", 4667 | "contracts", 4668 | "decoupling", 4669 | "interfaces", 4670 | "interoperability", 4671 | "standards" 4672 | ], 4673 | "time": "2019-11-18T17:27:11+00:00" 4674 | }, 4675 | { 4676 | "name": "symfony/var-dumper", 4677 | "version": "v5.0.2", 4678 | "source": { 4679 | "type": "git", 4680 | "url": "https://github.com/symfony/var-dumper.git", 4681 | "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a" 4682 | }, 4683 | "dist": { 4684 | "type": "zip", 4685 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a", 4686 | "reference": "d7bc61d5d335fa9b1b91e14bb16861e8ca50f53a", 4687 | "shasum": "" 4688 | }, 4689 | "require": { 4690 | "php": "^7.2.5", 4691 | "symfony/polyfill-mbstring": "~1.0" 4692 | }, 4693 | "conflict": { 4694 | "phpunit/phpunit": "<5.4.3", 4695 | "symfony/console": "<4.4" 4696 | }, 4697 | "require-dev": { 4698 | "ext-iconv": "*", 4699 | "symfony/console": "^4.4|^5.0", 4700 | "symfony/process": "^4.4|^5.0", 4701 | "twig/twig": "^2.4|^3.0" 4702 | }, 4703 | "suggest": { 4704 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 4705 | "ext-intl": "To show region name in time zone dump", 4706 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 4707 | }, 4708 | "bin": [ 4709 | "Resources/bin/var-dump-server" 4710 | ], 4711 | "type": "library", 4712 | "extra": { 4713 | "branch-alias": { 4714 | "dev-master": "5.0-dev" 4715 | } 4716 | }, 4717 | "autoload": { 4718 | "files": [ 4719 | "Resources/functions/dump.php" 4720 | ], 4721 | "psr-4": { 4722 | "Symfony\\Component\\VarDumper\\": "" 4723 | }, 4724 | "exclude-from-classmap": [ 4725 | "/Tests/" 4726 | ] 4727 | }, 4728 | "notification-url": "https://packagist.org/downloads/", 4729 | "license": [ 4730 | "MIT" 4731 | ], 4732 | "authors": [ 4733 | { 4734 | "name": "Nicolas Grekas", 4735 | "email": "p@tchwork.com" 4736 | }, 4737 | { 4738 | "name": "Symfony Community", 4739 | "homepage": "https://symfony.com/contributors" 4740 | } 4741 | ], 4742 | "description": "Symfony mechanism for exploring and dumping PHP variables", 4743 | "homepage": "https://symfony.com", 4744 | "keywords": [ 4745 | "debug", 4746 | "dump" 4747 | ], 4748 | "time": "2019-12-18T13:50:31+00:00" 4749 | }, 4750 | { 4751 | "name": "symfony/var-exporter", 4752 | "version": "v5.0.2", 4753 | "source": { 4754 | "type": "git", 4755 | "url": "https://github.com/symfony/var-exporter.git", 4756 | "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28" 4757 | }, 4758 | "dist": { 4759 | "type": "zip", 4760 | "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1b9653e68d5b701bf6d9c91bdd3660078c9f4f28", 4761 | "reference": "1b9653e68d5b701bf6d9c91bdd3660078c9f4f28", 4762 | "shasum": "" 4763 | }, 4764 | "require": { 4765 | "php": "^7.2.5" 4766 | }, 4767 | "require-dev": { 4768 | "symfony/var-dumper": "^4.4|^5.0" 4769 | }, 4770 | "type": "library", 4771 | "extra": { 4772 | "branch-alias": { 4773 | "dev-master": "5.0-dev" 4774 | } 4775 | }, 4776 | "autoload": { 4777 | "psr-4": { 4778 | "Symfony\\Component\\VarExporter\\": "" 4779 | }, 4780 | "exclude-from-classmap": [ 4781 | "/Tests/" 4782 | ] 4783 | }, 4784 | "notification-url": "https://packagist.org/downloads/", 4785 | "license": [ 4786 | "MIT" 4787 | ], 4788 | "authors": [ 4789 | { 4790 | "name": "Nicolas Grekas", 4791 | "email": "p@tchwork.com" 4792 | }, 4793 | { 4794 | "name": "Symfony Community", 4795 | "homepage": "https://symfony.com/contributors" 4796 | } 4797 | ], 4798 | "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", 4799 | "homepage": "https://symfony.com", 4800 | "keywords": [ 4801 | "clone", 4802 | "construct", 4803 | "export", 4804 | "hydrate", 4805 | "instantiate", 4806 | "serialize" 4807 | ], 4808 | "time": "2019-12-01T08:48:26+00:00" 4809 | }, 4810 | { 4811 | "name": "theseer/tokenizer", 4812 | "version": "1.1.3", 4813 | "source": { 4814 | "type": "git", 4815 | "url": "https://github.com/theseer/tokenizer.git", 4816 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" 4817 | }, 4818 | "dist": { 4819 | "type": "zip", 4820 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 4821 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 4822 | "shasum": "" 4823 | }, 4824 | "require": { 4825 | "ext-dom": "*", 4826 | "ext-tokenizer": "*", 4827 | "ext-xmlwriter": "*", 4828 | "php": "^7.0" 4829 | }, 4830 | "type": "library", 4831 | "autoload": { 4832 | "classmap": [ 4833 | "src/" 4834 | ] 4835 | }, 4836 | "notification-url": "https://packagist.org/downloads/", 4837 | "license": [ 4838 | "BSD-3-Clause" 4839 | ], 4840 | "authors": [ 4841 | { 4842 | "name": "Arne Blankerts", 4843 | "email": "arne@blankerts.de", 4844 | "role": "Developer" 4845 | } 4846 | ], 4847 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4848 | "time": "2019-06-13T22:48:21+00:00" 4849 | }, 4850 | { 4851 | "name": "webmozart/assert", 4852 | "version": "1.6.0", 4853 | "source": { 4854 | "type": "git", 4855 | "url": "https://github.com/webmozart/assert.git", 4856 | "reference": "573381c0a64f155a0d9a23f4b0c797194805b925" 4857 | }, 4858 | "dist": { 4859 | "type": "zip", 4860 | "url": "https://api.github.com/repos/webmozart/assert/zipball/573381c0a64f155a0d9a23f4b0c797194805b925", 4861 | "reference": "573381c0a64f155a0d9a23f4b0c797194805b925", 4862 | "shasum": "" 4863 | }, 4864 | "require": { 4865 | "php": "^5.3.3 || ^7.0", 4866 | "symfony/polyfill-ctype": "^1.8" 4867 | }, 4868 | "conflict": { 4869 | "vimeo/psalm": "<3.6.0" 4870 | }, 4871 | "require-dev": { 4872 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 4873 | }, 4874 | "type": "library", 4875 | "autoload": { 4876 | "psr-4": { 4877 | "Webmozart\\Assert\\": "src/" 4878 | } 4879 | }, 4880 | "notification-url": "https://packagist.org/downloads/", 4881 | "license": [ 4882 | "MIT" 4883 | ], 4884 | "authors": [ 4885 | { 4886 | "name": "Bernhard Schussek", 4887 | "email": "bschussek@gmail.com" 4888 | } 4889 | ], 4890 | "description": "Assertions to validate method input/output with nice error messages.", 4891 | "keywords": [ 4892 | "assert", 4893 | "check", 4894 | "validate" 4895 | ], 4896 | "time": "2019-11-24T13:36:37+00:00" 4897 | } 4898 | ], 4899 | "packages-dev": [], 4900 | "aliases": [], 4901 | "minimum-stability": "stable", 4902 | "stability-flags": [], 4903 | "prefer-stable": false, 4904 | "prefer-lowest": false, 4905 | "platform": { 4906 | "php": "^7.2.5" 4907 | }, 4908 | "platform-dev": [] 4909 | } 4910 | -------------------------------------------------------------------------------- /src/Concerns/WithAuthenticationTrait.php: -------------------------------------------------------------------------------- 1 | getRoles(), $roles)); 27 | } 28 | 29 | $this->authenticate($client, $user, $firewallName, $roles); 30 | } 31 | 32 | /** 33 | * Authenticate as a user 34 | * 35 | * @param KernelBrowser $client 36 | * @param string|UserInterface $user A string or a valid UserInterface instance 37 | * @param string $firewallName 38 | * @param array $roles 39 | * 40 | * @return void 41 | */ 42 | public function authenticate( 43 | KernelBrowser $client, 44 | $user, 45 | string $firewallName = 'main', 46 | array $roles = [] 47 | ): void { 48 | 49 | if (\is_string($user)) { 50 | $roles[] = 'ROLE_USER'; 51 | $roles = \array_unique($roles); 52 | } 53 | 54 | if ($user instanceof UserInterface) { 55 | $roles = $user->getRoles(); 56 | } 57 | 58 | $session = $client->getContainer()->get('session'); 59 | 60 | $token = new UsernamePasswordToken($user, null, $firewallName, $roles); 61 | $session->set('_security_' . $firewallName, \serialize($token)); 62 | $session->save(); 63 | 64 | $cookie = new Cookie($session->getName(), $session->getId()); 65 | $client->getCookieJar()->set($cookie); 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /src/Concerns/WithClientAutoInitializeTrait.php: -------------------------------------------------------------------------------- 1 | initializeClient(); 13 | } 14 | } 15 | 16 | protected function tearDown(): void 17 | { 18 | if (isset($this->client)) { 19 | $this->client = null; 20 | } 21 | 22 | if ($this instanceof KernelTestCase) { 23 | static::ensureKernelShutdown(); 24 | } 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Concerns/WithClientTrait.php: -------------------------------------------------------------------------------- 1 | ensureClientInitialized(); 21 | 22 | $this->assertStringContainsString($string, $this->client->getResponse()->getContent()); 23 | 24 | return $this; 25 | } 26 | 27 | /** 28 | * Assert response does not contain specified string 29 | */ 30 | public function assertNotSee(string $string): self 31 | { 32 | $this->ensureClientInitialized(); 33 | 34 | $this->assertNotContains($string, $this->client->getResponse()->getContent()); 35 | 36 | return $this; 37 | } 38 | 39 | public function initializeClient(...$clientArguments): void 40 | { 41 | if (!$this instanceof WebTestCase) { 42 | throw new ClientNotCreatedException(\sprintf( 43 | 'Could not create client. Test case must extend %s.', 44 | WebTestCase::class 45 | )); 46 | } 47 | 48 | $this->client = static::createClient(...$clientArguments); 49 | } 50 | 51 | public function ensureClientInitialized(): void 52 | { 53 | if (!$this->client) { 54 | $this->initializeClient(); 55 | } 56 | } 57 | 58 | /** 59 | * Send GET request 60 | * 61 | * @param string $url 62 | * @param array $parameters 63 | * @param array $files 64 | * @param array $server 65 | * @param string|null $content 66 | * @param boolean $changeHistory 67 | * @return Crawler 68 | */ 69 | protected function get(string $url, array $parameters = [], array $files = [], array $server = [], ?string $content = null, bool $changeHistory = true) 70 | { 71 | $this->ensureClientInitialized(); 72 | 73 | return $this->client->request('GET', $url, $parameters, $files, $server, $content, $changeHistory); 74 | } 75 | 76 | /** 77 | * Send POST request 78 | * 79 | * @param string $url 80 | * @param array $parameters 81 | * @param array $files 82 | * @param array $server 83 | * @param string|null $content 84 | * @param boolean $changeHistory 85 | * @return Crawler 86 | */ 87 | protected function post(string $url, array $parameters = [], array $files = [], array $server = [], ?string $content = null, bool $changeHistory = true) 88 | { 89 | $this->ensureClientInitialized(); 90 | 91 | return $this->client->request('POST', $url, $parameters, $files, $server, $content, $changeHistory); 92 | } 93 | 94 | /** 95 | * Send DELETE request 96 | * 97 | * @param string $url 98 | * @param array $parameters 99 | * @param array $files 100 | * @param array $server 101 | * @param string|null $content 102 | * @param boolean $changeHistory 103 | * @return Crawler 104 | */ 105 | protected function delete(string $url, array $parameters = [], array $files = [], array $server = [], ?string $content = null, bool $changeHistory = true) 106 | { 107 | $this->ensureClientInitialized(); 108 | 109 | return $this->client->request('DELETE', $url, $parameters, $files, $server, $content, $changeHistory); 110 | } 111 | 112 | /** 113 | * Send PUT request 114 | * 115 | * @param string $url 116 | * @param array $parameters 117 | * @param array $files 118 | * @param array $server 119 | * @param string|null $content 120 | * @param boolean $changeHistory 121 | * @return Crawler 122 | */ 123 | protected function put(string $url, array $parameters = [], array $files = [], array $server = [], ?string $content = null, bool $changeHistory = true) 124 | { 125 | $this->ensureClientInitialized(); 126 | 127 | return $this->client->request('PUT', $url, $parameters, $files, $server, $content, $changeHistory); 128 | } 129 | 130 | /** 131 | * Send PATCH request 132 | * 133 | * @param string $url 134 | * @param array $parameters 135 | * @param array $files 136 | * @param array $server 137 | * @param string|null $content 138 | * @param boolean $changeHistory 139 | * @return Crawler 140 | */ 141 | protected function patch(string $url, array $parameters = [], array $files = [], array $server = [], ?string $content = null, bool $changeHistory = true) 142 | { 143 | $this->ensureClientInitialized(); 144 | 145 | return $this->client->request('PATCH', $url, $parameters, $files, $server, $content, $changeHistory); 146 | } 147 | } 148 | -------------------------------------------------------------------------------- /src/Concerns/WithContainerTrait.php: -------------------------------------------------------------------------------- 1 | manager) { 27 | $this->manager = $this->getContainer()->get('doctrine.orm.entity_manager'); 28 | } 29 | 30 | return $this->manager; 31 | } 32 | 33 | /** 34 | * Retrieve Doctrine 35 | */ 36 | protected function getDoctrine(): ManagerRegistry 37 | { 38 | if (!$this->managerRegistry) { 39 | $this->managerRegistry = $this->getContainer()->get('doctrine'); 40 | } 41 | 42 | return $this->managerRegistry; 43 | } 44 | 45 | /** 46 | * Create serveral rows in database (returns array of entities) 47 | * 48 | * @return object[] The persisted entities. 49 | */ 50 | protected function createMany(string $entityClass, int $numberToCreate, callable $constructor = null): array 51 | { 52 | $entities = []; 53 | 54 | for ($i = 0; $i < $numberToCreate; $i++) { 55 | $entity = $this->createOne($entityClass, $constructor, $i, false); 56 | 57 | $entities[] = $entity; 58 | } 59 | 60 | $this->getManager()->flush(); 61 | 62 | return $entities; 63 | } 64 | 65 | /** 66 | * Create a row inside the database (returns the persisted entity) 67 | * 68 | * @param string|object $entity Entity class or entity instance. 69 | * @param mixed $metadata Some data to send to the $constructor callback. 70 | * @param callable $constructor A callable that receives $entity as argument to customize the object after creation. 71 | * 72 | * @return object The persisted entity. 73 | */ 74 | protected function createOne($entity, callable $constructor = null, $metadata = null, bool $andFlush = true): object 75 | { 76 | if (\is_string($entity)) { 77 | $entity = new $entity; 78 | } 79 | 80 | if ($constructor) { 81 | $constructor($entity, $metadata); 82 | } 83 | 84 | $this->getManager()->persist($entity); 85 | 86 | if ($andFlush) { 87 | $this->getManager()->flush(); 88 | } 89 | 90 | return $entity; 91 | } 92 | 93 | /** 94 | * Get Entity Repository 95 | */ 96 | protected function getRepository(string $class): EntityRepository 97 | { 98 | return $this->getDoctrine()->getRepository($class); 99 | } 100 | 101 | /** 102 | * Lookup for all database entries for an entity and assert that it does not find a string or an array of properties. 103 | * 104 | * @param string|array $expected A string or an array containing an expected row data 105 | * @param string $entityClassName 106 | * @param callable|null $qbCustomizer A callable which will receive the QueryBuilder to create a custom query, it will receive 2 params : the QueryBuilder instance and the rootAlias used for the query 107 | */ 108 | protected function assertDatabaseNotHas($expected, string $entityClassName, callable $qbCustomizer = null): self 109 | { 110 | $data = $this->getQueryResults($entityClassName, $qbCustomizer); 111 | 112 | if (\is_array($expected)) { 113 | $this->assertFalse($this->arrayContainsArray($expected, $data), 'Failed to assert that array was found in database'); 114 | return; 115 | } 116 | 117 | $this->assertNotContains($expected, \serialize($data)); 118 | 119 | return $this; 120 | } 121 | 122 | /** 123 | * Lookup for all database entries for an entity and assert that it finds a string or an array of properties. 124 | * 125 | * @param string|array $expected A string or an array containing an expected row data 126 | * @param string $entityClassName 127 | * @param callable|null $qbCustomizer A callable which will receive the QueryBuilder to create a custom query, it will receive 2 params : the QueryBuilder instance and the rootAlias used for the query 128 | */ 129 | protected function assertDatabaseHas($expected, string $entityClassName, callable $qbCustomizer = null): self 130 | { 131 | $data = $this->getQueryResults($entityClassName, $qbCustomizer); 132 | 133 | if (\is_array($expected)) { 134 | $this->assertTrue($this->arrayContainsArray($expected, $data), 'Failed to assert that array was found in database'); 135 | return; 136 | } 137 | 138 | $this->assertStringContainsString($expected, \serialize($data)); 139 | 140 | return $this; 141 | } 142 | 143 | /** 144 | * Create a query builder and returns data as a flat array 145 | * 146 | * @param string $entityClassName The Entity which we are searching 147 | * @param callable $qbCustomizer A callback that will receive the query builder in order to customize it 148 | */ 149 | protected function getQueryResults(string $entityClassName, callable $qbCustomizer = null): array 150 | { 151 | $rootAlias = 'stringThatNoOneWillEverUse'; 152 | 153 | $queryBuilder = $this->getManager() 154 | ->createQueryBuilder() 155 | ->select($rootAlias) 156 | ->from($entityClassName, $rootAlias); 157 | 158 | if ($qbCustomizer) { 159 | $qbCustomizer($queryBuilder, $rootAlias); 160 | } 161 | 162 | return $queryBuilder 163 | ->getQuery() 164 | ->getResult(Query::HYDRATE_ARRAY); 165 | } 166 | 167 | /** 168 | * Looks for for data (array format) in database 169 | */ 170 | protected function arrayContainsArray(array $expected, array $array): bool 171 | { 172 | foreach ($array as $row) { 173 | $rowCorresponds = true; 174 | 175 | foreach ($expected as $key => $value) { 176 | 177 | if (!array_key_exists($key, $row)) { 178 | // Since we have a query result, if the first row hasn't this column, no row will have 179 | throw new Exception("Expected array does not match with database results : key `$key` was not found in results"); 180 | } 181 | 182 | if ($row[$key] != $value) { 183 | // No matching value for a key means this row is not what we are looking for, skip to next row 184 | $rowCorresponds = false; 185 | continue 2; 186 | } 187 | } 188 | 189 | if ($rowCorresponds) { 190 | return true; 191 | } 192 | } 193 | 194 | return false; 195 | } 196 | } 197 | -------------------------------------------------------------------------------- /src/Concerns/WithFakerTrait.php: -------------------------------------------------------------------------------- 1 | fakerInstance) { 19 | $this->initializeFaker(); 20 | } 21 | 22 | return $this->fakerInstance; 23 | } 24 | 25 | /** 26 | * @param callable|null $constructor A callable which will return a faker instance (if you want to tweak it, add providers, etc) 27 | */ 28 | protected function initializeFaker(?callable $constructor = null): void 29 | { 30 | if ($constructor) { 31 | $instance = $constructor(); 32 | 33 | if (!$instance instanceof Generator) { 34 | throw new \RuntimeException(\sprintf( 35 | 'Faker created by callable must extend "%s", "%s" given.', 36 | Generator::class, \is_object($instance) ? \get_class($instance) : \gettype($instance) 37 | )); 38 | } 39 | 40 | $this->fakerInstance = $instance; 41 | 42 | return; 43 | } 44 | 45 | $this->fakerInstance = Factory::create($this->fakerLocale); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/Exception/ClientNotCreatedException.php: -------------------------------------------------------------------------------- 1 |