├── .gitignore ├── .php_cs ├── .travis.yml ├── LICENSE ├── README.md ├── composer.json ├── composer.lock ├── examples ├── clientInfo.php ├── currencyInfo.php ├── statements.php └── webhook.php ├── phpunit.xml.dist ├── src └── Monobank │ ├── Exception │ ├── Factory.php │ ├── InternalErrorException.php │ ├── InvalidAccountException.php │ ├── MonobankException.php │ ├── TooManyRequestsException.php │ └── UnknownTokenException.php │ ├── Monobank.php │ ├── Request │ ├── AbstractRequest.php │ ├── Bank.php │ └── Personal.php │ └── Response │ ├── ClientInfoResponse.php │ ├── CurrencyRatesResponse.php │ ├── Model │ ├── Account.php │ ├── CurrencyInfo.php │ └── Statement.php │ └── StatementResponse.php └── tests ├── Exception └── FactoryTest.php └── Response └── Model ├── AccountTest.php ├── CurrencyInfoTest.php └── StatementTest.php /.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | vendor/ 3 | .env 4 | .php_cs.cache 5 | .phpunit.result.cache -------------------------------------------------------------------------------- /.php_cs: -------------------------------------------------------------------------------- 1 | notPath('vendor') 5 | ->in(__DIR__.'/src') 6 | ->in(__DIR__.'/tests') 7 | ->name('*.php') 8 | ->ignoreDotFiles(true) 9 | ->ignoreVCS(true) 10 | ; 11 | 12 | return PhpCsFixer\Config::create() 13 | ->setRules([ 14 | '@Symfony' => true, 15 | '@PSR2' => true, 16 | 'strict_param' => true, 17 | 'array_syntax' => ['syntax' => 'short'], 18 | ]) 19 | ->setFinder($finder) 20 | ; -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | dist: trusty 4 | 5 | sudo: false 6 | 7 | addons: 8 | apt_packages: 9 | - enchant 10 | 11 | cache: 12 | directories: 13 | - $HOME/.composer/cache/files 14 | 15 | php: 16 | - 7.4 17 | - nightly 18 | 19 | env: 20 | global: 21 | - TEST_COMMAND="composer test" 22 | 23 | matrix: 24 | fast_finish: true 25 | allow_failures: 26 | - php: nightly 27 | 28 | install: 29 | - travis_retry composer install ${COMPOSER_FLAGS} 30 | 31 | script: 32 | - $TEST_COMMAND 33 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Ivan Klymenchenko 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # PHP library for Monobank API 2 | 3 | [![Build Status](https://travis-ci.org/ivaaaan/php-monobank-api.svg?branch=master)](https://travis-ci.org/ivaaaan/php-monobank-api) 4 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/ivaaaan/php-monobank-api/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/ivaaaan/php-monobank-api/?branch=master) 5 | 6 | ## Requirements 7 | 8 | * PHP >=7.4 9 | * ext-json 10 | * ext-curl 11 | 12 | ## Install 13 | 14 | Via Composer 15 | 16 | `$ composer require iillexial/php-monobank-api` 17 | 18 | ## Usage 19 | 20 | See [examples](/examples) for more. 21 | 22 | ### Get statements 23 | 24 | ```php 25 | $monobank = new Monobank\Monobank('token'); 26 | $statements = $monobank->personal->getStatements('account_id', new DateTime()); 27 | ``` 28 | 29 | ### Get client info 30 | 31 | ```php 32 | $monobank = new Monobank\Monobank('token'); 33 | $clientInfo = $monobank->personal->getClientInfo(); 34 | 35 | ``` 36 | 37 | ### Set a webhook 38 | 39 | ```php 40 | $monobank = new Monobank\Monobank('token'); 41 | $clientInfo = $monobank->personal->setWebhook('url here'); 42 | ``` 43 | 44 | ### Delete a webhook 45 | 46 | ```php 47 | $monobank = new Monobank\Monobank('token'); 48 | $clientInfo = $monobank->personal->deleteWebhook(); 49 | ``` 50 | 51 | 52 | ### Get currency rates 53 | 54 | ```php 55 | $monobank = new Monobank\Monobank(); 56 | $rates = $monobank->bank->getCurrencyRates(); 57 | ``` 58 | 59 | ## Testing 60 | 61 | Just run: 62 | 63 | `$ composer test` 64 | 65 | 66 | ## License 67 | 68 | The MIT License (MIT). Please see [License File](LICENSE) for more information. 69 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "iillexial/php-monobank-api", 3 | "description": "PHP library for Monobank API", 4 | "type": "project", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "Ivan Klymenchenko", 9 | "email": "developer@iillexial.me" 10 | } 11 | ], 12 | "require": { 13 | "php": ">=7.4", 14 | "ext-json": "*", 15 | "ext-curl": "*", 16 | "guzzlehttp/guzzle": "^7.2" 17 | }, 18 | "require-dev": { 19 | "phpunit/phpunit": "^9.4", 20 | "symfony/var-dumper": "^5.1", 21 | "phpstan/phpstan": "^0.12", 22 | "friendsofphp/php-cs-fixer": "^2.16" 23 | }, 24 | "autoload": { 25 | "psr-4": { 26 | "": "src/" 27 | } 28 | }, 29 | "autoload-dev": { 30 | "psr-4": { 31 | "Tests\\": "tests/" 32 | } 33 | }, 34 | "scripts": { 35 | "analyze": "vendor/bin/phpstan analyse src --level=5", 36 | "fix": "vendor/bin/php-cs-fixer fix --allow-risky=yes", 37 | "test": "vendor/bin/phpunit" 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /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": "923e36839540c4b0d7d471a427acd501", 8 | "packages": [ 9 | { 10 | "name": "guzzlehttp/guzzle", 11 | "version": "7.2.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/guzzle/guzzle.git", 15 | "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79", 20 | "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "ext-json": "*", 25 | "guzzlehttp/promises": "^1.4", 26 | "guzzlehttp/psr7": "^1.7", 27 | "php": "^7.2.5 || ^8.0", 28 | "psr/http-client": "^1.0" 29 | }, 30 | "provide": { 31 | "psr/http-client-implementation": "1.0" 32 | }, 33 | "require-dev": { 34 | "ext-curl": "*", 35 | "php-http/client-integration-tests": "^3.0", 36 | "phpunit/phpunit": "^8.5.5 || ^9.3.5", 37 | "psr/log": "^1.1" 38 | }, 39 | "suggest": { 40 | "ext-curl": "Required for CURL handler support", 41 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 42 | "psr/log": "Required for using the Log middleware" 43 | }, 44 | "type": "library", 45 | "extra": { 46 | "branch-alias": { 47 | "dev-master": "7.1-dev" 48 | } 49 | }, 50 | "autoload": { 51 | "psr-4": { 52 | "GuzzleHttp\\": "src/" 53 | }, 54 | "files": [ 55 | "src/functions_include.php" 56 | ] 57 | }, 58 | "notification-url": "https://packagist.org/downloads/", 59 | "license": [ 60 | "MIT" 61 | ], 62 | "authors": [ 63 | { 64 | "name": "Michael Dowling", 65 | "email": "mtdowling@gmail.com", 66 | "homepage": "https://github.com/mtdowling" 67 | }, 68 | { 69 | "name": "Márk Sági-Kazár", 70 | "email": "mark.sagikazar@gmail.com", 71 | "homepage": "https://sagikazarmark.hu" 72 | } 73 | ], 74 | "description": "Guzzle is a PHP HTTP client library", 75 | "homepage": "http://guzzlephp.org/", 76 | "keywords": [ 77 | "client", 78 | "curl", 79 | "framework", 80 | "http", 81 | "http client", 82 | "psr-18", 83 | "psr-7", 84 | "rest", 85 | "web service" 86 | ], 87 | "support": { 88 | "issues": "https://github.com/guzzle/guzzle/issues", 89 | "source": "https://github.com/guzzle/guzzle/tree/7.2.0" 90 | }, 91 | "funding": [ 92 | { 93 | "url": "https://github.com/GrahamCampbell", 94 | "type": "github" 95 | }, 96 | { 97 | "url": "https://github.com/Nyholm", 98 | "type": "github" 99 | }, 100 | { 101 | "url": "https://github.com/alexeyshockov", 102 | "type": "github" 103 | }, 104 | { 105 | "url": "https://github.com/gmponos", 106 | "type": "github" 107 | } 108 | ], 109 | "time": "2020-10-10T11:47:56+00:00" 110 | }, 111 | { 112 | "name": "guzzlehttp/promises", 113 | "version": "1.4.0", 114 | "source": { 115 | "type": "git", 116 | "url": "https://github.com/guzzle/promises.git", 117 | "reference": "60d379c243457e073cff02bc323a2a86cb355631" 118 | }, 119 | "dist": { 120 | "type": "zip", 121 | "url": "https://api.github.com/repos/guzzle/promises/zipball/60d379c243457e073cff02bc323a2a86cb355631", 122 | "reference": "60d379c243457e073cff02bc323a2a86cb355631", 123 | "shasum": "" 124 | }, 125 | "require": { 126 | "php": ">=5.5" 127 | }, 128 | "require-dev": { 129 | "symfony/phpunit-bridge": "^4.4 || ^5.1" 130 | }, 131 | "type": "library", 132 | "extra": { 133 | "branch-alias": { 134 | "dev-master": "1.4-dev" 135 | } 136 | }, 137 | "autoload": { 138 | "psr-4": { 139 | "GuzzleHttp\\Promise\\": "src/" 140 | }, 141 | "files": [ 142 | "src/functions_include.php" 143 | ] 144 | }, 145 | "notification-url": "https://packagist.org/downloads/", 146 | "license": [ 147 | "MIT" 148 | ], 149 | "authors": [ 150 | { 151 | "name": "Michael Dowling", 152 | "email": "mtdowling@gmail.com", 153 | "homepage": "https://github.com/mtdowling" 154 | } 155 | ], 156 | "description": "Guzzle promises library", 157 | "keywords": [ 158 | "promise" 159 | ], 160 | "support": { 161 | "issues": "https://github.com/guzzle/promises/issues", 162 | "source": "https://github.com/guzzle/promises/tree/1.4.0" 163 | }, 164 | "time": "2020-09-30T07:37:28+00:00" 165 | }, 166 | { 167 | "name": "guzzlehttp/psr7", 168 | "version": "1.7.0", 169 | "source": { 170 | "type": "git", 171 | "url": "https://github.com/guzzle/psr7.git", 172 | "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3" 173 | }, 174 | "dist": { 175 | "type": "zip", 176 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/53330f47520498c0ae1f61f7e2c90f55690c06a3", 177 | "reference": "53330f47520498c0ae1f61f7e2c90f55690c06a3", 178 | "shasum": "" 179 | }, 180 | "require": { 181 | "php": ">=5.4.0", 182 | "psr/http-message": "~1.0", 183 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" 184 | }, 185 | "provide": { 186 | "psr/http-message-implementation": "1.0" 187 | }, 188 | "require-dev": { 189 | "ext-zlib": "*", 190 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" 191 | }, 192 | "suggest": { 193 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 194 | }, 195 | "type": "library", 196 | "extra": { 197 | "branch-alias": { 198 | "dev-master": "1.7-dev" 199 | } 200 | }, 201 | "autoload": { 202 | "psr-4": { 203 | "GuzzleHttp\\Psr7\\": "src/" 204 | }, 205 | "files": [ 206 | "src/functions_include.php" 207 | ] 208 | }, 209 | "notification-url": "https://packagist.org/downloads/", 210 | "license": [ 211 | "MIT" 212 | ], 213 | "authors": [ 214 | { 215 | "name": "Michael Dowling", 216 | "email": "mtdowling@gmail.com", 217 | "homepage": "https://github.com/mtdowling" 218 | }, 219 | { 220 | "name": "Tobias Schultze", 221 | "homepage": "https://github.com/Tobion" 222 | } 223 | ], 224 | "description": "PSR-7 message implementation that also provides common utility methods", 225 | "keywords": [ 226 | "http", 227 | "message", 228 | "psr-7", 229 | "request", 230 | "response", 231 | "stream", 232 | "uri", 233 | "url" 234 | ], 235 | "support": { 236 | "issues": "https://github.com/guzzle/psr7/issues", 237 | "source": "https://github.com/guzzle/psr7/tree/1.7.0" 238 | }, 239 | "time": "2020-09-30T07:37:11+00:00" 240 | }, 241 | { 242 | "name": "psr/http-client", 243 | "version": "1.0.1", 244 | "source": { 245 | "type": "git", 246 | "url": "https://github.com/php-fig/http-client.git", 247 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621" 248 | }, 249 | "dist": { 250 | "type": "zip", 251 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 252 | "reference": "2dfb5f6c5eff0e91e20e913f8c5452ed95b86621", 253 | "shasum": "" 254 | }, 255 | "require": { 256 | "php": "^7.0 || ^8.0", 257 | "psr/http-message": "^1.0" 258 | }, 259 | "type": "library", 260 | "extra": { 261 | "branch-alias": { 262 | "dev-master": "1.0.x-dev" 263 | } 264 | }, 265 | "autoload": { 266 | "psr-4": { 267 | "Psr\\Http\\Client\\": "src/" 268 | } 269 | }, 270 | "notification-url": "https://packagist.org/downloads/", 271 | "license": [ 272 | "MIT" 273 | ], 274 | "authors": [ 275 | { 276 | "name": "PHP-FIG", 277 | "homepage": "http://www.php-fig.org/" 278 | } 279 | ], 280 | "description": "Common interface for HTTP clients", 281 | "homepage": "https://github.com/php-fig/http-client", 282 | "keywords": [ 283 | "http", 284 | "http-client", 285 | "psr", 286 | "psr-18" 287 | ], 288 | "support": { 289 | "source": "https://github.com/php-fig/http-client/tree/master" 290 | }, 291 | "time": "2020-06-29T06:28:15+00:00" 292 | }, 293 | { 294 | "name": "psr/http-message", 295 | "version": "1.0.1", 296 | "source": { 297 | "type": "git", 298 | "url": "https://github.com/php-fig/http-message.git", 299 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 300 | }, 301 | "dist": { 302 | "type": "zip", 303 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 304 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 305 | "shasum": "" 306 | }, 307 | "require": { 308 | "php": ">=5.3.0" 309 | }, 310 | "type": "library", 311 | "extra": { 312 | "branch-alias": { 313 | "dev-master": "1.0.x-dev" 314 | } 315 | }, 316 | "autoload": { 317 | "psr-4": { 318 | "Psr\\Http\\Message\\": "src/" 319 | } 320 | }, 321 | "notification-url": "https://packagist.org/downloads/", 322 | "license": [ 323 | "MIT" 324 | ], 325 | "authors": [ 326 | { 327 | "name": "PHP-FIG", 328 | "homepage": "http://www.php-fig.org/" 329 | } 330 | ], 331 | "description": "Common interface for HTTP messages", 332 | "homepage": "https://github.com/php-fig/http-message", 333 | "keywords": [ 334 | "http", 335 | "http-message", 336 | "psr", 337 | "psr-7", 338 | "request", 339 | "response" 340 | ], 341 | "support": { 342 | "source": "https://github.com/php-fig/http-message/tree/master" 343 | }, 344 | "time": "2016-08-06T14:39:51+00:00" 345 | }, 346 | { 347 | "name": "ralouphie/getallheaders", 348 | "version": "3.0.3", 349 | "source": { 350 | "type": "git", 351 | "url": "https://github.com/ralouphie/getallheaders.git", 352 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 353 | }, 354 | "dist": { 355 | "type": "zip", 356 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 357 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 358 | "shasum": "" 359 | }, 360 | "require": { 361 | "php": ">=5.6" 362 | }, 363 | "require-dev": { 364 | "php-coveralls/php-coveralls": "^2.1", 365 | "phpunit/phpunit": "^5 || ^6.5" 366 | }, 367 | "type": "library", 368 | "autoload": { 369 | "files": [ 370 | "src/getallheaders.php" 371 | ] 372 | }, 373 | "notification-url": "https://packagist.org/downloads/", 374 | "license": [ 375 | "MIT" 376 | ], 377 | "authors": [ 378 | { 379 | "name": "Ralph Khattar", 380 | "email": "ralph.khattar@gmail.com" 381 | } 382 | ], 383 | "description": "A polyfill for getallheaders.", 384 | "support": { 385 | "issues": "https://github.com/ralouphie/getallheaders/issues", 386 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 387 | }, 388 | "time": "2019-03-08T08:55:37+00:00" 389 | } 390 | ], 391 | "packages-dev": [ 392 | { 393 | "name": "composer/semver", 394 | "version": "3.2.4", 395 | "source": { 396 | "type": "git", 397 | "url": "https://github.com/composer/semver.git", 398 | "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464" 399 | }, 400 | "dist": { 401 | "type": "zip", 402 | "url": "https://api.github.com/repos/composer/semver/zipball/a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", 403 | "reference": "a02fdf930a3c1c3ed3a49b5f63859c0c20e10464", 404 | "shasum": "" 405 | }, 406 | "require": { 407 | "php": "^5.3.2 || ^7.0 || ^8.0" 408 | }, 409 | "require-dev": { 410 | "phpstan/phpstan": "^0.12.54", 411 | "symfony/phpunit-bridge": "^4.2 || ^5" 412 | }, 413 | "type": "library", 414 | "extra": { 415 | "branch-alias": { 416 | "dev-main": "3.x-dev" 417 | } 418 | }, 419 | "autoload": { 420 | "psr-4": { 421 | "Composer\\Semver\\": "src" 422 | } 423 | }, 424 | "notification-url": "https://packagist.org/downloads/", 425 | "license": [ 426 | "MIT" 427 | ], 428 | "authors": [ 429 | { 430 | "name": "Nils Adermann", 431 | "email": "naderman@naderman.de", 432 | "homepage": "http://www.naderman.de" 433 | }, 434 | { 435 | "name": "Jordi Boggiano", 436 | "email": "j.boggiano@seld.be", 437 | "homepage": "http://seld.be" 438 | }, 439 | { 440 | "name": "Rob Bast", 441 | "email": "rob.bast@gmail.com", 442 | "homepage": "http://robbast.nl" 443 | } 444 | ], 445 | "description": "Semver library that offers utilities, version constraint parsing and validation.", 446 | "keywords": [ 447 | "semantic", 448 | "semver", 449 | "validation", 450 | "versioning" 451 | ], 452 | "support": { 453 | "irc": "irc://irc.freenode.org/composer", 454 | "issues": "https://github.com/composer/semver/issues", 455 | "source": "https://github.com/composer/semver/tree/3.2.4" 456 | }, 457 | "funding": [ 458 | { 459 | "url": "https://packagist.com", 460 | "type": "custom" 461 | }, 462 | { 463 | "url": "https://github.com/composer", 464 | "type": "github" 465 | }, 466 | { 467 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 468 | "type": "tidelift" 469 | } 470 | ], 471 | "time": "2020-11-13T08:59:24+00:00" 472 | }, 473 | { 474 | "name": "composer/xdebug-handler", 475 | "version": "1.4.5", 476 | "source": { 477 | "type": "git", 478 | "url": "https://github.com/composer/xdebug-handler.git", 479 | "reference": "f28d44c286812c714741478d968104c5e604a1d4" 480 | }, 481 | "dist": { 482 | "type": "zip", 483 | "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/f28d44c286812c714741478d968104c5e604a1d4", 484 | "reference": "f28d44c286812c714741478d968104c5e604a1d4", 485 | "shasum": "" 486 | }, 487 | "require": { 488 | "php": "^5.3.2 || ^7.0 || ^8.0", 489 | "psr/log": "^1.0" 490 | }, 491 | "require-dev": { 492 | "phpunit/phpunit": "^4.8.35 || ^5.7 || 6.5 - 8" 493 | }, 494 | "type": "library", 495 | "autoload": { 496 | "psr-4": { 497 | "Composer\\XdebugHandler\\": "src" 498 | } 499 | }, 500 | "notification-url": "https://packagist.org/downloads/", 501 | "license": [ 502 | "MIT" 503 | ], 504 | "authors": [ 505 | { 506 | "name": "John Stevenson", 507 | "email": "john-stevenson@blueyonder.co.uk" 508 | } 509 | ], 510 | "description": "Restarts a process without Xdebug.", 511 | "keywords": [ 512 | "Xdebug", 513 | "performance" 514 | ], 515 | "support": { 516 | "irc": "irc://irc.freenode.org/composer", 517 | "issues": "https://github.com/composer/xdebug-handler/issues", 518 | "source": "https://github.com/composer/xdebug-handler/tree/1.4.5" 519 | }, 520 | "funding": [ 521 | { 522 | "url": "https://packagist.com", 523 | "type": "custom" 524 | }, 525 | { 526 | "url": "https://github.com/composer", 527 | "type": "github" 528 | }, 529 | { 530 | "url": "https://tidelift.com/funding/github/packagist/composer/composer", 531 | "type": "tidelift" 532 | } 533 | ], 534 | "time": "2020-11-13T08:04:11+00:00" 535 | }, 536 | { 537 | "name": "doctrine/annotations", 538 | "version": "1.11.1", 539 | "source": { 540 | "type": "git", 541 | "url": "https://github.com/doctrine/annotations.git", 542 | "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad" 543 | }, 544 | "dist": { 545 | "type": "zip", 546 | "url": "https://api.github.com/repos/doctrine/annotations/zipball/ce77a7ba1770462cd705a91a151b6c3746f9c6ad", 547 | "reference": "ce77a7ba1770462cd705a91a151b6c3746f9c6ad", 548 | "shasum": "" 549 | }, 550 | "require": { 551 | "doctrine/lexer": "1.*", 552 | "ext-tokenizer": "*", 553 | "php": "^7.1 || ^8.0" 554 | }, 555 | "require-dev": { 556 | "doctrine/cache": "1.*", 557 | "doctrine/coding-standard": "^6.0 || ^8.1", 558 | "phpstan/phpstan": "^0.12.20", 559 | "phpunit/phpunit": "^7.5 || ^9.1.5" 560 | }, 561 | "type": "library", 562 | "extra": { 563 | "branch-alias": { 564 | "dev-master": "1.11.x-dev" 565 | } 566 | }, 567 | "autoload": { 568 | "psr-4": { 569 | "Doctrine\\Common\\Annotations\\": "lib/Doctrine/Common/Annotations" 570 | } 571 | }, 572 | "notification-url": "https://packagist.org/downloads/", 573 | "license": [ 574 | "MIT" 575 | ], 576 | "authors": [ 577 | { 578 | "name": "Guilherme Blanco", 579 | "email": "guilhermeblanco@gmail.com" 580 | }, 581 | { 582 | "name": "Roman Borschel", 583 | "email": "roman@code-factory.org" 584 | }, 585 | { 586 | "name": "Benjamin Eberlei", 587 | "email": "kontakt@beberlei.de" 588 | }, 589 | { 590 | "name": "Jonathan Wage", 591 | "email": "jonwage@gmail.com" 592 | }, 593 | { 594 | "name": "Johannes Schmitt", 595 | "email": "schmittjoh@gmail.com" 596 | } 597 | ], 598 | "description": "Docblock Annotations Parser", 599 | "homepage": "https://www.doctrine-project.org/projects/annotations.html", 600 | "keywords": [ 601 | "annotations", 602 | "docblock", 603 | "parser" 604 | ], 605 | "support": { 606 | "issues": "https://github.com/doctrine/annotations/issues", 607 | "source": "https://github.com/doctrine/annotations/tree/1.11.1" 608 | }, 609 | "time": "2020-10-26T10:28:16+00:00" 610 | }, 611 | { 612 | "name": "doctrine/instantiator", 613 | "version": "1.4.0", 614 | "source": { 615 | "type": "git", 616 | "url": "https://github.com/doctrine/instantiator.git", 617 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" 618 | }, 619 | "dist": { 620 | "type": "zip", 621 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", 622 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", 623 | "shasum": "" 624 | }, 625 | "require": { 626 | "php": "^7.1 || ^8.0" 627 | }, 628 | "require-dev": { 629 | "doctrine/coding-standard": "^8.0", 630 | "ext-pdo": "*", 631 | "ext-phar": "*", 632 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", 633 | "phpstan/phpstan": "^0.12", 634 | "phpstan/phpstan-phpunit": "^0.12", 635 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 636 | }, 637 | "type": "library", 638 | "autoload": { 639 | "psr-4": { 640 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 641 | } 642 | }, 643 | "notification-url": "https://packagist.org/downloads/", 644 | "license": [ 645 | "MIT" 646 | ], 647 | "authors": [ 648 | { 649 | "name": "Marco Pivetta", 650 | "email": "ocramius@gmail.com", 651 | "homepage": "https://ocramius.github.io/" 652 | } 653 | ], 654 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 655 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 656 | "keywords": [ 657 | "constructor", 658 | "instantiate" 659 | ], 660 | "support": { 661 | "issues": "https://github.com/doctrine/instantiator/issues", 662 | "source": "https://github.com/doctrine/instantiator/tree/1.4.0" 663 | }, 664 | "funding": [ 665 | { 666 | "url": "https://www.doctrine-project.org/sponsorship.html", 667 | "type": "custom" 668 | }, 669 | { 670 | "url": "https://www.patreon.com/phpdoctrine", 671 | "type": "patreon" 672 | }, 673 | { 674 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 675 | "type": "tidelift" 676 | } 677 | ], 678 | "time": "2020-11-10T18:47:58+00:00" 679 | }, 680 | { 681 | "name": "doctrine/lexer", 682 | "version": "1.2.1", 683 | "source": { 684 | "type": "git", 685 | "url": "https://github.com/doctrine/lexer.git", 686 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" 687 | }, 688 | "dist": { 689 | "type": "zip", 690 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", 691 | "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", 692 | "shasum": "" 693 | }, 694 | "require": { 695 | "php": "^7.2 || ^8.0" 696 | }, 697 | "require-dev": { 698 | "doctrine/coding-standard": "^6.0", 699 | "phpstan/phpstan": "^0.11.8", 700 | "phpunit/phpunit": "^8.2" 701 | }, 702 | "type": "library", 703 | "extra": { 704 | "branch-alias": { 705 | "dev-master": "1.2.x-dev" 706 | } 707 | }, 708 | "autoload": { 709 | "psr-4": { 710 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 711 | } 712 | }, 713 | "notification-url": "https://packagist.org/downloads/", 714 | "license": [ 715 | "MIT" 716 | ], 717 | "authors": [ 718 | { 719 | "name": "Guilherme Blanco", 720 | "email": "guilhermeblanco@gmail.com" 721 | }, 722 | { 723 | "name": "Roman Borschel", 724 | "email": "roman@code-factory.org" 725 | }, 726 | { 727 | "name": "Johannes Schmitt", 728 | "email": "schmittjoh@gmail.com" 729 | } 730 | ], 731 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 732 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 733 | "keywords": [ 734 | "annotations", 735 | "docblock", 736 | "lexer", 737 | "parser", 738 | "php" 739 | ], 740 | "support": { 741 | "issues": "https://github.com/doctrine/lexer/issues", 742 | "source": "https://github.com/doctrine/lexer/tree/1.2.1" 743 | }, 744 | "funding": [ 745 | { 746 | "url": "https://www.doctrine-project.org/sponsorship.html", 747 | "type": "custom" 748 | }, 749 | { 750 | "url": "https://www.patreon.com/phpdoctrine", 751 | "type": "patreon" 752 | }, 753 | { 754 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Flexer", 755 | "type": "tidelift" 756 | } 757 | ], 758 | "time": "2020-05-25T17:44:05+00:00" 759 | }, 760 | { 761 | "name": "friendsofphp/php-cs-fixer", 762 | "version": "v2.16.7", 763 | "source": { 764 | "type": "git", 765 | "url": "https://github.com/FriendsOfPHP/PHP-CS-Fixer.git", 766 | "reference": "4e35806a6d7d8510d6842ae932e8832363d22c87" 767 | }, 768 | "dist": { 769 | "type": "zip", 770 | "url": "https://api.github.com/repos/FriendsOfPHP/PHP-CS-Fixer/zipball/4e35806a6d7d8510d6842ae932e8832363d22c87", 771 | "reference": "4e35806a6d7d8510d6842ae932e8832363d22c87", 772 | "shasum": "" 773 | }, 774 | "require": { 775 | "composer/semver": "^1.4 || ^2.0 || ^3.0", 776 | "composer/xdebug-handler": "^1.2", 777 | "doctrine/annotations": "^1.2", 778 | "ext-json": "*", 779 | "ext-tokenizer": "*", 780 | "php": "^7.1", 781 | "php-cs-fixer/diff": "^1.3", 782 | "symfony/console": "^3.4.43 || ^4.1.6 || ^5.0", 783 | "symfony/event-dispatcher": "^3.0 || ^4.0 || ^5.0", 784 | "symfony/filesystem": "^3.0 || ^4.0 || ^5.0", 785 | "symfony/finder": "^3.0 || ^4.0 || ^5.0", 786 | "symfony/options-resolver": "^3.0 || ^4.0 || ^5.0", 787 | "symfony/polyfill-php70": "^1.0", 788 | "symfony/polyfill-php72": "^1.4", 789 | "symfony/process": "^3.0 || ^4.0 || ^5.0", 790 | "symfony/stopwatch": "^3.0 || ^4.0 || ^5.0" 791 | }, 792 | "require-dev": { 793 | "johnkary/phpunit-speedtrap": "^1.1 || ^2.0 || ^3.0", 794 | "justinrainbow/json-schema": "^5.0", 795 | "keradus/cli-executor": "^1.4", 796 | "mikey179/vfsstream": "^1.6", 797 | "php-coveralls/php-coveralls": "^2.4.1", 798 | "php-cs-fixer/accessible-object": "^1.0", 799 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.2", 800 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.2.1", 801 | "phpunit/phpunit": "^5.7.27 || ^6.5.14 || ^7.1", 802 | "phpunitgoodpractices/traits": "^1.9.1", 803 | "symfony/phpunit-bridge": "^5.1", 804 | "symfony/yaml": "^3.0 || ^4.0 || ^5.0" 805 | }, 806 | "suggest": { 807 | "ext-dom": "For handling output formats in XML", 808 | "ext-mbstring": "For handling non-UTF8 characters.", 809 | "php-cs-fixer/phpunit-constraint-isidenticalstring": "For IsIdenticalString constraint.", 810 | "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "For XmlMatchesXsd constraint.", 811 | "symfony/polyfill-mbstring": "When enabling `ext-mbstring` is not possible." 812 | }, 813 | "bin": [ 814 | "php-cs-fixer" 815 | ], 816 | "type": "application", 817 | "autoload": { 818 | "psr-4": { 819 | "PhpCsFixer\\": "src/" 820 | }, 821 | "classmap": [ 822 | "tests/Test/AbstractFixerTestCase.php", 823 | "tests/Test/AbstractIntegrationCaseFactory.php", 824 | "tests/Test/AbstractIntegrationTestCase.php", 825 | "tests/Test/Assert/AssertTokensTrait.php", 826 | "tests/Test/IntegrationCase.php", 827 | "tests/Test/IntegrationCaseFactory.php", 828 | "tests/Test/IntegrationCaseFactoryInterface.php", 829 | "tests/Test/InternalIntegrationCaseFactory.php", 830 | "tests/Test/IsIdenticalConstraint.php", 831 | "tests/TestCase.php" 832 | ] 833 | }, 834 | "notification-url": "https://packagist.org/downloads/", 835 | "license": [ 836 | "MIT" 837 | ], 838 | "authors": [ 839 | { 840 | "name": "Fabien Potencier", 841 | "email": "fabien@symfony.com" 842 | }, 843 | { 844 | "name": "Dariusz Rumiński", 845 | "email": "dariusz.ruminski@gmail.com" 846 | } 847 | ], 848 | "description": "A tool to automatically fix PHP code style", 849 | "support": { 850 | "issues": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/issues", 851 | "source": "https://github.com/FriendsOfPHP/PHP-CS-Fixer/tree/v2.16.7" 852 | }, 853 | "funding": [ 854 | { 855 | "url": "https://github.com/keradus", 856 | "type": "github" 857 | } 858 | ], 859 | "time": "2020-10-27T22:44:27+00:00" 860 | }, 861 | { 862 | "name": "myclabs/deep-copy", 863 | "version": "1.10.2", 864 | "source": { 865 | "type": "git", 866 | "url": "https://github.com/myclabs/DeepCopy.git", 867 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" 868 | }, 869 | "dist": { 870 | "type": "zip", 871 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", 872 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", 873 | "shasum": "" 874 | }, 875 | "require": { 876 | "php": "^7.1 || ^8.0" 877 | }, 878 | "replace": { 879 | "myclabs/deep-copy": "self.version" 880 | }, 881 | "require-dev": { 882 | "doctrine/collections": "^1.0", 883 | "doctrine/common": "^2.6", 884 | "phpunit/phpunit": "^7.1" 885 | }, 886 | "type": "library", 887 | "autoload": { 888 | "psr-4": { 889 | "DeepCopy\\": "src/DeepCopy/" 890 | }, 891 | "files": [ 892 | "src/DeepCopy/deep_copy.php" 893 | ] 894 | }, 895 | "notification-url": "https://packagist.org/downloads/", 896 | "license": [ 897 | "MIT" 898 | ], 899 | "description": "Create deep copies (clones) of your objects", 900 | "keywords": [ 901 | "clone", 902 | "copy", 903 | "duplicate", 904 | "object", 905 | "object graph" 906 | ], 907 | "support": { 908 | "issues": "https://github.com/myclabs/DeepCopy/issues", 909 | "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" 910 | }, 911 | "funding": [ 912 | { 913 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 914 | "type": "tidelift" 915 | } 916 | ], 917 | "time": "2020-11-13T09:40:50+00:00" 918 | }, 919 | { 920 | "name": "nikic/php-parser", 921 | "version": "v4.10.2", 922 | "source": { 923 | "type": "git", 924 | "url": "https://github.com/nikic/PHP-Parser.git", 925 | "reference": "658f1be311a230e0907f5dfe0213742aff0596de" 926 | }, 927 | "dist": { 928 | "type": "zip", 929 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/658f1be311a230e0907f5dfe0213742aff0596de", 930 | "reference": "658f1be311a230e0907f5dfe0213742aff0596de", 931 | "shasum": "" 932 | }, 933 | "require": { 934 | "ext-tokenizer": "*", 935 | "php": ">=7.0" 936 | }, 937 | "require-dev": { 938 | "ircmaxell/php-yacc": "^0.0.7", 939 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 940 | }, 941 | "bin": [ 942 | "bin/php-parse" 943 | ], 944 | "type": "library", 945 | "extra": { 946 | "branch-alias": { 947 | "dev-master": "4.9-dev" 948 | } 949 | }, 950 | "autoload": { 951 | "psr-4": { 952 | "PhpParser\\": "lib/PhpParser" 953 | } 954 | }, 955 | "notification-url": "https://packagist.org/downloads/", 956 | "license": [ 957 | "BSD-3-Clause" 958 | ], 959 | "authors": [ 960 | { 961 | "name": "Nikita Popov" 962 | } 963 | ], 964 | "description": "A PHP parser written in PHP", 965 | "keywords": [ 966 | "parser", 967 | "php" 968 | ], 969 | "support": { 970 | "issues": "https://github.com/nikic/PHP-Parser/issues", 971 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.2" 972 | }, 973 | "time": "2020-09-26T10:30:38+00:00" 974 | }, 975 | { 976 | "name": "phar-io/manifest", 977 | "version": "2.0.1", 978 | "source": { 979 | "type": "git", 980 | "url": "https://github.com/phar-io/manifest.git", 981 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" 982 | }, 983 | "dist": { 984 | "type": "zip", 985 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", 986 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", 987 | "shasum": "" 988 | }, 989 | "require": { 990 | "ext-dom": "*", 991 | "ext-phar": "*", 992 | "ext-xmlwriter": "*", 993 | "phar-io/version": "^3.0.1", 994 | "php": "^7.2 || ^8.0" 995 | }, 996 | "type": "library", 997 | "extra": { 998 | "branch-alias": { 999 | "dev-master": "2.0.x-dev" 1000 | } 1001 | }, 1002 | "autoload": { 1003 | "classmap": [ 1004 | "src/" 1005 | ] 1006 | }, 1007 | "notification-url": "https://packagist.org/downloads/", 1008 | "license": [ 1009 | "BSD-3-Clause" 1010 | ], 1011 | "authors": [ 1012 | { 1013 | "name": "Arne Blankerts", 1014 | "email": "arne@blankerts.de", 1015 | "role": "Developer" 1016 | }, 1017 | { 1018 | "name": "Sebastian Heuer", 1019 | "email": "sebastian@phpeople.de", 1020 | "role": "Developer" 1021 | }, 1022 | { 1023 | "name": "Sebastian Bergmann", 1024 | "email": "sebastian@phpunit.de", 1025 | "role": "Developer" 1026 | } 1027 | ], 1028 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1029 | "support": { 1030 | "issues": "https://github.com/phar-io/manifest/issues", 1031 | "source": "https://github.com/phar-io/manifest/tree/master" 1032 | }, 1033 | "time": "2020-06-27T14:33:11+00:00" 1034 | }, 1035 | { 1036 | "name": "phar-io/version", 1037 | "version": "3.0.2", 1038 | "source": { 1039 | "type": "git", 1040 | "url": "https://github.com/phar-io/version.git", 1041 | "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0" 1042 | }, 1043 | "dist": { 1044 | "type": "zip", 1045 | "url": "https://api.github.com/repos/phar-io/version/zipball/c6bb6825def89e0a32220f88337f8ceaf1975fa0", 1046 | "reference": "c6bb6825def89e0a32220f88337f8ceaf1975fa0", 1047 | "shasum": "" 1048 | }, 1049 | "require": { 1050 | "php": "^7.2 || ^8.0" 1051 | }, 1052 | "type": "library", 1053 | "autoload": { 1054 | "classmap": [ 1055 | "src/" 1056 | ] 1057 | }, 1058 | "notification-url": "https://packagist.org/downloads/", 1059 | "license": [ 1060 | "BSD-3-Clause" 1061 | ], 1062 | "authors": [ 1063 | { 1064 | "name": "Arne Blankerts", 1065 | "email": "arne@blankerts.de", 1066 | "role": "Developer" 1067 | }, 1068 | { 1069 | "name": "Sebastian Heuer", 1070 | "email": "sebastian@phpeople.de", 1071 | "role": "Developer" 1072 | }, 1073 | { 1074 | "name": "Sebastian Bergmann", 1075 | "email": "sebastian@phpunit.de", 1076 | "role": "Developer" 1077 | } 1078 | ], 1079 | "description": "Library for handling version information and constraints", 1080 | "support": { 1081 | "issues": "https://github.com/phar-io/version/issues", 1082 | "source": "https://github.com/phar-io/version/tree/master" 1083 | }, 1084 | "time": "2020-06-27T14:39:04+00:00" 1085 | }, 1086 | { 1087 | "name": "php-cs-fixer/diff", 1088 | "version": "v1.3.1", 1089 | "source": { 1090 | "type": "git", 1091 | "url": "https://github.com/PHP-CS-Fixer/diff.git", 1092 | "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759" 1093 | }, 1094 | "dist": { 1095 | "type": "zip", 1096 | "url": "https://api.github.com/repos/PHP-CS-Fixer/diff/zipball/dbd31aeb251639ac0b9e7e29405c1441907f5759", 1097 | "reference": "dbd31aeb251639ac0b9e7e29405c1441907f5759", 1098 | "shasum": "" 1099 | }, 1100 | "require": { 1101 | "php": "^5.6 || ^7.0 || ^8.0" 1102 | }, 1103 | "require-dev": { 1104 | "phpunit/phpunit": "^5.7.23 || ^6.4.3 || ^7.0", 1105 | "symfony/process": "^3.3" 1106 | }, 1107 | "type": "library", 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 | "email": "sebastian@phpunit.de" 1121 | }, 1122 | { 1123 | "name": "Kore Nordmann", 1124 | "email": "mail@kore-nordmann.de" 1125 | }, 1126 | { 1127 | "name": "SpacePossum" 1128 | } 1129 | ], 1130 | "description": "sebastian/diff v2 backport support for PHP5.6", 1131 | "homepage": "https://github.com/PHP-CS-Fixer", 1132 | "keywords": [ 1133 | "diff" 1134 | ], 1135 | "support": { 1136 | "issues": "https://github.com/PHP-CS-Fixer/diff/issues", 1137 | "source": "https://github.com/PHP-CS-Fixer/diff/tree/v1.3.1" 1138 | }, 1139 | "time": "2020-10-14T08:39:05+00:00" 1140 | }, 1141 | { 1142 | "name": "phpdocumentor/reflection-common", 1143 | "version": "2.2.0", 1144 | "source": { 1145 | "type": "git", 1146 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1147 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 1148 | }, 1149 | "dist": { 1150 | "type": "zip", 1151 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1152 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 1153 | "shasum": "" 1154 | }, 1155 | "require": { 1156 | "php": "^7.2 || ^8.0" 1157 | }, 1158 | "type": "library", 1159 | "extra": { 1160 | "branch-alias": { 1161 | "dev-2.x": "2.x-dev" 1162 | } 1163 | }, 1164 | "autoload": { 1165 | "psr-4": { 1166 | "phpDocumentor\\Reflection\\": "src/" 1167 | } 1168 | }, 1169 | "notification-url": "https://packagist.org/downloads/", 1170 | "license": [ 1171 | "MIT" 1172 | ], 1173 | "authors": [ 1174 | { 1175 | "name": "Jaap van Otterdijk", 1176 | "email": "opensource@ijaap.nl" 1177 | } 1178 | ], 1179 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1180 | "homepage": "http://www.phpdoc.org", 1181 | "keywords": [ 1182 | "FQSEN", 1183 | "phpDocumentor", 1184 | "phpdoc", 1185 | "reflection", 1186 | "static analysis" 1187 | ], 1188 | "support": { 1189 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 1190 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" 1191 | }, 1192 | "time": "2020-06-27T09:03:43+00:00" 1193 | }, 1194 | { 1195 | "name": "phpdocumentor/reflection-docblock", 1196 | "version": "5.2.2", 1197 | "source": { 1198 | "type": "git", 1199 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1200 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" 1201 | }, 1202 | "dist": { 1203 | "type": "zip", 1204 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", 1205 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", 1206 | "shasum": "" 1207 | }, 1208 | "require": { 1209 | "ext-filter": "*", 1210 | "php": "^7.2 || ^8.0", 1211 | "phpdocumentor/reflection-common": "^2.2", 1212 | "phpdocumentor/type-resolver": "^1.3", 1213 | "webmozart/assert": "^1.9.1" 1214 | }, 1215 | "require-dev": { 1216 | "mockery/mockery": "~1.3.2" 1217 | }, 1218 | "type": "library", 1219 | "extra": { 1220 | "branch-alias": { 1221 | "dev-master": "5.x-dev" 1222 | } 1223 | }, 1224 | "autoload": { 1225 | "psr-4": { 1226 | "phpDocumentor\\Reflection\\": "src" 1227 | } 1228 | }, 1229 | "notification-url": "https://packagist.org/downloads/", 1230 | "license": [ 1231 | "MIT" 1232 | ], 1233 | "authors": [ 1234 | { 1235 | "name": "Mike van Riel", 1236 | "email": "me@mikevanriel.com" 1237 | }, 1238 | { 1239 | "name": "Jaap van Otterdijk", 1240 | "email": "account@ijaap.nl" 1241 | } 1242 | ], 1243 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1244 | "support": { 1245 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 1246 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" 1247 | }, 1248 | "time": "2020-09-03T19:13:55+00:00" 1249 | }, 1250 | { 1251 | "name": "phpdocumentor/type-resolver", 1252 | "version": "1.4.0", 1253 | "source": { 1254 | "type": "git", 1255 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1256 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" 1257 | }, 1258 | "dist": { 1259 | "type": "zip", 1260 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", 1261 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", 1262 | "shasum": "" 1263 | }, 1264 | "require": { 1265 | "php": "^7.2 || ^8.0", 1266 | "phpdocumentor/reflection-common": "^2.0" 1267 | }, 1268 | "require-dev": { 1269 | "ext-tokenizer": "*" 1270 | }, 1271 | "type": "library", 1272 | "extra": { 1273 | "branch-alias": { 1274 | "dev-1.x": "1.x-dev" 1275 | } 1276 | }, 1277 | "autoload": { 1278 | "psr-4": { 1279 | "phpDocumentor\\Reflection\\": "src" 1280 | } 1281 | }, 1282 | "notification-url": "https://packagist.org/downloads/", 1283 | "license": [ 1284 | "MIT" 1285 | ], 1286 | "authors": [ 1287 | { 1288 | "name": "Mike van Riel", 1289 | "email": "me@mikevanriel.com" 1290 | } 1291 | ], 1292 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 1293 | "support": { 1294 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 1295 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.4.0" 1296 | }, 1297 | "time": "2020-09-17T18:55:26+00:00" 1298 | }, 1299 | { 1300 | "name": "phpspec/prophecy", 1301 | "version": "1.12.1", 1302 | "source": { 1303 | "type": "git", 1304 | "url": "https://github.com/phpspec/prophecy.git", 1305 | "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d" 1306 | }, 1307 | "dist": { 1308 | "type": "zip", 1309 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8ce87516be71aae9b956f81906aaf0338e0d8a2d", 1310 | "reference": "8ce87516be71aae9b956f81906aaf0338e0d8a2d", 1311 | "shasum": "" 1312 | }, 1313 | "require": { 1314 | "doctrine/instantiator": "^1.2", 1315 | "php": "^7.2 || ~8.0, <8.1", 1316 | "phpdocumentor/reflection-docblock": "^5.2", 1317 | "sebastian/comparator": "^3.0 || ^4.0", 1318 | "sebastian/recursion-context": "^3.0 || ^4.0" 1319 | }, 1320 | "require-dev": { 1321 | "phpspec/phpspec": "^6.0", 1322 | "phpunit/phpunit": "^8.0 || ^9.0 <9.3" 1323 | }, 1324 | "type": "library", 1325 | "extra": { 1326 | "branch-alias": { 1327 | "dev-master": "1.11.x-dev" 1328 | } 1329 | }, 1330 | "autoload": { 1331 | "psr-4": { 1332 | "Prophecy\\": "src/Prophecy" 1333 | } 1334 | }, 1335 | "notification-url": "https://packagist.org/downloads/", 1336 | "license": [ 1337 | "MIT" 1338 | ], 1339 | "authors": [ 1340 | { 1341 | "name": "Konstantin Kudryashov", 1342 | "email": "ever.zet@gmail.com", 1343 | "homepage": "http://everzet.com" 1344 | }, 1345 | { 1346 | "name": "Marcello Duarte", 1347 | "email": "marcello.duarte@gmail.com" 1348 | } 1349 | ], 1350 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1351 | "homepage": "https://github.com/phpspec/prophecy", 1352 | "keywords": [ 1353 | "Double", 1354 | "Dummy", 1355 | "fake", 1356 | "mock", 1357 | "spy", 1358 | "stub" 1359 | ], 1360 | "support": { 1361 | "issues": "https://github.com/phpspec/prophecy/issues", 1362 | "source": "https://github.com/phpspec/prophecy/tree/1.12.1" 1363 | }, 1364 | "time": "2020-09-29T09:10:42+00:00" 1365 | }, 1366 | { 1367 | "name": "phpstan/phpstan", 1368 | "version": "0.12.57", 1369 | "source": { 1370 | "type": "git", 1371 | "url": "https://github.com/phpstan/phpstan.git", 1372 | "reference": "f9909d1d0c44b4cbaf72babcf80e8f14d6fdd55b" 1373 | }, 1374 | "dist": { 1375 | "type": "zip", 1376 | "url": "https://api.github.com/repos/phpstan/phpstan/zipball/f9909d1d0c44b4cbaf72babcf80e8f14d6fdd55b", 1377 | "reference": "f9909d1d0c44b4cbaf72babcf80e8f14d6fdd55b", 1378 | "shasum": "" 1379 | }, 1380 | "require": { 1381 | "php": "^7.1|^8.0" 1382 | }, 1383 | "conflict": { 1384 | "phpstan/phpstan-shim": "*" 1385 | }, 1386 | "bin": [ 1387 | "phpstan", 1388 | "phpstan.phar" 1389 | ], 1390 | "type": "library", 1391 | "extra": { 1392 | "branch-alias": { 1393 | "dev-master": "0.12-dev" 1394 | } 1395 | }, 1396 | "autoload": { 1397 | "files": [ 1398 | "bootstrap.php" 1399 | ] 1400 | }, 1401 | "notification-url": "https://packagist.org/downloads/", 1402 | "license": [ 1403 | "MIT" 1404 | ], 1405 | "description": "PHPStan - PHP Static Analysis Tool", 1406 | "support": { 1407 | "issues": "https://github.com/phpstan/phpstan/issues", 1408 | "source": "https://github.com/phpstan/phpstan/tree/0.12.57" 1409 | }, 1410 | "funding": [ 1411 | { 1412 | "url": "https://github.com/ondrejmirtes", 1413 | "type": "github" 1414 | }, 1415 | { 1416 | "url": "https://www.patreon.com/phpstan", 1417 | "type": "patreon" 1418 | }, 1419 | { 1420 | "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", 1421 | "type": "tidelift" 1422 | } 1423 | ], 1424 | "time": "2020-11-21T12:53:28+00:00" 1425 | }, 1426 | { 1427 | "name": "phpunit/php-code-coverage", 1428 | "version": "9.2.5", 1429 | "source": { 1430 | "type": "git", 1431 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1432 | "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" 1433 | }, 1434 | "dist": { 1435 | "type": "zip", 1436 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", 1437 | "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", 1438 | "shasum": "" 1439 | }, 1440 | "require": { 1441 | "ext-dom": "*", 1442 | "ext-libxml": "*", 1443 | "ext-xmlwriter": "*", 1444 | "nikic/php-parser": "^4.10.2", 1445 | "php": ">=7.3", 1446 | "phpunit/php-file-iterator": "^3.0.3", 1447 | "phpunit/php-text-template": "^2.0.2", 1448 | "sebastian/code-unit-reverse-lookup": "^2.0.2", 1449 | "sebastian/complexity": "^2.0", 1450 | "sebastian/environment": "^5.1.2", 1451 | "sebastian/lines-of-code": "^1.0.3", 1452 | "sebastian/version": "^3.0.1", 1453 | "theseer/tokenizer": "^1.2.0" 1454 | }, 1455 | "require-dev": { 1456 | "phpunit/phpunit": "^9.3" 1457 | }, 1458 | "suggest": { 1459 | "ext-pcov": "*", 1460 | "ext-xdebug": "*" 1461 | }, 1462 | "type": "library", 1463 | "extra": { 1464 | "branch-alias": { 1465 | "dev-master": "9.2-dev" 1466 | } 1467 | }, 1468 | "autoload": { 1469 | "classmap": [ 1470 | "src/" 1471 | ] 1472 | }, 1473 | "notification-url": "https://packagist.org/downloads/", 1474 | "license": [ 1475 | "BSD-3-Clause" 1476 | ], 1477 | "authors": [ 1478 | { 1479 | "name": "Sebastian Bergmann", 1480 | "email": "sebastian@phpunit.de", 1481 | "role": "lead" 1482 | } 1483 | ], 1484 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1485 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1486 | "keywords": [ 1487 | "coverage", 1488 | "testing", 1489 | "xunit" 1490 | ], 1491 | "support": { 1492 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1493 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.5" 1494 | }, 1495 | "funding": [ 1496 | { 1497 | "url": "https://github.com/sebastianbergmann", 1498 | "type": "github" 1499 | } 1500 | ], 1501 | "time": "2020-11-28T06:44:49+00:00" 1502 | }, 1503 | { 1504 | "name": "phpunit/php-file-iterator", 1505 | "version": "3.0.5", 1506 | "source": { 1507 | "type": "git", 1508 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1509 | "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" 1510 | }, 1511 | "dist": { 1512 | "type": "zip", 1513 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", 1514 | "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", 1515 | "shasum": "" 1516 | }, 1517 | "require": { 1518 | "php": ">=7.3" 1519 | }, 1520 | "require-dev": { 1521 | "phpunit/phpunit": "^9.3" 1522 | }, 1523 | "type": "library", 1524 | "extra": { 1525 | "branch-alias": { 1526 | "dev-master": "3.0-dev" 1527 | } 1528 | }, 1529 | "autoload": { 1530 | "classmap": [ 1531 | "src/" 1532 | ] 1533 | }, 1534 | "notification-url": "https://packagist.org/downloads/", 1535 | "license": [ 1536 | "BSD-3-Clause" 1537 | ], 1538 | "authors": [ 1539 | { 1540 | "name": "Sebastian Bergmann", 1541 | "email": "sebastian@phpunit.de", 1542 | "role": "lead" 1543 | } 1544 | ], 1545 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1546 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1547 | "keywords": [ 1548 | "filesystem", 1549 | "iterator" 1550 | ], 1551 | "support": { 1552 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1553 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.5" 1554 | }, 1555 | "funding": [ 1556 | { 1557 | "url": "https://github.com/sebastianbergmann", 1558 | "type": "github" 1559 | } 1560 | ], 1561 | "time": "2020-09-28T05:57:25+00:00" 1562 | }, 1563 | { 1564 | "name": "phpunit/php-invoker", 1565 | "version": "3.1.1", 1566 | "source": { 1567 | "type": "git", 1568 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 1569 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" 1570 | }, 1571 | "dist": { 1572 | "type": "zip", 1573 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1574 | "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", 1575 | "shasum": "" 1576 | }, 1577 | "require": { 1578 | "php": ">=7.3" 1579 | }, 1580 | "require-dev": { 1581 | "ext-pcntl": "*", 1582 | "phpunit/phpunit": "^9.3" 1583 | }, 1584 | "suggest": { 1585 | "ext-pcntl": "*" 1586 | }, 1587 | "type": "library", 1588 | "extra": { 1589 | "branch-alias": { 1590 | "dev-master": "3.1-dev" 1591 | } 1592 | }, 1593 | "autoload": { 1594 | "classmap": [ 1595 | "src/" 1596 | ] 1597 | }, 1598 | "notification-url": "https://packagist.org/downloads/", 1599 | "license": [ 1600 | "BSD-3-Clause" 1601 | ], 1602 | "authors": [ 1603 | { 1604 | "name": "Sebastian Bergmann", 1605 | "email": "sebastian@phpunit.de", 1606 | "role": "lead" 1607 | } 1608 | ], 1609 | "description": "Invoke callables with a timeout", 1610 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1611 | "keywords": [ 1612 | "process" 1613 | ], 1614 | "support": { 1615 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1616 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" 1617 | }, 1618 | "funding": [ 1619 | { 1620 | "url": "https://github.com/sebastianbergmann", 1621 | "type": "github" 1622 | } 1623 | ], 1624 | "time": "2020-09-28T05:58:55+00:00" 1625 | }, 1626 | { 1627 | "name": "phpunit/php-text-template", 1628 | "version": "2.0.4", 1629 | "source": { 1630 | "type": "git", 1631 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1632 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" 1633 | }, 1634 | "dist": { 1635 | "type": "zip", 1636 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1637 | "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", 1638 | "shasum": "" 1639 | }, 1640 | "require": { 1641 | "php": ">=7.3" 1642 | }, 1643 | "require-dev": { 1644 | "phpunit/phpunit": "^9.3" 1645 | }, 1646 | "type": "library", 1647 | "extra": { 1648 | "branch-alias": { 1649 | "dev-master": "2.0-dev" 1650 | } 1651 | }, 1652 | "autoload": { 1653 | "classmap": [ 1654 | "src/" 1655 | ] 1656 | }, 1657 | "notification-url": "https://packagist.org/downloads/", 1658 | "license": [ 1659 | "BSD-3-Clause" 1660 | ], 1661 | "authors": [ 1662 | { 1663 | "name": "Sebastian Bergmann", 1664 | "email": "sebastian@phpunit.de", 1665 | "role": "lead" 1666 | } 1667 | ], 1668 | "description": "Simple template engine.", 1669 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1670 | "keywords": [ 1671 | "template" 1672 | ], 1673 | "support": { 1674 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1675 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" 1676 | }, 1677 | "funding": [ 1678 | { 1679 | "url": "https://github.com/sebastianbergmann", 1680 | "type": "github" 1681 | } 1682 | ], 1683 | "time": "2020-10-26T05:33:50+00:00" 1684 | }, 1685 | { 1686 | "name": "phpunit/php-timer", 1687 | "version": "5.0.3", 1688 | "source": { 1689 | "type": "git", 1690 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1691 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" 1692 | }, 1693 | "dist": { 1694 | "type": "zip", 1695 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1696 | "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", 1697 | "shasum": "" 1698 | }, 1699 | "require": { 1700 | "php": ">=7.3" 1701 | }, 1702 | "require-dev": { 1703 | "phpunit/phpunit": "^9.3" 1704 | }, 1705 | "type": "library", 1706 | "extra": { 1707 | "branch-alias": { 1708 | "dev-master": "5.0-dev" 1709 | } 1710 | }, 1711 | "autoload": { 1712 | "classmap": [ 1713 | "src/" 1714 | ] 1715 | }, 1716 | "notification-url": "https://packagist.org/downloads/", 1717 | "license": [ 1718 | "BSD-3-Clause" 1719 | ], 1720 | "authors": [ 1721 | { 1722 | "name": "Sebastian Bergmann", 1723 | "email": "sebastian@phpunit.de", 1724 | "role": "lead" 1725 | } 1726 | ], 1727 | "description": "Utility class for timing", 1728 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1729 | "keywords": [ 1730 | "timer" 1731 | ], 1732 | "support": { 1733 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1734 | "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" 1735 | }, 1736 | "funding": [ 1737 | { 1738 | "url": "https://github.com/sebastianbergmann", 1739 | "type": "github" 1740 | } 1741 | ], 1742 | "time": "2020-10-26T13:16:10+00:00" 1743 | }, 1744 | { 1745 | "name": "phpunit/phpunit", 1746 | "version": "9.4.3", 1747 | "source": { 1748 | "type": "git", 1749 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1750 | "reference": "9fa359ff5ddaa5eb2be2bedb08a6a5787a5807ab" 1751 | }, 1752 | "dist": { 1753 | "type": "zip", 1754 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9fa359ff5ddaa5eb2be2bedb08a6a5787a5807ab", 1755 | "reference": "9fa359ff5ddaa5eb2be2bedb08a6a5787a5807ab", 1756 | "shasum": "" 1757 | }, 1758 | "require": { 1759 | "doctrine/instantiator": "^1.3.1", 1760 | "ext-dom": "*", 1761 | "ext-json": "*", 1762 | "ext-libxml": "*", 1763 | "ext-mbstring": "*", 1764 | "ext-xml": "*", 1765 | "ext-xmlwriter": "*", 1766 | "myclabs/deep-copy": "^1.10.1", 1767 | "phar-io/manifest": "^2.0.1", 1768 | "phar-io/version": "^3.0.2", 1769 | "php": ">=7.3", 1770 | "phpspec/prophecy": "^1.12.1", 1771 | "phpunit/php-code-coverage": "^9.2", 1772 | "phpunit/php-file-iterator": "^3.0.5", 1773 | "phpunit/php-invoker": "^3.1.1", 1774 | "phpunit/php-text-template": "^2.0.3", 1775 | "phpunit/php-timer": "^5.0.2", 1776 | "sebastian/cli-parser": "^1.0.1", 1777 | "sebastian/code-unit": "^1.0.6", 1778 | "sebastian/comparator": "^4.0.5", 1779 | "sebastian/diff": "^4.0.3", 1780 | "sebastian/environment": "^5.1.3", 1781 | "sebastian/exporter": "^4.0.3", 1782 | "sebastian/global-state": "^5.0.1", 1783 | "sebastian/object-enumerator": "^4.0.3", 1784 | "sebastian/resource-operations": "^3.0.3", 1785 | "sebastian/type": "^2.3", 1786 | "sebastian/version": "^3.0.2" 1787 | }, 1788 | "require-dev": { 1789 | "ext-pdo": "*", 1790 | "phpspec/prophecy-phpunit": "^2.0.1" 1791 | }, 1792 | "suggest": { 1793 | "ext-soap": "*", 1794 | "ext-xdebug": "*" 1795 | }, 1796 | "bin": [ 1797 | "phpunit" 1798 | ], 1799 | "type": "library", 1800 | "extra": { 1801 | "branch-alias": { 1802 | "dev-master": "9.4-dev" 1803 | } 1804 | }, 1805 | "autoload": { 1806 | "classmap": [ 1807 | "src/" 1808 | ], 1809 | "files": [ 1810 | "src/Framework/Assert/Functions.php" 1811 | ] 1812 | }, 1813 | "notification-url": "https://packagist.org/downloads/", 1814 | "license": [ 1815 | "BSD-3-Clause" 1816 | ], 1817 | "authors": [ 1818 | { 1819 | "name": "Sebastian Bergmann", 1820 | "email": "sebastian@phpunit.de", 1821 | "role": "lead" 1822 | } 1823 | ], 1824 | "description": "The PHP Unit Testing framework.", 1825 | "homepage": "https://phpunit.de/", 1826 | "keywords": [ 1827 | "phpunit", 1828 | "testing", 1829 | "xunit" 1830 | ], 1831 | "support": { 1832 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1833 | "source": "https://github.com/sebastianbergmann/phpunit/tree/9.4.3" 1834 | }, 1835 | "funding": [ 1836 | { 1837 | "url": "https://phpunit.de/donate.html", 1838 | "type": "custom" 1839 | }, 1840 | { 1841 | "url": "https://github.com/sebastianbergmann", 1842 | "type": "github" 1843 | } 1844 | ], 1845 | "time": "2020-11-10T12:53:30+00:00" 1846 | }, 1847 | { 1848 | "name": "psr/container", 1849 | "version": "1.0.0", 1850 | "source": { 1851 | "type": "git", 1852 | "url": "https://github.com/php-fig/container.git", 1853 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1854 | }, 1855 | "dist": { 1856 | "type": "zip", 1857 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1858 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1859 | "shasum": "" 1860 | }, 1861 | "require": { 1862 | "php": ">=5.3.0" 1863 | }, 1864 | "type": "library", 1865 | "extra": { 1866 | "branch-alias": { 1867 | "dev-master": "1.0.x-dev" 1868 | } 1869 | }, 1870 | "autoload": { 1871 | "psr-4": { 1872 | "Psr\\Container\\": "src/" 1873 | } 1874 | }, 1875 | "notification-url": "https://packagist.org/downloads/", 1876 | "license": [ 1877 | "MIT" 1878 | ], 1879 | "authors": [ 1880 | { 1881 | "name": "PHP-FIG", 1882 | "homepage": "http://www.php-fig.org/" 1883 | } 1884 | ], 1885 | "description": "Common Container Interface (PHP FIG PSR-11)", 1886 | "homepage": "https://github.com/php-fig/container", 1887 | "keywords": [ 1888 | "PSR-11", 1889 | "container", 1890 | "container-interface", 1891 | "container-interop", 1892 | "psr" 1893 | ], 1894 | "support": { 1895 | "issues": "https://github.com/php-fig/container/issues", 1896 | "source": "https://github.com/php-fig/container/tree/master" 1897 | }, 1898 | "time": "2017-02-14T16:28:37+00:00" 1899 | }, 1900 | { 1901 | "name": "psr/event-dispatcher", 1902 | "version": "1.0.0", 1903 | "source": { 1904 | "type": "git", 1905 | "url": "https://github.com/php-fig/event-dispatcher.git", 1906 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" 1907 | }, 1908 | "dist": { 1909 | "type": "zip", 1910 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", 1911 | "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", 1912 | "shasum": "" 1913 | }, 1914 | "require": { 1915 | "php": ">=7.2.0" 1916 | }, 1917 | "type": "library", 1918 | "extra": { 1919 | "branch-alias": { 1920 | "dev-master": "1.0.x-dev" 1921 | } 1922 | }, 1923 | "autoload": { 1924 | "psr-4": { 1925 | "Psr\\EventDispatcher\\": "src/" 1926 | } 1927 | }, 1928 | "notification-url": "https://packagist.org/downloads/", 1929 | "license": [ 1930 | "MIT" 1931 | ], 1932 | "authors": [ 1933 | { 1934 | "name": "PHP-FIG", 1935 | "homepage": "http://www.php-fig.org/" 1936 | } 1937 | ], 1938 | "description": "Standard interfaces for event handling.", 1939 | "keywords": [ 1940 | "events", 1941 | "psr", 1942 | "psr-14" 1943 | ], 1944 | "support": { 1945 | "issues": "https://github.com/php-fig/event-dispatcher/issues", 1946 | "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" 1947 | }, 1948 | "time": "2019-01-08T18:20:26+00:00" 1949 | }, 1950 | { 1951 | "name": "psr/log", 1952 | "version": "1.1.3", 1953 | "source": { 1954 | "type": "git", 1955 | "url": "https://github.com/php-fig/log.git", 1956 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" 1957 | }, 1958 | "dist": { 1959 | "type": "zip", 1960 | "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", 1961 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", 1962 | "shasum": "" 1963 | }, 1964 | "require": { 1965 | "php": ">=5.3.0" 1966 | }, 1967 | "type": "library", 1968 | "extra": { 1969 | "branch-alias": { 1970 | "dev-master": "1.1.x-dev" 1971 | } 1972 | }, 1973 | "autoload": { 1974 | "psr-4": { 1975 | "Psr\\Log\\": "Psr/Log/" 1976 | } 1977 | }, 1978 | "notification-url": "https://packagist.org/downloads/", 1979 | "license": [ 1980 | "MIT" 1981 | ], 1982 | "authors": [ 1983 | { 1984 | "name": "PHP-FIG", 1985 | "homepage": "http://www.php-fig.org/" 1986 | } 1987 | ], 1988 | "description": "Common interface for logging libraries", 1989 | "homepage": "https://github.com/php-fig/log", 1990 | "keywords": [ 1991 | "log", 1992 | "psr", 1993 | "psr-3" 1994 | ], 1995 | "support": { 1996 | "source": "https://github.com/php-fig/log/tree/1.1.3" 1997 | }, 1998 | "time": "2020-03-23T09:12:05+00:00" 1999 | }, 2000 | { 2001 | "name": "sebastian/cli-parser", 2002 | "version": "1.0.1", 2003 | "source": { 2004 | "type": "git", 2005 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 2006 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" 2007 | }, 2008 | "dist": { 2009 | "type": "zip", 2010 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", 2011 | "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", 2012 | "shasum": "" 2013 | }, 2014 | "require": { 2015 | "php": ">=7.3" 2016 | }, 2017 | "require-dev": { 2018 | "phpunit/phpunit": "^9.3" 2019 | }, 2020 | "type": "library", 2021 | "extra": { 2022 | "branch-alias": { 2023 | "dev-master": "1.0-dev" 2024 | } 2025 | }, 2026 | "autoload": { 2027 | "classmap": [ 2028 | "src/" 2029 | ] 2030 | }, 2031 | "notification-url": "https://packagist.org/downloads/", 2032 | "license": [ 2033 | "BSD-3-Clause" 2034 | ], 2035 | "authors": [ 2036 | { 2037 | "name": "Sebastian Bergmann", 2038 | "email": "sebastian@phpunit.de", 2039 | "role": "lead" 2040 | } 2041 | ], 2042 | "description": "Library for parsing CLI options", 2043 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 2044 | "support": { 2045 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 2046 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" 2047 | }, 2048 | "funding": [ 2049 | { 2050 | "url": "https://github.com/sebastianbergmann", 2051 | "type": "github" 2052 | } 2053 | ], 2054 | "time": "2020-09-28T06:08:49+00:00" 2055 | }, 2056 | { 2057 | "name": "sebastian/code-unit", 2058 | "version": "1.0.8", 2059 | "source": { 2060 | "type": "git", 2061 | "url": "https://github.com/sebastianbergmann/code-unit.git", 2062 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" 2063 | }, 2064 | "dist": { 2065 | "type": "zip", 2066 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", 2067 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", 2068 | "shasum": "" 2069 | }, 2070 | "require": { 2071 | "php": ">=7.3" 2072 | }, 2073 | "require-dev": { 2074 | "phpunit/phpunit": "^9.3" 2075 | }, 2076 | "type": "library", 2077 | "extra": { 2078 | "branch-alias": { 2079 | "dev-master": "1.0-dev" 2080 | } 2081 | }, 2082 | "autoload": { 2083 | "classmap": [ 2084 | "src/" 2085 | ] 2086 | }, 2087 | "notification-url": "https://packagist.org/downloads/", 2088 | "license": [ 2089 | "BSD-3-Clause" 2090 | ], 2091 | "authors": [ 2092 | { 2093 | "name": "Sebastian Bergmann", 2094 | "email": "sebastian@phpunit.de", 2095 | "role": "lead" 2096 | } 2097 | ], 2098 | "description": "Collection of value objects that represent the PHP code units", 2099 | "homepage": "https://github.com/sebastianbergmann/code-unit", 2100 | "support": { 2101 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 2102 | "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" 2103 | }, 2104 | "funding": [ 2105 | { 2106 | "url": "https://github.com/sebastianbergmann", 2107 | "type": "github" 2108 | } 2109 | ], 2110 | "time": "2020-10-26T13:08:54+00:00" 2111 | }, 2112 | { 2113 | "name": "sebastian/code-unit-reverse-lookup", 2114 | "version": "2.0.3", 2115 | "source": { 2116 | "type": "git", 2117 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 2118 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" 2119 | }, 2120 | "dist": { 2121 | "type": "zip", 2122 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 2123 | "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", 2124 | "shasum": "" 2125 | }, 2126 | "require": { 2127 | "php": ">=7.3" 2128 | }, 2129 | "require-dev": { 2130 | "phpunit/phpunit": "^9.3" 2131 | }, 2132 | "type": "library", 2133 | "extra": { 2134 | "branch-alias": { 2135 | "dev-master": "2.0-dev" 2136 | } 2137 | }, 2138 | "autoload": { 2139 | "classmap": [ 2140 | "src/" 2141 | ] 2142 | }, 2143 | "notification-url": "https://packagist.org/downloads/", 2144 | "license": [ 2145 | "BSD-3-Clause" 2146 | ], 2147 | "authors": [ 2148 | { 2149 | "name": "Sebastian Bergmann", 2150 | "email": "sebastian@phpunit.de" 2151 | } 2152 | ], 2153 | "description": "Looks up which function or method a line of code belongs to", 2154 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 2155 | "support": { 2156 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 2157 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" 2158 | }, 2159 | "funding": [ 2160 | { 2161 | "url": "https://github.com/sebastianbergmann", 2162 | "type": "github" 2163 | } 2164 | ], 2165 | "time": "2020-09-28T05:30:19+00:00" 2166 | }, 2167 | { 2168 | "name": "sebastian/comparator", 2169 | "version": "4.0.6", 2170 | "source": { 2171 | "type": "git", 2172 | "url": "https://github.com/sebastianbergmann/comparator.git", 2173 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382" 2174 | }, 2175 | "dist": { 2176 | "type": "zip", 2177 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", 2178 | "reference": "55f4261989e546dc112258c7a75935a81a7ce382", 2179 | "shasum": "" 2180 | }, 2181 | "require": { 2182 | "php": ">=7.3", 2183 | "sebastian/diff": "^4.0", 2184 | "sebastian/exporter": "^4.0" 2185 | }, 2186 | "require-dev": { 2187 | "phpunit/phpunit": "^9.3" 2188 | }, 2189 | "type": "library", 2190 | "extra": { 2191 | "branch-alias": { 2192 | "dev-master": "4.0-dev" 2193 | } 2194 | }, 2195 | "autoload": { 2196 | "classmap": [ 2197 | "src/" 2198 | ] 2199 | }, 2200 | "notification-url": "https://packagist.org/downloads/", 2201 | "license": [ 2202 | "BSD-3-Clause" 2203 | ], 2204 | "authors": [ 2205 | { 2206 | "name": "Sebastian Bergmann", 2207 | "email": "sebastian@phpunit.de" 2208 | }, 2209 | { 2210 | "name": "Jeff Welch", 2211 | "email": "whatthejeff@gmail.com" 2212 | }, 2213 | { 2214 | "name": "Volker Dusch", 2215 | "email": "github@wallbash.com" 2216 | }, 2217 | { 2218 | "name": "Bernhard Schussek", 2219 | "email": "bschussek@2bepublished.at" 2220 | } 2221 | ], 2222 | "description": "Provides the functionality to compare PHP values for equality", 2223 | "homepage": "https://github.com/sebastianbergmann/comparator", 2224 | "keywords": [ 2225 | "comparator", 2226 | "compare", 2227 | "equality" 2228 | ], 2229 | "support": { 2230 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 2231 | "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" 2232 | }, 2233 | "funding": [ 2234 | { 2235 | "url": "https://github.com/sebastianbergmann", 2236 | "type": "github" 2237 | } 2238 | ], 2239 | "time": "2020-10-26T15:49:45+00:00" 2240 | }, 2241 | { 2242 | "name": "sebastian/complexity", 2243 | "version": "2.0.2", 2244 | "source": { 2245 | "type": "git", 2246 | "url": "https://github.com/sebastianbergmann/complexity.git", 2247 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" 2248 | }, 2249 | "dist": { 2250 | "type": "zip", 2251 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", 2252 | "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", 2253 | "shasum": "" 2254 | }, 2255 | "require": { 2256 | "nikic/php-parser": "^4.7", 2257 | "php": ">=7.3" 2258 | }, 2259 | "require-dev": { 2260 | "phpunit/phpunit": "^9.3" 2261 | }, 2262 | "type": "library", 2263 | "extra": { 2264 | "branch-alias": { 2265 | "dev-master": "2.0-dev" 2266 | } 2267 | }, 2268 | "autoload": { 2269 | "classmap": [ 2270 | "src/" 2271 | ] 2272 | }, 2273 | "notification-url": "https://packagist.org/downloads/", 2274 | "license": [ 2275 | "BSD-3-Clause" 2276 | ], 2277 | "authors": [ 2278 | { 2279 | "name": "Sebastian Bergmann", 2280 | "email": "sebastian@phpunit.de", 2281 | "role": "lead" 2282 | } 2283 | ], 2284 | "description": "Library for calculating the complexity of PHP code units", 2285 | "homepage": "https://github.com/sebastianbergmann/complexity", 2286 | "support": { 2287 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 2288 | "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" 2289 | }, 2290 | "funding": [ 2291 | { 2292 | "url": "https://github.com/sebastianbergmann", 2293 | "type": "github" 2294 | } 2295 | ], 2296 | "time": "2020-10-26T15:52:27+00:00" 2297 | }, 2298 | { 2299 | "name": "sebastian/diff", 2300 | "version": "4.0.4", 2301 | "source": { 2302 | "type": "git", 2303 | "url": "https://github.com/sebastianbergmann/diff.git", 2304 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" 2305 | }, 2306 | "dist": { 2307 | "type": "zip", 2308 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", 2309 | "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", 2310 | "shasum": "" 2311 | }, 2312 | "require": { 2313 | "php": ">=7.3" 2314 | }, 2315 | "require-dev": { 2316 | "phpunit/phpunit": "^9.3", 2317 | "symfony/process": "^4.2 || ^5" 2318 | }, 2319 | "type": "library", 2320 | "extra": { 2321 | "branch-alias": { 2322 | "dev-master": "4.0-dev" 2323 | } 2324 | }, 2325 | "autoload": { 2326 | "classmap": [ 2327 | "src/" 2328 | ] 2329 | }, 2330 | "notification-url": "https://packagist.org/downloads/", 2331 | "license": [ 2332 | "BSD-3-Clause" 2333 | ], 2334 | "authors": [ 2335 | { 2336 | "name": "Sebastian Bergmann", 2337 | "email": "sebastian@phpunit.de" 2338 | }, 2339 | { 2340 | "name": "Kore Nordmann", 2341 | "email": "mail@kore-nordmann.de" 2342 | } 2343 | ], 2344 | "description": "Diff implementation", 2345 | "homepage": "https://github.com/sebastianbergmann/diff", 2346 | "keywords": [ 2347 | "diff", 2348 | "udiff", 2349 | "unidiff", 2350 | "unified diff" 2351 | ], 2352 | "support": { 2353 | "issues": "https://github.com/sebastianbergmann/diff/issues", 2354 | "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" 2355 | }, 2356 | "funding": [ 2357 | { 2358 | "url": "https://github.com/sebastianbergmann", 2359 | "type": "github" 2360 | } 2361 | ], 2362 | "time": "2020-10-26T13:10:38+00:00" 2363 | }, 2364 | { 2365 | "name": "sebastian/environment", 2366 | "version": "5.1.3", 2367 | "source": { 2368 | "type": "git", 2369 | "url": "https://github.com/sebastianbergmann/environment.git", 2370 | "reference": "388b6ced16caa751030f6a69e588299fa09200ac" 2371 | }, 2372 | "dist": { 2373 | "type": "zip", 2374 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", 2375 | "reference": "388b6ced16caa751030f6a69e588299fa09200ac", 2376 | "shasum": "" 2377 | }, 2378 | "require": { 2379 | "php": ">=7.3" 2380 | }, 2381 | "require-dev": { 2382 | "phpunit/phpunit": "^9.3" 2383 | }, 2384 | "suggest": { 2385 | "ext-posix": "*" 2386 | }, 2387 | "type": "library", 2388 | "extra": { 2389 | "branch-alias": { 2390 | "dev-master": "5.1-dev" 2391 | } 2392 | }, 2393 | "autoload": { 2394 | "classmap": [ 2395 | "src/" 2396 | ] 2397 | }, 2398 | "notification-url": "https://packagist.org/downloads/", 2399 | "license": [ 2400 | "BSD-3-Clause" 2401 | ], 2402 | "authors": [ 2403 | { 2404 | "name": "Sebastian Bergmann", 2405 | "email": "sebastian@phpunit.de" 2406 | } 2407 | ], 2408 | "description": "Provides functionality to handle HHVM/PHP environments", 2409 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2410 | "keywords": [ 2411 | "Xdebug", 2412 | "environment", 2413 | "hhvm" 2414 | ], 2415 | "support": { 2416 | "issues": "https://github.com/sebastianbergmann/environment/issues", 2417 | "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" 2418 | }, 2419 | "funding": [ 2420 | { 2421 | "url": "https://github.com/sebastianbergmann", 2422 | "type": "github" 2423 | } 2424 | ], 2425 | "time": "2020-09-28T05:52:38+00:00" 2426 | }, 2427 | { 2428 | "name": "sebastian/exporter", 2429 | "version": "4.0.3", 2430 | "source": { 2431 | "type": "git", 2432 | "url": "https://github.com/sebastianbergmann/exporter.git", 2433 | "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" 2434 | }, 2435 | "dist": { 2436 | "type": "zip", 2437 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", 2438 | "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", 2439 | "shasum": "" 2440 | }, 2441 | "require": { 2442 | "php": ">=7.3", 2443 | "sebastian/recursion-context": "^4.0" 2444 | }, 2445 | "require-dev": { 2446 | "ext-mbstring": "*", 2447 | "phpunit/phpunit": "^9.3" 2448 | }, 2449 | "type": "library", 2450 | "extra": { 2451 | "branch-alias": { 2452 | "dev-master": "4.0-dev" 2453 | } 2454 | }, 2455 | "autoload": { 2456 | "classmap": [ 2457 | "src/" 2458 | ] 2459 | }, 2460 | "notification-url": "https://packagist.org/downloads/", 2461 | "license": [ 2462 | "BSD-3-Clause" 2463 | ], 2464 | "authors": [ 2465 | { 2466 | "name": "Sebastian Bergmann", 2467 | "email": "sebastian@phpunit.de" 2468 | }, 2469 | { 2470 | "name": "Jeff Welch", 2471 | "email": "whatthejeff@gmail.com" 2472 | }, 2473 | { 2474 | "name": "Volker Dusch", 2475 | "email": "github@wallbash.com" 2476 | }, 2477 | { 2478 | "name": "Adam Harvey", 2479 | "email": "aharvey@php.net" 2480 | }, 2481 | { 2482 | "name": "Bernhard Schussek", 2483 | "email": "bschussek@gmail.com" 2484 | } 2485 | ], 2486 | "description": "Provides the functionality to export PHP variables for visualization", 2487 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2488 | "keywords": [ 2489 | "export", 2490 | "exporter" 2491 | ], 2492 | "support": { 2493 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 2494 | "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.3" 2495 | }, 2496 | "funding": [ 2497 | { 2498 | "url": "https://github.com/sebastianbergmann", 2499 | "type": "github" 2500 | } 2501 | ], 2502 | "time": "2020-09-28T05:24:23+00:00" 2503 | }, 2504 | { 2505 | "name": "sebastian/global-state", 2506 | "version": "5.0.2", 2507 | "source": { 2508 | "type": "git", 2509 | "url": "https://github.com/sebastianbergmann/global-state.git", 2510 | "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" 2511 | }, 2512 | "dist": { 2513 | "type": "zip", 2514 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", 2515 | "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", 2516 | "shasum": "" 2517 | }, 2518 | "require": { 2519 | "php": ">=7.3", 2520 | "sebastian/object-reflector": "^2.0", 2521 | "sebastian/recursion-context": "^4.0" 2522 | }, 2523 | "require-dev": { 2524 | "ext-dom": "*", 2525 | "phpunit/phpunit": "^9.3" 2526 | }, 2527 | "suggest": { 2528 | "ext-uopz": "*" 2529 | }, 2530 | "type": "library", 2531 | "extra": { 2532 | "branch-alias": { 2533 | "dev-master": "5.0-dev" 2534 | } 2535 | }, 2536 | "autoload": { 2537 | "classmap": [ 2538 | "src/" 2539 | ] 2540 | }, 2541 | "notification-url": "https://packagist.org/downloads/", 2542 | "license": [ 2543 | "BSD-3-Clause" 2544 | ], 2545 | "authors": [ 2546 | { 2547 | "name": "Sebastian Bergmann", 2548 | "email": "sebastian@phpunit.de" 2549 | } 2550 | ], 2551 | "description": "Snapshotting of global state", 2552 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2553 | "keywords": [ 2554 | "global state" 2555 | ], 2556 | "support": { 2557 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 2558 | "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.2" 2559 | }, 2560 | "funding": [ 2561 | { 2562 | "url": "https://github.com/sebastianbergmann", 2563 | "type": "github" 2564 | } 2565 | ], 2566 | "time": "2020-10-26T15:55:19+00:00" 2567 | }, 2568 | { 2569 | "name": "sebastian/lines-of-code", 2570 | "version": "1.0.3", 2571 | "source": { 2572 | "type": "git", 2573 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2574 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" 2575 | }, 2576 | "dist": { 2577 | "type": "zip", 2578 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", 2579 | "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", 2580 | "shasum": "" 2581 | }, 2582 | "require": { 2583 | "nikic/php-parser": "^4.6", 2584 | "php": ">=7.3" 2585 | }, 2586 | "require-dev": { 2587 | "phpunit/phpunit": "^9.3" 2588 | }, 2589 | "type": "library", 2590 | "extra": { 2591 | "branch-alias": { 2592 | "dev-master": "1.0-dev" 2593 | } 2594 | }, 2595 | "autoload": { 2596 | "classmap": [ 2597 | "src/" 2598 | ] 2599 | }, 2600 | "notification-url": "https://packagist.org/downloads/", 2601 | "license": [ 2602 | "BSD-3-Clause" 2603 | ], 2604 | "authors": [ 2605 | { 2606 | "name": "Sebastian Bergmann", 2607 | "email": "sebastian@phpunit.de", 2608 | "role": "lead" 2609 | } 2610 | ], 2611 | "description": "Library for counting the lines of code in PHP source code", 2612 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2613 | "support": { 2614 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2615 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" 2616 | }, 2617 | "funding": [ 2618 | { 2619 | "url": "https://github.com/sebastianbergmann", 2620 | "type": "github" 2621 | } 2622 | ], 2623 | "time": "2020-11-28T06:42:11+00:00" 2624 | }, 2625 | { 2626 | "name": "sebastian/object-enumerator", 2627 | "version": "4.0.4", 2628 | "source": { 2629 | "type": "git", 2630 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2631 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" 2632 | }, 2633 | "dist": { 2634 | "type": "zip", 2635 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", 2636 | "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", 2637 | "shasum": "" 2638 | }, 2639 | "require": { 2640 | "php": ">=7.3", 2641 | "sebastian/object-reflector": "^2.0", 2642 | "sebastian/recursion-context": "^4.0" 2643 | }, 2644 | "require-dev": { 2645 | "phpunit/phpunit": "^9.3" 2646 | }, 2647 | "type": "library", 2648 | "extra": { 2649 | "branch-alias": { 2650 | "dev-master": "4.0-dev" 2651 | } 2652 | }, 2653 | "autoload": { 2654 | "classmap": [ 2655 | "src/" 2656 | ] 2657 | }, 2658 | "notification-url": "https://packagist.org/downloads/", 2659 | "license": [ 2660 | "BSD-3-Clause" 2661 | ], 2662 | "authors": [ 2663 | { 2664 | "name": "Sebastian Bergmann", 2665 | "email": "sebastian@phpunit.de" 2666 | } 2667 | ], 2668 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2669 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2670 | "support": { 2671 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2672 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" 2673 | }, 2674 | "funding": [ 2675 | { 2676 | "url": "https://github.com/sebastianbergmann", 2677 | "type": "github" 2678 | } 2679 | ], 2680 | "time": "2020-10-26T13:12:34+00:00" 2681 | }, 2682 | { 2683 | "name": "sebastian/object-reflector", 2684 | "version": "2.0.4", 2685 | "source": { 2686 | "type": "git", 2687 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2688 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" 2689 | }, 2690 | "dist": { 2691 | "type": "zip", 2692 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2693 | "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", 2694 | "shasum": "" 2695 | }, 2696 | "require": { 2697 | "php": ">=7.3" 2698 | }, 2699 | "require-dev": { 2700 | "phpunit/phpunit": "^9.3" 2701 | }, 2702 | "type": "library", 2703 | "extra": { 2704 | "branch-alias": { 2705 | "dev-master": "2.0-dev" 2706 | } 2707 | }, 2708 | "autoload": { 2709 | "classmap": [ 2710 | "src/" 2711 | ] 2712 | }, 2713 | "notification-url": "https://packagist.org/downloads/", 2714 | "license": [ 2715 | "BSD-3-Clause" 2716 | ], 2717 | "authors": [ 2718 | { 2719 | "name": "Sebastian Bergmann", 2720 | "email": "sebastian@phpunit.de" 2721 | } 2722 | ], 2723 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2724 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2725 | "support": { 2726 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2727 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" 2728 | }, 2729 | "funding": [ 2730 | { 2731 | "url": "https://github.com/sebastianbergmann", 2732 | "type": "github" 2733 | } 2734 | ], 2735 | "time": "2020-10-26T13:14:26+00:00" 2736 | }, 2737 | { 2738 | "name": "sebastian/recursion-context", 2739 | "version": "4.0.4", 2740 | "source": { 2741 | "type": "git", 2742 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2743 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" 2744 | }, 2745 | "dist": { 2746 | "type": "zip", 2747 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", 2748 | "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", 2749 | "shasum": "" 2750 | }, 2751 | "require": { 2752 | "php": ">=7.3" 2753 | }, 2754 | "require-dev": { 2755 | "phpunit/phpunit": "^9.3" 2756 | }, 2757 | "type": "library", 2758 | "extra": { 2759 | "branch-alias": { 2760 | "dev-master": "4.0-dev" 2761 | } 2762 | }, 2763 | "autoload": { 2764 | "classmap": [ 2765 | "src/" 2766 | ] 2767 | }, 2768 | "notification-url": "https://packagist.org/downloads/", 2769 | "license": [ 2770 | "BSD-3-Clause" 2771 | ], 2772 | "authors": [ 2773 | { 2774 | "name": "Sebastian Bergmann", 2775 | "email": "sebastian@phpunit.de" 2776 | }, 2777 | { 2778 | "name": "Jeff Welch", 2779 | "email": "whatthejeff@gmail.com" 2780 | }, 2781 | { 2782 | "name": "Adam Harvey", 2783 | "email": "aharvey@php.net" 2784 | } 2785 | ], 2786 | "description": "Provides functionality to recursively process PHP variables", 2787 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2788 | "support": { 2789 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2790 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" 2791 | }, 2792 | "funding": [ 2793 | { 2794 | "url": "https://github.com/sebastianbergmann", 2795 | "type": "github" 2796 | } 2797 | ], 2798 | "time": "2020-10-26T13:17:30+00:00" 2799 | }, 2800 | { 2801 | "name": "sebastian/resource-operations", 2802 | "version": "3.0.3", 2803 | "source": { 2804 | "type": "git", 2805 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2806 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" 2807 | }, 2808 | "dist": { 2809 | "type": "zip", 2810 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 2811 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 2812 | "shasum": "" 2813 | }, 2814 | "require": { 2815 | "php": ">=7.3" 2816 | }, 2817 | "require-dev": { 2818 | "phpunit/phpunit": "^9.0" 2819 | }, 2820 | "type": "library", 2821 | "extra": { 2822 | "branch-alias": { 2823 | "dev-master": "3.0-dev" 2824 | } 2825 | }, 2826 | "autoload": { 2827 | "classmap": [ 2828 | "src/" 2829 | ] 2830 | }, 2831 | "notification-url": "https://packagist.org/downloads/", 2832 | "license": [ 2833 | "BSD-3-Clause" 2834 | ], 2835 | "authors": [ 2836 | { 2837 | "name": "Sebastian Bergmann", 2838 | "email": "sebastian@phpunit.de" 2839 | } 2840 | ], 2841 | "description": "Provides a list of PHP built-in functions that operate on resources", 2842 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2843 | "support": { 2844 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues", 2845 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" 2846 | }, 2847 | "funding": [ 2848 | { 2849 | "url": "https://github.com/sebastianbergmann", 2850 | "type": "github" 2851 | } 2852 | ], 2853 | "time": "2020-09-28T06:45:17+00:00" 2854 | }, 2855 | { 2856 | "name": "sebastian/type", 2857 | "version": "2.3.1", 2858 | "source": { 2859 | "type": "git", 2860 | "url": "https://github.com/sebastianbergmann/type.git", 2861 | "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" 2862 | }, 2863 | "dist": { 2864 | "type": "zip", 2865 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", 2866 | "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", 2867 | "shasum": "" 2868 | }, 2869 | "require": { 2870 | "php": ">=7.3" 2871 | }, 2872 | "require-dev": { 2873 | "phpunit/phpunit": "^9.3" 2874 | }, 2875 | "type": "library", 2876 | "extra": { 2877 | "branch-alias": { 2878 | "dev-master": "2.3-dev" 2879 | } 2880 | }, 2881 | "autoload": { 2882 | "classmap": [ 2883 | "src/" 2884 | ] 2885 | }, 2886 | "notification-url": "https://packagist.org/downloads/", 2887 | "license": [ 2888 | "BSD-3-Clause" 2889 | ], 2890 | "authors": [ 2891 | { 2892 | "name": "Sebastian Bergmann", 2893 | "email": "sebastian@phpunit.de", 2894 | "role": "lead" 2895 | } 2896 | ], 2897 | "description": "Collection of value objects that represent the types of the PHP type system", 2898 | "homepage": "https://github.com/sebastianbergmann/type", 2899 | "support": { 2900 | "issues": "https://github.com/sebastianbergmann/type/issues", 2901 | "source": "https://github.com/sebastianbergmann/type/tree/2.3.1" 2902 | }, 2903 | "funding": [ 2904 | { 2905 | "url": "https://github.com/sebastianbergmann", 2906 | "type": "github" 2907 | } 2908 | ], 2909 | "time": "2020-10-26T13:18:59+00:00" 2910 | }, 2911 | { 2912 | "name": "sebastian/version", 2913 | "version": "3.0.2", 2914 | "source": { 2915 | "type": "git", 2916 | "url": "https://github.com/sebastianbergmann/version.git", 2917 | "reference": "c6c1022351a901512170118436c764e473f6de8c" 2918 | }, 2919 | "dist": { 2920 | "type": "zip", 2921 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", 2922 | "reference": "c6c1022351a901512170118436c764e473f6de8c", 2923 | "shasum": "" 2924 | }, 2925 | "require": { 2926 | "php": ">=7.3" 2927 | }, 2928 | "type": "library", 2929 | "extra": { 2930 | "branch-alias": { 2931 | "dev-master": "3.0-dev" 2932 | } 2933 | }, 2934 | "autoload": { 2935 | "classmap": [ 2936 | "src/" 2937 | ] 2938 | }, 2939 | "notification-url": "https://packagist.org/downloads/", 2940 | "license": [ 2941 | "BSD-3-Clause" 2942 | ], 2943 | "authors": [ 2944 | { 2945 | "name": "Sebastian Bergmann", 2946 | "email": "sebastian@phpunit.de", 2947 | "role": "lead" 2948 | } 2949 | ], 2950 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2951 | "homepage": "https://github.com/sebastianbergmann/version", 2952 | "support": { 2953 | "issues": "https://github.com/sebastianbergmann/version/issues", 2954 | "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" 2955 | }, 2956 | "funding": [ 2957 | { 2958 | "url": "https://github.com/sebastianbergmann", 2959 | "type": "github" 2960 | } 2961 | ], 2962 | "time": "2020-09-28T06:39:44+00:00" 2963 | }, 2964 | { 2965 | "name": "symfony/console", 2966 | "version": "v5.1.8", 2967 | "source": { 2968 | "type": "git", 2969 | "url": "https://github.com/symfony/console.git", 2970 | "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e" 2971 | }, 2972 | "dist": { 2973 | "type": "zip", 2974 | "url": "https://api.github.com/repos/symfony/console/zipball/e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e", 2975 | "reference": "e0b2c29c0fa6a69089209bbe8fcff4df2a313d0e", 2976 | "shasum": "" 2977 | }, 2978 | "require": { 2979 | "php": ">=7.2.5", 2980 | "symfony/polyfill-mbstring": "~1.0", 2981 | "symfony/polyfill-php73": "^1.8", 2982 | "symfony/polyfill-php80": "^1.15", 2983 | "symfony/service-contracts": "^1.1|^2", 2984 | "symfony/string": "^5.1" 2985 | }, 2986 | "conflict": { 2987 | "symfony/dependency-injection": "<4.4", 2988 | "symfony/dotenv": "<5.1", 2989 | "symfony/event-dispatcher": "<4.4", 2990 | "symfony/lock": "<4.4", 2991 | "symfony/process": "<4.4" 2992 | }, 2993 | "provide": { 2994 | "psr/log-implementation": "1.0" 2995 | }, 2996 | "require-dev": { 2997 | "psr/log": "~1.0", 2998 | "symfony/config": "^4.4|^5.0", 2999 | "symfony/dependency-injection": "^4.4|^5.0", 3000 | "symfony/event-dispatcher": "^4.4|^5.0", 3001 | "symfony/lock": "^4.4|^5.0", 3002 | "symfony/process": "^4.4|^5.0", 3003 | "symfony/var-dumper": "^4.4|^5.0" 3004 | }, 3005 | "suggest": { 3006 | "psr/log": "For using the console logger", 3007 | "symfony/event-dispatcher": "", 3008 | "symfony/lock": "", 3009 | "symfony/process": "" 3010 | }, 3011 | "type": "library", 3012 | "autoload": { 3013 | "psr-4": { 3014 | "Symfony\\Component\\Console\\": "" 3015 | }, 3016 | "exclude-from-classmap": [ 3017 | "/Tests/" 3018 | ] 3019 | }, 3020 | "notification-url": "https://packagist.org/downloads/", 3021 | "license": [ 3022 | "MIT" 3023 | ], 3024 | "authors": [ 3025 | { 3026 | "name": "Fabien Potencier", 3027 | "email": "fabien@symfony.com" 3028 | }, 3029 | { 3030 | "name": "Symfony Community", 3031 | "homepage": "https://symfony.com/contributors" 3032 | } 3033 | ], 3034 | "description": "Symfony Console Component", 3035 | "homepage": "https://symfony.com", 3036 | "support": { 3037 | "source": "https://github.com/symfony/console/tree/v5.1.8" 3038 | }, 3039 | "funding": [ 3040 | { 3041 | "url": "https://symfony.com/sponsor", 3042 | "type": "custom" 3043 | }, 3044 | { 3045 | "url": "https://github.com/fabpot", 3046 | "type": "github" 3047 | }, 3048 | { 3049 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3050 | "type": "tidelift" 3051 | } 3052 | ], 3053 | "time": "2020-10-24T12:01:57+00:00" 3054 | }, 3055 | { 3056 | "name": "symfony/deprecation-contracts", 3057 | "version": "v2.2.0", 3058 | "source": { 3059 | "type": "git", 3060 | "url": "https://github.com/symfony/deprecation-contracts.git", 3061 | "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665" 3062 | }, 3063 | "dist": { 3064 | "type": "zip", 3065 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5fa56b4074d1ae755beb55617ddafe6f5d78f665", 3066 | "reference": "5fa56b4074d1ae755beb55617ddafe6f5d78f665", 3067 | "shasum": "" 3068 | }, 3069 | "require": { 3070 | "php": ">=7.1" 3071 | }, 3072 | "type": "library", 3073 | "extra": { 3074 | "branch-alias": { 3075 | "dev-master": "2.2-dev" 3076 | }, 3077 | "thanks": { 3078 | "name": "symfony/contracts", 3079 | "url": "https://github.com/symfony/contracts" 3080 | } 3081 | }, 3082 | "autoload": { 3083 | "files": [ 3084 | "function.php" 3085 | ] 3086 | }, 3087 | "notification-url": "https://packagist.org/downloads/", 3088 | "license": [ 3089 | "MIT" 3090 | ], 3091 | "authors": [ 3092 | { 3093 | "name": "Nicolas Grekas", 3094 | "email": "p@tchwork.com" 3095 | }, 3096 | { 3097 | "name": "Symfony Community", 3098 | "homepage": "https://symfony.com/contributors" 3099 | } 3100 | ], 3101 | "description": "A generic function and convention to trigger deprecation notices", 3102 | "homepage": "https://symfony.com", 3103 | "support": { 3104 | "source": "https://github.com/symfony/deprecation-contracts/tree/master" 3105 | }, 3106 | "funding": [ 3107 | { 3108 | "url": "https://symfony.com/sponsor", 3109 | "type": "custom" 3110 | }, 3111 | { 3112 | "url": "https://github.com/fabpot", 3113 | "type": "github" 3114 | }, 3115 | { 3116 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3117 | "type": "tidelift" 3118 | } 3119 | ], 3120 | "time": "2020-09-07T11:33:47+00:00" 3121 | }, 3122 | { 3123 | "name": "symfony/event-dispatcher", 3124 | "version": "v5.1.8", 3125 | "source": { 3126 | "type": "git", 3127 | "url": "https://github.com/symfony/event-dispatcher.git", 3128 | "reference": "26f4edae48c913fc183a3da0553fe63bdfbd361a" 3129 | }, 3130 | "dist": { 3131 | "type": "zip", 3132 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/26f4edae48c913fc183a3da0553fe63bdfbd361a", 3133 | "reference": "26f4edae48c913fc183a3da0553fe63bdfbd361a", 3134 | "shasum": "" 3135 | }, 3136 | "require": { 3137 | "php": ">=7.2.5", 3138 | "symfony/deprecation-contracts": "^2.1", 3139 | "symfony/event-dispatcher-contracts": "^2", 3140 | "symfony/polyfill-php80": "^1.15" 3141 | }, 3142 | "conflict": { 3143 | "symfony/dependency-injection": "<4.4" 3144 | }, 3145 | "provide": { 3146 | "psr/event-dispatcher-implementation": "1.0", 3147 | "symfony/event-dispatcher-implementation": "2.0" 3148 | }, 3149 | "require-dev": { 3150 | "psr/log": "~1.0", 3151 | "symfony/config": "^4.4|^5.0", 3152 | "symfony/dependency-injection": "^4.4|^5.0", 3153 | "symfony/error-handler": "^4.4|^5.0", 3154 | "symfony/expression-language": "^4.4|^5.0", 3155 | "symfony/http-foundation": "^4.4|^5.0", 3156 | "symfony/service-contracts": "^1.1|^2", 3157 | "symfony/stopwatch": "^4.4|^5.0" 3158 | }, 3159 | "suggest": { 3160 | "symfony/dependency-injection": "", 3161 | "symfony/http-kernel": "" 3162 | }, 3163 | "type": "library", 3164 | "autoload": { 3165 | "psr-4": { 3166 | "Symfony\\Component\\EventDispatcher\\": "" 3167 | }, 3168 | "exclude-from-classmap": [ 3169 | "/Tests/" 3170 | ] 3171 | }, 3172 | "notification-url": "https://packagist.org/downloads/", 3173 | "license": [ 3174 | "MIT" 3175 | ], 3176 | "authors": [ 3177 | { 3178 | "name": "Fabien Potencier", 3179 | "email": "fabien@symfony.com" 3180 | }, 3181 | { 3182 | "name": "Symfony Community", 3183 | "homepage": "https://symfony.com/contributors" 3184 | } 3185 | ], 3186 | "description": "Symfony EventDispatcher Component", 3187 | "homepage": "https://symfony.com", 3188 | "support": { 3189 | "source": "https://github.com/symfony/event-dispatcher/tree/v5.1.8" 3190 | }, 3191 | "funding": [ 3192 | { 3193 | "url": "https://symfony.com/sponsor", 3194 | "type": "custom" 3195 | }, 3196 | { 3197 | "url": "https://github.com/fabpot", 3198 | "type": "github" 3199 | }, 3200 | { 3201 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3202 | "type": "tidelift" 3203 | } 3204 | ], 3205 | "time": "2020-10-24T12:01:57+00:00" 3206 | }, 3207 | { 3208 | "name": "symfony/event-dispatcher-contracts", 3209 | "version": "v2.2.0", 3210 | "source": { 3211 | "type": "git", 3212 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 3213 | "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2" 3214 | }, 3215 | "dist": { 3216 | "type": "zip", 3217 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/0ba7d54483095a198fa51781bc608d17e84dffa2", 3218 | "reference": "0ba7d54483095a198fa51781bc608d17e84dffa2", 3219 | "shasum": "" 3220 | }, 3221 | "require": { 3222 | "php": ">=7.2.5", 3223 | "psr/event-dispatcher": "^1" 3224 | }, 3225 | "suggest": { 3226 | "symfony/event-dispatcher-implementation": "" 3227 | }, 3228 | "type": "library", 3229 | "extra": { 3230 | "branch-alias": { 3231 | "dev-master": "2.2-dev" 3232 | }, 3233 | "thanks": { 3234 | "name": "symfony/contracts", 3235 | "url": "https://github.com/symfony/contracts" 3236 | } 3237 | }, 3238 | "autoload": { 3239 | "psr-4": { 3240 | "Symfony\\Contracts\\EventDispatcher\\": "" 3241 | } 3242 | }, 3243 | "notification-url": "https://packagist.org/downloads/", 3244 | "license": [ 3245 | "MIT" 3246 | ], 3247 | "authors": [ 3248 | { 3249 | "name": "Nicolas Grekas", 3250 | "email": "p@tchwork.com" 3251 | }, 3252 | { 3253 | "name": "Symfony Community", 3254 | "homepage": "https://symfony.com/contributors" 3255 | } 3256 | ], 3257 | "description": "Generic abstractions related to dispatching event", 3258 | "homepage": "https://symfony.com", 3259 | "keywords": [ 3260 | "abstractions", 3261 | "contracts", 3262 | "decoupling", 3263 | "interfaces", 3264 | "interoperability", 3265 | "standards" 3266 | ], 3267 | "support": { 3268 | "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.2.0" 3269 | }, 3270 | "funding": [ 3271 | { 3272 | "url": "https://symfony.com/sponsor", 3273 | "type": "custom" 3274 | }, 3275 | { 3276 | "url": "https://github.com/fabpot", 3277 | "type": "github" 3278 | }, 3279 | { 3280 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3281 | "type": "tidelift" 3282 | } 3283 | ], 3284 | "time": "2020-09-07T11:33:47+00:00" 3285 | }, 3286 | { 3287 | "name": "symfony/filesystem", 3288 | "version": "v5.1.8", 3289 | "source": { 3290 | "type": "git", 3291 | "url": "https://github.com/symfony/filesystem.git", 3292 | "reference": "df08650ea7aee2d925380069c131a66124d79177" 3293 | }, 3294 | "dist": { 3295 | "type": "zip", 3296 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/df08650ea7aee2d925380069c131a66124d79177", 3297 | "reference": "df08650ea7aee2d925380069c131a66124d79177", 3298 | "shasum": "" 3299 | }, 3300 | "require": { 3301 | "php": ">=7.2.5", 3302 | "symfony/polyfill-ctype": "~1.8" 3303 | }, 3304 | "type": "library", 3305 | "autoload": { 3306 | "psr-4": { 3307 | "Symfony\\Component\\Filesystem\\": "" 3308 | }, 3309 | "exclude-from-classmap": [ 3310 | "/Tests/" 3311 | ] 3312 | }, 3313 | "notification-url": "https://packagist.org/downloads/", 3314 | "license": [ 3315 | "MIT" 3316 | ], 3317 | "authors": [ 3318 | { 3319 | "name": "Fabien Potencier", 3320 | "email": "fabien@symfony.com" 3321 | }, 3322 | { 3323 | "name": "Symfony Community", 3324 | "homepage": "https://symfony.com/contributors" 3325 | } 3326 | ], 3327 | "description": "Symfony Filesystem Component", 3328 | "homepage": "https://symfony.com", 3329 | "support": { 3330 | "source": "https://github.com/symfony/filesystem/tree/v5.1.8" 3331 | }, 3332 | "funding": [ 3333 | { 3334 | "url": "https://symfony.com/sponsor", 3335 | "type": "custom" 3336 | }, 3337 | { 3338 | "url": "https://github.com/fabpot", 3339 | "type": "github" 3340 | }, 3341 | { 3342 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3343 | "type": "tidelift" 3344 | } 3345 | ], 3346 | "time": "2020-10-24T12:01:57+00:00" 3347 | }, 3348 | { 3349 | "name": "symfony/finder", 3350 | "version": "v5.1.8", 3351 | "source": { 3352 | "type": "git", 3353 | "url": "https://github.com/symfony/finder.git", 3354 | "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0" 3355 | }, 3356 | "dist": { 3357 | "type": "zip", 3358 | "url": "https://api.github.com/repos/symfony/finder/zipball/e70eb5a69c2ff61ea135a13d2266e8914a67b3a0", 3359 | "reference": "e70eb5a69c2ff61ea135a13d2266e8914a67b3a0", 3360 | "shasum": "" 3361 | }, 3362 | "require": { 3363 | "php": ">=7.2.5" 3364 | }, 3365 | "type": "library", 3366 | "autoload": { 3367 | "psr-4": { 3368 | "Symfony\\Component\\Finder\\": "" 3369 | }, 3370 | "exclude-from-classmap": [ 3371 | "/Tests/" 3372 | ] 3373 | }, 3374 | "notification-url": "https://packagist.org/downloads/", 3375 | "license": [ 3376 | "MIT" 3377 | ], 3378 | "authors": [ 3379 | { 3380 | "name": "Fabien Potencier", 3381 | "email": "fabien@symfony.com" 3382 | }, 3383 | { 3384 | "name": "Symfony Community", 3385 | "homepage": "https://symfony.com/contributors" 3386 | } 3387 | ], 3388 | "description": "Symfony Finder Component", 3389 | "homepage": "https://symfony.com", 3390 | "support": { 3391 | "source": "https://github.com/symfony/finder/tree/v5.1.8" 3392 | }, 3393 | "funding": [ 3394 | { 3395 | "url": "https://symfony.com/sponsor", 3396 | "type": "custom" 3397 | }, 3398 | { 3399 | "url": "https://github.com/fabpot", 3400 | "type": "github" 3401 | }, 3402 | { 3403 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3404 | "type": "tidelift" 3405 | } 3406 | ], 3407 | "time": "2020-10-24T12:01:57+00:00" 3408 | }, 3409 | { 3410 | "name": "symfony/options-resolver", 3411 | "version": "v5.1.8", 3412 | "source": { 3413 | "type": "git", 3414 | "url": "https://github.com/symfony/options-resolver.git", 3415 | "reference": "c6a02905e4ffc7a1498e8ee019db2b477cd1cc02" 3416 | }, 3417 | "dist": { 3418 | "type": "zip", 3419 | "url": "https://api.github.com/repos/symfony/options-resolver/zipball/c6a02905e4ffc7a1498e8ee019db2b477cd1cc02", 3420 | "reference": "c6a02905e4ffc7a1498e8ee019db2b477cd1cc02", 3421 | "shasum": "" 3422 | }, 3423 | "require": { 3424 | "php": ">=7.2.5", 3425 | "symfony/deprecation-contracts": "^2.1", 3426 | "symfony/polyfill-php80": "^1.15" 3427 | }, 3428 | "type": "library", 3429 | "autoload": { 3430 | "psr-4": { 3431 | "Symfony\\Component\\OptionsResolver\\": "" 3432 | }, 3433 | "exclude-from-classmap": [ 3434 | "/Tests/" 3435 | ] 3436 | }, 3437 | "notification-url": "https://packagist.org/downloads/", 3438 | "license": [ 3439 | "MIT" 3440 | ], 3441 | "authors": [ 3442 | { 3443 | "name": "Fabien Potencier", 3444 | "email": "fabien@symfony.com" 3445 | }, 3446 | { 3447 | "name": "Symfony Community", 3448 | "homepage": "https://symfony.com/contributors" 3449 | } 3450 | ], 3451 | "description": "Symfony OptionsResolver Component", 3452 | "homepage": "https://symfony.com", 3453 | "keywords": [ 3454 | "config", 3455 | "configuration", 3456 | "options" 3457 | ], 3458 | "support": { 3459 | "source": "https://github.com/symfony/options-resolver/tree/v5.1.8" 3460 | }, 3461 | "funding": [ 3462 | { 3463 | "url": "https://symfony.com/sponsor", 3464 | "type": "custom" 3465 | }, 3466 | { 3467 | "url": "https://github.com/fabpot", 3468 | "type": "github" 3469 | }, 3470 | { 3471 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3472 | "type": "tidelift" 3473 | } 3474 | ], 3475 | "time": "2020-10-24T12:01:57+00:00" 3476 | }, 3477 | { 3478 | "name": "symfony/polyfill-ctype", 3479 | "version": "v1.20.0", 3480 | "source": { 3481 | "type": "git", 3482 | "url": "https://github.com/symfony/polyfill-ctype.git", 3483 | "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" 3484 | }, 3485 | "dist": { 3486 | "type": "zip", 3487 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", 3488 | "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", 3489 | "shasum": "" 3490 | }, 3491 | "require": { 3492 | "php": ">=7.1" 3493 | }, 3494 | "suggest": { 3495 | "ext-ctype": "For best performance" 3496 | }, 3497 | "type": "library", 3498 | "extra": { 3499 | "branch-alias": { 3500 | "dev-main": "1.20-dev" 3501 | }, 3502 | "thanks": { 3503 | "name": "symfony/polyfill", 3504 | "url": "https://github.com/symfony/polyfill" 3505 | } 3506 | }, 3507 | "autoload": { 3508 | "psr-4": { 3509 | "Symfony\\Polyfill\\Ctype\\": "" 3510 | }, 3511 | "files": [ 3512 | "bootstrap.php" 3513 | ] 3514 | }, 3515 | "notification-url": "https://packagist.org/downloads/", 3516 | "license": [ 3517 | "MIT" 3518 | ], 3519 | "authors": [ 3520 | { 3521 | "name": "Gert de Pagter", 3522 | "email": "BackEndTea@gmail.com" 3523 | }, 3524 | { 3525 | "name": "Symfony Community", 3526 | "homepage": "https://symfony.com/contributors" 3527 | } 3528 | ], 3529 | "description": "Symfony polyfill for ctype functions", 3530 | "homepage": "https://symfony.com", 3531 | "keywords": [ 3532 | "compatibility", 3533 | "ctype", 3534 | "polyfill", 3535 | "portable" 3536 | ], 3537 | "support": { 3538 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.20.0" 3539 | }, 3540 | "funding": [ 3541 | { 3542 | "url": "https://symfony.com/sponsor", 3543 | "type": "custom" 3544 | }, 3545 | { 3546 | "url": "https://github.com/fabpot", 3547 | "type": "github" 3548 | }, 3549 | { 3550 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3551 | "type": "tidelift" 3552 | } 3553 | ], 3554 | "time": "2020-10-23T14:02:19+00:00" 3555 | }, 3556 | { 3557 | "name": "symfony/polyfill-intl-grapheme", 3558 | "version": "v1.20.0", 3559 | "source": { 3560 | "type": "git", 3561 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 3562 | "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c" 3563 | }, 3564 | "dist": { 3565 | "type": "zip", 3566 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", 3567 | "reference": "c7cf3f858ec7d70b89559d6e6eb1f7c2517d479c", 3568 | "shasum": "" 3569 | }, 3570 | "require": { 3571 | "php": ">=7.1" 3572 | }, 3573 | "suggest": { 3574 | "ext-intl": "For best performance" 3575 | }, 3576 | "type": "library", 3577 | "extra": { 3578 | "branch-alias": { 3579 | "dev-main": "1.20-dev" 3580 | }, 3581 | "thanks": { 3582 | "name": "symfony/polyfill", 3583 | "url": "https://github.com/symfony/polyfill" 3584 | } 3585 | }, 3586 | "autoload": { 3587 | "psr-4": { 3588 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 3589 | }, 3590 | "files": [ 3591 | "bootstrap.php" 3592 | ] 3593 | }, 3594 | "notification-url": "https://packagist.org/downloads/", 3595 | "license": [ 3596 | "MIT" 3597 | ], 3598 | "authors": [ 3599 | { 3600 | "name": "Nicolas Grekas", 3601 | "email": "p@tchwork.com" 3602 | }, 3603 | { 3604 | "name": "Symfony Community", 3605 | "homepage": "https://symfony.com/contributors" 3606 | } 3607 | ], 3608 | "description": "Symfony polyfill for intl's grapheme_* functions", 3609 | "homepage": "https://symfony.com", 3610 | "keywords": [ 3611 | "compatibility", 3612 | "grapheme", 3613 | "intl", 3614 | "polyfill", 3615 | "portable", 3616 | "shim" 3617 | ], 3618 | "support": { 3619 | "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.20.0" 3620 | }, 3621 | "funding": [ 3622 | { 3623 | "url": "https://symfony.com/sponsor", 3624 | "type": "custom" 3625 | }, 3626 | { 3627 | "url": "https://github.com/fabpot", 3628 | "type": "github" 3629 | }, 3630 | { 3631 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3632 | "type": "tidelift" 3633 | } 3634 | ], 3635 | "time": "2020-10-23T14:02:19+00:00" 3636 | }, 3637 | { 3638 | "name": "symfony/polyfill-intl-normalizer", 3639 | "version": "v1.20.0", 3640 | "source": { 3641 | "type": "git", 3642 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 3643 | "reference": "727d1096295d807c309fb01a851577302394c897" 3644 | }, 3645 | "dist": { 3646 | "type": "zip", 3647 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/727d1096295d807c309fb01a851577302394c897", 3648 | "reference": "727d1096295d807c309fb01a851577302394c897", 3649 | "shasum": "" 3650 | }, 3651 | "require": { 3652 | "php": ">=7.1" 3653 | }, 3654 | "suggest": { 3655 | "ext-intl": "For best performance" 3656 | }, 3657 | "type": "library", 3658 | "extra": { 3659 | "branch-alias": { 3660 | "dev-main": "1.20-dev" 3661 | }, 3662 | "thanks": { 3663 | "name": "symfony/polyfill", 3664 | "url": "https://github.com/symfony/polyfill" 3665 | } 3666 | }, 3667 | "autoload": { 3668 | "psr-4": { 3669 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 3670 | }, 3671 | "files": [ 3672 | "bootstrap.php" 3673 | ], 3674 | "classmap": [ 3675 | "Resources/stubs" 3676 | ] 3677 | }, 3678 | "notification-url": "https://packagist.org/downloads/", 3679 | "license": [ 3680 | "MIT" 3681 | ], 3682 | "authors": [ 3683 | { 3684 | "name": "Nicolas Grekas", 3685 | "email": "p@tchwork.com" 3686 | }, 3687 | { 3688 | "name": "Symfony Community", 3689 | "homepage": "https://symfony.com/contributors" 3690 | } 3691 | ], 3692 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 3693 | "homepage": "https://symfony.com", 3694 | "keywords": [ 3695 | "compatibility", 3696 | "intl", 3697 | "normalizer", 3698 | "polyfill", 3699 | "portable", 3700 | "shim" 3701 | ], 3702 | "support": { 3703 | "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.20.0" 3704 | }, 3705 | "funding": [ 3706 | { 3707 | "url": "https://symfony.com/sponsor", 3708 | "type": "custom" 3709 | }, 3710 | { 3711 | "url": "https://github.com/fabpot", 3712 | "type": "github" 3713 | }, 3714 | { 3715 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3716 | "type": "tidelift" 3717 | } 3718 | ], 3719 | "time": "2020-10-23T14:02:19+00:00" 3720 | }, 3721 | { 3722 | "name": "symfony/polyfill-mbstring", 3723 | "version": "v1.20.0", 3724 | "source": { 3725 | "type": "git", 3726 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3727 | "reference": "39d483bdf39be819deabf04ec872eb0b2410b531" 3728 | }, 3729 | "dist": { 3730 | "type": "zip", 3731 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/39d483bdf39be819deabf04ec872eb0b2410b531", 3732 | "reference": "39d483bdf39be819deabf04ec872eb0b2410b531", 3733 | "shasum": "" 3734 | }, 3735 | "require": { 3736 | "php": ">=7.1" 3737 | }, 3738 | "suggest": { 3739 | "ext-mbstring": "For best performance" 3740 | }, 3741 | "type": "library", 3742 | "extra": { 3743 | "branch-alias": { 3744 | "dev-main": "1.20-dev" 3745 | }, 3746 | "thanks": { 3747 | "name": "symfony/polyfill", 3748 | "url": "https://github.com/symfony/polyfill" 3749 | } 3750 | }, 3751 | "autoload": { 3752 | "psr-4": { 3753 | "Symfony\\Polyfill\\Mbstring\\": "" 3754 | }, 3755 | "files": [ 3756 | "bootstrap.php" 3757 | ] 3758 | }, 3759 | "notification-url": "https://packagist.org/downloads/", 3760 | "license": [ 3761 | "MIT" 3762 | ], 3763 | "authors": [ 3764 | { 3765 | "name": "Nicolas Grekas", 3766 | "email": "p@tchwork.com" 3767 | }, 3768 | { 3769 | "name": "Symfony Community", 3770 | "homepage": "https://symfony.com/contributors" 3771 | } 3772 | ], 3773 | "description": "Symfony polyfill for the Mbstring extension", 3774 | "homepage": "https://symfony.com", 3775 | "keywords": [ 3776 | "compatibility", 3777 | "mbstring", 3778 | "polyfill", 3779 | "portable", 3780 | "shim" 3781 | ], 3782 | "support": { 3783 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.20.0" 3784 | }, 3785 | "funding": [ 3786 | { 3787 | "url": "https://symfony.com/sponsor", 3788 | "type": "custom" 3789 | }, 3790 | { 3791 | "url": "https://github.com/fabpot", 3792 | "type": "github" 3793 | }, 3794 | { 3795 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3796 | "type": "tidelift" 3797 | } 3798 | ], 3799 | "time": "2020-10-23T14:02:19+00:00" 3800 | }, 3801 | { 3802 | "name": "symfony/polyfill-php70", 3803 | "version": "v1.20.0", 3804 | "source": { 3805 | "type": "git", 3806 | "url": "https://github.com/symfony/polyfill-php70.git", 3807 | "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644" 3808 | }, 3809 | "dist": { 3810 | "type": "zip", 3811 | "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/5f03a781d984aae42cebd18e7912fa80f02ee644", 3812 | "reference": "5f03a781d984aae42cebd18e7912fa80f02ee644", 3813 | "shasum": "" 3814 | }, 3815 | "require": { 3816 | "php": ">=7.1" 3817 | }, 3818 | "type": "metapackage", 3819 | "extra": { 3820 | "branch-alias": { 3821 | "dev-main": "1.20-dev" 3822 | }, 3823 | "thanks": { 3824 | "name": "symfony/polyfill", 3825 | "url": "https://github.com/symfony/polyfill" 3826 | } 3827 | }, 3828 | "notification-url": "https://packagist.org/downloads/", 3829 | "license": [ 3830 | "MIT" 3831 | ], 3832 | "authors": [ 3833 | { 3834 | "name": "Nicolas Grekas", 3835 | "email": "p@tchwork.com" 3836 | }, 3837 | { 3838 | "name": "Symfony Community", 3839 | "homepage": "https://symfony.com/contributors" 3840 | } 3841 | ], 3842 | "description": "Symfony polyfill backporting some PHP 7.0+ features to lower PHP versions", 3843 | "homepage": "https://symfony.com", 3844 | "keywords": [ 3845 | "compatibility", 3846 | "polyfill", 3847 | "portable", 3848 | "shim" 3849 | ], 3850 | "support": { 3851 | "source": "https://github.com/symfony/polyfill-php70/tree/v1.20.0" 3852 | }, 3853 | "funding": [ 3854 | { 3855 | "url": "https://symfony.com/sponsor", 3856 | "type": "custom" 3857 | }, 3858 | { 3859 | "url": "https://github.com/fabpot", 3860 | "type": "github" 3861 | }, 3862 | { 3863 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3864 | "type": "tidelift" 3865 | } 3866 | ], 3867 | "time": "2020-10-23T14:02:19+00:00" 3868 | }, 3869 | { 3870 | "name": "symfony/polyfill-php72", 3871 | "version": "v1.20.0", 3872 | "source": { 3873 | "type": "git", 3874 | "url": "https://github.com/symfony/polyfill-php72.git", 3875 | "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930" 3876 | }, 3877 | "dist": { 3878 | "type": "zip", 3879 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/cede45fcdfabdd6043b3592e83678e42ec69e930", 3880 | "reference": "cede45fcdfabdd6043b3592e83678e42ec69e930", 3881 | "shasum": "" 3882 | }, 3883 | "require": { 3884 | "php": ">=7.1" 3885 | }, 3886 | "type": "library", 3887 | "extra": { 3888 | "branch-alias": { 3889 | "dev-main": "1.20-dev" 3890 | }, 3891 | "thanks": { 3892 | "name": "symfony/polyfill", 3893 | "url": "https://github.com/symfony/polyfill" 3894 | } 3895 | }, 3896 | "autoload": { 3897 | "psr-4": { 3898 | "Symfony\\Polyfill\\Php72\\": "" 3899 | }, 3900 | "files": [ 3901 | "bootstrap.php" 3902 | ] 3903 | }, 3904 | "notification-url": "https://packagist.org/downloads/", 3905 | "license": [ 3906 | "MIT" 3907 | ], 3908 | "authors": [ 3909 | { 3910 | "name": "Nicolas Grekas", 3911 | "email": "p@tchwork.com" 3912 | }, 3913 | { 3914 | "name": "Symfony Community", 3915 | "homepage": "https://symfony.com/contributors" 3916 | } 3917 | ], 3918 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 3919 | "homepage": "https://symfony.com", 3920 | "keywords": [ 3921 | "compatibility", 3922 | "polyfill", 3923 | "portable", 3924 | "shim" 3925 | ], 3926 | "support": { 3927 | "source": "https://github.com/symfony/polyfill-php72/tree/v1.20.0" 3928 | }, 3929 | "funding": [ 3930 | { 3931 | "url": "https://symfony.com/sponsor", 3932 | "type": "custom" 3933 | }, 3934 | { 3935 | "url": "https://github.com/fabpot", 3936 | "type": "github" 3937 | }, 3938 | { 3939 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 3940 | "type": "tidelift" 3941 | } 3942 | ], 3943 | "time": "2020-10-23T14:02:19+00:00" 3944 | }, 3945 | { 3946 | "name": "symfony/polyfill-php73", 3947 | "version": "v1.20.0", 3948 | "source": { 3949 | "type": "git", 3950 | "url": "https://github.com/symfony/polyfill-php73.git", 3951 | "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed" 3952 | }, 3953 | "dist": { 3954 | "type": "zip", 3955 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/8ff431c517be11c78c48a39a66d37431e26a6bed", 3956 | "reference": "8ff431c517be11c78c48a39a66d37431e26a6bed", 3957 | "shasum": "" 3958 | }, 3959 | "require": { 3960 | "php": ">=7.1" 3961 | }, 3962 | "type": "library", 3963 | "extra": { 3964 | "branch-alias": { 3965 | "dev-main": "1.20-dev" 3966 | }, 3967 | "thanks": { 3968 | "name": "symfony/polyfill", 3969 | "url": "https://github.com/symfony/polyfill" 3970 | } 3971 | }, 3972 | "autoload": { 3973 | "psr-4": { 3974 | "Symfony\\Polyfill\\Php73\\": "" 3975 | }, 3976 | "files": [ 3977 | "bootstrap.php" 3978 | ], 3979 | "classmap": [ 3980 | "Resources/stubs" 3981 | ] 3982 | }, 3983 | "notification-url": "https://packagist.org/downloads/", 3984 | "license": [ 3985 | "MIT" 3986 | ], 3987 | "authors": [ 3988 | { 3989 | "name": "Nicolas Grekas", 3990 | "email": "p@tchwork.com" 3991 | }, 3992 | { 3993 | "name": "Symfony Community", 3994 | "homepage": "https://symfony.com/contributors" 3995 | } 3996 | ], 3997 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 3998 | "homepage": "https://symfony.com", 3999 | "keywords": [ 4000 | "compatibility", 4001 | "polyfill", 4002 | "portable", 4003 | "shim" 4004 | ], 4005 | "support": { 4006 | "source": "https://github.com/symfony/polyfill-php73/tree/v1.20.0" 4007 | }, 4008 | "funding": [ 4009 | { 4010 | "url": "https://symfony.com/sponsor", 4011 | "type": "custom" 4012 | }, 4013 | { 4014 | "url": "https://github.com/fabpot", 4015 | "type": "github" 4016 | }, 4017 | { 4018 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4019 | "type": "tidelift" 4020 | } 4021 | ], 4022 | "time": "2020-10-23T14:02:19+00:00" 4023 | }, 4024 | { 4025 | "name": "symfony/polyfill-php80", 4026 | "version": "v1.20.0", 4027 | "source": { 4028 | "type": "git", 4029 | "url": "https://github.com/symfony/polyfill-php80.git", 4030 | "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de" 4031 | }, 4032 | "dist": { 4033 | "type": "zip", 4034 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/e70aa8b064c5b72d3df2abd5ab1e90464ad009de", 4035 | "reference": "e70aa8b064c5b72d3df2abd5ab1e90464ad009de", 4036 | "shasum": "" 4037 | }, 4038 | "require": { 4039 | "php": ">=7.1" 4040 | }, 4041 | "type": "library", 4042 | "extra": { 4043 | "branch-alias": { 4044 | "dev-main": "1.20-dev" 4045 | }, 4046 | "thanks": { 4047 | "name": "symfony/polyfill", 4048 | "url": "https://github.com/symfony/polyfill" 4049 | } 4050 | }, 4051 | "autoload": { 4052 | "psr-4": { 4053 | "Symfony\\Polyfill\\Php80\\": "" 4054 | }, 4055 | "files": [ 4056 | "bootstrap.php" 4057 | ], 4058 | "classmap": [ 4059 | "Resources/stubs" 4060 | ] 4061 | }, 4062 | "notification-url": "https://packagist.org/downloads/", 4063 | "license": [ 4064 | "MIT" 4065 | ], 4066 | "authors": [ 4067 | { 4068 | "name": "Ion Bazan", 4069 | "email": "ion.bazan@gmail.com" 4070 | }, 4071 | { 4072 | "name": "Nicolas Grekas", 4073 | "email": "p@tchwork.com" 4074 | }, 4075 | { 4076 | "name": "Symfony Community", 4077 | "homepage": "https://symfony.com/contributors" 4078 | } 4079 | ], 4080 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 4081 | "homepage": "https://symfony.com", 4082 | "keywords": [ 4083 | "compatibility", 4084 | "polyfill", 4085 | "portable", 4086 | "shim" 4087 | ], 4088 | "support": { 4089 | "source": "https://github.com/symfony/polyfill-php80/tree/v1.20.0" 4090 | }, 4091 | "funding": [ 4092 | { 4093 | "url": "https://symfony.com/sponsor", 4094 | "type": "custom" 4095 | }, 4096 | { 4097 | "url": "https://github.com/fabpot", 4098 | "type": "github" 4099 | }, 4100 | { 4101 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4102 | "type": "tidelift" 4103 | } 4104 | ], 4105 | "time": "2020-10-23T14:02:19+00:00" 4106 | }, 4107 | { 4108 | "name": "symfony/process", 4109 | "version": "v5.1.8", 4110 | "source": { 4111 | "type": "git", 4112 | "url": "https://github.com/symfony/process.git", 4113 | "reference": "f00872c3f6804150d6a0f73b4151daab96248101" 4114 | }, 4115 | "dist": { 4116 | "type": "zip", 4117 | "url": "https://api.github.com/repos/symfony/process/zipball/f00872c3f6804150d6a0f73b4151daab96248101", 4118 | "reference": "f00872c3f6804150d6a0f73b4151daab96248101", 4119 | "shasum": "" 4120 | }, 4121 | "require": { 4122 | "php": ">=7.2.5", 4123 | "symfony/polyfill-php80": "^1.15" 4124 | }, 4125 | "type": "library", 4126 | "autoload": { 4127 | "psr-4": { 4128 | "Symfony\\Component\\Process\\": "" 4129 | }, 4130 | "exclude-from-classmap": [ 4131 | "/Tests/" 4132 | ] 4133 | }, 4134 | "notification-url": "https://packagist.org/downloads/", 4135 | "license": [ 4136 | "MIT" 4137 | ], 4138 | "authors": [ 4139 | { 4140 | "name": "Fabien Potencier", 4141 | "email": "fabien@symfony.com" 4142 | }, 4143 | { 4144 | "name": "Symfony Community", 4145 | "homepage": "https://symfony.com/contributors" 4146 | } 4147 | ], 4148 | "description": "Symfony Process Component", 4149 | "homepage": "https://symfony.com", 4150 | "support": { 4151 | "source": "https://github.com/symfony/process/tree/v5.1.8" 4152 | }, 4153 | "funding": [ 4154 | { 4155 | "url": "https://symfony.com/sponsor", 4156 | "type": "custom" 4157 | }, 4158 | { 4159 | "url": "https://github.com/fabpot", 4160 | "type": "github" 4161 | }, 4162 | { 4163 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4164 | "type": "tidelift" 4165 | } 4166 | ], 4167 | "time": "2020-10-24T12:01:57+00:00" 4168 | }, 4169 | { 4170 | "name": "symfony/service-contracts", 4171 | "version": "v2.2.0", 4172 | "source": { 4173 | "type": "git", 4174 | "url": "https://github.com/symfony/service-contracts.git", 4175 | "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1" 4176 | }, 4177 | "dist": { 4178 | "type": "zip", 4179 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d15da7ba4957ffb8f1747218be9e1a121fd298a1", 4180 | "reference": "d15da7ba4957ffb8f1747218be9e1a121fd298a1", 4181 | "shasum": "" 4182 | }, 4183 | "require": { 4184 | "php": ">=7.2.5", 4185 | "psr/container": "^1.0" 4186 | }, 4187 | "suggest": { 4188 | "symfony/service-implementation": "" 4189 | }, 4190 | "type": "library", 4191 | "extra": { 4192 | "branch-alias": { 4193 | "dev-master": "2.2-dev" 4194 | }, 4195 | "thanks": { 4196 | "name": "symfony/contracts", 4197 | "url": "https://github.com/symfony/contracts" 4198 | } 4199 | }, 4200 | "autoload": { 4201 | "psr-4": { 4202 | "Symfony\\Contracts\\Service\\": "" 4203 | } 4204 | }, 4205 | "notification-url": "https://packagist.org/downloads/", 4206 | "license": [ 4207 | "MIT" 4208 | ], 4209 | "authors": [ 4210 | { 4211 | "name": "Nicolas Grekas", 4212 | "email": "p@tchwork.com" 4213 | }, 4214 | { 4215 | "name": "Symfony Community", 4216 | "homepage": "https://symfony.com/contributors" 4217 | } 4218 | ], 4219 | "description": "Generic abstractions related to writing services", 4220 | "homepage": "https://symfony.com", 4221 | "keywords": [ 4222 | "abstractions", 4223 | "contracts", 4224 | "decoupling", 4225 | "interfaces", 4226 | "interoperability", 4227 | "standards" 4228 | ], 4229 | "support": { 4230 | "source": "https://github.com/symfony/service-contracts/tree/master" 4231 | }, 4232 | "funding": [ 4233 | { 4234 | "url": "https://symfony.com/sponsor", 4235 | "type": "custom" 4236 | }, 4237 | { 4238 | "url": "https://github.com/fabpot", 4239 | "type": "github" 4240 | }, 4241 | { 4242 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4243 | "type": "tidelift" 4244 | } 4245 | ], 4246 | "time": "2020-09-07T11:33:47+00:00" 4247 | }, 4248 | { 4249 | "name": "symfony/stopwatch", 4250 | "version": "v5.1.8", 4251 | "source": { 4252 | "type": "git", 4253 | "url": "https://github.com/symfony/stopwatch.git", 4254 | "reference": "3d9f57c89011f0266e6b1d469e5c0110513859d5" 4255 | }, 4256 | "dist": { 4257 | "type": "zip", 4258 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/3d9f57c89011f0266e6b1d469e5c0110513859d5", 4259 | "reference": "3d9f57c89011f0266e6b1d469e5c0110513859d5", 4260 | "shasum": "" 4261 | }, 4262 | "require": { 4263 | "php": ">=7.2.5", 4264 | "symfony/service-contracts": "^1.0|^2" 4265 | }, 4266 | "type": "library", 4267 | "autoload": { 4268 | "psr-4": { 4269 | "Symfony\\Component\\Stopwatch\\": "" 4270 | }, 4271 | "exclude-from-classmap": [ 4272 | "/Tests/" 4273 | ] 4274 | }, 4275 | "notification-url": "https://packagist.org/downloads/", 4276 | "license": [ 4277 | "MIT" 4278 | ], 4279 | "authors": [ 4280 | { 4281 | "name": "Fabien Potencier", 4282 | "email": "fabien@symfony.com" 4283 | }, 4284 | { 4285 | "name": "Symfony Community", 4286 | "homepage": "https://symfony.com/contributors" 4287 | } 4288 | ], 4289 | "description": "Symfony Stopwatch Component", 4290 | "homepage": "https://symfony.com", 4291 | "support": { 4292 | "source": "https://github.com/symfony/stopwatch/tree/v5.1.8" 4293 | }, 4294 | "funding": [ 4295 | { 4296 | "url": "https://symfony.com/sponsor", 4297 | "type": "custom" 4298 | }, 4299 | { 4300 | "url": "https://github.com/fabpot", 4301 | "type": "github" 4302 | }, 4303 | { 4304 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4305 | "type": "tidelift" 4306 | } 4307 | ], 4308 | "time": "2020-10-24T12:01:57+00:00" 4309 | }, 4310 | { 4311 | "name": "symfony/string", 4312 | "version": "v5.1.8", 4313 | "source": { 4314 | "type": "git", 4315 | "url": "https://github.com/symfony/string.git", 4316 | "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea" 4317 | }, 4318 | "dist": { 4319 | "type": "zip", 4320 | "url": "https://api.github.com/repos/symfony/string/zipball/a97573e960303db71be0dd8fda9be3bca5e0feea", 4321 | "reference": "a97573e960303db71be0dd8fda9be3bca5e0feea", 4322 | "shasum": "" 4323 | }, 4324 | "require": { 4325 | "php": ">=7.2.5", 4326 | "symfony/polyfill-ctype": "~1.8", 4327 | "symfony/polyfill-intl-grapheme": "~1.0", 4328 | "symfony/polyfill-intl-normalizer": "~1.0", 4329 | "symfony/polyfill-mbstring": "~1.0", 4330 | "symfony/polyfill-php80": "~1.15" 4331 | }, 4332 | "require-dev": { 4333 | "symfony/error-handler": "^4.4|^5.0", 4334 | "symfony/http-client": "^4.4|^5.0", 4335 | "symfony/translation-contracts": "^1.1|^2", 4336 | "symfony/var-exporter": "^4.4|^5.0" 4337 | }, 4338 | "type": "library", 4339 | "autoload": { 4340 | "psr-4": { 4341 | "Symfony\\Component\\String\\": "" 4342 | }, 4343 | "files": [ 4344 | "Resources/functions.php" 4345 | ], 4346 | "exclude-from-classmap": [ 4347 | "/Tests/" 4348 | ] 4349 | }, 4350 | "notification-url": "https://packagist.org/downloads/", 4351 | "license": [ 4352 | "MIT" 4353 | ], 4354 | "authors": [ 4355 | { 4356 | "name": "Nicolas Grekas", 4357 | "email": "p@tchwork.com" 4358 | }, 4359 | { 4360 | "name": "Symfony Community", 4361 | "homepage": "https://symfony.com/contributors" 4362 | } 4363 | ], 4364 | "description": "Symfony String component", 4365 | "homepage": "https://symfony.com", 4366 | "keywords": [ 4367 | "grapheme", 4368 | "i18n", 4369 | "string", 4370 | "unicode", 4371 | "utf-8", 4372 | "utf8" 4373 | ], 4374 | "support": { 4375 | "source": "https://github.com/symfony/string/tree/v5.1.8" 4376 | }, 4377 | "funding": [ 4378 | { 4379 | "url": "https://symfony.com/sponsor", 4380 | "type": "custom" 4381 | }, 4382 | { 4383 | "url": "https://github.com/fabpot", 4384 | "type": "github" 4385 | }, 4386 | { 4387 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4388 | "type": "tidelift" 4389 | } 4390 | ], 4391 | "time": "2020-10-24T12:01:57+00:00" 4392 | }, 4393 | { 4394 | "name": "symfony/var-dumper", 4395 | "version": "v5.1.8", 4396 | "source": { 4397 | "type": "git", 4398 | "url": "https://github.com/symfony/var-dumper.git", 4399 | "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a" 4400 | }, 4401 | "dist": { 4402 | "type": "zip", 4403 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/4e13f3fcefb1fcaaa5efb5403581406f4e840b9a", 4404 | "reference": "4e13f3fcefb1fcaaa5efb5403581406f4e840b9a", 4405 | "shasum": "" 4406 | }, 4407 | "require": { 4408 | "php": ">=7.2.5", 4409 | "symfony/polyfill-mbstring": "~1.0", 4410 | "symfony/polyfill-php80": "^1.15" 4411 | }, 4412 | "conflict": { 4413 | "phpunit/phpunit": "<5.4.3", 4414 | "symfony/console": "<4.4" 4415 | }, 4416 | "require-dev": { 4417 | "ext-iconv": "*", 4418 | "symfony/console": "^4.4|^5.0", 4419 | "symfony/process": "^4.4|^5.0", 4420 | "twig/twig": "^2.4|^3.0" 4421 | }, 4422 | "suggest": { 4423 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 4424 | "ext-intl": "To show region name in time zone dump", 4425 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 4426 | }, 4427 | "bin": [ 4428 | "Resources/bin/var-dump-server" 4429 | ], 4430 | "type": "library", 4431 | "autoload": { 4432 | "files": [ 4433 | "Resources/functions/dump.php" 4434 | ], 4435 | "psr-4": { 4436 | "Symfony\\Component\\VarDumper\\": "" 4437 | }, 4438 | "exclude-from-classmap": [ 4439 | "/Tests/" 4440 | ] 4441 | }, 4442 | "notification-url": "https://packagist.org/downloads/", 4443 | "license": [ 4444 | "MIT" 4445 | ], 4446 | "authors": [ 4447 | { 4448 | "name": "Nicolas Grekas", 4449 | "email": "p@tchwork.com" 4450 | }, 4451 | { 4452 | "name": "Symfony Community", 4453 | "homepage": "https://symfony.com/contributors" 4454 | } 4455 | ], 4456 | "description": "Symfony mechanism for exploring and dumping PHP variables", 4457 | "homepage": "https://symfony.com", 4458 | "keywords": [ 4459 | "debug", 4460 | "dump" 4461 | ], 4462 | "support": { 4463 | "source": "https://github.com/symfony/var-dumper/tree/v5.1.8" 4464 | }, 4465 | "funding": [ 4466 | { 4467 | "url": "https://symfony.com/sponsor", 4468 | "type": "custom" 4469 | }, 4470 | { 4471 | "url": "https://github.com/fabpot", 4472 | "type": "github" 4473 | }, 4474 | { 4475 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 4476 | "type": "tidelift" 4477 | } 4478 | ], 4479 | "time": "2020-10-27T10:11:13+00:00" 4480 | }, 4481 | { 4482 | "name": "theseer/tokenizer", 4483 | "version": "1.2.0", 4484 | "source": { 4485 | "type": "git", 4486 | "url": "https://github.com/theseer/tokenizer.git", 4487 | "reference": "75a63c33a8577608444246075ea0af0d052e452a" 4488 | }, 4489 | "dist": { 4490 | "type": "zip", 4491 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", 4492 | "reference": "75a63c33a8577608444246075ea0af0d052e452a", 4493 | "shasum": "" 4494 | }, 4495 | "require": { 4496 | "ext-dom": "*", 4497 | "ext-tokenizer": "*", 4498 | "ext-xmlwriter": "*", 4499 | "php": "^7.2 || ^8.0" 4500 | }, 4501 | "type": "library", 4502 | "autoload": { 4503 | "classmap": [ 4504 | "src/" 4505 | ] 4506 | }, 4507 | "notification-url": "https://packagist.org/downloads/", 4508 | "license": [ 4509 | "BSD-3-Clause" 4510 | ], 4511 | "authors": [ 4512 | { 4513 | "name": "Arne Blankerts", 4514 | "email": "arne@blankerts.de", 4515 | "role": "Developer" 4516 | } 4517 | ], 4518 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4519 | "support": { 4520 | "issues": "https://github.com/theseer/tokenizer/issues", 4521 | "source": "https://github.com/theseer/tokenizer/tree/master" 4522 | }, 4523 | "funding": [ 4524 | { 4525 | "url": "https://github.com/theseer", 4526 | "type": "github" 4527 | } 4528 | ], 4529 | "time": "2020-07-12T23:59:07+00:00" 4530 | }, 4531 | { 4532 | "name": "webmozart/assert", 4533 | "version": "1.9.1", 4534 | "source": { 4535 | "type": "git", 4536 | "url": "https://github.com/webmozart/assert.git", 4537 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" 4538 | }, 4539 | "dist": { 4540 | "type": "zip", 4541 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", 4542 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", 4543 | "shasum": "" 4544 | }, 4545 | "require": { 4546 | "php": "^5.3.3 || ^7.0 || ^8.0", 4547 | "symfony/polyfill-ctype": "^1.8" 4548 | }, 4549 | "conflict": { 4550 | "phpstan/phpstan": "<0.12.20", 4551 | "vimeo/psalm": "<3.9.1" 4552 | }, 4553 | "require-dev": { 4554 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 4555 | }, 4556 | "type": "library", 4557 | "autoload": { 4558 | "psr-4": { 4559 | "Webmozart\\Assert\\": "src/" 4560 | } 4561 | }, 4562 | "notification-url": "https://packagist.org/downloads/", 4563 | "license": [ 4564 | "MIT" 4565 | ], 4566 | "authors": [ 4567 | { 4568 | "name": "Bernhard Schussek", 4569 | "email": "bschussek@gmail.com" 4570 | } 4571 | ], 4572 | "description": "Assertions to validate method input/output with nice error messages.", 4573 | "keywords": [ 4574 | "assert", 4575 | "check", 4576 | "validate" 4577 | ], 4578 | "support": { 4579 | "issues": "https://github.com/webmozart/assert/issues", 4580 | "source": "https://github.com/webmozart/assert/tree/master" 4581 | }, 4582 | "time": "2020-07-08T17:02:28+00:00" 4583 | } 4584 | ], 4585 | "aliases": [], 4586 | "minimum-stability": "stable", 4587 | "stability-flags": [], 4588 | "prefer-stable": false, 4589 | "prefer-lowest": false, 4590 | "platform": { 4591 | "php": ">=7.4", 4592 | "ext-json": "*", 4593 | "ext-curl": "*" 4594 | }, 4595 | "platform-dev": [], 4596 | "plugin-api-version": "2.0.0" 4597 | } 4598 | -------------------------------------------------------------------------------- /examples/clientInfo.php: -------------------------------------------------------------------------------- 1 | personal->getClientInfo(); 11 | } catch (Exception $exception) { 12 | exit($exception->getMessage()); 13 | } 14 | 15 | echo $clientInfo->name(). '\n'; 16 | -------------------------------------------------------------------------------- /examples/currencyInfo.php: -------------------------------------------------------------------------------- 1 | bank->getCurrencyRates(); 11 | 12 | /** @var CurrencyInfo $currencyInfo */ 13 | foreach ($rates->rates() as $currencyInfo) { 14 | echo ($currencyInfo->rateBuy() ?? $currencyInfo->rateCross() ?? $currencyInfo->rateSell()) . "\n"; 15 | } -------------------------------------------------------------------------------- /examples/statements.php: -------------------------------------------------------------------------------- 1 | personal->getStatement($argv[2], (new DateTime())->modify('-1 day')); 12 | } catch (InvalidAccountException $exception) { 13 | exit('Invalid account '.$argv[2]); 14 | } catch (Exception $exception) { 15 | exit($exception->getMessage()); 16 | } 17 | 18 | foreach ($statements->statements() as $statement) { 19 | echo $statement->id() . "\n"; 20 | } -------------------------------------------------------------------------------- /examples/webhook.php: -------------------------------------------------------------------------------- 1 | personal->setWebhook('https://google.com'); 10 | $monobank->personal->deleteWebhook(); 11 | 12 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | tests/ 6 | 7 | 8 | 9 | 10 | 11 | src 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/Monobank/Exception/Factory.php: -------------------------------------------------------------------------------- 1 | getBody()->getContents(), true)['errorDescription'] ?? 'Unknown error'; 22 | 23 | switch ($errorDescription) { 24 | case self::INVALID_ACCOUNT: 25 | return new InvalidAccountException($errorDescription); 26 | case self::UNKNOWN_TOKEN: 27 | return new UnknownTokenException($errorDescription); 28 | case self::TOO_MANY_REQUESTS: 29 | return new TooManyRequestsException($errorDescription); 30 | case self::INTERNAL_ERROR: 31 | return new InternalErrorException($errorDescription); 32 | default: 33 | return new MonobankException($errorDescription); 34 | } 35 | } 36 | } 37 | -------------------------------------------------------------------------------- /src/Monobank/Exception/InternalErrorException.php: -------------------------------------------------------------------------------- 1 | self::$baseUrl, 23 | 'headers' => [ 24 | 'X-Token' => $accessToken, 25 | ], 26 | ]); 27 | 28 | $this->personal = new Personal($client); 29 | $this->bank = new Bank($client); 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /src/Monobank/Request/AbstractRequest.php: -------------------------------------------------------------------------------- 1 | client = $client; 25 | } 26 | 27 | /** 28 | * @throws InvalidAccountException 29 | * @throws InternalErrorException 30 | * @throws MonobankException 31 | * @throws TooManyRequestsException 32 | * @throws UnknownTokenException 33 | */ 34 | protected function makeRequest(Request $request): array 35 | { 36 | try { 37 | $response = $this->client->send($request); 38 | } catch (RequestException $exception) { 39 | throw Factory::createFromResponse($exception->getResponse()); 40 | } 41 | 42 | return json_decode($response->getBody()->getContents(), true); 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /src/Monobank/Request/Bank.php: -------------------------------------------------------------------------------- 1 | makeRequest(new Request('GET', '/bank/currency')); 23 | 24 | return CurrencyRatesResponse::fromResponse($httpResponse); 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /src/Monobank/Request/Personal.php: -------------------------------------------------------------------------------- 1 | makeRequest(new Request('GET', '/personal/client-info')); 29 | 30 | return ClientInfoResponse::fromResponse($httpResponse); 31 | } 32 | 33 | /** 34 | * @throws InvalidAccountException 35 | * @throws InternalErrorException 36 | * @throws MonobankException 37 | * @throws TooManyRequestsException 38 | * @throws UnknownTokenException 39 | * @throws InvalidAccountException 40 | */ 41 | public function getStatement(string $account, DateTime $from, DateTime $to = null): StatementResponse 42 | { 43 | $httpResponse = $this->makeRequest( 44 | new Request( 45 | 'GET', 46 | sprintf('/personal/statement/%s/%s/%s', $account, $from->getTimestamp(), $to ? $to->getTimestamp() : '') 47 | ) 48 | ); 49 | 50 | return StatementResponse::fromResponse($httpResponse); 51 | } 52 | 53 | /** 54 | * @throws InternalErrorException 55 | * @throws MonobankException 56 | * @throws TooManyRequestsException 57 | * @throws UnknownTokenException 58 | */ 59 | public function setWebhook(string $url): bool 60 | { 61 | $httpResponse = $this->makeRequest( 62 | new Request( 63 | 'POST', 64 | '/personal/webhook', 65 | ['Content-type' => 'application/json'], 66 | json_encode(['webHookUrl' => $url]) 67 | ) 68 | ); 69 | 70 | return ($httpResponse['status'] ?? null) === 'ok'; 71 | } 72 | 73 | /** 74 | * @throws InternalErrorException 75 | * @throws MonobankException 76 | * @throws TooManyRequestsException 77 | * @throws UnknownTokenException 78 | */ 79 | public function deleteWebhook(): bool 80 | { 81 | return $this->setWebhook(''); 82 | } 83 | } 84 | -------------------------------------------------------------------------------- /src/Monobank/Response/ClientInfoResponse.php: -------------------------------------------------------------------------------- 1 | name = $name; 18 | $this->accounts = $accounts; 19 | } 20 | 21 | public static function fromResponse(array $data): self 22 | { 23 | $accounts = array_map(function ($account) { 24 | return Account::fromResponse($account); 25 | }, $data['accounts']); 26 | 27 | return new self($data['name'], $accounts); 28 | } 29 | 30 | public function name(): string 31 | { 32 | return $this->name; 33 | } 34 | 35 | public function accounts(): array 36 | { 37 | return $this->accounts; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /src/Monobank/Response/CurrencyRatesResponse.php: -------------------------------------------------------------------------------- 1 | rates = $rates; 16 | } 17 | 18 | public static function fromResponse(array $data): self 19 | { 20 | return new self(array_map(function (array $currencyInfo) { 21 | return CurrencyInfo::fromResponse($currencyInfo); 22 | }, $data)); 23 | } 24 | 25 | public function rates(): array 26 | { 27 | return $this->rates; 28 | } 29 | } 30 | -------------------------------------------------------------------------------- /src/Monobank/Response/Model/Account.php: -------------------------------------------------------------------------------- 1 | id = $id; 22 | $this->balance = $balance; 23 | $this->creditLimit = $creditLimit; 24 | $this->currencyCode = $currencyCode; 25 | $this->cashbackType = $cashbackType; 26 | } 27 | 28 | public static function fromResponse(array $data): self 29 | { 30 | return new self( 31 | $data['id'], 32 | $data['balance'], 33 | $data['creditLimit'], 34 | $data['currencyCode'], 35 | $data['cashbackType'] 36 | ); 37 | } 38 | 39 | public function id(): string 40 | { 41 | return $this->id; 42 | } 43 | 44 | public function balance(): int 45 | { 46 | return $this->balance; 47 | } 48 | 49 | public function creditLimit(): int 50 | { 51 | return $this->creditLimit; 52 | } 53 | 54 | public function currencyCode(): int 55 | { 56 | return $this->currencyCode; 57 | } 58 | 59 | public function cashbackType(): string 60 | { 61 | return $this->cashbackType; 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/Monobank/Response/Model/CurrencyInfo.php: -------------------------------------------------------------------------------- 1 | currencyCodeA = $currencyCodeA; 33 | $this->currencyCodeB = $currencyCodeB; 34 | $this->date = $date; 35 | $this->rateSell = $rateSell; 36 | $this->rateBuy = $rateBuy; 37 | $this->rateCross = $rateCross; 38 | } 39 | 40 | public static function fromResponse(array $data) 41 | { 42 | return new self( 43 | $data['currencyCodeA'], 44 | $data['currencyCodeB'], 45 | $data['date'], 46 | $data['rateSell'] ?? null, 47 | $data['rateBuy'] ?? null, 48 | $data['rateCross'] ?? null 49 | ); 50 | } 51 | 52 | public function currencyCodeA(): int 53 | { 54 | return $this->currencyCodeA; 55 | } 56 | 57 | public function currencyCodeB(): int 58 | { 59 | return $this->currencyCodeB; 60 | } 61 | 62 | public function date(): DateTimeInterface 63 | { 64 | return (new DateTime())->setTimestamp($this->date); 65 | } 66 | 67 | public function rateSell(): ?float 68 | { 69 | return $this->rateSell; 70 | } 71 | 72 | public function rateBuy(): ?float 73 | { 74 | return $this->rateBuy; 75 | } 76 | 77 | public function rateCross(): ?float 78 | { 79 | return $this->rateCross; 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /src/Monobank/Response/Model/Statement.php: -------------------------------------------------------------------------------- 1 | id = $id; 48 | $this->time = $time; 49 | $this->description = $description; 50 | $this->mcc = $mcc; 51 | $this->hold = $hold; 52 | $this->amount = $amount; 53 | $this->operationAmount = $operationAmount; 54 | $this->currencyCode = $currencyCode; 55 | $this->commissionRate = $commissionRate; 56 | $this->cashbackAmount = $cashbackAmount; 57 | $this->balance = $balance; 58 | } 59 | 60 | public static function fromResponse(array $data): self 61 | { 62 | return new self( 63 | $data['id'], 64 | $data['time'], 65 | $data['description'], 66 | $data['mcc'], 67 | $data['hold'], 68 | $data['amount'], 69 | $data['operationAmount'], 70 | $data['currencyCode'], 71 | $data['commissionRate'], 72 | $data['cashbackAmount'], 73 | $data['balance'] 74 | ); 75 | } 76 | 77 | public function id(): string 78 | { 79 | return $this->id; 80 | } 81 | 82 | public function time(): DateTimeInterface 83 | { 84 | return (new DateTime())->setTimestamp($this->time); 85 | } 86 | 87 | public function description(): string 88 | { 89 | return $this->description; 90 | } 91 | 92 | public function mcc(): int 93 | { 94 | return $this->mcc; 95 | } 96 | 97 | public function isHold(): bool 98 | { 99 | return $this->hold; 100 | } 101 | 102 | public function amount(): int 103 | { 104 | return $this->amount; 105 | } 106 | 107 | public function operationAmount(): int 108 | { 109 | return $this->operationAmount; 110 | } 111 | 112 | public function currencyCode(): int 113 | { 114 | return $this->currencyCode; 115 | } 116 | 117 | public function commissionRate(): int 118 | { 119 | return $this->commissionRate; 120 | } 121 | 122 | public function cashbackAmount(): int 123 | { 124 | return $this->cashbackAmount; 125 | } 126 | 127 | public function balance(): int 128 | { 129 | return $this->balance; 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /src/Monobank/Response/StatementResponse.php: -------------------------------------------------------------------------------- 1 | statements = $statements; 16 | } 17 | 18 | public static function fromResponse(array $data): self 19 | { 20 | return new self(array_map(function (array $statement) { 21 | return Statement::fromResponse($statement); 22 | }, $data)); 23 | } 24 | 25 | /** 26 | * @return array|Statement[] 27 | */ 28 | public function statements(): array 29 | { 30 | return $this->statements; 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/Exception/FactoryTest.php: -------------------------------------------------------------------------------- 1 | 'invalid account'])); 21 | $exception = Factory::createFromResponse($response); 22 | $this->assertInstanceOf(InvalidAccountException::class, $exception); 23 | } 24 | 25 | public function testUnknownTokenException(): void 26 | { 27 | $response = new Response(400, [], json_encode(['errorDescription' => 'Unknown \'X-Token\''])); 28 | $exception = Factory::createFromResponse($response); 29 | $this->assertInstanceOf(UnknownTokenException::class, $exception); 30 | } 31 | 32 | public function testTooManyRequestsException(): void 33 | { 34 | $response = new Response(429, [], json_encode(['errorDescription' => 'Too many requests'])); 35 | $exception = Factory::createFromResponse($response); 36 | $this->assertInstanceOf(TooManyRequestsException::class, $exception); 37 | } 38 | 39 | public function testInternalErrorException(): void 40 | { 41 | $response = new Response(500, [], json_encode(['errorDescription' => 'internal error'])); 42 | $exception = Factory::createFromResponse($response); 43 | $this->assertInstanceOf(InternalErrorException::class, $exception); 44 | } 45 | 46 | public function testMonobankException(): void 47 | { 48 | $response = new Response(400, [], json_encode(['errorDescription' => 'any other text'])); 49 | $exception = Factory::createFromResponse($response); 50 | $this->assertInstanceOf(MonobankException::class, $exception); 51 | } 52 | } 53 | -------------------------------------------------------------------------------- /tests/Response/Model/AccountTest.php: -------------------------------------------------------------------------------- 1 | 'id', 16 | 'balance' => 5000, 17 | 'creditLimit' => 5000, 18 | 'currencyCode' => 1, 19 | 'cashbackType' => 'test', 20 | ]; 21 | 22 | $account = Account::fromResponse($data); 23 | 24 | $this->assertEquals('id', $account->id()); 25 | $this->assertEquals(5000, $account->balance()); 26 | $this->assertEquals(5000, $account->creditLimit()); 27 | $this->assertEquals(1, $account->currencyCode()); 28 | $this->assertEquals('test', $account->cashbackType()); 29 | } 30 | } 31 | -------------------------------------------------------------------------------- /tests/Response/Model/CurrencyInfoTest.php: -------------------------------------------------------------------------------- 1 | 1, 19 | 'currencyCodeB' => 2, 20 | 'date' => 1562057001, 21 | 'rateSell' => $rateSell, 22 | 'rateBuy' => $rateBuy, 23 | 'rateCross' => $rateCross, 24 | ]; 25 | 26 | $currencyInfo = CurrencyInfo::fromResponse($data); 27 | 28 | $this->assertEquals(1, $currencyInfo->currencyCodeA()); 29 | $this->assertEquals(2, $currencyInfo->currencyCodeB()); 30 | $this->assertEquals((new \DateTime())->setTimestamp(1562057001), $currencyInfo->date()); 31 | $this->assertEquals($rateSell, $currencyInfo->rateSell()); 32 | $this->assertEquals($rateBuy, $currencyInfo->rateBuy()); 33 | $this->assertEquals($rateCross, $currencyInfo->rateCross()); 34 | } 35 | 36 | public function ratesDataProvider() 37 | { 38 | return [ 39 | [5.2, 5.3, 5.6], 40 | [5.2, null, 5.6], 41 | [null, 5.3, 5.6], 42 | [5.2, 5.3, null], 43 | [null, null, null], 44 | ]; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /tests/Response/Model/StatementTest.php: -------------------------------------------------------------------------------- 1 | 'test', 16 | 'time' => 1562057001, 17 | 'description' => 'test', 18 | 'mcc' => 123, 19 | 'hold' => false, 20 | 'amount' => 500, 21 | 'operationAmount' => 500, 22 | 'currencyCode' => 1, 23 | 'commissionRate' => 50, 24 | 'cashbackAmount' => 50, 25 | 'balance' => 1000, 26 | ]; 27 | 28 | $statement = Statement::fromResponse($data); 29 | 30 | $this->assertEquals('test', $statement->id()); 31 | $this->assertEquals((new \DateTime())->setTimestamp(1562057001), $statement->time()); 32 | $this->assertEquals('test', $statement->description()); 33 | $this->assertEquals(123, $statement->mcc()); 34 | $this->assertEquals(false, $statement->isHold()); 35 | $this->assertEquals(500, $statement->amount()); 36 | $this->assertEquals(500, $statement->operationAmount()); 37 | $this->assertEquals(1, $statement->currencyCode()); 38 | $this->assertEquals(50, $statement->commissionRate()); 39 | $this->assertEquals(50, $statement->cashbackAmount()); 40 | $this->assertEquals(1000, $statement->balance()); 41 | } 42 | } 43 | --------------------------------------------------------------------------------