├── templates └── .gitkeep ├── cache └── .gitignore ├── .gitignore ├── public └── index.php ├── modules └── users │ ├── templates │ └── users │ │ └── index.html │ ├── src │ ├── Models │ │ └── User.php │ ├── Controllers │ │ └── UsersController.php │ └── Register.php │ └── composer.json ├── renderer.php ├── phpunit.xml ├── app └── Controllers │ └── AppController.php ├── database.php ├── create_database.sql ├── composer.json ├── src ├── RouteEntity.php └── Router.php ├── bootstrap.php ├── tests └── RouterTest.php └── composer.lock /templates/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cache/.gitignore: -------------------------------------------------------------------------------- 1 | * 2 | !.gitignore -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | .phpunit.result.cache 3 | .vscode 4 | -------------------------------------------------------------------------------- /public/index.php: -------------------------------------------------------------------------------- 1 | Usuários - módulo 2 | 3 |
segundo middleware
'; 29 | return true; 30 | }) 31 | ->before(function () { 32 | echo 'terceiro middleware
'; 33 | return true; 34 | }) 35 | ->after(function () { 36 | echo 'finalização
'; 37 | return true; 38 | }); 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /bootstrap.php: -------------------------------------------------------------------------------- 1 | get('/', function () { 13 | return 'Olá mundo'; 14 | }); 15 | 16 | ErikFig\Framework\Users\Register::handle($twig, $router); 17 | 18 | // faço o router encontrar a rota que o usuário acessou 19 | $result = $router->handler(); 20 | 21 | if (!$result) { 22 | http_response_code(404); 23 | echo 'Página não encontrada!'; 24 | die(); 25 | } 26 | 27 | // pego os dados da entidade 28 | $data = $result->getData(); 29 | 30 | // rodo os middlewares before 31 | foreach ($data['before'] as $before) { 32 | // rodo o middleware 33 | if (!$before($router->getParams())) { 34 | // se retornar false eu paro a execução do código 35 | die(); 36 | } 37 | } 38 | 39 | // rodo a ação principal 40 | if ($data['action'] instanceof Closure) { 41 | echo $data['action']($router->getParams()); 42 | } elseif (is_string($data['action'])) { 43 | $data['action'] = explode('::', $data['action']); 44 | 45 | $controller = new $data['action'][0]($twig); 46 | $action = $data['action'][1]; 47 | 48 | echo $controller->$action($router->getParams()); 49 | } 50 | 51 | // rodo os middlewares after 52 | foreach ($data['after'] as $after) { 53 | // rodo o middleware 54 | if (!$after($router->getParams())) { 55 | // se retornar false eu paro a execução do código 56 | die(); 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /src/Router.php: -------------------------------------------------------------------------------- 1 | method = $method; 15 | $this->path = $path; 16 | } 17 | 18 | public function get(string $route, $action) 19 | { 20 | return $this->add('GET', $route, $action); // adicionei o return 21 | } 22 | 23 | public function post(string $route, $action) 24 | { 25 | return $this->add('POST', $route, $action); // adicionei o return 26 | } 27 | 28 | public function add(string $method, string $route, $action) 29 | { 30 | $this->routes[$method][$route] = new RouteEntity($action); // usei nossa nova classe 31 | return $this->routes[$method][$route]; // adicionei o return 32 | } 33 | 34 | public function getParams() 35 | { 36 | return $this->params; 37 | } 38 | 39 | public function handler() 40 | { 41 | if (empty($this->routes[$this->method])) { 42 | return false; 43 | } 44 | 45 | if (isset($this->routes[$this->method][$this->path])) { 46 | return $this->routes[$this->method][$this->path]; 47 | } 48 | 49 | foreach ($this->routes[$this->method] as $route => $action) { 50 | $result = $this->checkUrl($route, $this->path); 51 | if ($result >= 1) { 52 | return $action; 53 | } 54 | } 55 | 56 | return false; 57 | } 58 | 59 | private function checkUrl(string $route, $path) 60 | { 61 | preg_match_all('/\{([^\}]*)\}/', $route, $variables); 62 | 63 | $regex = str_replace('/', '\/', $route); 64 | 65 | foreach ($variables[0] as $k => $variable) { 66 | $replacement = '([a-zA-Z0-9\-\_\ ]+)'; 67 | $regex = str_replace($variable, $replacement, $regex); 68 | } 69 | 70 | $regex = preg_replace('/{([a-zA-Z]+)}/', '([a-zA-Z0-9+])', $regex); 71 | $result = preg_match('/^' . $regex . '$/', $path, $params); 72 | $this->params = $params; 73 | 74 | return $result; 75 | } 76 | } 77 | -------------------------------------------------------------------------------- /tests/RouterTest.php: -------------------------------------------------------------------------------- 1 | add('GET', '/ola-mundo', function () { 17 | return true; 18 | }); 19 | 20 | // executados o método que encontra a rota atual 21 | // a rota atual é a que foi informada na hora que 22 | // instanciei o router 23 | $result = $router->handler(); 24 | 25 | // pego o valor atual, note que estou executando o método que 26 | // registrei quando usei o $router->add 27 | $actual = $result(); 28 | 29 | // o valor que espero que seja retornado pelo $actual 30 | $expected = true; 31 | 32 | // verifique se deu tudo certo 33 | $this->assertEquals($expected, $actual); 34 | } 35 | 36 | public function testVerificaNaoSeEncontraRota() 37 | { 38 | $router = new Router('GET', '/outra-url'); // esta rota não foi registrada 39 | 40 | // esta rota não é a que está sendo usada 41 | $router->add('GET', '/ola-mundo', function () { 42 | return true; 43 | }); 44 | 45 | $result = $router->handler(); 46 | 47 | $actual = $result; 48 | $expected = true; 49 | 50 | // estou usando o assertNotEquals 51 | // que verifica se os valores são diferentes 52 | // antes eu usei o assertEquals 53 | // que verifica se eles são iguais 54 | $this->assertNotEquals($expected, $actual); 55 | } 56 | 57 | public function testVerificaSeEncontraRotaVariavel() 58 | { 59 | $router = new Router('GET', '/ola-erik'); 60 | $router->add('GET', '/ola-{nome}', function () { 61 | return true; 62 | }); 63 | 64 | $result = $router->handler(); 65 | 66 | $actual = $result(); 67 | $expected = true; 68 | $this->assertEquals($expected, $actual); 69 | } 70 | } 71 | -------------------------------------------------------------------------------- /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": "554947be0ddb5de129283d87c3258955", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "1.3.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 20 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^6.2" 28 | }, 29 | "type": "library", 30 | "extra": { 31 | "branch-alias": { 32 | "dev-master": "1.3.x-dev" 33 | } 34 | }, 35 | "autoload": { 36 | "psr-4": { 37 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 38 | } 39 | }, 40 | "notification-url": "https://packagist.org/downloads/", 41 | "license": [ 42 | "MIT" 43 | ], 44 | "authors": [ 45 | { 46 | "name": "Guilherme Blanco", 47 | "email": "guilhermeblanco@gmail.com" 48 | }, 49 | { 50 | "name": "Roman Borschel", 51 | "email": "roman@code-factory.org" 52 | }, 53 | { 54 | "name": "Benjamin Eberlei", 55 | "email": "kontakt@beberlei.de" 56 | }, 57 | { 58 | "name": "Jonathan Wage", 59 | "email": "jonwage@gmail.com" 60 | }, 61 | { 62 | "name": "Johannes Schmitt", 63 | "email": "schmittjoh@gmail.com" 64 | } 65 | ], 66 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 67 | "homepage": "http://www.doctrine-project.org", 68 | "keywords": [ 69 | "inflection", 70 | "pluralize", 71 | "singularize", 72 | "string" 73 | ], 74 | "time": "2019-10-30T19:59:35+00:00" 75 | }, 76 | { 77 | "name": "doctrine/instantiator", 78 | "version": "1.2.0", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/doctrine/instantiator.git", 82 | "reference": "a2c590166b2133a4633738648b6b064edae0814a" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", 87 | "reference": "a2c590166b2133a4633738648b6b064edae0814a", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "php": "^7.1" 92 | }, 93 | "require-dev": { 94 | "doctrine/coding-standard": "^6.0", 95 | "ext-pdo": "*", 96 | "ext-phar": "*", 97 | "phpbench/phpbench": "^0.13", 98 | "phpstan/phpstan-phpunit": "^0.11", 99 | "phpstan/phpstan-shim": "^0.11", 100 | "phpunit/phpunit": "^7.0" 101 | }, 102 | "type": "library", 103 | "extra": { 104 | "branch-alias": { 105 | "dev-master": "1.2.x-dev" 106 | } 107 | }, 108 | "autoload": { 109 | "psr-4": { 110 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 111 | } 112 | }, 113 | "notification-url": "https://packagist.org/downloads/", 114 | "license": [ 115 | "MIT" 116 | ], 117 | "authors": [ 118 | { 119 | "name": "Marco Pivetta", 120 | "email": "ocramius@gmail.com", 121 | "homepage": "http://ocramius.github.com/" 122 | } 123 | ], 124 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 125 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 126 | "keywords": [ 127 | "constructor", 128 | "instantiate" 129 | ], 130 | "time": "2019-03-17T17:37:11+00:00" 131 | }, 132 | { 133 | "name": "erikfig/module-users", 134 | "version": "dev-master", 135 | "dist": { 136 | "type": "path", 137 | "url": "./modules/users", 138 | "reference": "63ce9bd7eea609092e0f3316d4bbc83c95e65bd4", 139 | "shasum": null 140 | }, 141 | "type": "library", 142 | "autoload": { 143 | "psr-4": { 144 | "ErikFig\\Framework\\Users\\": "src" 145 | } 146 | }, 147 | "authors": [ 148 | { 149 | "name": "Erik Figueiredo", 150 | "email": "erik.figueiredo@gmail.com" 151 | } 152 | ] 153 | }, 154 | { 155 | "name": "illuminate/container", 156 | "version": "v6.10.0", 157 | "source": { 158 | "type": "git", 159 | "url": "https://github.com/illuminate/container.git", 160 | "reference": "7af0de3a43acaa78c4418b548fb2a66b0ce851c6" 161 | }, 162 | "dist": { 163 | "type": "zip", 164 | "url": "https://api.github.com/repos/illuminate/container/zipball/7af0de3a43acaa78c4418b548fb2a66b0ce851c6", 165 | "reference": "7af0de3a43acaa78c4418b548fb2a66b0ce851c6", 166 | "shasum": "" 167 | }, 168 | "require": { 169 | "illuminate/contracts": "^6.0", 170 | "php": "^7.2", 171 | "psr/container": "^1.0" 172 | }, 173 | "type": "library", 174 | "extra": { 175 | "branch-alias": { 176 | "dev-master": "6.x-dev" 177 | } 178 | }, 179 | "autoload": { 180 | "psr-4": { 181 | "Illuminate\\Container\\": "" 182 | } 183 | }, 184 | "notification-url": "https://packagist.org/downloads/", 185 | "license": [ 186 | "MIT" 187 | ], 188 | "authors": [ 189 | { 190 | "name": "Taylor Otwell", 191 | "email": "taylor@laravel.com" 192 | } 193 | ], 194 | "description": "The Illuminate Container package.", 195 | "homepage": "https://laravel.com", 196 | "time": "2020-01-07T13:47:03+00:00" 197 | }, 198 | { 199 | "name": "illuminate/contracts", 200 | "version": "v6.10.0", 201 | "source": { 202 | "type": "git", 203 | "url": "https://github.com/illuminate/contracts.git", 204 | "reference": "f1326dfae72c646a8598138b446347954f5e991e" 205 | }, 206 | "dist": { 207 | "type": "zip", 208 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/f1326dfae72c646a8598138b446347954f5e991e", 209 | "reference": "f1326dfae72c646a8598138b446347954f5e991e", 210 | "shasum": "" 211 | }, 212 | "require": { 213 | "php": "^7.2", 214 | "psr/container": "^1.0", 215 | "psr/simple-cache": "^1.0" 216 | }, 217 | "type": "library", 218 | "extra": { 219 | "branch-alias": { 220 | "dev-master": "6.x-dev" 221 | } 222 | }, 223 | "autoload": { 224 | "psr-4": { 225 | "Illuminate\\Contracts\\": "" 226 | } 227 | }, 228 | "notification-url": "https://packagist.org/downloads/", 229 | "license": [ 230 | "MIT" 231 | ], 232 | "authors": [ 233 | { 234 | "name": "Taylor Otwell", 235 | "email": "taylor@laravel.com" 236 | } 237 | ], 238 | "description": "The Illuminate Contracts package.", 239 | "homepage": "https://laravel.com", 240 | "time": "2020-01-07T13:47:03+00:00" 241 | }, 242 | { 243 | "name": "illuminate/database", 244 | "version": "v6.10.0", 245 | "source": { 246 | "type": "git", 247 | "url": "https://github.com/illuminate/database.git", 248 | "reference": "c05831908700863d5b6d1d258c2df936a8c3cad6" 249 | }, 250 | "dist": { 251 | "type": "zip", 252 | "url": "https://api.github.com/repos/illuminate/database/zipball/c05831908700863d5b6d1d258c2df936a8c3cad6", 253 | "reference": "c05831908700863d5b6d1d258c2df936a8c3cad6", 254 | "shasum": "" 255 | }, 256 | "require": { 257 | "ext-json": "*", 258 | "illuminate/container": "^6.0", 259 | "illuminate/contracts": "^6.0", 260 | "illuminate/support": "^6.0", 261 | "php": "^7.2" 262 | }, 263 | "suggest": { 264 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", 265 | "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", 266 | "illuminate/console": "Required to use the database commands (^6.0).", 267 | "illuminate/events": "Required to use the observers with Eloquent (^6.0).", 268 | "illuminate/filesystem": "Required to use the migrations (^6.0).", 269 | "illuminate/pagination": "Required to paginate the result set (^6.0)." 270 | }, 271 | "type": "library", 272 | "extra": { 273 | "branch-alias": { 274 | "dev-master": "6.x-dev" 275 | } 276 | }, 277 | "autoload": { 278 | "psr-4": { 279 | "Illuminate\\Database\\": "" 280 | } 281 | }, 282 | "notification-url": "https://packagist.org/downloads/", 283 | "license": [ 284 | "MIT" 285 | ], 286 | "authors": [ 287 | { 288 | "name": "Taylor Otwell", 289 | "email": "taylor@laravel.com" 290 | } 291 | ], 292 | "description": "The Illuminate Database package.", 293 | "homepage": "https://laravel.com", 294 | "keywords": [ 295 | "database", 296 | "laravel", 297 | "orm", 298 | "sql" 299 | ], 300 | "time": "2020-01-07T14:13:03+00:00" 301 | }, 302 | { 303 | "name": "illuminate/support", 304 | "version": "v6.10.0", 305 | "source": { 306 | "type": "git", 307 | "url": "https://github.com/illuminate/support.git", 308 | "reference": "564b8b6ae8ca7660143c6b807effb289d5fd2616" 309 | }, 310 | "dist": { 311 | "type": "zip", 312 | "url": "https://api.github.com/repos/illuminate/support/zipball/564b8b6ae8ca7660143c6b807effb289d5fd2616", 313 | "reference": "564b8b6ae8ca7660143c6b807effb289d5fd2616", 314 | "shasum": "" 315 | }, 316 | "require": { 317 | "doctrine/inflector": "^1.1", 318 | "ext-json": "*", 319 | "ext-mbstring": "*", 320 | "illuminate/contracts": "^6.0", 321 | "nesbot/carbon": "^2.0", 322 | "php": "^7.2" 323 | }, 324 | "conflict": { 325 | "tightenco/collect": "<5.5.33" 326 | }, 327 | "suggest": { 328 | "illuminate/filesystem": "Required to use the composer class (^6.0).", 329 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 330 | "ramsey/uuid": "Required to use Str::uuid() (^3.7).", 331 | "symfony/process": "Required to use the composer class (^4.3.4).", 332 | "symfony/var-dumper": "Required to use the dd function (^4.3.4).", 333 | "vlucas/phpdotenv": "Required to use the Env class and env helper (^3.3)." 334 | }, 335 | "type": "library", 336 | "extra": { 337 | "branch-alias": { 338 | "dev-master": "6.x-dev" 339 | } 340 | }, 341 | "autoload": { 342 | "psr-4": { 343 | "Illuminate\\Support\\": "" 344 | }, 345 | "files": [ 346 | "helpers.php" 347 | ] 348 | }, 349 | "notification-url": "https://packagist.org/downloads/", 350 | "license": [ 351 | "MIT" 352 | ], 353 | "authors": [ 354 | { 355 | "name": "Taylor Otwell", 356 | "email": "taylor@laravel.com" 357 | } 358 | ], 359 | "description": "The Illuminate Support package.", 360 | "homepage": "https://laravel.com", 361 | "time": "2020-01-07T13:47:03+00:00" 362 | }, 363 | { 364 | "name": "myclabs/deep-copy", 365 | "version": "1.9.1", 366 | "source": { 367 | "type": "git", 368 | "url": "https://github.com/myclabs/DeepCopy.git", 369 | "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" 370 | }, 371 | "dist": { 372 | "type": "zip", 373 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", 374 | "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", 375 | "shasum": "" 376 | }, 377 | "require": { 378 | "php": "^7.1" 379 | }, 380 | "replace": { 381 | "myclabs/deep-copy": "self.version" 382 | }, 383 | "require-dev": { 384 | "doctrine/collections": "^1.0", 385 | "doctrine/common": "^2.6", 386 | "phpunit/phpunit": "^7.1" 387 | }, 388 | "type": "library", 389 | "autoload": { 390 | "psr-4": { 391 | "DeepCopy\\": "src/DeepCopy/" 392 | }, 393 | "files": [ 394 | "src/DeepCopy/deep_copy.php" 395 | ] 396 | }, 397 | "notification-url": "https://packagist.org/downloads/", 398 | "license": [ 399 | "MIT" 400 | ], 401 | "description": "Create deep copies (clones) of your objects", 402 | "keywords": [ 403 | "clone", 404 | "copy", 405 | "duplicate", 406 | "object", 407 | "object graph" 408 | ], 409 | "time": "2019-04-07T13:18:21+00:00" 410 | }, 411 | { 412 | "name": "nesbot/carbon", 413 | "version": "2.28.0", 414 | "source": { 415 | "type": "git", 416 | "url": "https://github.com/briannesbitt/Carbon.git", 417 | "reference": "e2bcbcd43e67ee6101d321d5de916251d2870ca8" 418 | }, 419 | "dist": { 420 | "type": "zip", 421 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e2bcbcd43e67ee6101d321d5de916251d2870ca8", 422 | "reference": "e2bcbcd43e67ee6101d321d5de916251d2870ca8", 423 | "shasum": "" 424 | }, 425 | "require": { 426 | "ext-json": "*", 427 | "php": "^7.1.8 || ^8.0", 428 | "symfony/translation": "^3.4 || ^4.0 || ^5.0" 429 | }, 430 | "require-dev": { 431 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", 432 | "kylekatarnls/multi-tester": "^1.1", 433 | "phpmd/phpmd": "dev-php-7.1-compatibility", 434 | "phpstan/phpstan": "^0.11", 435 | "phpunit/phpunit": "^7.5 || ^8.0", 436 | "squizlabs/php_codesniffer": "^3.4" 437 | }, 438 | "bin": [ 439 | "bin/carbon" 440 | ], 441 | "type": "library", 442 | "extra": { 443 | "branch-alias": { 444 | "dev-master": "2.x-dev" 445 | }, 446 | "laravel": { 447 | "providers": [ 448 | "Carbon\\Laravel\\ServiceProvider" 449 | ] 450 | } 451 | }, 452 | "autoload": { 453 | "psr-4": { 454 | "Carbon\\": "src/Carbon/" 455 | } 456 | }, 457 | "notification-url": "https://packagist.org/downloads/", 458 | "license": [ 459 | "MIT" 460 | ], 461 | "authors": [ 462 | { 463 | "name": "Brian Nesbitt", 464 | "email": "brian@nesbot.com", 465 | "homepage": "http://nesbot.com" 466 | }, 467 | { 468 | "name": "kylekatarnls", 469 | "homepage": "http://github.com/kylekatarnls" 470 | } 471 | ], 472 | "description": "An API extension for DateTime that supports 281 different languages.", 473 | "homepage": "http://carbon.nesbot.com", 474 | "keywords": [ 475 | "date", 476 | "datetime", 477 | "time" 478 | ], 479 | "time": "2019-12-16T16:30:25+00:00" 480 | }, 481 | { 482 | "name": "phar-io/manifest", 483 | "version": "1.0.3", 484 | "source": { 485 | "type": "git", 486 | "url": "https://github.com/phar-io/manifest.git", 487 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 488 | }, 489 | "dist": { 490 | "type": "zip", 491 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 492 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 493 | "shasum": "" 494 | }, 495 | "require": { 496 | "ext-dom": "*", 497 | "ext-phar": "*", 498 | "phar-io/version": "^2.0", 499 | "php": "^5.6 || ^7.0" 500 | }, 501 | "type": "library", 502 | "extra": { 503 | "branch-alias": { 504 | "dev-master": "1.0.x-dev" 505 | } 506 | }, 507 | "autoload": { 508 | "classmap": [ 509 | "src/" 510 | ] 511 | }, 512 | "notification-url": "https://packagist.org/downloads/", 513 | "license": [ 514 | "BSD-3-Clause" 515 | ], 516 | "authors": [ 517 | { 518 | "name": "Arne Blankerts", 519 | "email": "arne@blankerts.de", 520 | "role": "Developer" 521 | }, 522 | { 523 | "name": "Sebastian Heuer", 524 | "email": "sebastian@phpeople.de", 525 | "role": "Developer" 526 | }, 527 | { 528 | "name": "Sebastian Bergmann", 529 | "email": "sebastian@phpunit.de", 530 | "role": "Developer" 531 | } 532 | ], 533 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 534 | "time": "2018-07-08T19:23:20+00:00" 535 | }, 536 | { 537 | "name": "phar-io/version", 538 | "version": "2.0.1", 539 | "source": { 540 | "type": "git", 541 | "url": "https://github.com/phar-io/version.git", 542 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 543 | }, 544 | "dist": { 545 | "type": "zip", 546 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 547 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 548 | "shasum": "" 549 | }, 550 | "require": { 551 | "php": "^5.6 || ^7.0" 552 | }, 553 | "type": "library", 554 | "autoload": { 555 | "classmap": [ 556 | "src/" 557 | ] 558 | }, 559 | "notification-url": "https://packagist.org/downloads/", 560 | "license": [ 561 | "BSD-3-Clause" 562 | ], 563 | "authors": [ 564 | { 565 | "name": "Arne Blankerts", 566 | "role": "Developer", 567 | "email": "arne@blankerts.de" 568 | }, 569 | { 570 | "name": "Sebastian Heuer", 571 | "role": "Developer", 572 | "email": "sebastian@phpeople.de" 573 | }, 574 | { 575 | "name": "Sebastian Bergmann", 576 | "role": "Developer", 577 | "email": "sebastian@phpunit.de" 578 | } 579 | ], 580 | "description": "Library for handling version information and constraints", 581 | "time": "2018-07-08T19:19:57+00:00" 582 | }, 583 | { 584 | "name": "phpdocumentor/reflection-common", 585 | "version": "1.0.1", 586 | "source": { 587 | "type": "git", 588 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 589 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 590 | }, 591 | "dist": { 592 | "type": "zip", 593 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 594 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 595 | "shasum": "" 596 | }, 597 | "require": { 598 | "php": ">=5.5" 599 | }, 600 | "require-dev": { 601 | "phpunit/phpunit": "^4.6" 602 | }, 603 | "type": "library", 604 | "extra": { 605 | "branch-alias": { 606 | "dev-master": "1.0.x-dev" 607 | } 608 | }, 609 | "autoload": { 610 | "psr-4": { 611 | "phpDocumentor\\Reflection\\": [ 612 | "src" 613 | ] 614 | } 615 | }, 616 | "notification-url": "https://packagist.org/downloads/", 617 | "license": [ 618 | "MIT" 619 | ], 620 | "authors": [ 621 | { 622 | "name": "Jaap van Otterdijk", 623 | "email": "opensource@ijaap.nl" 624 | } 625 | ], 626 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 627 | "homepage": "http://www.phpdoc.org", 628 | "keywords": [ 629 | "FQSEN", 630 | "phpDocumentor", 631 | "phpdoc", 632 | "reflection", 633 | "static analysis" 634 | ], 635 | "time": "2017-09-11T18:02:19+00:00" 636 | }, 637 | { 638 | "name": "phpdocumentor/reflection-docblock", 639 | "version": "4.3.1", 640 | "source": { 641 | "type": "git", 642 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 643 | "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" 644 | }, 645 | "dist": { 646 | "type": "zip", 647 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", 648 | "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", 649 | "shasum": "" 650 | }, 651 | "require": { 652 | "php": "^7.0", 653 | "phpdocumentor/reflection-common": "^1.0.0", 654 | "phpdocumentor/type-resolver": "^0.4.0", 655 | "webmozart/assert": "^1.0" 656 | }, 657 | "require-dev": { 658 | "doctrine/instantiator": "~1.0.5", 659 | "mockery/mockery": "^1.0", 660 | "phpunit/phpunit": "^6.4" 661 | }, 662 | "type": "library", 663 | "extra": { 664 | "branch-alias": { 665 | "dev-master": "4.x-dev" 666 | } 667 | }, 668 | "autoload": { 669 | "psr-4": { 670 | "phpDocumentor\\Reflection\\": [ 671 | "src/" 672 | ] 673 | } 674 | }, 675 | "notification-url": "https://packagist.org/downloads/", 676 | "license": [ 677 | "MIT" 678 | ], 679 | "authors": [ 680 | { 681 | "name": "Mike van Riel", 682 | "email": "me@mikevanriel.com" 683 | } 684 | ], 685 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 686 | "time": "2019-04-30T17:48:53+00:00" 687 | }, 688 | { 689 | "name": "phpdocumentor/type-resolver", 690 | "version": "0.4.0", 691 | "source": { 692 | "type": "git", 693 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 694 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 695 | }, 696 | "dist": { 697 | "type": "zip", 698 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 699 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 700 | "shasum": "" 701 | }, 702 | "require": { 703 | "php": "^5.5 || ^7.0", 704 | "phpdocumentor/reflection-common": "^1.0" 705 | }, 706 | "require-dev": { 707 | "mockery/mockery": "^0.9.4", 708 | "phpunit/phpunit": "^5.2||^4.8.24" 709 | }, 710 | "type": "library", 711 | "extra": { 712 | "branch-alias": { 713 | "dev-master": "1.0.x-dev" 714 | } 715 | }, 716 | "autoload": { 717 | "psr-4": { 718 | "phpDocumentor\\Reflection\\": [ 719 | "src/" 720 | ] 721 | } 722 | }, 723 | "notification-url": "https://packagist.org/downloads/", 724 | "license": [ 725 | "MIT" 726 | ], 727 | "authors": [ 728 | { 729 | "name": "Mike van Riel", 730 | "email": "me@mikevanriel.com" 731 | } 732 | ], 733 | "time": "2017-07-14T14:27:02+00:00" 734 | }, 735 | { 736 | "name": "phpspec/prophecy", 737 | "version": "1.8.1", 738 | "source": { 739 | "type": "git", 740 | "url": "https://github.com/phpspec/prophecy.git", 741 | "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76" 742 | }, 743 | "dist": { 744 | "type": "zip", 745 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/1927e75f4ed19131ec9bcc3b002e07fb1173ee76", 746 | "reference": "1927e75f4ed19131ec9bcc3b002e07fb1173ee76", 747 | "shasum": "" 748 | }, 749 | "require": { 750 | "doctrine/instantiator": "^1.0.2", 751 | "php": "^5.3|^7.0", 752 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 753 | "sebastian/comparator": "^1.1|^2.0|^3.0", 754 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 755 | }, 756 | "require-dev": { 757 | "phpspec/phpspec": "^2.5|^3.2", 758 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 759 | }, 760 | "type": "library", 761 | "extra": { 762 | "branch-alias": { 763 | "dev-master": "1.8.x-dev" 764 | } 765 | }, 766 | "autoload": { 767 | "psr-4": { 768 | "Prophecy\\": "src/Prophecy" 769 | } 770 | }, 771 | "notification-url": "https://packagist.org/downloads/", 772 | "license": [ 773 | "MIT" 774 | ], 775 | "authors": [ 776 | { 777 | "name": "Konstantin Kudryashov", 778 | "email": "ever.zet@gmail.com", 779 | "homepage": "http://everzet.com" 780 | }, 781 | { 782 | "name": "Marcello Duarte", 783 | "email": "marcello.duarte@gmail.com" 784 | } 785 | ], 786 | "description": "Highly opinionated mocking framework for PHP 5.3+", 787 | "homepage": "https://github.com/phpspec/prophecy", 788 | "keywords": [ 789 | "Double", 790 | "Dummy", 791 | "fake", 792 | "mock", 793 | "spy", 794 | "stub" 795 | ], 796 | "time": "2019-06-13T12:50:23+00:00" 797 | }, 798 | { 799 | "name": "phpunit/php-code-coverage", 800 | "version": "7.0.7", 801 | "source": { 802 | "type": "git", 803 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 804 | "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800" 805 | }, 806 | "dist": { 807 | "type": "zip", 808 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", 809 | "reference": "7743bbcfff2a907e9ee4a25be13d0f8ec5e73800", 810 | "shasum": "" 811 | }, 812 | "require": { 813 | "ext-dom": "*", 814 | "ext-xmlwriter": "*", 815 | "php": "^7.2", 816 | "phpunit/php-file-iterator": "^2.0.2", 817 | "phpunit/php-text-template": "^1.2.1", 818 | "phpunit/php-token-stream": "^3.1.0", 819 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 820 | "sebastian/environment": "^4.2.2", 821 | "sebastian/version": "^2.0.1", 822 | "theseer/tokenizer": "^1.1.3" 823 | }, 824 | "require-dev": { 825 | "phpunit/phpunit": "^8.2.2" 826 | }, 827 | "suggest": { 828 | "ext-xdebug": "^2.7.2" 829 | }, 830 | "type": "library", 831 | "extra": { 832 | "branch-alias": { 833 | "dev-master": "7.0-dev" 834 | } 835 | }, 836 | "autoload": { 837 | "classmap": [ 838 | "src/" 839 | ] 840 | }, 841 | "notification-url": "https://packagist.org/downloads/", 842 | "license": [ 843 | "BSD-3-Clause" 844 | ], 845 | "authors": [ 846 | { 847 | "name": "Sebastian Bergmann", 848 | "role": "lead", 849 | "email": "sebastian@phpunit.de" 850 | } 851 | ], 852 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 853 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 854 | "keywords": [ 855 | "coverage", 856 | "testing", 857 | "xunit" 858 | ], 859 | "time": "2019-07-25T05:31:54+00:00" 860 | }, 861 | { 862 | "name": "phpunit/php-file-iterator", 863 | "version": "2.0.2", 864 | "source": { 865 | "type": "git", 866 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 867 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 868 | }, 869 | "dist": { 870 | "type": "zip", 871 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 872 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 873 | "shasum": "" 874 | }, 875 | "require": { 876 | "php": "^7.1" 877 | }, 878 | "require-dev": { 879 | "phpunit/phpunit": "^7.1" 880 | }, 881 | "type": "library", 882 | "extra": { 883 | "branch-alias": { 884 | "dev-master": "2.0.x-dev" 885 | } 886 | }, 887 | "autoload": { 888 | "classmap": [ 889 | "src/" 890 | ] 891 | }, 892 | "notification-url": "https://packagist.org/downloads/", 893 | "license": [ 894 | "BSD-3-Clause" 895 | ], 896 | "authors": [ 897 | { 898 | "name": "Sebastian Bergmann", 899 | "role": "lead", 900 | "email": "sebastian@phpunit.de" 901 | } 902 | ], 903 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 904 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 905 | "keywords": [ 906 | "filesystem", 907 | "iterator" 908 | ], 909 | "time": "2018-09-13T20:33:42+00:00" 910 | }, 911 | { 912 | "name": "phpunit/php-text-template", 913 | "version": "1.2.1", 914 | "source": { 915 | "type": "git", 916 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 917 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 918 | }, 919 | "dist": { 920 | "type": "zip", 921 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 922 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 923 | "shasum": "" 924 | }, 925 | "require": { 926 | "php": ">=5.3.3" 927 | }, 928 | "type": "library", 929 | "autoload": { 930 | "classmap": [ 931 | "src/" 932 | ] 933 | }, 934 | "notification-url": "https://packagist.org/downloads/", 935 | "license": [ 936 | "BSD-3-Clause" 937 | ], 938 | "authors": [ 939 | { 940 | "name": "Sebastian Bergmann", 941 | "role": "lead", 942 | "email": "sebastian@phpunit.de" 943 | } 944 | ], 945 | "description": "Simple template engine.", 946 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 947 | "keywords": [ 948 | "template" 949 | ], 950 | "time": "2015-06-21T13:50:34+00:00" 951 | }, 952 | { 953 | "name": "phpunit/php-timer", 954 | "version": "2.1.2", 955 | "source": { 956 | "type": "git", 957 | "url": "https://github.com/sebastianbergmann/php-timer.git", 958 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 959 | }, 960 | "dist": { 961 | "type": "zip", 962 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 963 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 964 | "shasum": "" 965 | }, 966 | "require": { 967 | "php": "^7.1" 968 | }, 969 | "require-dev": { 970 | "phpunit/phpunit": "^7.0" 971 | }, 972 | "type": "library", 973 | "extra": { 974 | "branch-alias": { 975 | "dev-master": "2.1-dev" 976 | } 977 | }, 978 | "autoload": { 979 | "classmap": [ 980 | "src/" 981 | ] 982 | }, 983 | "notification-url": "https://packagist.org/downloads/", 984 | "license": [ 985 | "BSD-3-Clause" 986 | ], 987 | "authors": [ 988 | { 989 | "name": "Sebastian Bergmann", 990 | "role": "lead", 991 | "email": "sebastian@phpunit.de" 992 | } 993 | ], 994 | "description": "Utility class for timing", 995 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 996 | "keywords": [ 997 | "timer" 998 | ], 999 | "time": "2019-06-07T04:22:29+00:00" 1000 | }, 1001 | { 1002 | "name": "phpunit/php-token-stream", 1003 | "version": "3.1.0", 1004 | "source": { 1005 | "type": "git", 1006 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1007 | "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a" 1008 | }, 1009 | "dist": { 1010 | "type": "zip", 1011 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e899757bb3df5ff6e95089132f32cd59aac2220a", 1012 | "reference": "e899757bb3df5ff6e95089132f32cd59aac2220a", 1013 | "shasum": "" 1014 | }, 1015 | "require": { 1016 | "ext-tokenizer": "*", 1017 | "php": "^7.1" 1018 | }, 1019 | "require-dev": { 1020 | "phpunit/phpunit": "^7.0" 1021 | }, 1022 | "type": "library", 1023 | "extra": { 1024 | "branch-alias": { 1025 | "dev-master": "3.1-dev" 1026 | } 1027 | }, 1028 | "autoload": { 1029 | "classmap": [ 1030 | "src/" 1031 | ] 1032 | }, 1033 | "notification-url": "https://packagist.org/downloads/", 1034 | "license": [ 1035 | "BSD-3-Clause" 1036 | ], 1037 | "authors": [ 1038 | { 1039 | "name": "Sebastian Bergmann", 1040 | "email": "sebastian@phpunit.de" 1041 | } 1042 | ], 1043 | "description": "Wrapper around PHP's tokenizer extension.", 1044 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1045 | "keywords": [ 1046 | "tokenizer" 1047 | ], 1048 | "time": "2019-07-25T05:29:42+00:00" 1049 | }, 1050 | { 1051 | "name": "phpunit/phpunit", 1052 | "version": "8.3.3", 1053 | "source": { 1054 | "type": "git", 1055 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1056 | "reference": "c319d08ebd31e137034c84ad7339054709491485" 1057 | }, 1058 | "dist": { 1059 | "type": "zip", 1060 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c319d08ebd31e137034c84ad7339054709491485", 1061 | "reference": "c319d08ebd31e137034c84ad7339054709491485", 1062 | "shasum": "" 1063 | }, 1064 | "require": { 1065 | "doctrine/instantiator": "^1.2.0", 1066 | "ext-dom": "*", 1067 | "ext-json": "*", 1068 | "ext-libxml": "*", 1069 | "ext-mbstring": "*", 1070 | "ext-xml": "*", 1071 | "ext-xmlwriter": "*", 1072 | "myclabs/deep-copy": "^1.9.1", 1073 | "phar-io/manifest": "^1.0.3", 1074 | "phar-io/version": "^2.0.1", 1075 | "php": "^7.2", 1076 | "phpspec/prophecy": "^1.8.1", 1077 | "phpunit/php-code-coverage": "^7.0.7", 1078 | "phpunit/php-file-iterator": "^2.0.2", 1079 | "phpunit/php-text-template": "^1.2.1", 1080 | "phpunit/php-timer": "^2.1.2", 1081 | "sebastian/comparator": "^3.0.2", 1082 | "sebastian/diff": "^3.0.2", 1083 | "sebastian/environment": "^4.2.2", 1084 | "sebastian/exporter": "^3.1.0", 1085 | "sebastian/global-state": "^3.0.0", 1086 | "sebastian/object-enumerator": "^3.0.3", 1087 | "sebastian/resource-operations": "^2.0.1", 1088 | "sebastian/type": "^1.1.3", 1089 | "sebastian/version": "^2.0.1" 1090 | }, 1091 | "require-dev": { 1092 | "ext-pdo": "*" 1093 | }, 1094 | "suggest": { 1095 | "ext-soap": "*", 1096 | "ext-xdebug": "*", 1097 | "phpunit/php-invoker": "^2.0.0" 1098 | }, 1099 | "bin": [ 1100 | "phpunit" 1101 | ], 1102 | "type": "library", 1103 | "extra": { 1104 | "branch-alias": { 1105 | "dev-master": "8.3-dev" 1106 | } 1107 | }, 1108 | "autoload": { 1109 | "classmap": [ 1110 | "src/" 1111 | ] 1112 | }, 1113 | "notification-url": "https://packagist.org/downloads/", 1114 | "license": [ 1115 | "BSD-3-Clause" 1116 | ], 1117 | "authors": [ 1118 | { 1119 | "name": "Sebastian Bergmann", 1120 | "role": "lead", 1121 | "email": "sebastian@phpunit.de" 1122 | } 1123 | ], 1124 | "description": "The PHP Unit Testing framework.", 1125 | "homepage": "https://phpunit.de/", 1126 | "keywords": [ 1127 | "phpunit", 1128 | "testing", 1129 | "xunit" 1130 | ], 1131 | "time": "2019-08-03T15:41:47+00:00" 1132 | }, 1133 | { 1134 | "name": "psr/container", 1135 | "version": "1.0.0", 1136 | "source": { 1137 | "type": "git", 1138 | "url": "https://github.com/php-fig/container.git", 1139 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1140 | }, 1141 | "dist": { 1142 | "type": "zip", 1143 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1144 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1145 | "shasum": "" 1146 | }, 1147 | "require": { 1148 | "php": ">=5.3.0" 1149 | }, 1150 | "type": "library", 1151 | "extra": { 1152 | "branch-alias": { 1153 | "dev-master": "1.0.x-dev" 1154 | } 1155 | }, 1156 | "autoload": { 1157 | "psr-4": { 1158 | "Psr\\Container\\": "src/" 1159 | } 1160 | }, 1161 | "notification-url": "https://packagist.org/downloads/", 1162 | "license": [ 1163 | "MIT" 1164 | ], 1165 | "authors": [ 1166 | { 1167 | "name": "PHP-FIG", 1168 | "homepage": "http://www.php-fig.org/" 1169 | } 1170 | ], 1171 | "description": "Common Container Interface (PHP FIG PSR-11)", 1172 | "homepage": "https://github.com/php-fig/container", 1173 | "keywords": [ 1174 | "PSR-11", 1175 | "container", 1176 | "container-interface", 1177 | "container-interop", 1178 | "psr" 1179 | ], 1180 | "time": "2017-02-14T16:28:37+00:00" 1181 | }, 1182 | { 1183 | "name": "psr/simple-cache", 1184 | "version": "1.0.1", 1185 | "source": { 1186 | "type": "git", 1187 | "url": "https://github.com/php-fig/simple-cache.git", 1188 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 1189 | }, 1190 | "dist": { 1191 | "type": "zip", 1192 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1193 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1194 | "shasum": "" 1195 | }, 1196 | "require": { 1197 | "php": ">=5.3.0" 1198 | }, 1199 | "type": "library", 1200 | "extra": { 1201 | "branch-alias": { 1202 | "dev-master": "1.0.x-dev" 1203 | } 1204 | }, 1205 | "autoload": { 1206 | "psr-4": { 1207 | "Psr\\SimpleCache\\": "src/" 1208 | } 1209 | }, 1210 | "notification-url": "https://packagist.org/downloads/", 1211 | "license": [ 1212 | "MIT" 1213 | ], 1214 | "authors": [ 1215 | { 1216 | "name": "PHP-FIG", 1217 | "homepage": "http://www.php-fig.org/" 1218 | } 1219 | ], 1220 | "description": "Common interfaces for simple caching", 1221 | "keywords": [ 1222 | "cache", 1223 | "caching", 1224 | "psr", 1225 | "psr-16", 1226 | "simple-cache" 1227 | ], 1228 | "time": "2017-10-23T01:57:42+00:00" 1229 | }, 1230 | { 1231 | "name": "sebastian/code-unit-reverse-lookup", 1232 | "version": "1.0.1", 1233 | "source": { 1234 | "type": "git", 1235 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1236 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1237 | }, 1238 | "dist": { 1239 | "type": "zip", 1240 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1241 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1242 | "shasum": "" 1243 | }, 1244 | "require": { 1245 | "php": "^5.6 || ^7.0" 1246 | }, 1247 | "require-dev": { 1248 | "phpunit/phpunit": "^5.7 || ^6.0" 1249 | }, 1250 | "type": "library", 1251 | "extra": { 1252 | "branch-alias": { 1253 | "dev-master": "1.0.x-dev" 1254 | } 1255 | }, 1256 | "autoload": { 1257 | "classmap": [ 1258 | "src/" 1259 | ] 1260 | }, 1261 | "notification-url": "https://packagist.org/downloads/", 1262 | "license": [ 1263 | "BSD-3-Clause" 1264 | ], 1265 | "authors": [ 1266 | { 1267 | "name": "Sebastian Bergmann", 1268 | "email": "sebastian@phpunit.de" 1269 | } 1270 | ], 1271 | "description": "Looks up which function or method a line of code belongs to", 1272 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1273 | "time": "2017-03-04T06:30:41+00:00" 1274 | }, 1275 | { 1276 | "name": "sebastian/comparator", 1277 | "version": "3.0.2", 1278 | "source": { 1279 | "type": "git", 1280 | "url": "https://github.com/sebastianbergmann/comparator.git", 1281 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 1282 | }, 1283 | "dist": { 1284 | "type": "zip", 1285 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1286 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 1287 | "shasum": "" 1288 | }, 1289 | "require": { 1290 | "php": "^7.1", 1291 | "sebastian/diff": "^3.0", 1292 | "sebastian/exporter": "^3.1" 1293 | }, 1294 | "require-dev": { 1295 | "phpunit/phpunit": "^7.1" 1296 | }, 1297 | "type": "library", 1298 | "extra": { 1299 | "branch-alias": { 1300 | "dev-master": "3.0-dev" 1301 | } 1302 | }, 1303 | "autoload": { 1304 | "classmap": [ 1305 | "src/" 1306 | ] 1307 | }, 1308 | "notification-url": "https://packagist.org/downloads/", 1309 | "license": [ 1310 | "BSD-3-Clause" 1311 | ], 1312 | "authors": [ 1313 | { 1314 | "name": "Jeff Welch", 1315 | "email": "whatthejeff@gmail.com" 1316 | }, 1317 | { 1318 | "name": "Volker Dusch", 1319 | "email": "github@wallbash.com" 1320 | }, 1321 | { 1322 | "name": "Bernhard Schussek", 1323 | "email": "bschussek@2bepublished.at" 1324 | }, 1325 | { 1326 | "name": "Sebastian Bergmann", 1327 | "email": "sebastian@phpunit.de" 1328 | } 1329 | ], 1330 | "description": "Provides the functionality to compare PHP values for equality", 1331 | "homepage": "https://github.com/sebastianbergmann/comparator", 1332 | "keywords": [ 1333 | "comparator", 1334 | "compare", 1335 | "equality" 1336 | ], 1337 | "time": "2018-07-12T15:12:46+00:00" 1338 | }, 1339 | { 1340 | "name": "sebastian/diff", 1341 | "version": "3.0.2", 1342 | "source": { 1343 | "type": "git", 1344 | "url": "https://github.com/sebastianbergmann/diff.git", 1345 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 1346 | }, 1347 | "dist": { 1348 | "type": "zip", 1349 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1350 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 1351 | "shasum": "" 1352 | }, 1353 | "require": { 1354 | "php": "^7.1" 1355 | }, 1356 | "require-dev": { 1357 | "phpunit/phpunit": "^7.5 || ^8.0", 1358 | "symfony/process": "^2 || ^3.3 || ^4" 1359 | }, 1360 | "type": "library", 1361 | "extra": { 1362 | "branch-alias": { 1363 | "dev-master": "3.0-dev" 1364 | } 1365 | }, 1366 | "autoload": { 1367 | "classmap": [ 1368 | "src/" 1369 | ] 1370 | }, 1371 | "notification-url": "https://packagist.org/downloads/", 1372 | "license": [ 1373 | "BSD-3-Clause" 1374 | ], 1375 | "authors": [ 1376 | { 1377 | "name": "Kore Nordmann", 1378 | "email": "mail@kore-nordmann.de" 1379 | }, 1380 | { 1381 | "name": "Sebastian Bergmann", 1382 | "email": "sebastian@phpunit.de" 1383 | } 1384 | ], 1385 | "description": "Diff implementation", 1386 | "homepage": "https://github.com/sebastianbergmann/diff", 1387 | "keywords": [ 1388 | "diff", 1389 | "udiff", 1390 | "unidiff", 1391 | "unified diff" 1392 | ], 1393 | "time": "2019-02-04T06:01:07+00:00" 1394 | }, 1395 | { 1396 | "name": "sebastian/environment", 1397 | "version": "4.2.2", 1398 | "source": { 1399 | "type": "git", 1400 | "url": "https://github.com/sebastianbergmann/environment.git", 1401 | "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" 1402 | }, 1403 | "dist": { 1404 | "type": "zip", 1405 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", 1406 | "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", 1407 | "shasum": "" 1408 | }, 1409 | "require": { 1410 | "php": "^7.1" 1411 | }, 1412 | "require-dev": { 1413 | "phpunit/phpunit": "^7.5" 1414 | }, 1415 | "suggest": { 1416 | "ext-posix": "*" 1417 | }, 1418 | "type": "library", 1419 | "extra": { 1420 | "branch-alias": { 1421 | "dev-master": "4.2-dev" 1422 | } 1423 | }, 1424 | "autoload": { 1425 | "classmap": [ 1426 | "src/" 1427 | ] 1428 | }, 1429 | "notification-url": "https://packagist.org/downloads/", 1430 | "license": [ 1431 | "BSD-3-Clause" 1432 | ], 1433 | "authors": [ 1434 | { 1435 | "name": "Sebastian Bergmann", 1436 | "email": "sebastian@phpunit.de" 1437 | } 1438 | ], 1439 | "description": "Provides functionality to handle HHVM/PHP environments", 1440 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1441 | "keywords": [ 1442 | "Xdebug", 1443 | "environment", 1444 | "hhvm" 1445 | ], 1446 | "time": "2019-05-05T09:05:15+00:00" 1447 | }, 1448 | { 1449 | "name": "sebastian/exporter", 1450 | "version": "3.1.0", 1451 | "source": { 1452 | "type": "git", 1453 | "url": "https://github.com/sebastianbergmann/exporter.git", 1454 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 1455 | }, 1456 | "dist": { 1457 | "type": "zip", 1458 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 1459 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 1460 | "shasum": "" 1461 | }, 1462 | "require": { 1463 | "php": "^7.0", 1464 | "sebastian/recursion-context": "^3.0" 1465 | }, 1466 | "require-dev": { 1467 | "ext-mbstring": "*", 1468 | "phpunit/phpunit": "^6.0" 1469 | }, 1470 | "type": "library", 1471 | "extra": { 1472 | "branch-alias": { 1473 | "dev-master": "3.1.x-dev" 1474 | } 1475 | }, 1476 | "autoload": { 1477 | "classmap": [ 1478 | "src/" 1479 | ] 1480 | }, 1481 | "notification-url": "https://packagist.org/downloads/", 1482 | "license": [ 1483 | "BSD-3-Clause" 1484 | ], 1485 | "authors": [ 1486 | { 1487 | "name": "Jeff Welch", 1488 | "email": "whatthejeff@gmail.com" 1489 | }, 1490 | { 1491 | "name": "Volker Dusch", 1492 | "email": "github@wallbash.com" 1493 | }, 1494 | { 1495 | "name": "Bernhard Schussek", 1496 | "email": "bschussek@2bepublished.at" 1497 | }, 1498 | { 1499 | "name": "Sebastian Bergmann", 1500 | "email": "sebastian@phpunit.de" 1501 | }, 1502 | { 1503 | "name": "Adam Harvey", 1504 | "email": "aharvey@php.net" 1505 | } 1506 | ], 1507 | "description": "Provides the functionality to export PHP variables for visualization", 1508 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1509 | "keywords": [ 1510 | "export", 1511 | "exporter" 1512 | ], 1513 | "time": "2017-04-03T13:19:02+00:00" 1514 | }, 1515 | { 1516 | "name": "sebastian/global-state", 1517 | "version": "3.0.0", 1518 | "source": { 1519 | "type": "git", 1520 | "url": "https://github.com/sebastianbergmann/global-state.git", 1521 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" 1522 | }, 1523 | "dist": { 1524 | "type": "zip", 1525 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 1526 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 1527 | "shasum": "" 1528 | }, 1529 | "require": { 1530 | "php": "^7.2", 1531 | "sebastian/object-reflector": "^1.1.1", 1532 | "sebastian/recursion-context": "^3.0" 1533 | }, 1534 | "require-dev": { 1535 | "ext-dom": "*", 1536 | "phpunit/phpunit": "^8.0" 1537 | }, 1538 | "suggest": { 1539 | "ext-uopz": "*" 1540 | }, 1541 | "type": "library", 1542 | "extra": { 1543 | "branch-alias": { 1544 | "dev-master": "3.0-dev" 1545 | } 1546 | }, 1547 | "autoload": { 1548 | "classmap": [ 1549 | "src/" 1550 | ] 1551 | }, 1552 | "notification-url": "https://packagist.org/downloads/", 1553 | "license": [ 1554 | "BSD-3-Clause" 1555 | ], 1556 | "authors": [ 1557 | { 1558 | "name": "Sebastian Bergmann", 1559 | "email": "sebastian@phpunit.de" 1560 | } 1561 | ], 1562 | "description": "Snapshotting of global state", 1563 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1564 | "keywords": [ 1565 | "global state" 1566 | ], 1567 | "time": "2019-02-01T05:30:01+00:00" 1568 | }, 1569 | { 1570 | "name": "sebastian/object-enumerator", 1571 | "version": "3.0.3", 1572 | "source": { 1573 | "type": "git", 1574 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1575 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 1576 | }, 1577 | "dist": { 1578 | "type": "zip", 1579 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1580 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1581 | "shasum": "" 1582 | }, 1583 | "require": { 1584 | "php": "^7.0", 1585 | "sebastian/object-reflector": "^1.1.1", 1586 | "sebastian/recursion-context": "^3.0" 1587 | }, 1588 | "require-dev": { 1589 | "phpunit/phpunit": "^6.0" 1590 | }, 1591 | "type": "library", 1592 | "extra": { 1593 | "branch-alias": { 1594 | "dev-master": "3.0.x-dev" 1595 | } 1596 | }, 1597 | "autoload": { 1598 | "classmap": [ 1599 | "src/" 1600 | ] 1601 | }, 1602 | "notification-url": "https://packagist.org/downloads/", 1603 | "license": [ 1604 | "BSD-3-Clause" 1605 | ], 1606 | "authors": [ 1607 | { 1608 | "name": "Sebastian Bergmann", 1609 | "email": "sebastian@phpunit.de" 1610 | } 1611 | ], 1612 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1613 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1614 | "time": "2017-08-03T12:35:26+00:00" 1615 | }, 1616 | { 1617 | "name": "sebastian/object-reflector", 1618 | "version": "1.1.1", 1619 | "source": { 1620 | "type": "git", 1621 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1622 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 1623 | }, 1624 | "dist": { 1625 | "type": "zip", 1626 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 1627 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 1628 | "shasum": "" 1629 | }, 1630 | "require": { 1631 | "php": "^7.0" 1632 | }, 1633 | "require-dev": { 1634 | "phpunit/phpunit": "^6.0" 1635 | }, 1636 | "type": "library", 1637 | "extra": { 1638 | "branch-alias": { 1639 | "dev-master": "1.1-dev" 1640 | } 1641 | }, 1642 | "autoload": { 1643 | "classmap": [ 1644 | "src/" 1645 | ] 1646 | }, 1647 | "notification-url": "https://packagist.org/downloads/", 1648 | "license": [ 1649 | "BSD-3-Clause" 1650 | ], 1651 | "authors": [ 1652 | { 1653 | "name": "Sebastian Bergmann", 1654 | "email": "sebastian@phpunit.de" 1655 | } 1656 | ], 1657 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1658 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1659 | "time": "2017-03-29T09:07:27+00:00" 1660 | }, 1661 | { 1662 | "name": "sebastian/recursion-context", 1663 | "version": "3.0.0", 1664 | "source": { 1665 | "type": "git", 1666 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1667 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 1668 | }, 1669 | "dist": { 1670 | "type": "zip", 1671 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1672 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1673 | "shasum": "" 1674 | }, 1675 | "require": { 1676 | "php": "^7.0" 1677 | }, 1678 | "require-dev": { 1679 | "phpunit/phpunit": "^6.0" 1680 | }, 1681 | "type": "library", 1682 | "extra": { 1683 | "branch-alias": { 1684 | "dev-master": "3.0.x-dev" 1685 | } 1686 | }, 1687 | "autoload": { 1688 | "classmap": [ 1689 | "src/" 1690 | ] 1691 | }, 1692 | "notification-url": "https://packagist.org/downloads/", 1693 | "license": [ 1694 | "BSD-3-Clause" 1695 | ], 1696 | "authors": [ 1697 | { 1698 | "name": "Jeff Welch", 1699 | "email": "whatthejeff@gmail.com" 1700 | }, 1701 | { 1702 | "name": "Sebastian Bergmann", 1703 | "email": "sebastian@phpunit.de" 1704 | }, 1705 | { 1706 | "name": "Adam Harvey", 1707 | "email": "aharvey@php.net" 1708 | } 1709 | ], 1710 | "description": "Provides functionality to recursively process PHP variables", 1711 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1712 | "time": "2017-03-03T06:23:57+00:00" 1713 | }, 1714 | { 1715 | "name": "sebastian/resource-operations", 1716 | "version": "2.0.1", 1717 | "source": { 1718 | "type": "git", 1719 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1720 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 1721 | }, 1722 | "dist": { 1723 | "type": "zip", 1724 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 1725 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 1726 | "shasum": "" 1727 | }, 1728 | "require": { 1729 | "php": "^7.1" 1730 | }, 1731 | "type": "library", 1732 | "extra": { 1733 | "branch-alias": { 1734 | "dev-master": "2.0-dev" 1735 | } 1736 | }, 1737 | "autoload": { 1738 | "classmap": [ 1739 | "src/" 1740 | ] 1741 | }, 1742 | "notification-url": "https://packagist.org/downloads/", 1743 | "license": [ 1744 | "BSD-3-Clause" 1745 | ], 1746 | "authors": [ 1747 | { 1748 | "name": "Sebastian Bergmann", 1749 | "email": "sebastian@phpunit.de" 1750 | } 1751 | ], 1752 | "description": "Provides a list of PHP built-in functions that operate on resources", 1753 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1754 | "time": "2018-10-04T04:07:39+00:00" 1755 | }, 1756 | { 1757 | "name": "sebastian/type", 1758 | "version": "1.1.3", 1759 | "source": { 1760 | "type": "git", 1761 | "url": "https://github.com/sebastianbergmann/type.git", 1762 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" 1763 | }, 1764 | "dist": { 1765 | "type": "zip", 1766 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", 1767 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", 1768 | "shasum": "" 1769 | }, 1770 | "require": { 1771 | "php": "^7.2" 1772 | }, 1773 | "require-dev": { 1774 | "phpunit/phpunit": "^8.2" 1775 | }, 1776 | "type": "library", 1777 | "extra": { 1778 | "branch-alias": { 1779 | "dev-master": "1.1-dev" 1780 | } 1781 | }, 1782 | "autoload": { 1783 | "classmap": [ 1784 | "src/" 1785 | ] 1786 | }, 1787 | "notification-url": "https://packagist.org/downloads/", 1788 | "license": [ 1789 | "BSD-3-Clause" 1790 | ], 1791 | "authors": [ 1792 | { 1793 | "name": "Sebastian Bergmann", 1794 | "role": "lead", 1795 | "email": "sebastian@phpunit.de" 1796 | } 1797 | ], 1798 | "description": "Collection of value objects that represent the types of the PHP type system", 1799 | "homepage": "https://github.com/sebastianbergmann/type", 1800 | "time": "2019-07-02T08:10:15+00:00" 1801 | }, 1802 | { 1803 | "name": "sebastian/version", 1804 | "version": "2.0.1", 1805 | "source": { 1806 | "type": "git", 1807 | "url": "https://github.com/sebastianbergmann/version.git", 1808 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 1809 | }, 1810 | "dist": { 1811 | "type": "zip", 1812 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 1813 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 1814 | "shasum": "" 1815 | }, 1816 | "require": { 1817 | "php": ">=5.6" 1818 | }, 1819 | "type": "library", 1820 | "extra": { 1821 | "branch-alias": { 1822 | "dev-master": "2.0.x-dev" 1823 | } 1824 | }, 1825 | "autoload": { 1826 | "classmap": [ 1827 | "src/" 1828 | ] 1829 | }, 1830 | "notification-url": "https://packagist.org/downloads/", 1831 | "license": [ 1832 | "BSD-3-Clause" 1833 | ], 1834 | "authors": [ 1835 | { 1836 | "name": "Sebastian Bergmann", 1837 | "role": "lead", 1838 | "email": "sebastian@phpunit.de" 1839 | } 1840 | ], 1841 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1842 | "homepage": "https://github.com/sebastianbergmann/version", 1843 | "time": "2016-10-03T07:35:21+00:00" 1844 | }, 1845 | { 1846 | "name": "symfony/polyfill-ctype", 1847 | "version": "v1.11.0", 1848 | "source": { 1849 | "type": "git", 1850 | "url": "https://github.com/symfony/polyfill-ctype.git", 1851 | "reference": "82ebae02209c21113908c229e9883c419720738a" 1852 | }, 1853 | "dist": { 1854 | "type": "zip", 1855 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", 1856 | "reference": "82ebae02209c21113908c229e9883c419720738a", 1857 | "shasum": "" 1858 | }, 1859 | "require": { 1860 | "php": ">=5.3.3" 1861 | }, 1862 | "suggest": { 1863 | "ext-ctype": "For best performance" 1864 | }, 1865 | "type": "library", 1866 | "extra": { 1867 | "branch-alias": { 1868 | "dev-master": "1.11-dev" 1869 | } 1870 | }, 1871 | "autoload": { 1872 | "psr-4": { 1873 | "Symfony\\Polyfill\\Ctype\\": "" 1874 | }, 1875 | "files": [ 1876 | "bootstrap.php" 1877 | ] 1878 | }, 1879 | "notification-url": "https://packagist.org/downloads/", 1880 | "license": [ 1881 | "MIT" 1882 | ], 1883 | "authors": [ 1884 | { 1885 | "name": "Symfony Community", 1886 | "homepage": "https://symfony.com/contributors" 1887 | }, 1888 | { 1889 | "name": "Gert de Pagter", 1890 | "email": "BackEndTea@gmail.com" 1891 | } 1892 | ], 1893 | "description": "Symfony polyfill for ctype functions", 1894 | "homepage": "https://symfony.com", 1895 | "keywords": [ 1896 | "compatibility", 1897 | "ctype", 1898 | "polyfill", 1899 | "portable" 1900 | ], 1901 | "time": "2019-02-06T07:57:58+00:00" 1902 | }, 1903 | { 1904 | "name": "symfony/polyfill-mbstring", 1905 | "version": "v1.13.1", 1906 | "source": { 1907 | "type": "git", 1908 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1909 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" 1910 | }, 1911 | "dist": { 1912 | "type": "zip", 1913 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", 1914 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", 1915 | "shasum": "" 1916 | }, 1917 | "require": { 1918 | "php": ">=5.3.3" 1919 | }, 1920 | "suggest": { 1921 | "ext-mbstring": "For best performance" 1922 | }, 1923 | "type": "library", 1924 | "extra": { 1925 | "branch-alias": { 1926 | "dev-master": "1.13-dev" 1927 | } 1928 | }, 1929 | "autoload": { 1930 | "psr-4": { 1931 | "Symfony\\Polyfill\\Mbstring\\": "" 1932 | }, 1933 | "files": [ 1934 | "bootstrap.php" 1935 | ] 1936 | }, 1937 | "notification-url": "https://packagist.org/downloads/", 1938 | "license": [ 1939 | "MIT" 1940 | ], 1941 | "authors": [ 1942 | { 1943 | "name": "Nicolas Grekas", 1944 | "email": "p@tchwork.com" 1945 | }, 1946 | { 1947 | "name": "Symfony Community", 1948 | "homepage": "https://symfony.com/contributors" 1949 | } 1950 | ], 1951 | "description": "Symfony polyfill for the Mbstring extension", 1952 | "homepage": "https://symfony.com", 1953 | "keywords": [ 1954 | "compatibility", 1955 | "mbstring", 1956 | "polyfill", 1957 | "portable", 1958 | "shim" 1959 | ], 1960 | "time": "2019-11-27T14:18:11+00:00" 1961 | }, 1962 | { 1963 | "name": "symfony/translation", 1964 | "version": "v5.0.2", 1965 | "source": { 1966 | "type": "git", 1967 | "url": "https://github.com/symfony/translation.git", 1968 | "reference": "3ae6fad7a3dc2d99a023f9360184628fc44acbb3" 1969 | }, 1970 | "dist": { 1971 | "type": "zip", 1972 | "url": "https://api.github.com/repos/symfony/translation/zipball/3ae6fad7a3dc2d99a023f9360184628fc44acbb3", 1973 | "reference": "3ae6fad7a3dc2d99a023f9360184628fc44acbb3", 1974 | "shasum": "" 1975 | }, 1976 | "require": { 1977 | "php": "^7.2.5", 1978 | "symfony/polyfill-mbstring": "~1.0", 1979 | "symfony/translation-contracts": "^2" 1980 | }, 1981 | "conflict": { 1982 | "symfony/config": "<4.4", 1983 | "symfony/dependency-injection": "<5.0", 1984 | "symfony/http-kernel": "<5.0", 1985 | "symfony/twig-bundle": "<5.0", 1986 | "symfony/yaml": "<4.4" 1987 | }, 1988 | "provide": { 1989 | "symfony/translation-implementation": "2.0" 1990 | }, 1991 | "require-dev": { 1992 | "psr/log": "~1.0", 1993 | "symfony/config": "^4.4|^5.0", 1994 | "symfony/console": "^4.4|^5.0", 1995 | "symfony/dependency-injection": "^5.0", 1996 | "symfony/finder": "^4.4|^5.0", 1997 | "symfony/http-kernel": "^5.0", 1998 | "symfony/intl": "^4.4|^5.0", 1999 | "symfony/service-contracts": "^1.1.2|^2", 2000 | "symfony/yaml": "^4.4|^5.0" 2001 | }, 2002 | "suggest": { 2003 | "psr/log-implementation": "To use logging capability in translator", 2004 | "symfony/config": "", 2005 | "symfony/yaml": "" 2006 | }, 2007 | "type": "library", 2008 | "extra": { 2009 | "branch-alias": { 2010 | "dev-master": "5.0-dev" 2011 | } 2012 | }, 2013 | "autoload": { 2014 | "psr-4": { 2015 | "Symfony\\Component\\Translation\\": "" 2016 | }, 2017 | "exclude-from-classmap": [ 2018 | "/Tests/" 2019 | ] 2020 | }, 2021 | "notification-url": "https://packagist.org/downloads/", 2022 | "license": [ 2023 | "MIT" 2024 | ], 2025 | "authors": [ 2026 | { 2027 | "name": "Fabien Potencier", 2028 | "email": "fabien@symfony.com" 2029 | }, 2030 | { 2031 | "name": "Symfony Community", 2032 | "homepage": "https://symfony.com/contributors" 2033 | } 2034 | ], 2035 | "description": "Symfony Translation Component", 2036 | "homepage": "https://symfony.com", 2037 | "time": "2019-12-12T13:03:32+00:00" 2038 | }, 2039 | { 2040 | "name": "symfony/translation-contracts", 2041 | "version": "v2.0.1", 2042 | "source": { 2043 | "type": "git", 2044 | "url": "https://github.com/symfony/translation-contracts.git", 2045 | "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" 2046 | }, 2047 | "dist": { 2048 | "type": "zip", 2049 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", 2050 | "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", 2051 | "shasum": "" 2052 | }, 2053 | "require": { 2054 | "php": "^7.2.5" 2055 | }, 2056 | "suggest": { 2057 | "symfony/translation-implementation": "" 2058 | }, 2059 | "type": "library", 2060 | "extra": { 2061 | "branch-alias": { 2062 | "dev-master": "2.0-dev" 2063 | } 2064 | }, 2065 | "autoload": { 2066 | "psr-4": { 2067 | "Symfony\\Contracts\\Translation\\": "" 2068 | } 2069 | }, 2070 | "notification-url": "https://packagist.org/downloads/", 2071 | "license": [ 2072 | "MIT" 2073 | ], 2074 | "authors": [ 2075 | { 2076 | "name": "Nicolas Grekas", 2077 | "email": "p@tchwork.com" 2078 | }, 2079 | { 2080 | "name": "Symfony Community", 2081 | "homepage": "https://symfony.com/contributors" 2082 | } 2083 | ], 2084 | "description": "Generic abstractions related to translation", 2085 | "homepage": "https://symfony.com", 2086 | "keywords": [ 2087 | "abstractions", 2088 | "contracts", 2089 | "decoupling", 2090 | "interfaces", 2091 | "interoperability", 2092 | "standards" 2093 | ], 2094 | "time": "2019-11-18T17:27:11+00:00" 2095 | }, 2096 | { 2097 | "name": "theseer/tokenizer", 2098 | "version": "1.1.3", 2099 | "source": { 2100 | "type": "git", 2101 | "url": "https://github.com/theseer/tokenizer.git", 2102 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" 2103 | }, 2104 | "dist": { 2105 | "type": "zip", 2106 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 2107 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 2108 | "shasum": "" 2109 | }, 2110 | "require": { 2111 | "ext-dom": "*", 2112 | "ext-tokenizer": "*", 2113 | "ext-xmlwriter": "*", 2114 | "php": "^7.0" 2115 | }, 2116 | "type": "library", 2117 | "autoload": { 2118 | "classmap": [ 2119 | "src/" 2120 | ] 2121 | }, 2122 | "notification-url": "https://packagist.org/downloads/", 2123 | "license": [ 2124 | "BSD-3-Clause" 2125 | ], 2126 | "authors": [ 2127 | { 2128 | "name": "Arne Blankerts", 2129 | "email": "arne@blankerts.de", 2130 | "role": "Developer" 2131 | } 2132 | ], 2133 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2134 | "time": "2019-06-13T22:48:21+00:00" 2135 | }, 2136 | { 2137 | "name": "twig/twig", 2138 | "version": "v3.0.1", 2139 | "source": { 2140 | "type": "git", 2141 | "url": "https://github.com/twigphp/Twig.git", 2142 | "reference": "28f856a4c57eeb24485916e8a68403f41a133616" 2143 | }, 2144 | "dist": { 2145 | "type": "zip", 2146 | "url": "https://api.github.com/repos/twigphp/Twig/zipball/28f856a4c57eeb24485916e8a68403f41a133616", 2147 | "reference": "28f856a4c57eeb24485916e8a68403f41a133616", 2148 | "shasum": "" 2149 | }, 2150 | "require": { 2151 | "php": "^7.2.5", 2152 | "symfony/polyfill-ctype": "^1.8", 2153 | "symfony/polyfill-mbstring": "^1.3" 2154 | }, 2155 | "require-dev": { 2156 | "psr/container": "^1.0", 2157 | "symfony/phpunit-bridge": "^4.4|^5.0" 2158 | }, 2159 | "type": "library", 2160 | "extra": { 2161 | "branch-alias": { 2162 | "dev-master": "3.0-dev" 2163 | } 2164 | }, 2165 | "autoload": { 2166 | "psr-4": { 2167 | "Twig\\": "src/" 2168 | } 2169 | }, 2170 | "notification-url": "https://packagist.org/downloads/", 2171 | "license": [ 2172 | "BSD-3-Clause" 2173 | ], 2174 | "authors": [ 2175 | { 2176 | "name": "Fabien Potencier", 2177 | "email": "fabien@symfony.com", 2178 | "homepage": "http://fabien.potencier.org", 2179 | "role": "Lead Developer" 2180 | }, 2181 | { 2182 | "name": "Twig Team", 2183 | "role": "Contributors" 2184 | }, 2185 | { 2186 | "name": "Armin Ronacher", 2187 | "email": "armin.ronacher@active-4.com", 2188 | "role": "Project Founder" 2189 | } 2190 | ], 2191 | "description": "Twig, the flexible, fast, and secure template language for PHP", 2192 | "homepage": "https://twig.symfony.com", 2193 | "keywords": [ 2194 | "templating" 2195 | ], 2196 | "time": "2019-12-28T07:17:28+00:00" 2197 | }, 2198 | { 2199 | "name": "webmozart/assert", 2200 | "version": "1.4.0", 2201 | "source": { 2202 | "type": "git", 2203 | "url": "https://github.com/webmozart/assert.git", 2204 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" 2205 | }, 2206 | "dist": { 2207 | "type": "zip", 2208 | "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", 2209 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", 2210 | "shasum": "" 2211 | }, 2212 | "require": { 2213 | "php": "^5.3.3 || ^7.0", 2214 | "symfony/polyfill-ctype": "^1.8" 2215 | }, 2216 | "require-dev": { 2217 | "phpunit/phpunit": "^4.6", 2218 | "sebastian/version": "^1.0.1" 2219 | }, 2220 | "type": "library", 2221 | "extra": { 2222 | "branch-alias": { 2223 | "dev-master": "1.3-dev" 2224 | } 2225 | }, 2226 | "autoload": { 2227 | "psr-4": { 2228 | "Webmozart\\Assert\\": "src/" 2229 | } 2230 | }, 2231 | "notification-url": "https://packagist.org/downloads/", 2232 | "license": [ 2233 | "MIT" 2234 | ], 2235 | "authors": [ 2236 | { 2237 | "name": "Bernhard Schussek", 2238 | "email": "bschussek@gmail.com" 2239 | } 2240 | ], 2241 | "description": "Assertions to validate method input/output with nice error messages.", 2242 | "keywords": [ 2243 | "assert", 2244 | "check", 2245 | "validate" 2246 | ], 2247 | "time": "2018-12-25T11:19:39+00:00" 2248 | } 2249 | ], 2250 | "packages-dev": [], 2251 | "aliases": [], 2252 | "minimum-stability": "dev", 2253 | "stability-flags": { 2254 | "erikfig/module-users": 20 2255 | }, 2256 | "prefer-stable": true, 2257 | "prefer-lowest": false, 2258 | "platform": [], 2259 | "platform-dev": [] 2260 | } 2261 | --------------------------------------------------------------------------------