├── .env.dist ├── .gitignore ├── README.md ├── app ├── .gitignore ├── bin │ ├── console │ └── react ├── composer.json ├── composer.lock ├── composer.sh ├── config │ ├── bundles.php │ ├── packages │ │ ├── dev │ │ │ └── routing.yaml │ │ ├── framework.yaml │ │ ├── nyholm_psr7.yaml │ │ ├── routing.yaml │ │ ├── sensio_framework_extra.yaml │ │ └── test │ │ │ └── framework.yaml │ ├── routes.yaml │ ├── routes │ │ └── annotations.yaml │ └── services.yaml ├── public │ └── index.php ├── src │ ├── Controller │ │ ├── .gitignore │ │ └── HelloWorldController.php │ └── Kernel.php └── symfony.lock ├── docker-compose.yml └── docker ├── app ├── Dockerfile └── entrypoint.sh └── php ├── log.conf └── php.conf /.env.dist: -------------------------------------------------------------------------------- 1 | TIMEZONE=America/Chicago -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | 3 | composer.phar 4 | app/vendor 5 | .env 6 | 7 | ###> symfony/framework-bundle ### 8 | /app/.env 9 | /app/public/bundles/ 10 | /app/var/ 11 | /app/vendor/ 12 | ###< symfony/framework-bundle ### -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Symfony 4 + ReactPHP 2 | 3 | Demo of a simple Symfony 4 application running in ReactPHP 4 | 5 | Slides: https://www.slideshare.net/DavidBergunder/reactphp-symfony 6 | 7 | ### References 8 | - [Install Symfony 4 and Flex](https://symfony.com/doc/current/setup.html) 9 | - [ReactPHP documentation](https://reactphp.org/) 10 | - [ReactPHP Github](https://github.com/reactphp/react) 11 | - [Conversion between request/response types](http://symfony.com/doc/current/bundles/SensioFrameworkExtraBundle/index.html#psr-7-support) 12 | - [HttpFoundation Bridge](https://github.com/symfony/psr-http-message-bridge) 13 | - [Zend Diactoros](https://github.com/zendframework/zend-diactoros) 14 | 15 | ### Wired Up 16 | Executable PHP command in [bin/react](/app/bin/react) 17 | ```bash 18 | $ bin/react 19 | ``` 20 | 21 | ### Caveats 22 | - Convert HttpFoundation Request/Response between Psr Request/Response 23 | - File uploads/transfers 24 | - Symfony debug and profiling enabled means memory leaks! -------------------------------------------------------------------------------- /app/.gitignore: -------------------------------------------------------------------------------- 1 | /.idea 2 | ###> symfony/framework-bundle ### 3 | /app/.env 4 | /app/public/bundles/ 5 | /app/var/ 6 | /app/vendor/ 7 | ###< symfony/framework-bundle ### 8 | -------------------------------------------------------------------------------- /app/bin/console: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | load(__DIR__.'/../.env'); 23 | } 24 | 25 | $input = new ArgvInput(); 26 | $env = $input->getParameterOption(['--env', '-e'], $_SERVER['APP_ENV'] ?? 'dev', true); 27 | $debug = (bool) ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)) && !$input->hasParameterOption('--no-debug', true); 28 | 29 | if ($debug) { 30 | umask(0000); 31 | 32 | if (class_exists(Debug::class)) { 33 | Debug::enable(); 34 | } 35 | } 36 | 37 | $kernel = new Kernel($env, $debug); 38 | $application = new Application($kernel); 39 | $application->run($input); 40 | -------------------------------------------------------------------------------- /app/bin/react: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env php 2 | load(__DIR__ . '/../.env'); 22 | } 23 | 24 | $env = $_SERVER['APP_ENV'] ?? 'prod'; 25 | $debug = (bool) ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)); 26 | 27 | if ($debug) { 28 | umask(0000); 29 | Debug::enable(); 30 | } 31 | 32 | // Initialize kernel 33 | $kernel = new Kernel($env, $debug); 34 | 35 | $httpFoundationFactory = new HttpFoundationFactory(); 36 | $psr7Factory = new Psr17Factory(); 37 | $psrHttpFactory = new PsrHttpFactory($psr7Factory, $psr7Factory, $psr7Factory, $psr7Factory); 38 | 39 | // Callback for the loop 40 | $callback = function(Psr\Http\Message\ServerRequestInterface $request) use ($kernel, $httpFoundationFactory, $psrHttpFactory) { 41 | try { 42 | $kernel->incrementCount(); 43 | // Convert the Psr Request to Symfony Request 44 | $symfonyRequest = $httpFoundationFactory->createRequest($request); 45 | // Track request count per running instance of kernel 46 | $symfonyRequest->attributes->set('count', $kernel->getCount()); 47 | $response = $kernel->handle($symfonyRequest); 48 | } catch (\Throwable $e) { 49 | return new React\Http\Response( 50 | 500, 51 | ['Content-Type' => 'text/plain'], 52 | $e->getMessage() 53 | ); 54 | } 55 | 56 | // Convert the Symfony response to Psr response 57 | return $psrHttpFactory->createResponse($response); 58 | }; 59 | 60 | $loop = React\EventLoop\Factory::create(); 61 | 62 | $server = new React\Http\Server($callback); 63 | 64 | $socket = new React\Socket\Server('0.0.0.0:8081', $loop); 65 | $server->listen($socket); 66 | 67 | echo "System Online http://127.0.0.1:8081\n"; 68 | 69 | $loop->run(); -------------------------------------------------------------------------------- /app/composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "project", 3 | "license": "proprietary", 4 | "require": { 5 | "php": "^7.2", 6 | "ext-iconv": "*", 7 | "nyholm/psr7": "^1.1", 8 | "react/event-loop": "^0.5.1", 9 | "react/http": "^0.8.3", 10 | "sensio/framework-extra-bundle": "^5.1", 11 | "symfony/console": "^4.0", 12 | "symfony/flex": "^1.1", 13 | "symfony/framework-bundle": "^4.0", 14 | "symfony/http-foundation": "^4.0", 15 | "symfony/psr-http-message-bridge": "^1.0", 16 | "symfony/yaml": "^4.0", 17 | "zendframework/zend-diactoros": "^1.7" 18 | }, 19 | "require-dev": { 20 | "symfony/dotenv": "^4.0" 21 | }, 22 | "config": { 23 | "preferred-install": { 24 | "*": "dist" 25 | }, 26 | "sort-packages": true 27 | }, 28 | "autoload": { 29 | "psr-4": { 30 | "App\\": "src/" 31 | } 32 | }, 33 | "autoload-dev": { 34 | "psr-4": { 35 | "App\\Tests\\": "tests/" 36 | } 37 | }, 38 | "replace": { 39 | "symfony/polyfill-iconv": "*", 40 | "symfony/polyfill-php71": "*", 41 | "symfony/polyfill-php70": "*", 42 | "symfony/polyfill-php56": "*" 43 | }, 44 | "scripts": { 45 | "auto-scripts": { 46 | "cache:clear": "symfony-cmd", 47 | "assets:install --symlink --relative %PUBLIC_DIR%": "symfony-cmd" 48 | }, 49 | "post-install-cmd": [ 50 | "@auto-scripts" 51 | ], 52 | "post-update-cmd": [ 53 | "@auto-scripts" 54 | ] 55 | }, 56 | "conflict": { 57 | "symfony/symfony": "*" 58 | }, 59 | "extra": { 60 | "symfony": { 61 | "id": "01CBCQHJ5AZZSHQ22Z3QH8ENXN", 62 | "allow-contrib": false 63 | } 64 | } 65 | } 66 | -------------------------------------------------------------------------------- /app/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": "5eb5b8b4f49f8cb6a4d889504bac49c9", 8 | "packages": [ 9 | { 10 | "name": "doctrine/annotations", 11 | "version": "v1.7.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/annotations.git", 15 | "reference": "fa4c4e861e809d6a1103bd620cce63ed91aedfeb" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/fa4c4e861e809d6a1103bd620cce63ed91aedfeb", 20 | "reference": "fa4c4e861e809d6a1103bd620cce63ed91aedfeb", 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@dev" 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-08-08T18:11:40+00:00" 76 | }, 77 | { 78 | "name": "doctrine/cache", 79 | "version": "v1.8.0", 80 | "source": { 81 | "type": "git", 82 | "url": "https://github.com/doctrine/cache.git", 83 | "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57" 84 | }, 85 | "dist": { 86 | "type": "zip", 87 | "url": "https://api.github.com/repos/doctrine/cache/zipball/d768d58baee9a4862ca783840eca1b9add7a7f57", 88 | "reference": "d768d58baee9a4862ca783840eca1b9add7a7f57", 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": "^4.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.8.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": "Roman Borschel", 125 | "email": "roman@code-factory.org" 126 | }, 127 | { 128 | "name": "Benjamin Eberlei", 129 | "email": "kontakt@beberlei.de" 130 | }, 131 | { 132 | "name": "Guilherme Blanco", 133 | "email": "guilhermeblanco@gmail.com" 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": "Caching library offering an object-oriented API for many cache backends", 145 | "homepage": "https://www.doctrine-project.org", 146 | "keywords": [ 147 | "cache", 148 | "caching" 149 | ], 150 | "time": "2018-08-21T18:01:43+00:00" 151 | }, 152 | { 153 | "name": "doctrine/collections", 154 | "version": "v1.6.2", 155 | "source": { 156 | "type": "git", 157 | "url": "https://github.com/doctrine/collections.git", 158 | "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be" 159 | }, 160 | "dist": { 161 | "type": "zip", 162 | "url": "https://api.github.com/repos/doctrine/collections/zipball/c5e0bc17b1620e97c968ac409acbff28b8b850be", 163 | "reference": "c5e0bc17b1620e97c968ac409acbff28b8b850be", 164 | "shasum": "" 165 | }, 166 | "require": { 167 | "php": "^7.1.3" 168 | }, 169 | "require-dev": { 170 | "doctrine/coding-standard": "^6.0", 171 | "phpstan/phpstan-shim": "^0.9.2", 172 | "phpunit/phpunit": "^7.0", 173 | "vimeo/psalm": "^3.2.2" 174 | }, 175 | "type": "library", 176 | "extra": { 177 | "branch-alias": { 178 | "dev-master": "1.6.x-dev" 179 | } 180 | }, 181 | "autoload": { 182 | "psr-4": { 183 | "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" 184 | } 185 | }, 186 | "notification-url": "https://packagist.org/downloads/", 187 | "license": [ 188 | "MIT" 189 | ], 190 | "authors": [ 191 | { 192 | "name": "Roman Borschel", 193 | "email": "roman@code-factory.org" 194 | }, 195 | { 196 | "name": "Benjamin Eberlei", 197 | "email": "kontakt@beberlei.de" 198 | }, 199 | { 200 | "name": "Guilherme Blanco", 201 | "email": "guilhermeblanco@gmail.com" 202 | }, 203 | { 204 | "name": "Jonathan Wage", 205 | "email": "jonwage@gmail.com" 206 | }, 207 | { 208 | "name": "Johannes Schmitt", 209 | "email": "schmittjoh@gmail.com" 210 | } 211 | ], 212 | "description": "PHP Doctrine Collections library that adds additional functionality on top of PHP arrays.", 213 | "homepage": "https://www.doctrine-project.org/projects/collections.html", 214 | "keywords": [ 215 | "array", 216 | "collections", 217 | "iterators", 218 | "php" 219 | ], 220 | "time": "2019-06-09T13:48:14+00:00" 221 | }, 222 | { 223 | "name": "doctrine/event-manager", 224 | "version": "v1.0.0", 225 | "source": { 226 | "type": "git", 227 | "url": "https://github.com/doctrine/event-manager.git", 228 | "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3" 229 | }, 230 | "dist": { 231 | "type": "zip", 232 | "url": "https://api.github.com/repos/doctrine/event-manager/zipball/a520bc093a0170feeb6b14e9d83f3a14452e64b3", 233 | "reference": "a520bc093a0170feeb6b14e9d83f3a14452e64b3", 234 | "shasum": "" 235 | }, 236 | "require": { 237 | "php": "^7.1" 238 | }, 239 | "conflict": { 240 | "doctrine/common": "<2.9@dev" 241 | }, 242 | "require-dev": { 243 | "doctrine/coding-standard": "^4.0", 244 | "phpunit/phpunit": "^7.0" 245 | }, 246 | "type": "library", 247 | "extra": { 248 | "branch-alias": { 249 | "dev-master": "1.0.x-dev" 250 | } 251 | }, 252 | "autoload": { 253 | "psr-4": { 254 | "Doctrine\\Common\\": "lib/Doctrine/Common" 255 | } 256 | }, 257 | "notification-url": "https://packagist.org/downloads/", 258 | "license": [ 259 | "MIT" 260 | ], 261 | "authors": [ 262 | { 263 | "name": "Roman Borschel", 264 | "email": "roman@code-factory.org" 265 | }, 266 | { 267 | "name": "Benjamin Eberlei", 268 | "email": "kontakt@beberlei.de" 269 | }, 270 | { 271 | "name": "Guilherme Blanco", 272 | "email": "guilhermeblanco@gmail.com" 273 | }, 274 | { 275 | "name": "Jonathan Wage", 276 | "email": "jonwage@gmail.com" 277 | }, 278 | { 279 | "name": "Johannes Schmitt", 280 | "email": "schmittjoh@gmail.com" 281 | }, 282 | { 283 | "name": "Marco Pivetta", 284 | "email": "ocramius@gmail.com" 285 | } 286 | ], 287 | "description": "Doctrine Event Manager component", 288 | "homepage": "https://www.doctrine-project.org/projects/event-manager.html", 289 | "keywords": [ 290 | "event", 291 | "eventdispatcher", 292 | "eventmanager" 293 | ], 294 | "time": "2018-06-11T11:59:03+00:00" 295 | }, 296 | { 297 | "name": "doctrine/lexer", 298 | "version": "1.1.0", 299 | "source": { 300 | "type": "git", 301 | "url": "https://github.com/doctrine/lexer.git", 302 | "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea" 303 | }, 304 | "dist": { 305 | "type": "zip", 306 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/e17f069ede36f7534b95adec71910ed1b49c74ea", 307 | "reference": "e17f069ede36f7534b95adec71910ed1b49c74ea", 308 | "shasum": "" 309 | }, 310 | "require": { 311 | "php": "^7.2" 312 | }, 313 | "require-dev": { 314 | "doctrine/coding-standard": "^6.0", 315 | "phpstan/phpstan": "^0.11.8", 316 | "phpunit/phpunit": "^8.2" 317 | }, 318 | "type": "library", 319 | "extra": { 320 | "branch-alias": { 321 | "dev-master": "1.1.x-dev" 322 | } 323 | }, 324 | "autoload": { 325 | "psr-4": { 326 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 327 | } 328 | }, 329 | "notification-url": "https://packagist.org/downloads/", 330 | "license": [ 331 | "MIT" 332 | ], 333 | "authors": [ 334 | { 335 | "name": "Guilherme Blanco", 336 | "email": "guilhermeblanco@gmail.com" 337 | }, 338 | { 339 | "name": "Roman Borschel", 340 | "email": "roman@code-factory.org" 341 | }, 342 | { 343 | "name": "Johannes Schmitt", 344 | "email": "schmittjoh@gmail.com" 345 | } 346 | ], 347 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 348 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 349 | "keywords": [ 350 | "annotations", 351 | "docblock", 352 | "lexer", 353 | "parser", 354 | "php" 355 | ], 356 | "time": "2019-07-30T19:33:28+00:00" 357 | }, 358 | { 359 | "name": "doctrine/persistence", 360 | "version": "1.1.1", 361 | "source": { 362 | "type": "git", 363 | "url": "https://github.com/doctrine/persistence.git", 364 | "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48" 365 | }, 366 | "dist": { 367 | "type": "zip", 368 | "url": "https://api.github.com/repos/doctrine/persistence/zipball/3da7c9d125591ca83944f477e65ed3d7b4617c48", 369 | "reference": "3da7c9d125591ca83944f477e65ed3d7b4617c48", 370 | "shasum": "" 371 | }, 372 | "require": { 373 | "doctrine/annotations": "^1.0", 374 | "doctrine/cache": "^1.0", 375 | "doctrine/collections": "^1.0", 376 | "doctrine/event-manager": "^1.0", 377 | "doctrine/reflection": "^1.0", 378 | "php": "^7.1" 379 | }, 380 | "conflict": { 381 | "doctrine/common": "<2.10@dev" 382 | }, 383 | "require-dev": { 384 | "doctrine/coding-standard": "^5.0", 385 | "phpstan/phpstan": "^0.8", 386 | "phpunit/phpunit": "^7.0" 387 | }, 388 | "type": "library", 389 | "extra": { 390 | "branch-alias": { 391 | "dev-master": "1.1.x-dev" 392 | } 393 | }, 394 | "autoload": { 395 | "psr-4": { 396 | "Doctrine\\Common\\": "lib/Doctrine/Common" 397 | } 398 | }, 399 | "notification-url": "https://packagist.org/downloads/", 400 | "license": [ 401 | "MIT" 402 | ], 403 | "authors": [ 404 | { 405 | "name": "Roman Borschel", 406 | "email": "roman@code-factory.org" 407 | }, 408 | { 409 | "name": "Benjamin Eberlei", 410 | "email": "kontakt@beberlei.de" 411 | }, 412 | { 413 | "name": "Guilherme Blanco", 414 | "email": "guilhermeblanco@gmail.com" 415 | }, 416 | { 417 | "name": "Jonathan Wage", 418 | "email": "jonwage@gmail.com" 419 | }, 420 | { 421 | "name": "Johannes Schmitt", 422 | "email": "schmittjoh@gmail.com" 423 | }, 424 | { 425 | "name": "Marco Pivetta", 426 | "email": "ocramius@gmail.com" 427 | } 428 | ], 429 | "description": "The Doctrine Persistence project is a set of shared interfaces and functionality that the different Doctrine object mappers share.", 430 | "homepage": "https://doctrine-project.org/projects/persistence.html", 431 | "keywords": [ 432 | "mapper", 433 | "object", 434 | "odm", 435 | "orm", 436 | "persistence" 437 | ], 438 | "time": "2019-04-23T08:28:24+00:00" 439 | }, 440 | { 441 | "name": "doctrine/reflection", 442 | "version": "v1.0.0", 443 | "source": { 444 | "type": "git", 445 | "url": "https://github.com/doctrine/reflection.git", 446 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6" 447 | }, 448 | "dist": { 449 | "type": "zip", 450 | "url": "https://api.github.com/repos/doctrine/reflection/zipball/02538d3f95e88eb397a5f86274deb2c6175c2ab6", 451 | "reference": "02538d3f95e88eb397a5f86274deb2c6175c2ab6", 452 | "shasum": "" 453 | }, 454 | "require": { 455 | "doctrine/annotations": "^1.0", 456 | "ext-tokenizer": "*", 457 | "php": "^7.1" 458 | }, 459 | "require-dev": { 460 | "doctrine/coding-standard": "^4.0", 461 | "doctrine/common": "^2.8", 462 | "phpstan/phpstan": "^0.9.2", 463 | "phpstan/phpstan-phpunit": "^0.9.4", 464 | "phpunit/phpunit": "^7.0", 465 | "squizlabs/php_codesniffer": "^3.0" 466 | }, 467 | "type": "library", 468 | "extra": { 469 | "branch-alias": { 470 | "dev-master": "1.0.x-dev" 471 | } 472 | }, 473 | "autoload": { 474 | "psr-4": { 475 | "Doctrine\\Common\\": "lib/Doctrine/Common" 476 | } 477 | }, 478 | "notification-url": "https://packagist.org/downloads/", 479 | "license": [ 480 | "MIT" 481 | ], 482 | "authors": [ 483 | { 484 | "name": "Roman Borschel", 485 | "email": "roman@code-factory.org" 486 | }, 487 | { 488 | "name": "Benjamin Eberlei", 489 | "email": "kontakt@beberlei.de" 490 | }, 491 | { 492 | "name": "Guilherme Blanco", 493 | "email": "guilhermeblanco@gmail.com" 494 | }, 495 | { 496 | "name": "Jonathan Wage", 497 | "email": "jonwage@gmail.com" 498 | }, 499 | { 500 | "name": "Johannes Schmitt", 501 | "email": "schmittjoh@gmail.com" 502 | }, 503 | { 504 | "name": "Marco Pivetta", 505 | "email": "ocramius@gmail.com" 506 | } 507 | ], 508 | "description": "Doctrine Reflection component", 509 | "homepage": "https://www.doctrine-project.org/projects/reflection.html", 510 | "keywords": [ 511 | "reflection" 512 | ], 513 | "time": "2018-06-14T14:45:07+00:00" 514 | }, 515 | { 516 | "name": "evenement/evenement", 517 | "version": "v3.0.1", 518 | "source": { 519 | "type": "git", 520 | "url": "https://github.com/igorw/evenement.git", 521 | "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" 522 | }, 523 | "dist": { 524 | "type": "zip", 525 | "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", 526 | "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", 527 | "shasum": "" 528 | }, 529 | "require": { 530 | "php": ">=7.0" 531 | }, 532 | "require-dev": { 533 | "phpunit/phpunit": "^6.0" 534 | }, 535 | "type": "library", 536 | "autoload": { 537 | "psr-0": { 538 | "Evenement": "src" 539 | } 540 | }, 541 | "notification-url": "https://packagist.org/downloads/", 542 | "license": [ 543 | "MIT" 544 | ], 545 | "authors": [ 546 | { 547 | "name": "Igor Wiedler", 548 | "email": "igor@wiedler.ch" 549 | } 550 | ], 551 | "description": "Événement is a very simple event dispatching library for PHP", 552 | "keywords": [ 553 | "event-dispatcher", 554 | "event-emitter" 555 | ], 556 | "time": "2017-07-23T21:35:13+00:00" 557 | }, 558 | { 559 | "name": "nyholm/psr7", 560 | "version": "1.1.0", 561 | "source": { 562 | "type": "git", 563 | "url": "https://github.com/Nyholm/psr7.git", 564 | "reference": "701fe7ea8c12c07b985b156d589134d328160cf7" 565 | }, 566 | "dist": { 567 | "type": "zip", 568 | "url": "https://api.github.com/repos/Nyholm/psr7/zipball/701fe7ea8c12c07b985b156d589134d328160cf7", 569 | "reference": "701fe7ea8c12c07b985b156d589134d328160cf7", 570 | "shasum": "" 571 | }, 572 | "require": { 573 | "php": "^7.1", 574 | "php-http/message-factory": "^1.0", 575 | "psr/http-factory": "^1.0", 576 | "psr/http-message": "^1.0" 577 | }, 578 | "provide": { 579 | "psr/http-factory-implementation": "1.0", 580 | "psr/http-message-implementation": "1.0" 581 | }, 582 | "require-dev": { 583 | "http-interop/http-factory-tests": "dev-master", 584 | "php-http/psr7-integration-tests": "dev-master", 585 | "phpunit/phpunit": "^7.5" 586 | }, 587 | "type": "library", 588 | "extra": { 589 | "branch-alias": { 590 | "dev-master": "1.0-dev" 591 | } 592 | }, 593 | "autoload": { 594 | "psr-4": { 595 | "Nyholm\\Psr7\\": "src/" 596 | } 597 | }, 598 | "notification-url": "https://packagist.org/downloads/", 599 | "license": [ 600 | "MIT" 601 | ], 602 | "authors": [ 603 | { 604 | "name": "Tobias Nyholm", 605 | "email": "tobias.nyholm@gmail.com" 606 | }, 607 | { 608 | "name": "Martijn van der Ven", 609 | "email": "martijn@vanderven.se" 610 | } 611 | ], 612 | "description": "A fast PHP7 implementation of PSR-7", 613 | "homepage": "http://tnyholm.se", 614 | "keywords": [ 615 | "psr-17", 616 | "psr-7" 617 | ], 618 | "time": "2019-02-16T17:20:43+00:00" 619 | }, 620 | { 621 | "name": "php-http/message-factory", 622 | "version": "v1.0.2", 623 | "source": { 624 | "type": "git", 625 | "url": "https://github.com/php-http/message-factory.git", 626 | "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1" 627 | }, 628 | "dist": { 629 | "type": "zip", 630 | "url": "https://api.github.com/repos/php-http/message-factory/zipball/a478cb11f66a6ac48d8954216cfed9aa06a501a1", 631 | "reference": "a478cb11f66a6ac48d8954216cfed9aa06a501a1", 632 | "shasum": "" 633 | }, 634 | "require": { 635 | "php": ">=5.4", 636 | "psr/http-message": "^1.0" 637 | }, 638 | "type": "library", 639 | "extra": { 640 | "branch-alias": { 641 | "dev-master": "1.0-dev" 642 | } 643 | }, 644 | "autoload": { 645 | "psr-4": { 646 | "Http\\Message\\": "src/" 647 | } 648 | }, 649 | "notification-url": "https://packagist.org/downloads/", 650 | "license": [ 651 | "MIT" 652 | ], 653 | "authors": [ 654 | { 655 | "name": "Márk Sági-Kazár", 656 | "email": "mark.sagikazar@gmail.com" 657 | } 658 | ], 659 | "description": "Factory interfaces for PSR-7 HTTP Message", 660 | "homepage": "http://php-http.org", 661 | "keywords": [ 662 | "factory", 663 | "http", 664 | "message", 665 | "stream", 666 | "uri" 667 | ], 668 | "time": "2015-12-19T14:08:53+00:00" 669 | }, 670 | { 671 | "name": "psr/cache", 672 | "version": "1.0.1", 673 | "source": { 674 | "type": "git", 675 | "url": "https://github.com/php-fig/cache.git", 676 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" 677 | }, 678 | "dist": { 679 | "type": "zip", 680 | "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", 681 | "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", 682 | "shasum": "" 683 | }, 684 | "require": { 685 | "php": ">=5.3.0" 686 | }, 687 | "type": "library", 688 | "extra": { 689 | "branch-alias": { 690 | "dev-master": "1.0.x-dev" 691 | } 692 | }, 693 | "autoload": { 694 | "psr-4": { 695 | "Psr\\Cache\\": "src/" 696 | } 697 | }, 698 | "notification-url": "https://packagist.org/downloads/", 699 | "license": [ 700 | "MIT" 701 | ], 702 | "authors": [ 703 | { 704 | "name": "PHP-FIG", 705 | "homepage": "http://www.php-fig.org/" 706 | } 707 | ], 708 | "description": "Common interface for caching libraries", 709 | "keywords": [ 710 | "cache", 711 | "psr", 712 | "psr-6" 713 | ], 714 | "time": "2016-08-06T20:24:11+00:00" 715 | }, 716 | { 717 | "name": "psr/container", 718 | "version": "1.0.0", 719 | "source": { 720 | "type": "git", 721 | "url": "https://github.com/php-fig/container.git", 722 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 723 | }, 724 | "dist": { 725 | "type": "zip", 726 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 727 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 728 | "shasum": "" 729 | }, 730 | "require": { 731 | "php": ">=5.3.0" 732 | }, 733 | "type": "library", 734 | "extra": { 735 | "branch-alias": { 736 | "dev-master": "1.0.x-dev" 737 | } 738 | }, 739 | "autoload": { 740 | "psr-4": { 741 | "Psr\\Container\\": "src/" 742 | } 743 | }, 744 | "notification-url": "https://packagist.org/downloads/", 745 | "license": [ 746 | "MIT" 747 | ], 748 | "authors": [ 749 | { 750 | "name": "PHP-FIG", 751 | "homepage": "http://www.php-fig.org/" 752 | } 753 | ], 754 | "description": "Common Container Interface (PHP FIG PSR-11)", 755 | "homepage": "https://github.com/php-fig/container", 756 | "keywords": [ 757 | "PSR-11", 758 | "container", 759 | "container-interface", 760 | "container-interop", 761 | "psr" 762 | ], 763 | "time": "2017-02-14T16:28:37+00:00" 764 | }, 765 | { 766 | "name": "psr/http-factory", 767 | "version": "1.0.1", 768 | "source": { 769 | "type": "git", 770 | "url": "https://github.com/php-fig/http-factory.git", 771 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be" 772 | }, 773 | "dist": { 774 | "type": "zip", 775 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 776 | "reference": "12ac7fcd07e5b077433f5f2bee95b3a771bf61be", 777 | "shasum": "" 778 | }, 779 | "require": { 780 | "php": ">=7.0.0", 781 | "psr/http-message": "^1.0" 782 | }, 783 | "type": "library", 784 | "extra": { 785 | "branch-alias": { 786 | "dev-master": "1.0.x-dev" 787 | } 788 | }, 789 | "autoload": { 790 | "psr-4": { 791 | "Psr\\Http\\Message\\": "src/" 792 | } 793 | }, 794 | "notification-url": "https://packagist.org/downloads/", 795 | "license": [ 796 | "MIT" 797 | ], 798 | "authors": [ 799 | { 800 | "name": "PHP-FIG", 801 | "homepage": "http://www.php-fig.org/" 802 | } 803 | ], 804 | "description": "Common interfaces for PSR-7 HTTP message factories", 805 | "keywords": [ 806 | "factory", 807 | "http", 808 | "message", 809 | "psr", 810 | "psr-17", 811 | "psr-7", 812 | "request", 813 | "response" 814 | ], 815 | "time": "2019-04-30T12:38:16+00:00" 816 | }, 817 | { 818 | "name": "psr/http-message", 819 | "version": "1.0.1", 820 | "source": { 821 | "type": "git", 822 | "url": "https://github.com/php-fig/http-message.git", 823 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 824 | }, 825 | "dist": { 826 | "type": "zip", 827 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 828 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 829 | "shasum": "" 830 | }, 831 | "require": { 832 | "php": ">=5.3.0" 833 | }, 834 | "type": "library", 835 | "extra": { 836 | "branch-alias": { 837 | "dev-master": "1.0.x-dev" 838 | } 839 | }, 840 | "autoload": { 841 | "psr-4": { 842 | "Psr\\Http\\Message\\": "src/" 843 | } 844 | }, 845 | "notification-url": "https://packagist.org/downloads/", 846 | "license": [ 847 | "MIT" 848 | ], 849 | "authors": [ 850 | { 851 | "name": "PHP-FIG", 852 | "homepage": "http://www.php-fig.org/" 853 | } 854 | ], 855 | "description": "Common interface for HTTP messages", 856 | "homepage": "https://github.com/php-fig/http-message", 857 | "keywords": [ 858 | "http", 859 | "http-message", 860 | "psr", 861 | "psr-7", 862 | "request", 863 | "response" 864 | ], 865 | "time": "2016-08-06T14:39:51+00:00" 866 | }, 867 | { 868 | "name": "psr/log", 869 | "version": "1.1.2", 870 | "source": { 871 | "type": "git", 872 | "url": "https://github.com/php-fig/log.git", 873 | "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" 874 | }, 875 | "dist": { 876 | "type": "zip", 877 | "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", 878 | "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", 879 | "shasum": "" 880 | }, 881 | "require": { 882 | "php": ">=5.3.0" 883 | }, 884 | "type": "library", 885 | "extra": { 886 | "branch-alias": { 887 | "dev-master": "1.1.x-dev" 888 | } 889 | }, 890 | "autoload": { 891 | "psr-4": { 892 | "Psr\\Log\\": "Psr/Log/" 893 | } 894 | }, 895 | "notification-url": "https://packagist.org/downloads/", 896 | "license": [ 897 | "MIT" 898 | ], 899 | "authors": [ 900 | { 901 | "name": "PHP-FIG", 902 | "homepage": "http://www.php-fig.org/" 903 | } 904 | ], 905 | "description": "Common interface for logging libraries", 906 | "homepage": "https://github.com/php-fig/log", 907 | "keywords": [ 908 | "log", 909 | "psr", 910 | "psr-3" 911 | ], 912 | "time": "2019-11-01T11:05:21+00:00" 913 | }, 914 | { 915 | "name": "react/cache", 916 | "version": "v1.0.0", 917 | "source": { 918 | "type": "git", 919 | "url": "https://github.com/reactphp/cache.git", 920 | "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466" 921 | }, 922 | "dist": { 923 | "type": "zip", 924 | "url": "https://api.github.com/repos/reactphp/cache/zipball/aa10d63a1b40a36a486bdf527f28bac607ee6466", 925 | "reference": "aa10d63a1b40a36a486bdf527f28bac607ee6466", 926 | "shasum": "" 927 | }, 928 | "require": { 929 | "php": ">=5.3.0", 930 | "react/promise": "~2.0|~1.1" 931 | }, 932 | "require-dev": { 933 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 934 | }, 935 | "type": "library", 936 | "autoload": { 937 | "psr-4": { 938 | "React\\Cache\\": "src/" 939 | } 940 | }, 941 | "notification-url": "https://packagist.org/downloads/", 942 | "license": [ 943 | "MIT" 944 | ], 945 | "description": "Async, Promise-based cache interface for ReactPHP", 946 | "keywords": [ 947 | "cache", 948 | "caching", 949 | "promise", 950 | "reactphp" 951 | ], 952 | "time": "2019-07-11T13:45:28+00:00" 953 | }, 954 | { 955 | "name": "react/dns", 956 | "version": "v1.1.0", 957 | "source": { 958 | "type": "git", 959 | "url": "https://github.com/reactphp/dns.git", 960 | "reference": "a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f" 961 | }, 962 | "dist": { 963 | "type": "zip", 964 | "url": "https://api.github.com/repos/reactphp/dns/zipball/a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f", 965 | "reference": "a04f6f23ee40afec2e5814ddfbdf71b9e88bbc1f", 966 | "shasum": "" 967 | }, 968 | "require": { 969 | "php": ">=5.3.0", 970 | "react/cache": "^1.0 || ^0.6 || ^0.5", 971 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", 972 | "react/promise": "^2.1 || ^1.2.1", 973 | "react/promise-timer": "^1.2" 974 | }, 975 | "require-dev": { 976 | "clue/block-react": "^1.2", 977 | "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35" 978 | }, 979 | "type": "library", 980 | "autoload": { 981 | "psr-4": { 982 | "React\\Dns\\": "src" 983 | } 984 | }, 985 | "notification-url": "https://packagist.org/downloads/", 986 | "license": [ 987 | "MIT" 988 | ], 989 | "description": "Async DNS resolver for ReactPHP", 990 | "keywords": [ 991 | "async", 992 | "dns", 993 | "dns-resolver", 994 | "reactphp" 995 | ], 996 | "time": "2019-07-18T09:47:47+00:00" 997 | }, 998 | { 999 | "name": "react/event-loop", 1000 | "version": "v0.5.3", 1001 | "source": { 1002 | "type": "git", 1003 | "url": "https://github.com/reactphp/event-loop.git", 1004 | "reference": "228178a947de1f7cd9296d691878569628288c6f" 1005 | }, 1006 | "dist": { 1007 | "type": "zip", 1008 | "url": "https://api.github.com/repos/reactphp/event-loop/zipball/228178a947de1f7cd9296d691878569628288c6f", 1009 | "reference": "228178a947de1f7cd9296d691878569628288c6f", 1010 | "shasum": "" 1011 | }, 1012 | "require": { 1013 | "php": ">=5.3.0" 1014 | }, 1015 | "require-dev": { 1016 | "phpunit/phpunit": "~4.8.35 || ^5.7 || ^6.4" 1017 | }, 1018 | "suggest": { 1019 | "ext-event": "~1.0 for ExtEventLoop", 1020 | "ext-pcntl": "For signal handling support when using the StreamSelectLoop" 1021 | }, 1022 | "type": "library", 1023 | "autoload": { 1024 | "psr-4": { 1025 | "React\\EventLoop\\": "src" 1026 | } 1027 | }, 1028 | "notification-url": "https://packagist.org/downloads/", 1029 | "license": [ 1030 | "MIT" 1031 | ], 1032 | "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", 1033 | "keywords": [ 1034 | "asynchronous", 1035 | "event-loop" 1036 | ], 1037 | "time": "2018-07-09T13:51:04+00:00" 1038 | }, 1039 | { 1040 | "name": "react/http", 1041 | "version": "v0.8.4", 1042 | "source": { 1043 | "type": "git", 1044 | "url": "https://github.com/reactphp/http.git", 1045 | "reference": "b29ab96557ac5c53e738fcb26f73f631a3f81f1a" 1046 | }, 1047 | "dist": { 1048 | "type": "zip", 1049 | "url": "https://api.github.com/repos/reactphp/http/zipball/b29ab96557ac5c53e738fcb26f73f631a3f81f1a", 1050 | "reference": "b29ab96557ac5c53e738fcb26f73f631a3f81f1a", 1051 | "shasum": "" 1052 | }, 1053 | "require": { 1054 | "evenement/evenement": "^3.0 || ^2.0 || ^1.0", 1055 | "php": ">=5.3.0", 1056 | "react/promise": "^2.3 || ^1.2.1", 1057 | "react/promise-stream": "^1.1", 1058 | "react/socket": "^1.0 || ^0.8.3", 1059 | "react/stream": "^1.0 || ^0.7.1", 1060 | "ringcentral/psr7": "^1.2" 1061 | }, 1062 | "require-dev": { 1063 | "clue/block-react": "^1.1", 1064 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 1065 | }, 1066 | "type": "library", 1067 | "autoload": { 1068 | "psr-4": { 1069 | "React\\Http\\": "src" 1070 | } 1071 | }, 1072 | "notification-url": "https://packagist.org/downloads/", 1073 | "license": [ 1074 | "MIT" 1075 | ], 1076 | "description": "Event-driven, streaming plaintext HTTP and secure HTTPS server for ReactPHP", 1077 | "keywords": [ 1078 | "event-driven", 1079 | "http", 1080 | "https", 1081 | "reactphp", 1082 | "server", 1083 | "streaming" 1084 | ], 1085 | "time": "2019-01-16T07:26:32+00:00" 1086 | }, 1087 | { 1088 | "name": "react/promise", 1089 | "version": "v2.7.1", 1090 | "source": { 1091 | "type": "git", 1092 | "url": "https://github.com/reactphp/promise.git", 1093 | "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d" 1094 | }, 1095 | "dist": { 1096 | "type": "zip", 1097 | "url": "https://api.github.com/repos/reactphp/promise/zipball/31ffa96f8d2ed0341a57848cbb84d88b89dd664d", 1098 | "reference": "31ffa96f8d2ed0341a57848cbb84d88b89dd664d", 1099 | "shasum": "" 1100 | }, 1101 | "require": { 1102 | "php": ">=5.4.0" 1103 | }, 1104 | "require-dev": { 1105 | "phpunit/phpunit": "~4.8" 1106 | }, 1107 | "type": "library", 1108 | "autoload": { 1109 | "psr-4": { 1110 | "React\\Promise\\": "src/" 1111 | }, 1112 | "files": [ 1113 | "src/functions_include.php" 1114 | ] 1115 | }, 1116 | "notification-url": "https://packagist.org/downloads/", 1117 | "license": [ 1118 | "MIT" 1119 | ], 1120 | "authors": [ 1121 | { 1122 | "name": "Jan Sorgalla", 1123 | "email": "jsorgalla@gmail.com" 1124 | } 1125 | ], 1126 | "description": "A lightweight implementation of CommonJS Promises/A for PHP", 1127 | "keywords": [ 1128 | "promise", 1129 | "promises" 1130 | ], 1131 | "time": "2019-01-07T21:25:54+00:00" 1132 | }, 1133 | { 1134 | "name": "react/promise-stream", 1135 | "version": "v1.2.0", 1136 | "source": { 1137 | "type": "git", 1138 | "url": "https://github.com/reactphp/promise-stream.git", 1139 | "reference": "6384d8b76cf7dcc44b0bf3343fb2b2928412d1fe" 1140 | }, 1141 | "dist": { 1142 | "type": "zip", 1143 | "url": "https://api.github.com/repos/reactphp/promise-stream/zipball/6384d8b76cf7dcc44b0bf3343fb2b2928412d1fe", 1144 | "reference": "6384d8b76cf7dcc44b0bf3343fb2b2928412d1fe", 1145 | "shasum": "" 1146 | }, 1147 | "require": { 1148 | "php": ">=5.3", 1149 | "react/promise": "^2.1 || ^1.2", 1150 | "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6" 1151 | }, 1152 | "require-dev": { 1153 | "clue/block-react": "^1.0", 1154 | "phpunit/phpunit": "^7.0 || ^6.4 || ^5.7 || ^4.8.35", 1155 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", 1156 | "react/promise-timer": "^1.0" 1157 | }, 1158 | "type": "library", 1159 | "autoload": { 1160 | "psr-4": { 1161 | "React\\Promise\\Stream\\": "src/" 1162 | }, 1163 | "files": [ 1164 | "src/functions_include.php" 1165 | ] 1166 | }, 1167 | "notification-url": "https://packagist.org/downloads/", 1168 | "license": [ 1169 | "MIT" 1170 | ], 1171 | "authors": [ 1172 | { 1173 | "name": "Christian Lück", 1174 | "email": "christian@lueck.tv" 1175 | } 1176 | ], 1177 | "description": "The missing link between Promise-land and Stream-land for ReactPHP", 1178 | "homepage": "https://github.com/reactphp/promise-stream", 1179 | "keywords": [ 1180 | "Buffer", 1181 | "async", 1182 | "promise", 1183 | "reactphp", 1184 | "stream", 1185 | "unwrap" 1186 | ], 1187 | "time": "2019-07-03T12:29:10+00:00" 1188 | }, 1189 | { 1190 | "name": "react/promise-timer", 1191 | "version": "v1.5.1", 1192 | "source": { 1193 | "type": "git", 1194 | "url": "https://github.com/reactphp/promise-timer.git", 1195 | "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc" 1196 | }, 1197 | "dist": { 1198 | "type": "zip", 1199 | "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/35fb910604fd86b00023fc5cda477c8074ad0abc", 1200 | "reference": "35fb910604fd86b00023fc5cda477c8074ad0abc", 1201 | "shasum": "" 1202 | }, 1203 | "require": { 1204 | "php": ">=5.3", 1205 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", 1206 | "react/promise": "^2.7.0 || ^1.2.1" 1207 | }, 1208 | "require-dev": { 1209 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 1210 | }, 1211 | "type": "library", 1212 | "autoload": { 1213 | "psr-4": { 1214 | "React\\Promise\\Timer\\": "src/" 1215 | }, 1216 | "files": [ 1217 | "src/functions_include.php" 1218 | ] 1219 | }, 1220 | "notification-url": "https://packagist.org/downloads/", 1221 | "license": [ 1222 | "MIT" 1223 | ], 1224 | "authors": [ 1225 | { 1226 | "name": "Christian Lück", 1227 | "email": "christian@lueck.tv" 1228 | } 1229 | ], 1230 | "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", 1231 | "homepage": "https://github.com/reactphp/promise-timer", 1232 | "keywords": [ 1233 | "async", 1234 | "event-loop", 1235 | "promise", 1236 | "reactphp", 1237 | "timeout", 1238 | "timer" 1239 | ], 1240 | "time": "2019-03-27T18:10:32+00:00" 1241 | }, 1242 | { 1243 | "name": "react/socket", 1244 | "version": "v1.3.0", 1245 | "source": { 1246 | "type": "git", 1247 | "url": "https://github.com/reactphp/socket.git", 1248 | "reference": "10f0629ec83ea0fa22597f348623f554227e3ca0" 1249 | }, 1250 | "dist": { 1251 | "type": "zip", 1252 | "url": "https://api.github.com/repos/reactphp/socket/zipball/10f0629ec83ea0fa22597f348623f554227e3ca0", 1253 | "reference": "10f0629ec83ea0fa22597f348623f554227e3ca0", 1254 | "shasum": "" 1255 | }, 1256 | "require": { 1257 | "evenement/evenement": "^3.0 || ^2.0 || ^1.0", 1258 | "php": ">=5.3.0", 1259 | "react/dns": "^1.0 || ^0.4.13", 1260 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5", 1261 | "react/promise": "^2.6.0 || ^1.2.1", 1262 | "react/promise-timer": "^1.4.0", 1263 | "react/stream": "^1.1" 1264 | }, 1265 | "require-dev": { 1266 | "clue/block-react": "^1.2", 1267 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 1268 | }, 1269 | "type": "library", 1270 | "autoload": { 1271 | "psr-4": { 1272 | "React\\Socket\\": "src" 1273 | } 1274 | }, 1275 | "notification-url": "https://packagist.org/downloads/", 1276 | "license": [ 1277 | "MIT" 1278 | ], 1279 | "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", 1280 | "keywords": [ 1281 | "Connection", 1282 | "Socket", 1283 | "async", 1284 | "reactphp", 1285 | "stream" 1286 | ], 1287 | "time": "2019-07-10T10:11:14+00:00" 1288 | }, 1289 | { 1290 | "name": "react/stream", 1291 | "version": "v1.1.0", 1292 | "source": { 1293 | "type": "git", 1294 | "url": "https://github.com/reactphp/stream.git", 1295 | "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6" 1296 | }, 1297 | "dist": { 1298 | "type": "zip", 1299 | "url": "https://api.github.com/repos/reactphp/stream/zipball/50426855f7a77ddf43b9266c22320df5bf6c6ce6", 1300 | "reference": "50426855f7a77ddf43b9266c22320df5bf6c6ce6", 1301 | "shasum": "" 1302 | }, 1303 | "require": { 1304 | "evenement/evenement": "^3.0 || ^2.0 || ^1.0", 1305 | "php": ">=5.3.8", 1306 | "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3.5" 1307 | }, 1308 | "require-dev": { 1309 | "clue/stream-filter": "~1.2", 1310 | "phpunit/phpunit": "^6.4 || ^5.7 || ^4.8.35" 1311 | }, 1312 | "type": "library", 1313 | "autoload": { 1314 | "psr-4": { 1315 | "React\\Stream\\": "src" 1316 | } 1317 | }, 1318 | "notification-url": "https://packagist.org/downloads/", 1319 | "license": [ 1320 | "MIT" 1321 | ], 1322 | "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", 1323 | "keywords": [ 1324 | "event-driven", 1325 | "io", 1326 | "non-blocking", 1327 | "pipe", 1328 | "reactphp", 1329 | "readable", 1330 | "stream", 1331 | "writable" 1332 | ], 1333 | "time": "2019-01-01T16:15:09+00:00" 1334 | }, 1335 | { 1336 | "name": "ringcentral/psr7", 1337 | "version": "1.2.2", 1338 | "source": { 1339 | "type": "git", 1340 | "url": "https://github.com/ringcentral/psr7.git", 1341 | "reference": "dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c" 1342 | }, 1343 | "dist": { 1344 | "type": "zip", 1345 | "url": "https://api.github.com/repos/ringcentral/psr7/zipball/dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c", 1346 | "reference": "dcd84bbb49b96c616d1dcc8bfb9bef3f2cd53d1c", 1347 | "shasum": "" 1348 | }, 1349 | "require": { 1350 | "php": ">=5.3", 1351 | "psr/http-message": "~1.0" 1352 | }, 1353 | "provide": { 1354 | "psr/http-message-implementation": "1.0" 1355 | }, 1356 | "require-dev": { 1357 | "phpunit/phpunit": "~4.0" 1358 | }, 1359 | "type": "library", 1360 | "extra": { 1361 | "branch-alias": { 1362 | "dev-master": "1.0-dev" 1363 | } 1364 | }, 1365 | "autoload": { 1366 | "psr-4": { 1367 | "RingCentral\\Psr7\\": "src/" 1368 | }, 1369 | "files": [ 1370 | "src/functions_include.php" 1371 | ] 1372 | }, 1373 | "notification-url": "https://packagist.org/downloads/", 1374 | "license": [ 1375 | "MIT" 1376 | ], 1377 | "authors": [ 1378 | { 1379 | "name": "Michael Dowling", 1380 | "email": "mtdowling@gmail.com", 1381 | "homepage": "https://github.com/mtdowling" 1382 | } 1383 | ], 1384 | "description": "PSR-7 message implementation", 1385 | "keywords": [ 1386 | "http", 1387 | "message", 1388 | "stream", 1389 | "uri" 1390 | ], 1391 | "time": "2018-01-15T21:00:49+00:00" 1392 | }, 1393 | { 1394 | "name": "sensio/framework-extra-bundle", 1395 | "version": "v5.4.1", 1396 | "source": { 1397 | "type": "git", 1398 | "url": "https://github.com/sensiolabs/SensioFrameworkExtraBundle.git", 1399 | "reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a" 1400 | }, 1401 | "dist": { 1402 | "type": "zip", 1403 | "url": "https://api.github.com/repos/sensiolabs/SensioFrameworkExtraBundle/zipball/585f4b3a1c54f24d1a8431c729fc8f5acca20c8a", 1404 | "reference": "585f4b3a1c54f24d1a8431c729fc8f5acca20c8a", 1405 | "shasum": "" 1406 | }, 1407 | "require": { 1408 | "doctrine/annotations": "^1.0", 1409 | "doctrine/persistence": "^1.0", 1410 | "php": ">=7.1.3", 1411 | "symfony/config": "^3.4|^4.3", 1412 | "symfony/dependency-injection": "^3.4|^4.3", 1413 | "symfony/framework-bundle": "^3.4|^4.3", 1414 | "symfony/http-kernel": "^3.4|^4.3" 1415 | }, 1416 | "require-dev": { 1417 | "doctrine/doctrine-bundle": "^1.6", 1418 | "doctrine/orm": "^2.5", 1419 | "nyholm/psr7": "^1.1", 1420 | "symfony/browser-kit": "^3.4|^4.3", 1421 | "symfony/dom-crawler": "^3.4|^4.3", 1422 | "symfony/expression-language": "^3.4|^4.3", 1423 | "symfony/finder": "^3.4|^4.3", 1424 | "symfony/monolog-bridge": "^3.0|^4.0", 1425 | "symfony/monolog-bundle": "^3.2", 1426 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8", 1427 | "symfony/psr-http-message-bridge": "^1.1", 1428 | "symfony/security-bundle": "^3.4|^4.3", 1429 | "symfony/twig-bundle": "^3.4|^4.3", 1430 | "symfony/yaml": "^3.4|^4.3", 1431 | "twig/twig": "~1.12|~2.0" 1432 | }, 1433 | "suggest": { 1434 | "symfony/expression-language": "", 1435 | "symfony/psr-http-message-bridge": "To use the PSR-7 converters", 1436 | "symfony/security-bundle": "" 1437 | }, 1438 | "type": "symfony-bundle", 1439 | "extra": { 1440 | "branch-alias": { 1441 | "dev-master": "5.4.x-dev" 1442 | } 1443 | }, 1444 | "autoload": { 1445 | "psr-4": { 1446 | "Sensio\\Bundle\\FrameworkExtraBundle\\": "" 1447 | } 1448 | }, 1449 | "notification-url": "https://packagist.org/downloads/", 1450 | "license": [ 1451 | "MIT" 1452 | ], 1453 | "authors": [ 1454 | { 1455 | "name": "Fabien Potencier", 1456 | "email": "fabien@symfony.com" 1457 | } 1458 | ], 1459 | "description": "This bundle provides a way to configure your controllers with annotations", 1460 | "keywords": [ 1461 | "annotations", 1462 | "controllers" 1463 | ], 1464 | "time": "2019-07-08T08:31:25+00:00" 1465 | }, 1466 | { 1467 | "name": "symfony/cache", 1468 | "version": "v4.3.9", 1469 | "source": { 1470 | "type": "git", 1471 | "url": "https://github.com/symfony/cache.git", 1472 | "reference": "2a7bcc592adcaab9efc165bbced5a91fe905fad4" 1473 | }, 1474 | "dist": { 1475 | "type": "zip", 1476 | "url": "https://api.github.com/repos/symfony/cache/zipball/2a7bcc592adcaab9efc165bbced5a91fe905fad4", 1477 | "reference": "2a7bcc592adcaab9efc165bbced5a91fe905fad4", 1478 | "shasum": "" 1479 | }, 1480 | "require": { 1481 | "php": "^7.1.3", 1482 | "psr/cache": "~1.0", 1483 | "psr/log": "~1.0", 1484 | "symfony/cache-contracts": "^1.1", 1485 | "symfony/service-contracts": "^1.1", 1486 | "symfony/var-exporter": "^4.2" 1487 | }, 1488 | "conflict": { 1489 | "doctrine/dbal": "<2.5", 1490 | "symfony/dependency-injection": "<3.4", 1491 | "symfony/var-dumper": "<3.4" 1492 | }, 1493 | "provide": { 1494 | "psr/cache-implementation": "1.0", 1495 | "psr/simple-cache-implementation": "1.0", 1496 | "symfony/cache-implementation": "1.0" 1497 | }, 1498 | "require-dev": { 1499 | "cache/integration-tests": "dev-master", 1500 | "doctrine/cache": "~1.6", 1501 | "doctrine/dbal": "~2.5", 1502 | "predis/predis": "~1.1", 1503 | "psr/simple-cache": "^1.0", 1504 | "symfony/config": "~4.2", 1505 | "symfony/dependency-injection": "~3.4|~4.1", 1506 | "symfony/var-dumper": "^4.1.1" 1507 | }, 1508 | "type": "library", 1509 | "extra": { 1510 | "branch-alias": { 1511 | "dev-master": "4.3-dev" 1512 | } 1513 | }, 1514 | "autoload": { 1515 | "psr-4": { 1516 | "Symfony\\Component\\Cache\\": "" 1517 | }, 1518 | "exclude-from-classmap": [ 1519 | "/Tests/" 1520 | ] 1521 | }, 1522 | "notification-url": "https://packagist.org/downloads/", 1523 | "license": [ 1524 | "MIT" 1525 | ], 1526 | "authors": [ 1527 | { 1528 | "name": "Nicolas Grekas", 1529 | "email": "p@tchwork.com" 1530 | }, 1531 | { 1532 | "name": "Symfony Community", 1533 | "homepage": "https://symfony.com/contributors" 1534 | } 1535 | ], 1536 | "description": "Symfony Cache component with PSR-6, PSR-16, and tags", 1537 | "homepage": "https://symfony.com", 1538 | "keywords": [ 1539 | "caching", 1540 | "psr6" 1541 | ], 1542 | "time": "2019-12-01T10:50:31+00:00" 1543 | }, 1544 | { 1545 | "name": "symfony/cache-contracts", 1546 | "version": "v1.1.7", 1547 | "source": { 1548 | "type": "git", 1549 | "url": "https://github.com/symfony/cache-contracts.git", 1550 | "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1" 1551 | }, 1552 | "dist": { 1553 | "type": "zip", 1554 | "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/af50d14ada9e4e82cfabfabdc502d144f89be0a1", 1555 | "reference": "af50d14ada9e4e82cfabfabdc502d144f89be0a1", 1556 | "shasum": "" 1557 | }, 1558 | "require": { 1559 | "php": "^7.1.3", 1560 | "psr/cache": "^1.0" 1561 | }, 1562 | "suggest": { 1563 | "symfony/cache-implementation": "" 1564 | }, 1565 | "type": "library", 1566 | "extra": { 1567 | "branch-alias": { 1568 | "dev-master": "1.1-dev" 1569 | } 1570 | }, 1571 | "autoload": { 1572 | "psr-4": { 1573 | "Symfony\\Contracts\\Cache\\": "" 1574 | } 1575 | }, 1576 | "notification-url": "https://packagist.org/downloads/", 1577 | "license": [ 1578 | "MIT" 1579 | ], 1580 | "authors": [ 1581 | { 1582 | "name": "Nicolas Grekas", 1583 | "email": "p@tchwork.com" 1584 | }, 1585 | { 1586 | "name": "Symfony Community", 1587 | "homepage": "https://symfony.com/contributors" 1588 | } 1589 | ], 1590 | "description": "Generic abstractions related to caching", 1591 | "homepage": "https://symfony.com", 1592 | "keywords": [ 1593 | "abstractions", 1594 | "contracts", 1595 | "decoupling", 1596 | "interfaces", 1597 | "interoperability", 1598 | "standards" 1599 | ], 1600 | "time": "2019-10-04T21:43:27+00:00" 1601 | }, 1602 | { 1603 | "name": "symfony/config", 1604 | "version": "v4.3.3", 1605 | "source": { 1606 | "type": "git", 1607 | "url": "https://github.com/symfony/config.git", 1608 | "reference": "a17a2aea43950ce83a0603ed301bac362eb86870" 1609 | }, 1610 | "dist": { 1611 | "type": "zip", 1612 | "url": "https://api.github.com/repos/symfony/config/zipball/a17a2aea43950ce83a0603ed301bac362eb86870", 1613 | "reference": "a17a2aea43950ce83a0603ed301bac362eb86870", 1614 | "shasum": "" 1615 | }, 1616 | "require": { 1617 | "php": "^7.1.3", 1618 | "symfony/filesystem": "~3.4|~4.0", 1619 | "symfony/polyfill-ctype": "~1.8" 1620 | }, 1621 | "conflict": { 1622 | "symfony/finder": "<3.4" 1623 | }, 1624 | "require-dev": { 1625 | "symfony/dependency-injection": "~3.4|~4.0", 1626 | "symfony/event-dispatcher": "~3.4|~4.0", 1627 | "symfony/finder": "~3.4|~4.0", 1628 | "symfony/messenger": "~4.1", 1629 | "symfony/yaml": "~3.4|~4.0" 1630 | }, 1631 | "suggest": { 1632 | "symfony/yaml": "To use the yaml reference dumper" 1633 | }, 1634 | "type": "library", 1635 | "extra": { 1636 | "branch-alias": { 1637 | "dev-master": "4.3-dev" 1638 | } 1639 | }, 1640 | "autoload": { 1641 | "psr-4": { 1642 | "Symfony\\Component\\Config\\": "" 1643 | }, 1644 | "exclude-from-classmap": [ 1645 | "/Tests/" 1646 | ] 1647 | }, 1648 | "notification-url": "https://packagist.org/downloads/", 1649 | "license": [ 1650 | "MIT" 1651 | ], 1652 | "authors": [ 1653 | { 1654 | "name": "Fabien Potencier", 1655 | "email": "fabien@symfony.com" 1656 | }, 1657 | { 1658 | "name": "Symfony Community", 1659 | "homepage": "https://symfony.com/contributors" 1660 | } 1661 | ], 1662 | "description": "Symfony Config Component", 1663 | "homepage": "https://symfony.com", 1664 | "time": "2019-07-18T10:34:59+00:00" 1665 | }, 1666 | { 1667 | "name": "symfony/console", 1668 | "version": "v4.3.3", 1669 | "source": { 1670 | "type": "git", 1671 | "url": "https://github.com/symfony/console.git", 1672 | "reference": "8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9" 1673 | }, 1674 | "dist": { 1675 | "type": "zip", 1676 | "url": "https://api.github.com/repos/symfony/console/zipball/8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9", 1677 | "reference": "8b0ae5742ce9aaa8b0075665862c1ca397d1c1d9", 1678 | "shasum": "" 1679 | }, 1680 | "require": { 1681 | "php": "^7.1.3", 1682 | "symfony/polyfill-mbstring": "~1.0", 1683 | "symfony/polyfill-php73": "^1.8", 1684 | "symfony/service-contracts": "^1.1" 1685 | }, 1686 | "conflict": { 1687 | "symfony/dependency-injection": "<3.4", 1688 | "symfony/event-dispatcher": "<4.3", 1689 | "symfony/process": "<3.3" 1690 | }, 1691 | "provide": { 1692 | "psr/log-implementation": "1.0" 1693 | }, 1694 | "require-dev": { 1695 | "psr/log": "~1.0", 1696 | "symfony/config": "~3.4|~4.0", 1697 | "symfony/dependency-injection": "~3.4|~4.0", 1698 | "symfony/event-dispatcher": "^4.3", 1699 | "symfony/lock": "~3.4|~4.0", 1700 | "symfony/process": "~3.4|~4.0", 1701 | "symfony/var-dumper": "^4.3" 1702 | }, 1703 | "suggest": { 1704 | "psr/log": "For using the console logger", 1705 | "symfony/event-dispatcher": "", 1706 | "symfony/lock": "", 1707 | "symfony/process": "" 1708 | }, 1709 | "type": "library", 1710 | "extra": { 1711 | "branch-alias": { 1712 | "dev-master": "4.3-dev" 1713 | } 1714 | }, 1715 | "autoload": { 1716 | "psr-4": { 1717 | "Symfony\\Component\\Console\\": "" 1718 | }, 1719 | "exclude-from-classmap": [ 1720 | "/Tests/" 1721 | ] 1722 | }, 1723 | "notification-url": "https://packagist.org/downloads/", 1724 | "license": [ 1725 | "MIT" 1726 | ], 1727 | "authors": [ 1728 | { 1729 | "name": "Fabien Potencier", 1730 | "email": "fabien@symfony.com" 1731 | }, 1732 | { 1733 | "name": "Symfony Community", 1734 | "homepage": "https://symfony.com/contributors" 1735 | } 1736 | ], 1737 | "description": "Symfony Console Component", 1738 | "homepage": "https://symfony.com", 1739 | "time": "2019-07-24T17:13:59+00:00" 1740 | }, 1741 | { 1742 | "name": "symfony/debug", 1743 | "version": "v4.3.3", 1744 | "source": { 1745 | "type": "git", 1746 | "url": "https://github.com/symfony/debug.git", 1747 | "reference": "527887c3858a2462b0137662c74837288b998ee3" 1748 | }, 1749 | "dist": { 1750 | "type": "zip", 1751 | "url": "https://api.github.com/repos/symfony/debug/zipball/527887c3858a2462b0137662c74837288b998ee3", 1752 | "reference": "527887c3858a2462b0137662c74837288b998ee3", 1753 | "shasum": "" 1754 | }, 1755 | "require": { 1756 | "php": "^7.1.3", 1757 | "psr/log": "~1.0" 1758 | }, 1759 | "conflict": { 1760 | "symfony/http-kernel": "<3.4" 1761 | }, 1762 | "require-dev": { 1763 | "symfony/http-kernel": "~3.4|~4.0" 1764 | }, 1765 | "type": "library", 1766 | "extra": { 1767 | "branch-alias": { 1768 | "dev-master": "4.3-dev" 1769 | } 1770 | }, 1771 | "autoload": { 1772 | "psr-4": { 1773 | "Symfony\\Component\\Debug\\": "" 1774 | }, 1775 | "exclude-from-classmap": [ 1776 | "/Tests/" 1777 | ] 1778 | }, 1779 | "notification-url": "https://packagist.org/downloads/", 1780 | "license": [ 1781 | "MIT" 1782 | ], 1783 | "authors": [ 1784 | { 1785 | "name": "Fabien Potencier", 1786 | "email": "fabien@symfony.com" 1787 | }, 1788 | { 1789 | "name": "Symfony Community", 1790 | "homepage": "https://symfony.com/contributors" 1791 | } 1792 | ], 1793 | "description": "Symfony Debug Component", 1794 | "homepage": "https://symfony.com", 1795 | "time": "2019-07-23T11:21:36+00:00" 1796 | }, 1797 | { 1798 | "name": "symfony/dependency-injection", 1799 | "version": "v4.3.3", 1800 | "source": { 1801 | "type": "git", 1802 | "url": "https://github.com/symfony/dependency-injection.git", 1803 | "reference": "9ad1b83d474ae17156f6914cb81ffe77aeac3a9b" 1804 | }, 1805 | "dist": { 1806 | "type": "zip", 1807 | "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/9ad1b83d474ae17156f6914cb81ffe77aeac3a9b", 1808 | "reference": "9ad1b83d474ae17156f6914cb81ffe77aeac3a9b", 1809 | "shasum": "" 1810 | }, 1811 | "require": { 1812 | "php": "^7.1.3", 1813 | "psr/container": "^1.0", 1814 | "symfony/service-contracts": "^1.1.2" 1815 | }, 1816 | "conflict": { 1817 | "symfony/config": "<4.3", 1818 | "symfony/finder": "<3.4", 1819 | "symfony/proxy-manager-bridge": "<3.4", 1820 | "symfony/yaml": "<3.4" 1821 | }, 1822 | "provide": { 1823 | "psr/container-implementation": "1.0", 1824 | "symfony/service-implementation": "1.0" 1825 | }, 1826 | "require-dev": { 1827 | "symfony/config": "^4.3", 1828 | "symfony/expression-language": "~3.4|~4.0", 1829 | "symfony/yaml": "~3.4|~4.0" 1830 | }, 1831 | "suggest": { 1832 | "symfony/config": "", 1833 | "symfony/expression-language": "For using expressions in service container configuration", 1834 | "symfony/finder": "For using double-star glob patterns or when GLOB_BRACE portability is required", 1835 | "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them", 1836 | "symfony/yaml": "" 1837 | }, 1838 | "type": "library", 1839 | "extra": { 1840 | "branch-alias": { 1841 | "dev-master": "4.3-dev" 1842 | } 1843 | }, 1844 | "autoload": { 1845 | "psr-4": { 1846 | "Symfony\\Component\\DependencyInjection\\": "" 1847 | }, 1848 | "exclude-from-classmap": [ 1849 | "/Tests/" 1850 | ] 1851 | }, 1852 | "notification-url": "https://packagist.org/downloads/", 1853 | "license": [ 1854 | "MIT" 1855 | ], 1856 | "authors": [ 1857 | { 1858 | "name": "Fabien Potencier", 1859 | "email": "fabien@symfony.com" 1860 | }, 1861 | { 1862 | "name": "Symfony Community", 1863 | "homepage": "https://symfony.com/contributors" 1864 | } 1865 | ], 1866 | "description": "Symfony DependencyInjection Component", 1867 | "homepage": "https://symfony.com", 1868 | "time": "2019-07-26T07:03:43+00:00" 1869 | }, 1870 | { 1871 | "name": "symfony/event-dispatcher", 1872 | "version": "v4.3.3", 1873 | "source": { 1874 | "type": "git", 1875 | "url": "https://github.com/symfony/event-dispatcher.git", 1876 | "reference": "212b020949331b6531250584531363844b34a94e" 1877 | }, 1878 | "dist": { 1879 | "type": "zip", 1880 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/212b020949331b6531250584531363844b34a94e", 1881 | "reference": "212b020949331b6531250584531363844b34a94e", 1882 | "shasum": "" 1883 | }, 1884 | "require": { 1885 | "php": "^7.1.3", 1886 | "symfony/event-dispatcher-contracts": "^1.1" 1887 | }, 1888 | "conflict": { 1889 | "symfony/dependency-injection": "<3.4" 1890 | }, 1891 | "provide": { 1892 | "psr/event-dispatcher-implementation": "1.0", 1893 | "symfony/event-dispatcher-implementation": "1.1" 1894 | }, 1895 | "require-dev": { 1896 | "psr/log": "~1.0", 1897 | "symfony/config": "~3.4|~4.0", 1898 | "symfony/dependency-injection": "~3.4|~4.0", 1899 | "symfony/expression-language": "~3.4|~4.0", 1900 | "symfony/http-foundation": "^3.4|^4.0", 1901 | "symfony/service-contracts": "^1.1", 1902 | "symfony/stopwatch": "~3.4|~4.0" 1903 | }, 1904 | "suggest": { 1905 | "symfony/dependency-injection": "", 1906 | "symfony/http-kernel": "" 1907 | }, 1908 | "type": "library", 1909 | "extra": { 1910 | "branch-alias": { 1911 | "dev-master": "4.3-dev" 1912 | } 1913 | }, 1914 | "autoload": { 1915 | "psr-4": { 1916 | "Symfony\\Component\\EventDispatcher\\": "" 1917 | }, 1918 | "exclude-from-classmap": [ 1919 | "/Tests/" 1920 | ] 1921 | }, 1922 | "notification-url": "https://packagist.org/downloads/", 1923 | "license": [ 1924 | "MIT" 1925 | ], 1926 | "authors": [ 1927 | { 1928 | "name": "Fabien Potencier", 1929 | "email": "fabien@symfony.com" 1930 | }, 1931 | { 1932 | "name": "Symfony Community", 1933 | "homepage": "https://symfony.com/contributors" 1934 | } 1935 | ], 1936 | "description": "Symfony EventDispatcher Component", 1937 | "homepage": "https://symfony.com", 1938 | "time": "2019-06-27T06:42:14+00:00" 1939 | }, 1940 | { 1941 | "name": "symfony/event-dispatcher-contracts", 1942 | "version": "v1.1.5", 1943 | "source": { 1944 | "type": "git", 1945 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 1946 | "reference": "c61766f4440ca687de1084a5c00b08e167a2575c" 1947 | }, 1948 | "dist": { 1949 | "type": "zip", 1950 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c61766f4440ca687de1084a5c00b08e167a2575c", 1951 | "reference": "c61766f4440ca687de1084a5c00b08e167a2575c", 1952 | "shasum": "" 1953 | }, 1954 | "require": { 1955 | "php": "^7.1.3" 1956 | }, 1957 | "suggest": { 1958 | "psr/event-dispatcher": "", 1959 | "symfony/event-dispatcher-implementation": "" 1960 | }, 1961 | "type": "library", 1962 | "extra": { 1963 | "branch-alias": { 1964 | "dev-master": "1.1-dev" 1965 | } 1966 | }, 1967 | "autoload": { 1968 | "psr-4": { 1969 | "Symfony\\Contracts\\EventDispatcher\\": "" 1970 | } 1971 | }, 1972 | "notification-url": "https://packagist.org/downloads/", 1973 | "license": [ 1974 | "MIT" 1975 | ], 1976 | "authors": [ 1977 | { 1978 | "name": "Nicolas Grekas", 1979 | "email": "p@tchwork.com" 1980 | }, 1981 | { 1982 | "name": "Symfony Community", 1983 | "homepage": "https://symfony.com/contributors" 1984 | } 1985 | ], 1986 | "description": "Generic abstractions related to dispatching event", 1987 | "homepage": "https://symfony.com", 1988 | "keywords": [ 1989 | "abstractions", 1990 | "contracts", 1991 | "decoupling", 1992 | "interfaces", 1993 | "interoperability", 1994 | "standards" 1995 | ], 1996 | "time": "2019-06-20T06:46:26+00:00" 1997 | }, 1998 | { 1999 | "name": "symfony/filesystem", 2000 | "version": "v4.3.3", 2001 | "source": { 2002 | "type": "git", 2003 | "url": "https://github.com/symfony/filesystem.git", 2004 | "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d" 2005 | }, 2006 | "dist": { 2007 | "type": "zip", 2008 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/b9896d034463ad6fd2bf17e2bf9418caecd6313d", 2009 | "reference": "b9896d034463ad6fd2bf17e2bf9418caecd6313d", 2010 | "shasum": "" 2011 | }, 2012 | "require": { 2013 | "php": "^7.1.3", 2014 | "symfony/polyfill-ctype": "~1.8" 2015 | }, 2016 | "type": "library", 2017 | "extra": { 2018 | "branch-alias": { 2019 | "dev-master": "4.3-dev" 2020 | } 2021 | }, 2022 | "autoload": { 2023 | "psr-4": { 2024 | "Symfony\\Component\\Filesystem\\": "" 2025 | }, 2026 | "exclude-from-classmap": [ 2027 | "/Tests/" 2028 | ] 2029 | }, 2030 | "notification-url": "https://packagist.org/downloads/", 2031 | "license": [ 2032 | "MIT" 2033 | ], 2034 | "authors": [ 2035 | { 2036 | "name": "Fabien Potencier", 2037 | "email": "fabien@symfony.com" 2038 | }, 2039 | { 2040 | "name": "Symfony Community", 2041 | "homepage": "https://symfony.com/contributors" 2042 | } 2043 | ], 2044 | "description": "Symfony Filesystem Component", 2045 | "homepage": "https://symfony.com", 2046 | "time": "2019-06-23T08:51:25+00:00" 2047 | }, 2048 | { 2049 | "name": "symfony/finder", 2050 | "version": "v4.3.3", 2051 | "source": { 2052 | "type": "git", 2053 | "url": "https://github.com/symfony/finder.git", 2054 | "reference": "9638d41e3729459860bb96f6247ccb61faaa45f2" 2055 | }, 2056 | "dist": { 2057 | "type": "zip", 2058 | "url": "https://api.github.com/repos/symfony/finder/zipball/9638d41e3729459860bb96f6247ccb61faaa45f2", 2059 | "reference": "9638d41e3729459860bb96f6247ccb61faaa45f2", 2060 | "shasum": "" 2061 | }, 2062 | "require": { 2063 | "php": "^7.1.3" 2064 | }, 2065 | "type": "library", 2066 | "extra": { 2067 | "branch-alias": { 2068 | "dev-master": "4.3-dev" 2069 | } 2070 | }, 2071 | "autoload": { 2072 | "psr-4": { 2073 | "Symfony\\Component\\Finder\\": "" 2074 | }, 2075 | "exclude-from-classmap": [ 2076 | "/Tests/" 2077 | ] 2078 | }, 2079 | "notification-url": "https://packagist.org/downloads/", 2080 | "license": [ 2081 | "MIT" 2082 | ], 2083 | "authors": [ 2084 | { 2085 | "name": "Fabien Potencier", 2086 | "email": "fabien@symfony.com" 2087 | }, 2088 | { 2089 | "name": "Symfony Community", 2090 | "homepage": "https://symfony.com/contributors" 2091 | } 2092 | ], 2093 | "description": "Symfony Finder Component", 2094 | "homepage": "https://symfony.com", 2095 | "time": "2019-06-28T13:16:30+00:00" 2096 | }, 2097 | { 2098 | "name": "symfony/flex", 2099 | "version": "v1.4.5", 2100 | "source": { 2101 | "type": "git", 2102 | "url": "https://github.com/symfony/flex.git", 2103 | "reference": "4467ab35c82edebac58fe58c22cea166a805eb1f" 2104 | }, 2105 | "dist": { 2106 | "type": "zip", 2107 | "url": "https://api.github.com/repos/symfony/flex/zipball/4467ab35c82edebac58fe58c22cea166a805eb1f", 2108 | "reference": "4467ab35c82edebac58fe58c22cea166a805eb1f", 2109 | "shasum": "" 2110 | }, 2111 | "require": { 2112 | "composer-plugin-api": "^1.0", 2113 | "php": "^7.0" 2114 | }, 2115 | "require-dev": { 2116 | "composer/composer": "^1.0.2", 2117 | "symfony/dotenv": "^3.4|^4.0", 2118 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8", 2119 | "symfony/process": "^2.7|^3.0|^4.0" 2120 | }, 2121 | "type": "composer-plugin", 2122 | "extra": { 2123 | "branch-alias": { 2124 | "dev-master": "1.4-dev" 2125 | }, 2126 | "class": "Symfony\\Flex\\Flex" 2127 | }, 2128 | "autoload": { 2129 | "psr-4": { 2130 | "Symfony\\Flex\\": "src" 2131 | } 2132 | }, 2133 | "notification-url": "https://packagist.org/downloads/", 2134 | "license": [ 2135 | "MIT" 2136 | ], 2137 | "authors": [ 2138 | { 2139 | "name": "Fabien Potencier", 2140 | "email": "fabien.potencier@gmail.com" 2141 | } 2142 | ], 2143 | "description": "Composer plugin for Symfony", 2144 | "time": "2019-07-19T08:59:18+00:00" 2145 | }, 2146 | { 2147 | "name": "symfony/framework-bundle", 2148 | "version": "v4.3.3", 2149 | "source": { 2150 | "type": "git", 2151 | "url": "https://github.com/symfony/framework-bundle.git", 2152 | "reference": "f4c4d2922c209349fa78bce2ba2faa57ccea1093" 2153 | }, 2154 | "dist": { 2155 | "type": "zip", 2156 | "url": "https://api.github.com/repos/symfony/framework-bundle/zipball/f4c4d2922c209349fa78bce2ba2faa57ccea1093", 2157 | "reference": "f4c4d2922c209349fa78bce2ba2faa57ccea1093", 2158 | "shasum": "" 2159 | }, 2160 | "require": { 2161 | "ext-xml": "*", 2162 | "php": "^7.1.3", 2163 | "symfony/cache": "~4.3", 2164 | "symfony/config": "~4.2", 2165 | "symfony/debug": "~4.0", 2166 | "symfony/dependency-injection": "^4.3", 2167 | "symfony/filesystem": "~3.4|~4.0", 2168 | "symfony/finder": "~3.4|~4.0", 2169 | "symfony/http-foundation": "^4.3", 2170 | "symfony/http-kernel": "^4.3", 2171 | "symfony/polyfill-mbstring": "~1.0", 2172 | "symfony/routing": "^4.3" 2173 | }, 2174 | "conflict": { 2175 | "phpdocumentor/reflection-docblock": "<3.0", 2176 | "phpdocumentor/type-resolver": "<0.2.1", 2177 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", 2178 | "symfony/asset": "<3.4", 2179 | "symfony/browser-kit": "<4.3", 2180 | "symfony/console": "<4.3", 2181 | "symfony/dom-crawler": "<4.3", 2182 | "symfony/dotenv": "<4.2", 2183 | "symfony/form": "<4.3", 2184 | "symfony/messenger": "<4.3", 2185 | "symfony/property-info": "<3.4", 2186 | "symfony/serializer": "<4.2", 2187 | "symfony/stopwatch": "<3.4", 2188 | "symfony/translation": "<4.3", 2189 | "symfony/twig-bridge": "<4.1.1", 2190 | "symfony/validator": "<4.1", 2191 | "symfony/workflow": "<4.3" 2192 | }, 2193 | "require-dev": { 2194 | "doctrine/annotations": "~1.0", 2195 | "doctrine/cache": "~1.0", 2196 | "fig/link-util": "^1.0", 2197 | "phpdocumentor/reflection-docblock": "^3.0|^4.0", 2198 | "symfony/asset": "~3.4|~4.0", 2199 | "symfony/browser-kit": "^4.3", 2200 | "symfony/console": "^4.3", 2201 | "symfony/css-selector": "~3.4|~4.0", 2202 | "symfony/dom-crawler": "^4.3", 2203 | "symfony/expression-language": "~3.4|~4.0", 2204 | "symfony/form": "^4.3", 2205 | "symfony/http-client": "^4.3", 2206 | "symfony/lock": "~3.4|~4.0", 2207 | "symfony/mailer": "^4.3", 2208 | "symfony/messenger": "^4.3", 2209 | "symfony/mime": "^4.3", 2210 | "symfony/polyfill-intl-icu": "~1.0", 2211 | "symfony/process": "~3.4|~4.0", 2212 | "symfony/property-info": "~3.4|~4.0", 2213 | "symfony/security-csrf": "~3.4|~4.0", 2214 | "symfony/security-http": "~3.4|~4.0", 2215 | "symfony/serializer": "^4.3", 2216 | "symfony/stopwatch": "~3.4|~4.0", 2217 | "symfony/templating": "~3.4|~4.0", 2218 | "symfony/translation": "~4.3", 2219 | "symfony/twig-bundle": "~2.8|~3.2|~4.0", 2220 | "symfony/validator": "^4.1", 2221 | "symfony/var-dumper": "^4.3", 2222 | "symfony/web-link": "~3.4|~4.0", 2223 | "symfony/workflow": "^4.3", 2224 | "symfony/yaml": "~3.4|~4.0", 2225 | "twig/twig": "~1.34|~2.4" 2226 | }, 2227 | "suggest": { 2228 | "ext-apcu": "For best performance of the system caches", 2229 | "symfony/console": "For using the console commands", 2230 | "symfony/form": "For using forms", 2231 | "symfony/property-info": "For using the property_info service", 2232 | "symfony/serializer": "For using the serializer service", 2233 | "symfony/validator": "For using validation", 2234 | "symfony/web-link": "For using web links, features such as preloading, prefetching or prerendering", 2235 | "symfony/yaml": "For using the debug:config and lint:yaml commands" 2236 | }, 2237 | "type": "symfony-bundle", 2238 | "extra": { 2239 | "branch-alias": { 2240 | "dev-master": "4.3-dev" 2241 | } 2242 | }, 2243 | "autoload": { 2244 | "psr-4": { 2245 | "Symfony\\Bundle\\FrameworkBundle\\": "" 2246 | }, 2247 | "exclude-from-classmap": [ 2248 | "/Tests/" 2249 | ] 2250 | }, 2251 | "notification-url": "https://packagist.org/downloads/", 2252 | "license": [ 2253 | "MIT" 2254 | ], 2255 | "authors": [ 2256 | { 2257 | "name": "Fabien Potencier", 2258 | "email": "fabien@symfony.com" 2259 | }, 2260 | { 2261 | "name": "Symfony Community", 2262 | "homepage": "https://symfony.com/contributors" 2263 | } 2264 | ], 2265 | "description": "Symfony FrameworkBundle", 2266 | "homepage": "https://symfony.com", 2267 | "time": "2019-07-27T08:36:33+00:00" 2268 | }, 2269 | { 2270 | "name": "symfony/http-foundation", 2271 | "version": "v4.3.8", 2272 | "source": { 2273 | "type": "git", 2274 | "url": "https://github.com/symfony/http-foundation.git", 2275 | "reference": "cabe67275034e173350e158f3b1803d023880227" 2276 | }, 2277 | "dist": { 2278 | "type": "zip", 2279 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/cabe67275034e173350e158f3b1803d023880227", 2280 | "reference": "cabe67275034e173350e158f3b1803d023880227", 2281 | "shasum": "" 2282 | }, 2283 | "require": { 2284 | "php": "^7.1.3", 2285 | "symfony/mime": "^4.3", 2286 | "symfony/polyfill-mbstring": "~1.1" 2287 | }, 2288 | "require-dev": { 2289 | "predis/predis": "~1.0", 2290 | "symfony/expression-language": "~3.4|~4.0" 2291 | }, 2292 | "type": "library", 2293 | "extra": { 2294 | "branch-alias": { 2295 | "dev-master": "4.3-dev" 2296 | } 2297 | }, 2298 | "autoload": { 2299 | "psr-4": { 2300 | "Symfony\\Component\\HttpFoundation\\": "" 2301 | }, 2302 | "exclude-from-classmap": [ 2303 | "/Tests/" 2304 | ] 2305 | }, 2306 | "notification-url": "https://packagist.org/downloads/", 2307 | "license": [ 2308 | "MIT" 2309 | ], 2310 | "authors": [ 2311 | { 2312 | "name": "Fabien Potencier", 2313 | "email": "fabien@symfony.com" 2314 | }, 2315 | { 2316 | "name": "Symfony Community", 2317 | "homepage": "https://symfony.com/contributors" 2318 | } 2319 | ], 2320 | "description": "Symfony HttpFoundation Component", 2321 | "homepage": "https://symfony.com", 2322 | "time": "2019-11-12T13:07:20+00:00" 2323 | }, 2324 | { 2325 | "name": "symfony/http-kernel", 2326 | "version": "v4.3.3", 2327 | "source": { 2328 | "type": "git", 2329 | "url": "https://github.com/symfony/http-kernel.git", 2330 | "reference": "a414548d236ddd8fa3df52367d583e82339c5e95" 2331 | }, 2332 | "dist": { 2333 | "type": "zip", 2334 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a414548d236ddd8fa3df52367d583e82339c5e95", 2335 | "reference": "a414548d236ddd8fa3df52367d583e82339c5e95", 2336 | "shasum": "" 2337 | }, 2338 | "require": { 2339 | "php": "^7.1.3", 2340 | "psr/log": "~1.0", 2341 | "symfony/debug": "~3.4|~4.0", 2342 | "symfony/event-dispatcher": "^4.3", 2343 | "symfony/http-foundation": "^4.1.1", 2344 | "symfony/polyfill-ctype": "~1.8", 2345 | "symfony/polyfill-php73": "^1.9" 2346 | }, 2347 | "conflict": { 2348 | "symfony/browser-kit": "<4.3", 2349 | "symfony/config": "<3.4", 2350 | "symfony/dependency-injection": "<4.3", 2351 | "symfony/translation": "<4.2", 2352 | "symfony/var-dumper": "<4.1.1", 2353 | "twig/twig": "<1.34|<2.4,>=2" 2354 | }, 2355 | "provide": { 2356 | "psr/log-implementation": "1.0" 2357 | }, 2358 | "require-dev": { 2359 | "psr/cache": "~1.0", 2360 | "symfony/browser-kit": "^4.3", 2361 | "symfony/config": "~3.4|~4.0", 2362 | "symfony/console": "~3.4|~4.0", 2363 | "symfony/css-selector": "~3.4|~4.0", 2364 | "symfony/dependency-injection": "^4.3", 2365 | "symfony/dom-crawler": "~3.4|~4.0", 2366 | "symfony/expression-language": "~3.4|~4.0", 2367 | "symfony/finder": "~3.4|~4.0", 2368 | "symfony/process": "~3.4|~4.0", 2369 | "symfony/routing": "~3.4|~4.0", 2370 | "symfony/stopwatch": "~3.4|~4.0", 2371 | "symfony/templating": "~3.4|~4.0", 2372 | "symfony/translation": "~4.2", 2373 | "symfony/translation-contracts": "^1.1", 2374 | "symfony/var-dumper": "^4.1.1", 2375 | "twig/twig": "^1.34|^2.4" 2376 | }, 2377 | "suggest": { 2378 | "symfony/browser-kit": "", 2379 | "symfony/config": "", 2380 | "symfony/console": "", 2381 | "symfony/dependency-injection": "", 2382 | "symfony/var-dumper": "" 2383 | }, 2384 | "type": "library", 2385 | "extra": { 2386 | "branch-alias": { 2387 | "dev-master": "4.3-dev" 2388 | } 2389 | }, 2390 | "autoload": { 2391 | "psr-4": { 2392 | "Symfony\\Component\\HttpKernel\\": "" 2393 | }, 2394 | "exclude-from-classmap": [ 2395 | "/Tests/" 2396 | ] 2397 | }, 2398 | "notification-url": "https://packagist.org/downloads/", 2399 | "license": [ 2400 | "MIT" 2401 | ], 2402 | "authors": [ 2403 | { 2404 | "name": "Fabien Potencier", 2405 | "email": "fabien@symfony.com" 2406 | }, 2407 | { 2408 | "name": "Symfony Community", 2409 | "homepage": "https://symfony.com/contributors" 2410 | } 2411 | ], 2412 | "description": "Symfony HttpKernel Component", 2413 | "homepage": "https://symfony.com", 2414 | "time": "2019-07-28T07:10:23+00:00" 2415 | }, 2416 | { 2417 | "name": "symfony/mime", 2418 | "version": "v4.4.1", 2419 | "source": { 2420 | "type": "git", 2421 | "url": "https://github.com/symfony/mime.git", 2422 | "reference": "010cc488e56cafe5f7494dea70aea93100c234df" 2423 | }, 2424 | "dist": { 2425 | "type": "zip", 2426 | "url": "https://api.github.com/repos/symfony/mime/zipball/010cc488e56cafe5f7494dea70aea93100c234df", 2427 | "reference": "010cc488e56cafe5f7494dea70aea93100c234df", 2428 | "shasum": "" 2429 | }, 2430 | "require": { 2431 | "php": "^7.1.3", 2432 | "symfony/polyfill-intl-idn": "^1.10", 2433 | "symfony/polyfill-mbstring": "^1.0" 2434 | }, 2435 | "conflict": { 2436 | "symfony/mailer": "<4.4" 2437 | }, 2438 | "require-dev": { 2439 | "egulias/email-validator": "^2.1.10", 2440 | "symfony/dependency-injection": "^3.4|^4.1|^5.0" 2441 | }, 2442 | "type": "library", 2443 | "extra": { 2444 | "branch-alias": { 2445 | "dev-master": "4.4-dev" 2446 | } 2447 | }, 2448 | "autoload": { 2449 | "psr-4": { 2450 | "Symfony\\Component\\Mime\\": "" 2451 | }, 2452 | "exclude-from-classmap": [ 2453 | "/Tests/" 2454 | ] 2455 | }, 2456 | "notification-url": "https://packagist.org/downloads/", 2457 | "license": [ 2458 | "MIT" 2459 | ], 2460 | "authors": [ 2461 | { 2462 | "name": "Fabien Potencier", 2463 | "email": "fabien@symfony.com" 2464 | }, 2465 | { 2466 | "name": "Symfony Community", 2467 | "homepage": "https://symfony.com/contributors" 2468 | } 2469 | ], 2470 | "description": "A library to manipulate MIME messages", 2471 | "homepage": "https://symfony.com", 2472 | "keywords": [ 2473 | "mime", 2474 | "mime-type" 2475 | ], 2476 | "time": "2019-11-30T08:27:26+00:00" 2477 | }, 2478 | { 2479 | "name": "symfony/polyfill-ctype", 2480 | "version": "v1.12.0", 2481 | "source": { 2482 | "type": "git", 2483 | "url": "https://github.com/symfony/polyfill-ctype.git", 2484 | "reference": "550ebaac289296ce228a706d0867afc34687e3f4" 2485 | }, 2486 | "dist": { 2487 | "type": "zip", 2488 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/550ebaac289296ce228a706d0867afc34687e3f4", 2489 | "reference": "550ebaac289296ce228a706d0867afc34687e3f4", 2490 | "shasum": "" 2491 | }, 2492 | "require": { 2493 | "php": ">=5.3.3" 2494 | }, 2495 | "suggest": { 2496 | "ext-ctype": "For best performance" 2497 | }, 2498 | "type": "library", 2499 | "extra": { 2500 | "branch-alias": { 2501 | "dev-master": "1.12-dev" 2502 | } 2503 | }, 2504 | "autoload": { 2505 | "psr-4": { 2506 | "Symfony\\Polyfill\\Ctype\\": "" 2507 | }, 2508 | "files": [ 2509 | "bootstrap.php" 2510 | ] 2511 | }, 2512 | "notification-url": "https://packagist.org/downloads/", 2513 | "license": [ 2514 | "MIT" 2515 | ], 2516 | "authors": [ 2517 | { 2518 | "name": "Gert de Pagter", 2519 | "email": "BackEndTea@gmail.com" 2520 | }, 2521 | { 2522 | "name": "Symfony Community", 2523 | "homepage": "https://symfony.com/contributors" 2524 | } 2525 | ], 2526 | "description": "Symfony polyfill for ctype functions", 2527 | "homepage": "https://symfony.com", 2528 | "keywords": [ 2529 | "compatibility", 2530 | "ctype", 2531 | "polyfill", 2532 | "portable" 2533 | ], 2534 | "time": "2019-08-06T08:03:45+00:00" 2535 | }, 2536 | { 2537 | "name": "symfony/polyfill-intl-idn", 2538 | "version": "v1.13.1", 2539 | "source": { 2540 | "type": "git", 2541 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 2542 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" 2543 | }, 2544 | "dist": { 2545 | "type": "zip", 2546 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 2547 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 2548 | "shasum": "" 2549 | }, 2550 | "require": { 2551 | "php": ">=5.3.3", 2552 | "symfony/polyfill-mbstring": "^1.3", 2553 | "symfony/polyfill-php72": "^1.9" 2554 | }, 2555 | "suggest": { 2556 | "ext-intl": "For best performance" 2557 | }, 2558 | "type": "library", 2559 | "extra": { 2560 | "branch-alias": { 2561 | "dev-master": "1.13-dev" 2562 | } 2563 | }, 2564 | "autoload": { 2565 | "psr-4": { 2566 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 2567 | }, 2568 | "files": [ 2569 | "bootstrap.php" 2570 | ] 2571 | }, 2572 | "notification-url": "https://packagist.org/downloads/", 2573 | "license": [ 2574 | "MIT" 2575 | ], 2576 | "authors": [ 2577 | { 2578 | "name": "Laurent Bassin", 2579 | "email": "laurent@bassin.info" 2580 | }, 2581 | { 2582 | "name": "Symfony Community", 2583 | "homepage": "https://symfony.com/contributors" 2584 | } 2585 | ], 2586 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 2587 | "homepage": "https://symfony.com", 2588 | "keywords": [ 2589 | "compatibility", 2590 | "idn", 2591 | "intl", 2592 | "polyfill", 2593 | "portable", 2594 | "shim" 2595 | ], 2596 | "time": "2019-11-27T13:56:44+00:00" 2597 | }, 2598 | { 2599 | "name": "symfony/polyfill-mbstring", 2600 | "version": "v1.13.1", 2601 | "source": { 2602 | "type": "git", 2603 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2604 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" 2605 | }, 2606 | "dist": { 2607 | "type": "zip", 2608 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", 2609 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", 2610 | "shasum": "" 2611 | }, 2612 | "require": { 2613 | "php": ">=5.3.3" 2614 | }, 2615 | "suggest": { 2616 | "ext-mbstring": "For best performance" 2617 | }, 2618 | "type": "library", 2619 | "extra": { 2620 | "branch-alias": { 2621 | "dev-master": "1.13-dev" 2622 | } 2623 | }, 2624 | "autoload": { 2625 | "psr-4": { 2626 | "Symfony\\Polyfill\\Mbstring\\": "" 2627 | }, 2628 | "files": [ 2629 | "bootstrap.php" 2630 | ] 2631 | }, 2632 | "notification-url": "https://packagist.org/downloads/", 2633 | "license": [ 2634 | "MIT" 2635 | ], 2636 | "authors": [ 2637 | { 2638 | "name": "Nicolas Grekas", 2639 | "email": "p@tchwork.com" 2640 | }, 2641 | { 2642 | "name": "Symfony Community", 2643 | "homepage": "https://symfony.com/contributors" 2644 | } 2645 | ], 2646 | "description": "Symfony polyfill for the Mbstring extension", 2647 | "homepage": "https://symfony.com", 2648 | "keywords": [ 2649 | "compatibility", 2650 | "mbstring", 2651 | "polyfill", 2652 | "portable", 2653 | "shim" 2654 | ], 2655 | "time": "2019-11-27T14:18:11+00:00" 2656 | }, 2657 | { 2658 | "name": "symfony/polyfill-php72", 2659 | "version": "v1.13.1", 2660 | "source": { 2661 | "type": "git", 2662 | "url": "https://github.com/symfony/polyfill-php72.git", 2663 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" 2664 | }, 2665 | "dist": { 2666 | "type": "zip", 2667 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", 2668 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", 2669 | "shasum": "" 2670 | }, 2671 | "require": { 2672 | "php": ">=5.3.3" 2673 | }, 2674 | "type": "library", 2675 | "extra": { 2676 | "branch-alias": { 2677 | "dev-master": "1.13-dev" 2678 | } 2679 | }, 2680 | "autoload": { 2681 | "psr-4": { 2682 | "Symfony\\Polyfill\\Php72\\": "" 2683 | }, 2684 | "files": [ 2685 | "bootstrap.php" 2686 | ] 2687 | }, 2688 | "notification-url": "https://packagist.org/downloads/", 2689 | "license": [ 2690 | "MIT" 2691 | ], 2692 | "authors": [ 2693 | { 2694 | "name": "Nicolas Grekas", 2695 | "email": "p@tchwork.com" 2696 | }, 2697 | { 2698 | "name": "Symfony Community", 2699 | "homepage": "https://symfony.com/contributors" 2700 | } 2701 | ], 2702 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 2703 | "homepage": "https://symfony.com", 2704 | "keywords": [ 2705 | "compatibility", 2706 | "polyfill", 2707 | "portable", 2708 | "shim" 2709 | ], 2710 | "time": "2019-11-27T13:56:44+00:00" 2711 | }, 2712 | { 2713 | "name": "symfony/polyfill-php73", 2714 | "version": "v1.12.0", 2715 | "source": { 2716 | "type": "git", 2717 | "url": "https://github.com/symfony/polyfill-php73.git", 2718 | "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188" 2719 | }, 2720 | "dist": { 2721 | "type": "zip", 2722 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/2ceb49eaccb9352bff54d22570276bb75ba4a188", 2723 | "reference": "2ceb49eaccb9352bff54d22570276bb75ba4a188", 2724 | "shasum": "" 2725 | }, 2726 | "require": { 2727 | "php": ">=5.3.3" 2728 | }, 2729 | "type": "library", 2730 | "extra": { 2731 | "branch-alias": { 2732 | "dev-master": "1.12-dev" 2733 | } 2734 | }, 2735 | "autoload": { 2736 | "psr-4": { 2737 | "Symfony\\Polyfill\\Php73\\": "" 2738 | }, 2739 | "files": [ 2740 | "bootstrap.php" 2741 | ], 2742 | "classmap": [ 2743 | "Resources/stubs" 2744 | ] 2745 | }, 2746 | "notification-url": "https://packagist.org/downloads/", 2747 | "license": [ 2748 | "MIT" 2749 | ], 2750 | "authors": [ 2751 | { 2752 | "name": "Nicolas Grekas", 2753 | "email": "p@tchwork.com" 2754 | }, 2755 | { 2756 | "name": "Symfony Community", 2757 | "homepage": "https://symfony.com/contributors" 2758 | } 2759 | ], 2760 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2761 | "homepage": "https://symfony.com", 2762 | "keywords": [ 2763 | "compatibility", 2764 | "polyfill", 2765 | "portable", 2766 | "shim" 2767 | ], 2768 | "time": "2019-08-06T08:03:45+00:00" 2769 | }, 2770 | { 2771 | "name": "symfony/psr-http-message-bridge", 2772 | "version": "v1.2.0", 2773 | "source": { 2774 | "type": "git", 2775 | "url": "https://github.com/symfony/psr-http-message-bridge.git", 2776 | "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad" 2777 | }, 2778 | "dist": { 2779 | "type": "zip", 2780 | "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", 2781 | "reference": "9ab9d71f97d5c7d35a121a7fb69f74fee95cd0ad", 2782 | "shasum": "" 2783 | }, 2784 | "require": { 2785 | "php": "^7.1", 2786 | "psr/http-message": "^1.0", 2787 | "symfony/http-foundation": "^3.4 || ^4.0" 2788 | }, 2789 | "require-dev": { 2790 | "nyholm/psr7": "^1.1", 2791 | "symfony/phpunit-bridge": "^3.4.20 || ^4.0", 2792 | "zendframework/zend-diactoros": "^1.4.1 || ^2.0" 2793 | }, 2794 | "suggest": { 2795 | "nyholm/psr7": "For a super lightweight PSR-7/17 implementation" 2796 | }, 2797 | "type": "symfony-bridge", 2798 | "extra": { 2799 | "branch-alias": { 2800 | "dev-master": "1.2-dev" 2801 | } 2802 | }, 2803 | "autoload": { 2804 | "psr-4": { 2805 | "Symfony\\Bridge\\PsrHttpMessage\\": "" 2806 | }, 2807 | "exclude-from-classmap": [ 2808 | "/Tests/" 2809 | ] 2810 | }, 2811 | "notification-url": "https://packagist.org/downloads/", 2812 | "license": [ 2813 | "MIT" 2814 | ], 2815 | "authors": [ 2816 | { 2817 | "name": "Symfony Community", 2818 | "homepage": "http://symfony.com/contributors" 2819 | }, 2820 | { 2821 | "name": "Fabien Potencier", 2822 | "email": "fabien@symfony.com" 2823 | } 2824 | ], 2825 | "description": "PSR HTTP message bridge", 2826 | "homepage": "http://symfony.com", 2827 | "keywords": [ 2828 | "http", 2829 | "http-message", 2830 | "psr-17", 2831 | "psr-7" 2832 | ], 2833 | "time": "2019-03-11T18:22:33+00:00" 2834 | }, 2835 | { 2836 | "name": "symfony/routing", 2837 | "version": "v4.3.3", 2838 | "source": { 2839 | "type": "git", 2840 | "url": "https://github.com/symfony/routing.git", 2841 | "reference": "a88c47a5861549f5dc1197660818084c3b67d773" 2842 | }, 2843 | "dist": { 2844 | "type": "zip", 2845 | "url": "https://api.github.com/repos/symfony/routing/zipball/a88c47a5861549f5dc1197660818084c3b67d773", 2846 | "reference": "a88c47a5861549f5dc1197660818084c3b67d773", 2847 | "shasum": "" 2848 | }, 2849 | "require": { 2850 | "php": "^7.1.3" 2851 | }, 2852 | "conflict": { 2853 | "symfony/config": "<4.2", 2854 | "symfony/dependency-injection": "<3.4", 2855 | "symfony/yaml": "<3.4" 2856 | }, 2857 | "require-dev": { 2858 | "doctrine/annotations": "~1.2", 2859 | "psr/log": "~1.0", 2860 | "symfony/config": "~4.2", 2861 | "symfony/dependency-injection": "~3.4|~4.0", 2862 | "symfony/expression-language": "~3.4|~4.0", 2863 | "symfony/http-foundation": "~3.4|~4.0", 2864 | "symfony/yaml": "~3.4|~4.0" 2865 | }, 2866 | "suggest": { 2867 | "doctrine/annotations": "For using the annotation loader", 2868 | "symfony/config": "For using the all-in-one router or any loader", 2869 | "symfony/expression-language": "For using expression matching", 2870 | "symfony/http-foundation": "For using a Symfony Request object", 2871 | "symfony/yaml": "For using the YAML loader" 2872 | }, 2873 | "type": "library", 2874 | "extra": { 2875 | "branch-alias": { 2876 | "dev-master": "4.3-dev" 2877 | } 2878 | }, 2879 | "autoload": { 2880 | "psr-4": { 2881 | "Symfony\\Component\\Routing\\": "" 2882 | }, 2883 | "exclude-from-classmap": [ 2884 | "/Tests/" 2885 | ] 2886 | }, 2887 | "notification-url": "https://packagist.org/downloads/", 2888 | "license": [ 2889 | "MIT" 2890 | ], 2891 | "authors": [ 2892 | { 2893 | "name": "Fabien Potencier", 2894 | "email": "fabien@symfony.com" 2895 | }, 2896 | { 2897 | "name": "Symfony Community", 2898 | "homepage": "https://symfony.com/contributors" 2899 | } 2900 | ], 2901 | "description": "Symfony Routing Component", 2902 | "homepage": "https://symfony.com", 2903 | "keywords": [ 2904 | "router", 2905 | "routing", 2906 | "uri", 2907 | "url" 2908 | ], 2909 | "time": "2019-07-23T14:43:56+00:00" 2910 | }, 2911 | { 2912 | "name": "symfony/service-contracts", 2913 | "version": "v1.1.8", 2914 | "source": { 2915 | "type": "git", 2916 | "url": "https://github.com/symfony/service-contracts.git", 2917 | "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf" 2918 | }, 2919 | "dist": { 2920 | "type": "zip", 2921 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/ffc7f5692092df31515df2a5ecf3b7302b3ddacf", 2922 | "reference": "ffc7f5692092df31515df2a5ecf3b7302b3ddacf", 2923 | "shasum": "" 2924 | }, 2925 | "require": { 2926 | "php": "^7.1.3", 2927 | "psr/container": "^1.0" 2928 | }, 2929 | "suggest": { 2930 | "symfony/service-implementation": "" 2931 | }, 2932 | "type": "library", 2933 | "extra": { 2934 | "branch-alias": { 2935 | "dev-master": "1.1-dev" 2936 | } 2937 | }, 2938 | "autoload": { 2939 | "psr-4": { 2940 | "Symfony\\Contracts\\Service\\": "" 2941 | } 2942 | }, 2943 | "notification-url": "https://packagist.org/downloads/", 2944 | "license": [ 2945 | "MIT" 2946 | ], 2947 | "authors": [ 2948 | { 2949 | "name": "Nicolas Grekas", 2950 | "email": "p@tchwork.com" 2951 | }, 2952 | { 2953 | "name": "Symfony Community", 2954 | "homepage": "https://symfony.com/contributors" 2955 | } 2956 | ], 2957 | "description": "Generic abstractions related to writing services", 2958 | "homepage": "https://symfony.com", 2959 | "keywords": [ 2960 | "abstractions", 2961 | "contracts", 2962 | "decoupling", 2963 | "interfaces", 2964 | "interoperability", 2965 | "standards" 2966 | ], 2967 | "time": "2019-10-14T12:27:06+00:00" 2968 | }, 2969 | { 2970 | "name": "symfony/var-exporter", 2971 | "version": "v4.4.1", 2972 | "source": { 2973 | "type": "git", 2974 | "url": "https://github.com/symfony/var-exporter.git", 2975 | "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb" 2976 | }, 2977 | "dist": { 2978 | "type": "zip", 2979 | "url": "https://api.github.com/repos/symfony/var-exporter/zipball/e566070effe60b8d16b99e958cdbd92aa2e470cb", 2980 | "reference": "e566070effe60b8d16b99e958cdbd92aa2e470cb", 2981 | "shasum": "" 2982 | }, 2983 | "require": { 2984 | "php": "^7.1.3" 2985 | }, 2986 | "require-dev": { 2987 | "symfony/var-dumper": "^4.1.1|^5.0" 2988 | }, 2989 | "type": "library", 2990 | "extra": { 2991 | "branch-alias": { 2992 | "dev-master": "4.4-dev" 2993 | } 2994 | }, 2995 | "autoload": { 2996 | "psr-4": { 2997 | "Symfony\\Component\\VarExporter\\": "" 2998 | }, 2999 | "exclude-from-classmap": [ 3000 | "/Tests/" 3001 | ] 3002 | }, 3003 | "notification-url": "https://packagist.org/downloads/", 3004 | "license": [ 3005 | "MIT" 3006 | ], 3007 | "authors": [ 3008 | { 3009 | "name": "Nicolas Grekas", 3010 | "email": "p@tchwork.com" 3011 | }, 3012 | { 3013 | "name": "Symfony Community", 3014 | "homepage": "https://symfony.com/contributors" 3015 | } 3016 | ], 3017 | "description": "A blend of var_export() + serialize() to turn any serializable data structure to plain PHP code", 3018 | "homepage": "https://symfony.com", 3019 | "keywords": [ 3020 | "clone", 3021 | "construct", 3022 | "export", 3023 | "hydrate", 3024 | "instantiate", 3025 | "serialize" 3026 | ], 3027 | "time": "2019-12-01T08:39:58+00:00" 3028 | }, 3029 | { 3030 | "name": "symfony/yaml", 3031 | "version": "v4.3.3", 3032 | "source": { 3033 | "type": "git", 3034 | "url": "https://github.com/symfony/yaml.git", 3035 | "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6" 3036 | }, 3037 | "dist": { 3038 | "type": "zip", 3039 | "url": "https://api.github.com/repos/symfony/yaml/zipball/34d29c2acd1ad65688f58452fd48a46bd996d5a6", 3040 | "reference": "34d29c2acd1ad65688f58452fd48a46bd996d5a6", 3041 | "shasum": "" 3042 | }, 3043 | "require": { 3044 | "php": "^7.1.3", 3045 | "symfony/polyfill-ctype": "~1.8" 3046 | }, 3047 | "conflict": { 3048 | "symfony/console": "<3.4" 3049 | }, 3050 | "require-dev": { 3051 | "symfony/console": "~3.4|~4.0" 3052 | }, 3053 | "suggest": { 3054 | "symfony/console": "For validating YAML files using the lint command" 3055 | }, 3056 | "type": "library", 3057 | "extra": { 3058 | "branch-alias": { 3059 | "dev-master": "4.3-dev" 3060 | } 3061 | }, 3062 | "autoload": { 3063 | "psr-4": { 3064 | "Symfony\\Component\\Yaml\\": "" 3065 | }, 3066 | "exclude-from-classmap": [ 3067 | "/Tests/" 3068 | ] 3069 | }, 3070 | "notification-url": "https://packagist.org/downloads/", 3071 | "license": [ 3072 | "MIT" 3073 | ], 3074 | "authors": [ 3075 | { 3076 | "name": "Fabien Potencier", 3077 | "email": "fabien@symfony.com" 3078 | }, 3079 | { 3080 | "name": "Symfony Community", 3081 | "homepage": "https://symfony.com/contributors" 3082 | } 3083 | ], 3084 | "description": "Symfony Yaml Component", 3085 | "homepage": "https://symfony.com", 3086 | "time": "2019-07-24T14:47:54+00:00" 3087 | }, 3088 | { 3089 | "name": "zendframework/zend-diactoros", 3090 | "version": "1.8.7", 3091 | "source": { 3092 | "type": "git", 3093 | "url": "https://github.com/zendframework/zend-diactoros.git", 3094 | "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b" 3095 | }, 3096 | "dist": { 3097 | "type": "zip", 3098 | "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/a85e67b86e9b8520d07e6415fcbcb8391b44a75b", 3099 | "reference": "a85e67b86e9b8520d07e6415fcbcb8391b44a75b", 3100 | "shasum": "" 3101 | }, 3102 | "require": { 3103 | "php": "^5.6 || ^7.0", 3104 | "psr/http-message": "^1.0" 3105 | }, 3106 | "provide": { 3107 | "psr/http-message-implementation": "1.0" 3108 | }, 3109 | "require-dev": { 3110 | "ext-dom": "*", 3111 | "ext-libxml": "*", 3112 | "php-http/psr7-integration-tests": "dev-master", 3113 | "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", 3114 | "zendframework/zend-coding-standard": "~1.0" 3115 | }, 3116 | "type": "library", 3117 | "extra": { 3118 | "branch-alias": { 3119 | "dev-release-1.8": "1.8.x-dev" 3120 | } 3121 | }, 3122 | "autoload": { 3123 | "files": [ 3124 | "src/functions/create_uploaded_file.php", 3125 | "src/functions/marshal_headers_from_sapi.php", 3126 | "src/functions/marshal_method_from_sapi.php", 3127 | "src/functions/marshal_protocol_version_from_sapi.php", 3128 | "src/functions/marshal_uri_from_sapi.php", 3129 | "src/functions/normalize_server.php", 3130 | "src/functions/normalize_uploaded_files.php", 3131 | "src/functions/parse_cookie_header.php" 3132 | ], 3133 | "psr-4": { 3134 | "Zend\\Diactoros\\": "src/" 3135 | } 3136 | }, 3137 | "notification-url": "https://packagist.org/downloads/", 3138 | "license": [ 3139 | "BSD-2-Clause" 3140 | ], 3141 | "description": "PSR HTTP Message implementations", 3142 | "homepage": "https://github.com/zendframework/zend-diactoros", 3143 | "keywords": [ 3144 | "http", 3145 | "psr", 3146 | "psr-7" 3147 | ], 3148 | "time": "2019-08-06T17:53:53+00:00" 3149 | } 3150 | ], 3151 | "packages-dev": [ 3152 | { 3153 | "name": "symfony/dotenv", 3154 | "version": "v4.3.3", 3155 | "source": { 3156 | "type": "git", 3157 | "url": "https://github.com/symfony/dotenv.git", 3158 | "reference": "c9ea2a1c60e7db08c1d1379cd4448fd14bda11eb" 3159 | }, 3160 | "dist": { 3161 | "type": "zip", 3162 | "url": "https://api.github.com/repos/symfony/dotenv/zipball/c9ea2a1c60e7db08c1d1379cd4448fd14bda11eb", 3163 | "reference": "c9ea2a1c60e7db08c1d1379cd4448fd14bda11eb", 3164 | "shasum": "" 3165 | }, 3166 | "require": { 3167 | "php": "^7.1.3" 3168 | }, 3169 | "require-dev": { 3170 | "symfony/process": "~3.4|~4.0" 3171 | }, 3172 | "type": "library", 3173 | "extra": { 3174 | "branch-alias": { 3175 | "dev-master": "4.3-dev" 3176 | } 3177 | }, 3178 | "autoload": { 3179 | "psr-4": { 3180 | "Symfony\\Component\\Dotenv\\": "" 3181 | }, 3182 | "exclude-from-classmap": [ 3183 | "/Tests/" 3184 | ] 3185 | }, 3186 | "notification-url": "https://packagist.org/downloads/", 3187 | "license": [ 3188 | "MIT" 3189 | ], 3190 | "authors": [ 3191 | { 3192 | "name": "Fabien Potencier", 3193 | "email": "fabien@symfony.com" 3194 | }, 3195 | { 3196 | "name": "Symfony Community", 3197 | "homepage": "https://symfony.com/contributors" 3198 | } 3199 | ], 3200 | "description": "Registers environment variables from a .env file", 3201 | "homepage": "https://symfony.com", 3202 | "keywords": [ 3203 | "dotenv", 3204 | "env", 3205 | "environment" 3206 | ], 3207 | "time": "2019-06-26T06:50:02+00:00" 3208 | } 3209 | ], 3210 | "aliases": [], 3211 | "minimum-stability": "stable", 3212 | "stability-flags": [], 3213 | "prefer-stable": false, 3214 | "prefer-lowest": false, 3215 | "platform": { 3216 | "php": "^7.2", 3217 | "ext-iconv": "*" 3218 | }, 3219 | "platform-dev": [] 3220 | } 3221 | -------------------------------------------------------------------------------- /app/composer.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | 3 | EXPECTED_SIGNATURE=$(wget https://composer.github.io/installer.sig -O - -q) 4 | php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" 5 | ACTUAL_SIGNATURE=$(php -r "echo hash_file('SHA384', 'composer-setup.php');") 6 | 7 | if [ "$EXPECTED_SIGNATURE" = "$ACTUAL_SIGNATURE" ] 8 | then 9 | php composer-setup.php --quiet 10 | RESULT=$? 11 | rm composer-setup.php 12 | exit $RESULT 13 | else 14 | >&2 echo 'ERROR: Invalid installer signature' 15 | rm composer-setup.php 16 | exit 1 17 | fi -------------------------------------------------------------------------------- /app/config/bundles.php: -------------------------------------------------------------------------------- 1 | ['all' => true], 5 | Sensio\Bundle\FrameworkExtraBundle\SensioFrameworkExtraBundle::class => ['all' => true], 6 | ]; 7 | -------------------------------------------------------------------------------- /app/config/packages/dev/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: true 4 | -------------------------------------------------------------------------------- /app/config/packages/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | secret: '%env(APP_SECRET)%' 3 | #default_locale: en 4 | #csrf_protection: true 5 | #http_method_override: true 6 | 7 | # Enables session support. Note that the session will ONLY be started if you read or write from it. 8 | # Remove or comment this section to explicitly disable session support. 9 | session: 10 | handler_id: ~ 11 | 12 | #esi: true 13 | #fragments: true 14 | php_errors: 15 | log: true 16 | 17 | cache: 18 | # Put the unique name of your app here: the prefix seed 19 | # is used to compute stable namespaces for cache keys. 20 | #prefix_seed: your_vendor_name/app_name 21 | 22 | # The app cache caches to the filesystem by default. 23 | # Other options include: 24 | 25 | # Redis 26 | #app: cache.adapter.redis 27 | #default_redis_provider: redis://localhost 28 | 29 | # APCu (not recommended with heavy random-write workloads as memory fragmentation can cause perf issues) 30 | #app: cache.adapter.apcu 31 | -------------------------------------------------------------------------------- /app/config/packages/nyholm_psr7.yaml: -------------------------------------------------------------------------------- 1 | services: 2 | # Register nyholm/psr7 services for autowiring with PSR-17 (HTTP factories) 3 | Psr\Http\Message\RequestFactoryInterface: '@nyholm.psr7.psr17_factory' 4 | Psr\Http\Message\ResponseFactoryInterface: '@nyholm.psr7.psr17_factory' 5 | Psr\Http\Message\ServerRequestFactoryInterface: '@nyholm.psr7.psr17_factory' 6 | Psr\Http\Message\StreamFactoryInterface: '@nyholm.psr7.psr17_factory' 7 | Psr\Http\Message\UploadedFileFactoryInterface: '@nyholm.psr7.psr17_factory' 8 | Psr\Http\Message\UriFactoryInterface: '@nyholm.psr7.psr17_factory' 9 | 10 | # Register nyholm/psr7 services for autowiring with HTTPlug factories 11 | Http\Message\MessageFactory: '@nyholm.psr7.httplug_factory' 12 | Http\Message\RequestFactory: '@nyholm.psr7.httplug_factory' 13 | Http\Message\ResponseFactory: '@nyholm.psr7.httplug_factory' 14 | Http\Message\StreamFactory: '@nyholm.psr7.httplug_factory' 15 | Http\Message\UriFactory: '@nyholm.psr7.httplug_factory' 16 | 17 | nyholm.psr7.psr17_factory: 18 | class: Nyholm\Psr7\Factory\Psr17Factory 19 | 20 | nyholm.psr7.httplug_factory: 21 | class: Nyholm\Psr7\Factory\HttplugFactory 22 | -------------------------------------------------------------------------------- /app/config/packages/routing.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | router: 3 | strict_requirements: ~ 4 | -------------------------------------------------------------------------------- /app/config/packages/sensio_framework_extra.yaml: -------------------------------------------------------------------------------- 1 | sensio_framework_extra: 2 | router: 3 | annotations: false 4 | -------------------------------------------------------------------------------- /app/config/packages/test/framework.yaml: -------------------------------------------------------------------------------- 1 | framework: 2 | test: true 3 | session: 4 | storage_id: session.storage.mock_file 5 | -------------------------------------------------------------------------------- /app/config/routes.yaml: -------------------------------------------------------------------------------- 1 | controllers: 2 | resource: '../src/Controller/' 3 | type: annotation -------------------------------------------------------------------------------- /app/config/routes/annotations.yaml: -------------------------------------------------------------------------------- 1 | controllers: 2 | resource: ../../src/Controller/ 3 | type: annotation 4 | -------------------------------------------------------------------------------- /app/config/services.yaml: -------------------------------------------------------------------------------- 1 | # Put parameters here that don't need to change on each machine where the app is deployed 2 | # https://symfony.com/doc/current/best_practices/configuration.html#application-related-configuration 3 | parameters: 4 | 5 | services: 6 | # default configuration for services in *this* file 7 | _defaults: 8 | autowire: true # Automatically injects dependencies in your services. 9 | autoconfigure: true # Automatically registers your services as commands, event subscribers, etc. 10 | public: false # Allows optimizing the container by removing unused services; this also means 11 | # fetching services directly from the container via $container->get() won't work. 12 | # The best practice is to be explicit about your dependencies anyway. 13 | 14 | # makes classes in src/ available to be used as services 15 | # this creates a service per class whose id is the fully-qualified class name 16 | App\: 17 | resource: '../src/*' 18 | exclude: '../src/{Entity,Migrations,Tests,Kernel.php}' 19 | 20 | # controllers are imported separately to make sure services can be injected 21 | # as action arguments even if you don't extend any base controller class 22 | App\Controller\: 23 | resource: '../src/Controller' 24 | tags: ['controller.service_arguments'] 25 | 26 | # add more service definitions when explicit configuration is needed 27 | # please note that last definitions always *replace* previous ones 28 | -------------------------------------------------------------------------------- /app/public/index.php: -------------------------------------------------------------------------------- 1 | load(__DIR__ . '/../.env'); 16 | } 17 | 18 | $env = 'dev';//$_SERVER['APP_ENV'] ?? 'dev'; 19 | $debug = true;//(bool) ($_SERVER['APP_DEBUG'] ?? ('prod' !== $env)); 20 | 21 | if ($debug) { 22 | umask(0000); 23 | 24 | Debug::enable(); 25 | } 26 | 27 | if ($trustedProxies = $_SERVER['TRUSTED_PROXIES'] ?? false) { 28 | Request::setTrustedProxies(explode(',', $trustedProxies), Request::HEADER_X_FORWARDED_ALL ^ Request::HEADER_X_FORWARDED_HOST); 29 | } 30 | 31 | if ($trustedHosts = $_SERVER['TRUSTED_HOSTS'] ?? false) { 32 | Request::setTrustedHosts(explode(',', $trustedHosts)); 33 | } 34 | 35 | $kernel = new Kernel($env, $debug); 36 | $request = Request::createFromGlobals(); 37 | $response = $kernel->handle($request); 38 | $response->send(); 39 | $kernel->terminate($request, $response); 40 | -------------------------------------------------------------------------------- /app/src/Controller/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dbergunder/reactphp-symfony/368dff4bb8af3226ead9e23688625efa288b7cd4/app/src/Controller/.gitignore -------------------------------------------------------------------------------- /app/src/Controller/HelloWorldController.php: -------------------------------------------------------------------------------- 1 | attributes->get('count', 0) 24 | ); 25 | return new JsonResponse($response); 26 | } 27 | } -------------------------------------------------------------------------------- /app/src/Kernel.php: -------------------------------------------------------------------------------- 1 | getProjectDir().'/var/cache/'.$this->environment; 23 | } 24 | 25 | public function getLogDir() 26 | { 27 | return $this->getProjectDir().'/var/log'; 28 | } 29 | 30 | public function registerBundles() 31 | { 32 | $contents = require $this->getProjectDir().'/config/bundles.php'; 33 | foreach ($contents as $class => $envs) { 34 | if (isset($envs['all']) || isset($envs[$this->environment])) { 35 | yield new $class(); 36 | } 37 | } 38 | } 39 | 40 | protected function configureContainer(ContainerBuilder $container, LoaderInterface $loader) 41 | { 42 | $container->addResource(new FileResource($this->getProjectDir().'/config/bundles.php')); 43 | // Feel free to remove the "container.autowiring.strict_mode" parameter 44 | // if you are using symfony/dependency-injection 4.0+ as it's the default behavior 45 | $container->setParameter('container.autowiring.strict_mode', true); 46 | $container->setParameter('container.dumper.inline_class_loader', true); 47 | $confDir = $this->getProjectDir().'/config'; 48 | 49 | $loader->load($confDir.'/{packages}/*'.self::CONFIG_EXTS, 'glob'); 50 | $loader->load($confDir.'/{packages}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, 'glob'); 51 | $loader->load($confDir.'/{services}'.self::CONFIG_EXTS, 'glob'); 52 | $loader->load($confDir.'/{services}_'.$this->environment.self::CONFIG_EXTS, 'glob'); 53 | } 54 | 55 | protected function configureRoutes(RouteCollectionBuilder $routes) 56 | { 57 | $confDir = $this->getProjectDir().'/config'; 58 | 59 | $routes->import($confDir.'/{routes}/*'.self::CONFIG_EXTS, '/', 'glob'); 60 | $routes->import($confDir.'/{routes}/'.$this->environment.'/**/*'.self::CONFIG_EXTS, '/', 'glob'); 61 | $routes->import($confDir.'/{routes}'.self::CONFIG_EXTS, '/', 'glob'); 62 | } 63 | 64 | public function incrementCount() 65 | { 66 | $this->count++; 67 | } 68 | 69 | public function getCount() 70 | { 71 | return $this->count; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /app/symfony.lock: -------------------------------------------------------------------------------- 1 | { 2 | "doctrine/annotations": { 3 | "version": "1.0", 4 | "recipe": { 5 | "repo": "github.com/symfony/recipes", 6 | "branch": "master", 7 | "version": "1.0", 8 | "ref": "cb4152ebcadbe620ea2261da1a1c5a9b8cea7672" 9 | } 10 | }, 11 | "doctrine/cache": { 12 | "version": "v1.8.0" 13 | }, 14 | "doctrine/collections": { 15 | "version": "v1.5.0" 16 | }, 17 | "doctrine/event-manager": { 18 | "version": "v1.0.0" 19 | }, 20 | "doctrine/lexer": { 21 | "version": "v1.0.1" 22 | }, 23 | "doctrine/persistence": { 24 | "version": "v1.1.0" 25 | }, 26 | "doctrine/reflection": { 27 | "version": "v1.0.0" 28 | }, 29 | "evenement/evenement": { 30 | "version": "v3.0.1" 31 | }, 32 | "nyholm/psr7": { 33 | "version": "1.0", 34 | "recipe": { 35 | "repo": "github.com/symfony/recipes", 36 | "branch": "master", 37 | "version": "1.0", 38 | "ref": "0cd4d2d0e7f646fda75f9944f747a56e6ed13d4c" 39 | }, 40 | "files": [ 41 | "config/packages/nyholm_psr7.yaml" 42 | ] 43 | }, 44 | "php-http/message-factory": { 45 | "version": "v1.0.2" 46 | }, 47 | "psr/cache": { 48 | "version": "1.0.1" 49 | }, 50 | "psr/container": { 51 | "version": "1.0.0" 52 | }, 53 | "psr/http-factory": { 54 | "version": "1.0.1" 55 | }, 56 | "psr/http-message": { 57 | "version": "1.0.1" 58 | }, 59 | "psr/log": { 60 | "version": "1.0.2" 61 | }, 62 | "react/cache": { 63 | "version": "v0.4.2" 64 | }, 65 | "react/dns": { 66 | "version": "v0.4.13" 67 | }, 68 | "react/event-loop": { 69 | "version": "v0.5.1" 70 | }, 71 | "react/http": { 72 | "version": "v0.8.3" 73 | }, 74 | "react/promise": { 75 | "version": "v2.5.1" 76 | }, 77 | "react/promise-stream": { 78 | "version": "v1.1.1" 79 | }, 80 | "react/promise-timer": { 81 | "version": "v1.2.1" 82 | }, 83 | "react/socket": { 84 | "version": "v0.8.10" 85 | }, 86 | "react/stream": { 87 | "version": "v0.7.7" 88 | }, 89 | "ringcentral/psr7": { 90 | "version": "1.2.2" 91 | }, 92 | "sensio/framework-extra-bundle": { 93 | "version": "5.2", 94 | "recipe": { 95 | "repo": "github.com/symfony/recipes", 96 | "branch": "master", 97 | "version": "5.2", 98 | "ref": "fb7e19da7f013d0d422fa9bce16f5c510e27609b" 99 | } 100 | }, 101 | "symfony/cache": { 102 | "version": "v4.0.8" 103 | }, 104 | "symfony/cache-contracts": { 105 | "version": "v1.1.5" 106 | }, 107 | "symfony/config": { 108 | "version": "v4.0.8" 109 | }, 110 | "symfony/console": { 111 | "version": "3.3", 112 | "recipe": { 113 | "repo": "github.com/symfony/recipes", 114 | "branch": "master", 115 | "version": "3.3", 116 | "ref": "e3868d2f4a5104f19f844fe551099a00c6562527" 117 | } 118 | }, 119 | "symfony/contracts": { 120 | "version": "v1.0.2" 121 | }, 122 | "symfony/debug": { 123 | "version": "v4.0.8" 124 | }, 125 | "symfony/dependency-injection": { 126 | "version": "v4.0.8" 127 | }, 128 | "symfony/dotenv": { 129 | "version": "v4.0.8" 130 | }, 131 | "symfony/event-dispatcher": { 132 | "version": "v4.0.8" 133 | }, 134 | "symfony/event-dispatcher-contracts": { 135 | "version": "v1.1.5" 136 | }, 137 | "symfony/filesystem": { 138 | "version": "v4.0.8" 139 | }, 140 | "symfony/finder": { 141 | "version": "v4.0.8" 142 | }, 143 | "symfony/flex": { 144 | "version": "1.0", 145 | "recipe": { 146 | "repo": "github.com/symfony/recipes", 147 | "branch": "master", 148 | "version": "1.0", 149 | "ref": "cc1afd81841db36fbef982fe56b48ade6716fac4" 150 | } 151 | }, 152 | "symfony/framework-bundle": { 153 | "version": "3.3", 154 | "recipe": { 155 | "repo": "github.com/symfony/recipes", 156 | "branch": "master", 157 | "version": "3.3", 158 | "ref": "8a2f7fa50a528f0aad1d7a87ae3730c981b367ce" 159 | } 160 | }, 161 | "symfony/http-foundation": { 162 | "version": "v4.0.8" 163 | }, 164 | "symfony/http-kernel": { 165 | "version": "v4.0.8" 166 | }, 167 | "symfony/mime": { 168 | "version": "v4.3.3" 169 | }, 170 | "symfony/polyfill-ctype": { 171 | "version": "v1.10.0" 172 | }, 173 | "symfony/polyfill-intl-idn": { 174 | "version": "v1.12.0" 175 | }, 176 | "symfony/polyfill-mbstring": { 177 | "version": "v1.7.0" 178 | }, 179 | "symfony/polyfill-php72": { 180 | "version": "v1.12.0" 181 | }, 182 | "symfony/polyfill-php73": { 183 | "version": "v1.12.0" 184 | }, 185 | "symfony/psr-http-message-bridge": { 186 | "version": "v1.0.2" 187 | }, 188 | "symfony/routing": { 189 | "version": "4.0", 190 | "recipe": { 191 | "repo": "github.com/symfony/recipes", 192 | "branch": "master", 193 | "version": "4.0", 194 | "ref": "cda8b550123383d25827705d05a42acf6819fe4e" 195 | } 196 | }, 197 | "symfony/service-contracts": { 198 | "version": "v1.1.5" 199 | }, 200 | "symfony/var-exporter": { 201 | "version": "v4.2.1" 202 | }, 203 | "symfony/yaml": { 204 | "version": "v4.0.8" 205 | }, 206 | "zendframework/zend-diactoros": { 207 | "version": "1.7.1" 208 | } 209 | } 210 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3.4' 2 | 3 | services: 4 | php: 5 | build: 6 | context: ./docker/app 7 | args: 8 | TIMEZONE: ${TIMEZONE} 9 | volumes: 10 | - ./app:/app 11 | - ./docker/php/log.conf:/usr/local/etc/php-fpm.z/zz-log.conf 12 | - ./docker/php/php.conf:/usr/local/etc/php/conf.d/zz-conf.ini 13 | ports: 14 | - 8081:8081 -------------------------------------------------------------------------------- /docker/app/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:7.3.8-cli-alpine 2 | 3 | ARG TIMEZONE=${TIMEZONE:-America/Chicago} 4 | ARG DEV_ENV=${DEV_ENV:-dev} 5 | 6 | RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" 7 | RUN docker-php-ext-install iconv 8 | RUN docker-php-ext-install pdo_mysql 9 | RUN docker-php-ext-enable iconv 10 | RUN docker-php-ext-enable pdo_mysql 11 | 12 | # Install Composer 13 | ENV COMPOSER_ALLOW_SUPERUSER 1 14 | RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer \ 15 | && composer --version 16 | 17 | # Set timezone 18 | RUN ln -snf /usr/share/zoneinfo/${TIMEZONE} /etc/localtime && echo ${TIMEZONE} > /etc/timezone \ 19 | && printf '[PHP]\ndate.timezone = "%s"\n', ${TIMEZONE} > /usr/local/etc/php/conf.d/tzone.ini \ 20 | && "date" 21 | 22 | COPY entrypoint.sh /entrypoint.sh 23 | ENTRYPOINT /entrypoint.sh 24 | RUN ["chmod", "+x", "/entrypoint.sh"] -------------------------------------------------------------------------------- /docker/app/entrypoint.sh: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | /app/bin/react -------------------------------------------------------------------------------- /docker/php/log.conf: -------------------------------------------------------------------------------- 1 | php_admin_flag[log_errors] = on 2 | php_flag[display_errors] = off 3 | -------------------------------------------------------------------------------- /docker/php/php.conf: -------------------------------------------------------------------------------- 1 | session.name = APP 2 | 3 | session.cookie_httponly = 1 4 | 5 | expose_php = Off 6 | 7 | date.timezone = UTC 8 | 9 | session.auto_start = Off 10 | 11 | short_open_tag = Off 12 | 13 | opcache.interned_strings_buffer = 16 14 | 15 | opcache.max_accelerated_files = 20000 16 | 17 | opcache.memory_consumption = 256 18 | 19 | realpath_cache_size = 4096K 20 | 21 | realpath_cache_ttl = 600 22 | --------------------------------------------------------------------------------