├── .gitignore ├── src ├── Exception.php └── Coinmarketcap.php ├── .travis.yml ├── phpunit.xml ├── composer.json ├── LICENSE ├── README.md ├── tests └── CoinmarketcapTest.php └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | -------------------------------------------------------------------------------- /src/Exception.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | tests/ 6 | 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rentberry/coinmarketcap-api", 3 | "description": "Coinmarketcap API PHP client", 4 | "type": "library", 5 | "require": { 6 | "php": ">=7.1", 7 | "ext-bcmath": "@stable", 8 | "guzzlehttp/guzzle": "^6.3 || ^7.0" 9 | }, 10 | "require-dev": { 11 | "phpunit/phpunit": "^6.5" 12 | }, 13 | "license": "MIT", 14 | "minimum-stability": "stable", 15 | "autoload": { 16 | "psr-4": { 17 | "Rentberry\\Coinmarketcap\\": "src/" 18 | } 19 | }, 20 | "autoload-dev": { 21 | "psr-4": { 22 | "Rentberry\\Coinmarketcap\\Tests\\": "tests/" 23 | } 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Rentberry 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 | Coinmarketcap.com API Client 2 | --- 3 | [![Build Status](https://img.shields.io/travis/Rentberry/coinmarketcap-api-php.svg?style=flat-square)](https://travis-ci.org/Rentberry/coinmarketcap-api-php) 4 | [![License](https://img.shields.io/packagist/l/rentberry/coinmarketcap-api.svg?style=flat-square)](https://packagist.org/packages/rentberry/coinmarketcap-api) 5 | [![Latest Stable Version](https://img.shields.io/packagist/v/rentberry/coinmarketcap-api.svg?style=flat-square)](https://packagist.org/packages/rentberry/coinmarketcap-api) 6 | [![Total Downloads](https://img.shields.io/packagist/dt/rentberry/coinmarketcap-api.svg?style=flat-square)](https://packagist.org/packages/rentberry/coinmarketcap-api) 7 | 8 | PHP client for [CoinMarketCap JSON API](https://coinmarketcap.com/api/) 9 | 10 | # Installation 11 | ```bash 12 | composer require rentberry/coinmarketcap-api 13 | ``` 14 | 15 | # Usage 16 | ```php 17 | $client = new Rentberry\Coinmarketcap\Coinmarketcap(); 18 | $client->getTickers(); 19 | $client->getTicker('bitcoin'); 20 | $client->getExchangeRate('ethereum', 'USD'); 21 | $client->convertToFiat(10, 'ethereum', 'USD'); 22 | $client->convertToCrypto(10, 'USD', 'ethereum'); 23 | $client->getGlobal(); 24 | ``` 25 | 26 | # License 27 | MIT. See [LICENSE](https://github.com/rentberry/coinmarketcap-api-php/blob/master/LICENSE) 28 | -------------------------------------------------------------------------------- /tests/CoinmarketcapTest.php: -------------------------------------------------------------------------------- 1 | client = new Coinmarketcap(); 19 | } 20 | 21 | public function testGetTicker() 22 | { 23 | $ticker = $this->client->getTicker('bitcoin'); 24 | $this->assertArrayHasKey('id', $ticker); 25 | } 26 | 27 | /** 28 | * @expectedException Exception 29 | * @expectedExceptionCode 404 30 | */ 31 | public function testGetInvalidTicker() 32 | { 33 | $this->client->getTicker('invalid_id'); 34 | } 35 | 36 | public function testGetTickers() 37 | { 38 | $tickers = $this->client->getTickers(10, 10); 39 | $this->assertCount(10, $tickers); 40 | } 41 | 42 | public function testGetGlobal() 43 | { 44 | $data = $this->client->getGlobal(); 45 | $this->assertArrayHasKey('last_updated', $data); 46 | } 47 | 48 | public function testGetExchangeRate() 49 | { 50 | $rate = $this->client->getExchangeRate('ethereum', 'USD'); 51 | $this->assertInternalType('string', $rate); 52 | } 53 | 54 | public function testConvertToCrypto() 55 | { 56 | $mock = $this->getMockBuilder(Coinmarketcap::class)->setMethods(['getTicker'])->getMock(); 57 | $mock->method('getTicker') 58 | ->willReturn(['price_usd' => '1000.10']); 59 | 60 | $amount = $mock->convertToCrypto(10, 'USD', 'ethereum'); 61 | $this->assertEquals('0.009999000099990000', $amount); 62 | } 63 | 64 | public function testConvertToFiat() 65 | { 66 | $mock = $this->getMockBuilder(Coinmarketcap::class)->setMethods(['getTicker'])->getMock(); 67 | $mock->method('getTicker') 68 | ->willReturn(['price_usd' => '1000.10']); 69 | 70 | $amount = $mock->convertToFiat(10, 'ethereum', 'USD'); 71 | $this->assertEquals('10001.00', $amount); 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /src/Coinmarketcap.php: -------------------------------------------------------------------------------- 1 | version = $version; 24 | $this->client = new Client([ 25 | 'base_uri' => \sprintf('https://api.coinmarketcap.com/%s/', $this->version), 26 | 'timeout' => $timeout, 27 | ]); 28 | } 29 | 30 | /** 31 | * @param null $limit 32 | * @param null $start 33 | * @param null $convert 34 | * @return array 35 | * @throws \Rentberry\Coinmarketcap\Exception 36 | */ 37 | public function getTickers($limit = null, $start = null, $convert = null): array 38 | { 39 | $req = new Request('GET', 'ticker'); 40 | 41 | return $this->makeRequest($req, [ 42 | 'query' => [ 43 | 'limit' => $limit, 44 | 'start' => $start, 45 | 'convert' => $convert 46 | ] 47 | ]); 48 | } 49 | 50 | /** 51 | * @param string $id 52 | * @param null $convert 53 | * @return array 54 | * @throws \Rentberry\Coinmarketcap\Exception 55 | */ 56 | public function getTicker(string $id, $convert = null): array 57 | { 58 | $req = new Request('GET', \sprintf('ticker/%s', $id)); 59 | 60 | $data = $this->makeRequest($req, [ 61 | 'query' => [ 62 | 'convert' => $convert 63 | ] 64 | ]); 65 | 66 | return \array_shift($data); 67 | } 68 | 69 | /** 70 | * @param null $convert 71 | * @return array 72 | * @throws \Rentberry\Coinmarketcap\Exception 73 | */ 74 | public function getGlobal($convert = null): array 75 | { 76 | $req = new Request('GET', 'global'); 77 | 78 | return $this->makeRequest($req, [ 79 | 'query' => [ 80 | 'convert' => $convert 81 | ] 82 | ]); 83 | } 84 | 85 | /** 86 | * @param int|float|string $amount 87 | * @param string $from 88 | * @param string $id 89 | * @param int $scale 90 | * @return string 91 | * @throws \Rentberry\Coinmarketcap\Exception 92 | */ 93 | public function convertToCrypto($amount, string $from, string $id, int $scale = 18): string 94 | { 95 | $rate = $this->getExchangeRate($id, $from); 96 | 97 | return \bcdiv((string) $amount, $rate, $scale); 98 | } 99 | 100 | /** 101 | * @param float $amount 102 | * @param string $id 103 | * @param string $to 104 | * @param int $scale 105 | * @return string 106 | * @throws \Rentberry\Coinmarketcap\Exception 107 | */ 108 | public function convertToFiat($amount, string $id, string $to, int $scale = 4): string 109 | { 110 | $rate = $this->getExchangeRate($id, $to); 111 | 112 | return \bcmul((string) $amount, $rate, $scale); 113 | } 114 | 115 | /** 116 | * @param $id 117 | * @param $convert 118 | * @return mixed 119 | * @throws \Rentberry\Coinmarketcap\Exception 120 | */ 121 | public function getExchangeRate($id, $convert): string 122 | { 123 | $ticker = $this->getTicker($id, $convert); 124 | 125 | $priceKey = \sprintf('price_%s', \strtolower($convert)); 126 | 127 | if (!\array_key_exists($priceKey, $ticker) || $ticker[$priceKey] === 0) { 128 | throw new Exception('Invalid currency ticker'); 129 | } 130 | 131 | return (string) $ticker[$priceKey]; 132 | } 133 | 134 | /** 135 | * @param Request $request 136 | * @param array $options 137 | * @return array 138 | * @throws \Rentberry\Coinmarketcap\Exception 139 | */ 140 | private function makeRequest(Request $request, array $options = []): array 141 | { 142 | try { 143 | $res = $this->client->send($request, $options); 144 | } catch (ClientException $e) { 145 | throw new Exception($e->getMessage(), $e->getCode(), $e); 146 | } 147 | 148 | try { 149 | $body = $res->getBody()->getContents(); 150 | } catch (\RuntimeException $e) { 151 | throw new Exception($e->getMessage(), $e->getCode(), $e); 152 | } 153 | 154 | return \json_decode($body, true); 155 | } 156 | } 157 | -------------------------------------------------------------------------------- /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#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "99d9d95b6b0b67fc2c37b343dd45b378", 8 | "packages": [ 9 | { 10 | "name": "guzzlehttp/guzzle", 11 | "version": "6.3.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/guzzle/guzzle.git", 15 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", 20 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "guzzlehttp/promises": "^1.0", 25 | "guzzlehttp/psr7": "^1.4", 26 | "php": ">=5.5" 27 | }, 28 | "require-dev": { 29 | "ext-curl": "*", 30 | "phpunit/phpunit": "^4.0 || ^5.0", 31 | "psr/log": "^1.0" 32 | }, 33 | "suggest": { 34 | "psr/log": "Required for using the Log middleware" 35 | }, 36 | "type": "library", 37 | "extra": { 38 | "branch-alias": { 39 | "dev-master": "6.2-dev" 40 | } 41 | }, 42 | "autoload": { 43 | "files": [ 44 | "src/functions_include.php" 45 | ], 46 | "psr-4": { 47 | "GuzzleHttp\\": "src/" 48 | } 49 | }, 50 | "notification-url": "https://packagist.org/downloads/", 51 | "license": [ 52 | "MIT" 53 | ], 54 | "authors": [ 55 | { 56 | "name": "Michael Dowling", 57 | "email": "mtdowling@gmail.com", 58 | "homepage": "https://github.com/mtdowling" 59 | } 60 | ], 61 | "description": "Guzzle is a PHP HTTP client library", 62 | "homepage": "http://guzzlephp.org/", 63 | "keywords": [ 64 | "client", 65 | "curl", 66 | "framework", 67 | "http", 68 | "http client", 69 | "rest", 70 | "web service" 71 | ], 72 | "time": "2017-06-22T18:50:49+00:00" 73 | }, 74 | { 75 | "name": "guzzlehttp/promises", 76 | "version": "v1.3.1", 77 | "source": { 78 | "type": "git", 79 | "url": "https://github.com/guzzle/promises.git", 80 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 81 | }, 82 | "dist": { 83 | "type": "zip", 84 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 85 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 86 | "shasum": "" 87 | }, 88 | "require": { 89 | "php": ">=5.5.0" 90 | }, 91 | "require-dev": { 92 | "phpunit/phpunit": "^4.0" 93 | }, 94 | "type": "library", 95 | "extra": { 96 | "branch-alias": { 97 | "dev-master": "1.4-dev" 98 | } 99 | }, 100 | "autoload": { 101 | "psr-4": { 102 | "GuzzleHttp\\Promise\\": "src/" 103 | }, 104 | "files": [ 105 | "src/functions_include.php" 106 | ] 107 | }, 108 | "notification-url": "https://packagist.org/downloads/", 109 | "license": [ 110 | "MIT" 111 | ], 112 | "authors": [ 113 | { 114 | "name": "Michael Dowling", 115 | "email": "mtdowling@gmail.com", 116 | "homepage": "https://github.com/mtdowling" 117 | } 118 | ], 119 | "description": "Guzzle promises library", 120 | "keywords": [ 121 | "promise" 122 | ], 123 | "time": "2016-12-20T10:07:11+00:00" 124 | }, 125 | { 126 | "name": "guzzlehttp/psr7", 127 | "version": "1.4.2", 128 | "source": { 129 | "type": "git", 130 | "url": "https://github.com/guzzle/psr7.git", 131 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" 132 | }, 133 | "dist": { 134 | "type": "zip", 135 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 136 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 137 | "shasum": "" 138 | }, 139 | "require": { 140 | "php": ">=5.4.0", 141 | "psr/http-message": "~1.0" 142 | }, 143 | "provide": { 144 | "psr/http-message-implementation": "1.0" 145 | }, 146 | "require-dev": { 147 | "phpunit/phpunit": "~4.0" 148 | }, 149 | "type": "library", 150 | "extra": { 151 | "branch-alias": { 152 | "dev-master": "1.4-dev" 153 | } 154 | }, 155 | "autoload": { 156 | "psr-4": { 157 | "GuzzleHttp\\Psr7\\": "src/" 158 | }, 159 | "files": [ 160 | "src/functions_include.php" 161 | ] 162 | }, 163 | "notification-url": "https://packagist.org/downloads/", 164 | "license": [ 165 | "MIT" 166 | ], 167 | "authors": [ 168 | { 169 | "name": "Michael Dowling", 170 | "email": "mtdowling@gmail.com", 171 | "homepage": "https://github.com/mtdowling" 172 | }, 173 | { 174 | "name": "Tobias Schultze", 175 | "homepage": "https://github.com/Tobion" 176 | } 177 | ], 178 | "description": "PSR-7 message implementation that also provides common utility methods", 179 | "keywords": [ 180 | "http", 181 | "message", 182 | "request", 183 | "response", 184 | "stream", 185 | "uri", 186 | "url" 187 | ], 188 | "time": "2017-03-20T17:10:46+00:00" 189 | }, 190 | { 191 | "name": "psr/http-message", 192 | "version": "1.0.1", 193 | "source": { 194 | "type": "git", 195 | "url": "https://github.com/php-fig/http-message.git", 196 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 197 | }, 198 | "dist": { 199 | "type": "zip", 200 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 201 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 202 | "shasum": "" 203 | }, 204 | "require": { 205 | "php": ">=5.3.0" 206 | }, 207 | "type": "library", 208 | "extra": { 209 | "branch-alias": { 210 | "dev-master": "1.0.x-dev" 211 | } 212 | }, 213 | "autoload": { 214 | "psr-4": { 215 | "Psr\\Http\\Message\\": "src/" 216 | } 217 | }, 218 | "notification-url": "https://packagist.org/downloads/", 219 | "license": [ 220 | "MIT" 221 | ], 222 | "authors": [ 223 | { 224 | "name": "PHP-FIG", 225 | "homepage": "http://www.php-fig.org/" 226 | } 227 | ], 228 | "description": "Common interface for HTTP messages", 229 | "homepage": "https://github.com/php-fig/http-message", 230 | "keywords": [ 231 | "http", 232 | "http-message", 233 | "psr", 234 | "psr-7", 235 | "request", 236 | "response" 237 | ], 238 | "time": "2016-08-06T14:39:51+00:00" 239 | } 240 | ], 241 | "packages-dev": [ 242 | { 243 | "name": "doctrine/instantiator", 244 | "version": "1.1.0", 245 | "source": { 246 | "type": "git", 247 | "url": "https://github.com/doctrine/instantiator.git", 248 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 249 | }, 250 | "dist": { 251 | "type": "zip", 252 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 253 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 254 | "shasum": "" 255 | }, 256 | "require": { 257 | "php": "^7.1" 258 | }, 259 | "require-dev": { 260 | "athletic/athletic": "~0.1.8", 261 | "ext-pdo": "*", 262 | "ext-phar": "*", 263 | "phpunit/phpunit": "^6.2.3", 264 | "squizlabs/php_codesniffer": "^3.0.2" 265 | }, 266 | "type": "library", 267 | "extra": { 268 | "branch-alias": { 269 | "dev-master": "1.2.x-dev" 270 | } 271 | }, 272 | "autoload": { 273 | "psr-4": { 274 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 275 | } 276 | }, 277 | "notification-url": "https://packagist.org/downloads/", 278 | "license": [ 279 | "MIT" 280 | ], 281 | "authors": [ 282 | { 283 | "name": "Marco Pivetta", 284 | "email": "ocramius@gmail.com", 285 | "homepage": "http://ocramius.github.com/" 286 | } 287 | ], 288 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 289 | "homepage": "https://github.com/doctrine/instantiator", 290 | "keywords": [ 291 | "constructor", 292 | "instantiate" 293 | ], 294 | "time": "2017-07-22T11:58:36+00:00" 295 | }, 296 | { 297 | "name": "myclabs/deep-copy", 298 | "version": "1.7.0", 299 | "source": { 300 | "type": "git", 301 | "url": "https://github.com/myclabs/DeepCopy.git", 302 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" 303 | }, 304 | "dist": { 305 | "type": "zip", 306 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 307 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 308 | "shasum": "" 309 | }, 310 | "require": { 311 | "php": "^5.6 || ^7.0" 312 | }, 313 | "require-dev": { 314 | "doctrine/collections": "^1.0", 315 | "doctrine/common": "^2.6", 316 | "phpunit/phpunit": "^4.1" 317 | }, 318 | "type": "library", 319 | "autoload": { 320 | "psr-4": { 321 | "DeepCopy\\": "src/DeepCopy/" 322 | }, 323 | "files": [ 324 | "src/DeepCopy/deep_copy.php" 325 | ] 326 | }, 327 | "notification-url": "https://packagist.org/downloads/", 328 | "license": [ 329 | "MIT" 330 | ], 331 | "description": "Create deep copies (clones) of your objects", 332 | "keywords": [ 333 | "clone", 334 | "copy", 335 | "duplicate", 336 | "object", 337 | "object graph" 338 | ], 339 | "time": "2017-10-19T19:58:43+00:00" 340 | }, 341 | { 342 | "name": "phar-io/manifest", 343 | "version": "1.0.1", 344 | "source": { 345 | "type": "git", 346 | "url": "https://github.com/phar-io/manifest.git", 347 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" 348 | }, 349 | "dist": { 350 | "type": "zip", 351 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", 352 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", 353 | "shasum": "" 354 | }, 355 | "require": { 356 | "ext-dom": "*", 357 | "ext-phar": "*", 358 | "phar-io/version": "^1.0.1", 359 | "php": "^5.6 || ^7.0" 360 | }, 361 | "type": "library", 362 | "extra": { 363 | "branch-alias": { 364 | "dev-master": "1.0.x-dev" 365 | } 366 | }, 367 | "autoload": { 368 | "classmap": [ 369 | "src/" 370 | ] 371 | }, 372 | "notification-url": "https://packagist.org/downloads/", 373 | "license": [ 374 | "BSD-3-Clause" 375 | ], 376 | "authors": [ 377 | { 378 | "name": "Arne Blankerts", 379 | "email": "arne@blankerts.de", 380 | "role": "Developer" 381 | }, 382 | { 383 | "name": "Sebastian Heuer", 384 | "email": "sebastian@phpeople.de", 385 | "role": "Developer" 386 | }, 387 | { 388 | "name": "Sebastian Bergmann", 389 | "email": "sebastian@phpunit.de", 390 | "role": "Developer" 391 | } 392 | ], 393 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 394 | "time": "2017-03-05T18:14:27+00:00" 395 | }, 396 | { 397 | "name": "phar-io/version", 398 | "version": "1.0.1", 399 | "source": { 400 | "type": "git", 401 | "url": "https://github.com/phar-io/version.git", 402 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" 403 | }, 404 | "dist": { 405 | "type": "zip", 406 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", 407 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", 408 | "shasum": "" 409 | }, 410 | "require": { 411 | "php": "^5.6 || ^7.0" 412 | }, 413 | "type": "library", 414 | "autoload": { 415 | "classmap": [ 416 | "src/" 417 | ] 418 | }, 419 | "notification-url": "https://packagist.org/downloads/", 420 | "license": [ 421 | "BSD-3-Clause" 422 | ], 423 | "authors": [ 424 | { 425 | "name": "Arne Blankerts", 426 | "email": "arne@blankerts.de", 427 | "role": "Developer" 428 | }, 429 | { 430 | "name": "Sebastian Heuer", 431 | "email": "sebastian@phpeople.de", 432 | "role": "Developer" 433 | }, 434 | { 435 | "name": "Sebastian Bergmann", 436 | "email": "sebastian@phpunit.de", 437 | "role": "Developer" 438 | } 439 | ], 440 | "description": "Library for handling version information and constraints", 441 | "time": "2017-03-05T17:38:23+00:00" 442 | }, 443 | { 444 | "name": "phpdocumentor/reflection-common", 445 | "version": "1.0.1", 446 | "source": { 447 | "type": "git", 448 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 449 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 450 | }, 451 | "dist": { 452 | "type": "zip", 453 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 454 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 455 | "shasum": "" 456 | }, 457 | "require": { 458 | "php": ">=5.5" 459 | }, 460 | "require-dev": { 461 | "phpunit/phpunit": "^4.6" 462 | }, 463 | "type": "library", 464 | "extra": { 465 | "branch-alias": { 466 | "dev-master": "1.0.x-dev" 467 | } 468 | }, 469 | "autoload": { 470 | "psr-4": { 471 | "phpDocumentor\\Reflection\\": [ 472 | "src" 473 | ] 474 | } 475 | }, 476 | "notification-url": "https://packagist.org/downloads/", 477 | "license": [ 478 | "MIT" 479 | ], 480 | "authors": [ 481 | { 482 | "name": "Jaap van Otterdijk", 483 | "email": "opensource@ijaap.nl" 484 | } 485 | ], 486 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 487 | "homepage": "http://www.phpdoc.org", 488 | "keywords": [ 489 | "FQSEN", 490 | "phpDocumentor", 491 | "phpdoc", 492 | "reflection", 493 | "static analysis" 494 | ], 495 | "time": "2017-09-11T18:02:19+00:00" 496 | }, 497 | { 498 | "name": "phpdocumentor/reflection-docblock", 499 | "version": "4.3.0", 500 | "source": { 501 | "type": "git", 502 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 503 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 504 | }, 505 | "dist": { 506 | "type": "zip", 507 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 508 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 509 | "shasum": "" 510 | }, 511 | "require": { 512 | "php": "^7.0", 513 | "phpdocumentor/reflection-common": "^1.0.0", 514 | "phpdocumentor/type-resolver": "^0.4.0", 515 | "webmozart/assert": "^1.0" 516 | }, 517 | "require-dev": { 518 | "doctrine/instantiator": "~1.0.5", 519 | "mockery/mockery": "^1.0", 520 | "phpunit/phpunit": "^6.4" 521 | }, 522 | "type": "library", 523 | "extra": { 524 | "branch-alias": { 525 | "dev-master": "4.x-dev" 526 | } 527 | }, 528 | "autoload": { 529 | "psr-4": { 530 | "phpDocumentor\\Reflection\\": [ 531 | "src/" 532 | ] 533 | } 534 | }, 535 | "notification-url": "https://packagist.org/downloads/", 536 | "license": [ 537 | "MIT" 538 | ], 539 | "authors": [ 540 | { 541 | "name": "Mike van Riel", 542 | "email": "me@mikevanriel.com" 543 | } 544 | ], 545 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 546 | "time": "2017-11-30T07:14:17+00:00" 547 | }, 548 | { 549 | "name": "phpdocumentor/type-resolver", 550 | "version": "0.4.0", 551 | "source": { 552 | "type": "git", 553 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 554 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 555 | }, 556 | "dist": { 557 | "type": "zip", 558 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 559 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 560 | "shasum": "" 561 | }, 562 | "require": { 563 | "php": "^5.5 || ^7.0", 564 | "phpdocumentor/reflection-common": "^1.0" 565 | }, 566 | "require-dev": { 567 | "mockery/mockery": "^0.9.4", 568 | "phpunit/phpunit": "^5.2||^4.8.24" 569 | }, 570 | "type": "library", 571 | "extra": { 572 | "branch-alias": { 573 | "dev-master": "1.0.x-dev" 574 | } 575 | }, 576 | "autoload": { 577 | "psr-4": { 578 | "phpDocumentor\\Reflection\\": [ 579 | "src/" 580 | ] 581 | } 582 | }, 583 | "notification-url": "https://packagist.org/downloads/", 584 | "license": [ 585 | "MIT" 586 | ], 587 | "authors": [ 588 | { 589 | "name": "Mike van Riel", 590 | "email": "me@mikevanriel.com" 591 | } 592 | ], 593 | "time": "2017-07-14T14:27:02+00:00" 594 | }, 595 | { 596 | "name": "phpspec/prophecy", 597 | "version": "1.7.3", 598 | "source": { 599 | "type": "git", 600 | "url": "https://github.com/phpspec/prophecy.git", 601 | "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" 602 | }, 603 | "dist": { 604 | "type": "zip", 605 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", 606 | "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", 607 | "shasum": "" 608 | }, 609 | "require": { 610 | "doctrine/instantiator": "^1.0.2", 611 | "php": "^5.3|^7.0", 612 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 613 | "sebastian/comparator": "^1.1|^2.0", 614 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 615 | }, 616 | "require-dev": { 617 | "phpspec/phpspec": "^2.5|^3.2", 618 | "phpunit/phpunit": "^4.8.35 || ^5.7" 619 | }, 620 | "type": "library", 621 | "extra": { 622 | "branch-alias": { 623 | "dev-master": "1.7.x-dev" 624 | } 625 | }, 626 | "autoload": { 627 | "psr-0": { 628 | "Prophecy\\": "src/" 629 | } 630 | }, 631 | "notification-url": "https://packagist.org/downloads/", 632 | "license": [ 633 | "MIT" 634 | ], 635 | "authors": [ 636 | { 637 | "name": "Konstantin Kudryashov", 638 | "email": "ever.zet@gmail.com", 639 | "homepage": "http://everzet.com" 640 | }, 641 | { 642 | "name": "Marcello Duarte", 643 | "email": "marcello.duarte@gmail.com" 644 | } 645 | ], 646 | "description": "Highly opinionated mocking framework for PHP 5.3+", 647 | "homepage": "https://github.com/phpspec/prophecy", 648 | "keywords": [ 649 | "Double", 650 | "Dummy", 651 | "fake", 652 | "mock", 653 | "spy", 654 | "stub" 655 | ], 656 | "time": "2017-11-24T13:59:53+00:00" 657 | }, 658 | { 659 | "name": "phpunit/php-code-coverage", 660 | "version": "5.3.0", 661 | "source": { 662 | "type": "git", 663 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 664 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" 665 | }, 666 | "dist": { 667 | "type": "zip", 668 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", 669 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", 670 | "shasum": "" 671 | }, 672 | "require": { 673 | "ext-dom": "*", 674 | "ext-xmlwriter": "*", 675 | "php": "^7.0", 676 | "phpunit/php-file-iterator": "^1.4.2", 677 | "phpunit/php-text-template": "^1.2.1", 678 | "phpunit/php-token-stream": "^2.0.1", 679 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 680 | "sebastian/environment": "^3.0", 681 | "sebastian/version": "^2.0.1", 682 | "theseer/tokenizer": "^1.1" 683 | }, 684 | "require-dev": { 685 | "phpunit/phpunit": "^6.0" 686 | }, 687 | "suggest": { 688 | "ext-xdebug": "^2.5.5" 689 | }, 690 | "type": "library", 691 | "extra": { 692 | "branch-alias": { 693 | "dev-master": "5.3.x-dev" 694 | } 695 | }, 696 | "autoload": { 697 | "classmap": [ 698 | "src/" 699 | ] 700 | }, 701 | "notification-url": "https://packagist.org/downloads/", 702 | "license": [ 703 | "BSD-3-Clause" 704 | ], 705 | "authors": [ 706 | { 707 | "name": "Sebastian Bergmann", 708 | "email": "sebastian@phpunit.de", 709 | "role": "lead" 710 | } 711 | ], 712 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 713 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 714 | "keywords": [ 715 | "coverage", 716 | "testing", 717 | "xunit" 718 | ], 719 | "time": "2017-12-06T09:29:45+00:00" 720 | }, 721 | { 722 | "name": "phpunit/php-file-iterator", 723 | "version": "1.4.5", 724 | "source": { 725 | "type": "git", 726 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 727 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 728 | }, 729 | "dist": { 730 | "type": "zip", 731 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 732 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 733 | "shasum": "" 734 | }, 735 | "require": { 736 | "php": ">=5.3.3" 737 | }, 738 | "type": "library", 739 | "extra": { 740 | "branch-alias": { 741 | "dev-master": "1.4.x-dev" 742 | } 743 | }, 744 | "autoload": { 745 | "classmap": [ 746 | "src/" 747 | ] 748 | }, 749 | "notification-url": "https://packagist.org/downloads/", 750 | "license": [ 751 | "BSD-3-Clause" 752 | ], 753 | "authors": [ 754 | { 755 | "name": "Sebastian Bergmann", 756 | "email": "sb@sebastian-bergmann.de", 757 | "role": "lead" 758 | } 759 | ], 760 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 761 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 762 | "keywords": [ 763 | "filesystem", 764 | "iterator" 765 | ], 766 | "time": "2017-11-27T13:52:08+00:00" 767 | }, 768 | { 769 | "name": "phpunit/php-text-template", 770 | "version": "1.2.1", 771 | "source": { 772 | "type": "git", 773 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 774 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 775 | }, 776 | "dist": { 777 | "type": "zip", 778 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 779 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 780 | "shasum": "" 781 | }, 782 | "require": { 783 | "php": ">=5.3.3" 784 | }, 785 | "type": "library", 786 | "autoload": { 787 | "classmap": [ 788 | "src/" 789 | ] 790 | }, 791 | "notification-url": "https://packagist.org/downloads/", 792 | "license": [ 793 | "BSD-3-Clause" 794 | ], 795 | "authors": [ 796 | { 797 | "name": "Sebastian Bergmann", 798 | "email": "sebastian@phpunit.de", 799 | "role": "lead" 800 | } 801 | ], 802 | "description": "Simple template engine.", 803 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 804 | "keywords": [ 805 | "template" 806 | ], 807 | "time": "2015-06-21T13:50:34+00:00" 808 | }, 809 | { 810 | "name": "phpunit/php-timer", 811 | "version": "1.0.9", 812 | "source": { 813 | "type": "git", 814 | "url": "https://github.com/sebastianbergmann/php-timer.git", 815 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 816 | }, 817 | "dist": { 818 | "type": "zip", 819 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 820 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 821 | "shasum": "" 822 | }, 823 | "require": { 824 | "php": "^5.3.3 || ^7.0" 825 | }, 826 | "require-dev": { 827 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 828 | }, 829 | "type": "library", 830 | "extra": { 831 | "branch-alias": { 832 | "dev-master": "1.0-dev" 833 | } 834 | }, 835 | "autoload": { 836 | "classmap": [ 837 | "src/" 838 | ] 839 | }, 840 | "notification-url": "https://packagist.org/downloads/", 841 | "license": [ 842 | "BSD-3-Clause" 843 | ], 844 | "authors": [ 845 | { 846 | "name": "Sebastian Bergmann", 847 | "email": "sb@sebastian-bergmann.de", 848 | "role": "lead" 849 | } 850 | ], 851 | "description": "Utility class for timing", 852 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 853 | "keywords": [ 854 | "timer" 855 | ], 856 | "time": "2017-02-26T11:10:40+00:00" 857 | }, 858 | { 859 | "name": "phpunit/php-token-stream", 860 | "version": "2.0.2", 861 | "source": { 862 | "type": "git", 863 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 864 | "reference": "791198a2c6254db10131eecfe8c06670700904db" 865 | }, 866 | "dist": { 867 | "type": "zip", 868 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", 869 | "reference": "791198a2c6254db10131eecfe8c06670700904db", 870 | "shasum": "" 871 | }, 872 | "require": { 873 | "ext-tokenizer": "*", 874 | "php": "^7.0" 875 | }, 876 | "require-dev": { 877 | "phpunit/phpunit": "^6.2.4" 878 | }, 879 | "type": "library", 880 | "extra": { 881 | "branch-alias": { 882 | "dev-master": "2.0-dev" 883 | } 884 | }, 885 | "autoload": { 886 | "classmap": [ 887 | "src/" 888 | ] 889 | }, 890 | "notification-url": "https://packagist.org/downloads/", 891 | "license": [ 892 | "BSD-3-Clause" 893 | ], 894 | "authors": [ 895 | { 896 | "name": "Sebastian Bergmann", 897 | "email": "sebastian@phpunit.de" 898 | } 899 | ], 900 | "description": "Wrapper around PHP's tokenizer extension.", 901 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 902 | "keywords": [ 903 | "tokenizer" 904 | ], 905 | "time": "2017-11-27T05:48:46+00:00" 906 | }, 907 | { 908 | "name": "phpunit/phpunit", 909 | "version": "6.5.5", 910 | "source": { 911 | "type": "git", 912 | "url": "https://github.com/sebastianbergmann/phpunit.git", 913 | "reference": "83d27937a310f2984fd575686138597147bdc7df" 914 | }, 915 | "dist": { 916 | "type": "zip", 917 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df", 918 | "reference": "83d27937a310f2984fd575686138597147bdc7df", 919 | "shasum": "" 920 | }, 921 | "require": { 922 | "ext-dom": "*", 923 | "ext-json": "*", 924 | "ext-libxml": "*", 925 | "ext-mbstring": "*", 926 | "ext-xml": "*", 927 | "myclabs/deep-copy": "^1.6.1", 928 | "phar-io/manifest": "^1.0.1", 929 | "phar-io/version": "^1.0", 930 | "php": "^7.0", 931 | "phpspec/prophecy": "^1.7", 932 | "phpunit/php-code-coverage": "^5.3", 933 | "phpunit/php-file-iterator": "^1.4.3", 934 | "phpunit/php-text-template": "^1.2.1", 935 | "phpunit/php-timer": "^1.0.9", 936 | "phpunit/phpunit-mock-objects": "^5.0.5", 937 | "sebastian/comparator": "^2.1", 938 | "sebastian/diff": "^2.0", 939 | "sebastian/environment": "^3.1", 940 | "sebastian/exporter": "^3.1", 941 | "sebastian/global-state": "^2.0", 942 | "sebastian/object-enumerator": "^3.0.3", 943 | "sebastian/resource-operations": "^1.0", 944 | "sebastian/version": "^2.0.1" 945 | }, 946 | "conflict": { 947 | "phpdocumentor/reflection-docblock": "3.0.2", 948 | "phpunit/dbunit": "<3.0" 949 | }, 950 | "require-dev": { 951 | "ext-pdo": "*" 952 | }, 953 | "suggest": { 954 | "ext-xdebug": "*", 955 | "phpunit/php-invoker": "^1.1" 956 | }, 957 | "bin": [ 958 | "phpunit" 959 | ], 960 | "type": "library", 961 | "extra": { 962 | "branch-alias": { 963 | "dev-master": "6.5.x-dev" 964 | } 965 | }, 966 | "autoload": { 967 | "classmap": [ 968 | "src/" 969 | ] 970 | }, 971 | "notification-url": "https://packagist.org/downloads/", 972 | "license": [ 973 | "BSD-3-Clause" 974 | ], 975 | "authors": [ 976 | { 977 | "name": "Sebastian Bergmann", 978 | "email": "sebastian@phpunit.de", 979 | "role": "lead" 980 | } 981 | ], 982 | "description": "The PHP Unit Testing framework.", 983 | "homepage": "https://phpunit.de/", 984 | "keywords": [ 985 | "phpunit", 986 | "testing", 987 | "xunit" 988 | ], 989 | "time": "2017-12-17T06:31:19+00:00" 990 | }, 991 | { 992 | "name": "phpunit/phpunit-mock-objects", 993 | "version": "5.0.6", 994 | "source": { 995 | "type": "git", 996 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 997 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" 998 | }, 999 | "dist": { 1000 | "type": "zip", 1001 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", 1002 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", 1003 | "shasum": "" 1004 | }, 1005 | "require": { 1006 | "doctrine/instantiator": "^1.0.5", 1007 | "php": "^7.0", 1008 | "phpunit/php-text-template": "^1.2.1", 1009 | "sebastian/exporter": "^3.1" 1010 | }, 1011 | "conflict": { 1012 | "phpunit/phpunit": "<6.0" 1013 | }, 1014 | "require-dev": { 1015 | "phpunit/phpunit": "^6.5" 1016 | }, 1017 | "suggest": { 1018 | "ext-soap": "*" 1019 | }, 1020 | "type": "library", 1021 | "extra": { 1022 | "branch-alias": { 1023 | "dev-master": "5.0.x-dev" 1024 | } 1025 | }, 1026 | "autoload": { 1027 | "classmap": [ 1028 | "src/" 1029 | ] 1030 | }, 1031 | "notification-url": "https://packagist.org/downloads/", 1032 | "license": [ 1033 | "BSD-3-Clause" 1034 | ], 1035 | "authors": [ 1036 | { 1037 | "name": "Sebastian Bergmann", 1038 | "email": "sebastian@phpunit.de", 1039 | "role": "lead" 1040 | } 1041 | ], 1042 | "description": "Mock Object library for PHPUnit", 1043 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 1044 | "keywords": [ 1045 | "mock", 1046 | "xunit" 1047 | ], 1048 | "time": "2018-01-06T05:45:45+00:00" 1049 | }, 1050 | { 1051 | "name": "sebastian/code-unit-reverse-lookup", 1052 | "version": "1.0.1", 1053 | "source": { 1054 | "type": "git", 1055 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1056 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1057 | }, 1058 | "dist": { 1059 | "type": "zip", 1060 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1061 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1062 | "shasum": "" 1063 | }, 1064 | "require": { 1065 | "php": "^5.6 || ^7.0" 1066 | }, 1067 | "require-dev": { 1068 | "phpunit/phpunit": "^5.7 || ^6.0" 1069 | }, 1070 | "type": "library", 1071 | "extra": { 1072 | "branch-alias": { 1073 | "dev-master": "1.0.x-dev" 1074 | } 1075 | }, 1076 | "autoload": { 1077 | "classmap": [ 1078 | "src/" 1079 | ] 1080 | }, 1081 | "notification-url": "https://packagist.org/downloads/", 1082 | "license": [ 1083 | "BSD-3-Clause" 1084 | ], 1085 | "authors": [ 1086 | { 1087 | "name": "Sebastian Bergmann", 1088 | "email": "sebastian@phpunit.de" 1089 | } 1090 | ], 1091 | "description": "Looks up which function or method a line of code belongs to", 1092 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1093 | "time": "2017-03-04T06:30:41+00:00" 1094 | }, 1095 | { 1096 | "name": "sebastian/comparator", 1097 | "version": "2.1.2", 1098 | "source": { 1099 | "type": "git", 1100 | "url": "https://github.com/sebastianbergmann/comparator.git", 1101 | "reference": "11c07feade1d65453e06df3b3b90171d6d982087" 1102 | }, 1103 | "dist": { 1104 | "type": "zip", 1105 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/11c07feade1d65453e06df3b3b90171d6d982087", 1106 | "reference": "11c07feade1d65453e06df3b3b90171d6d982087", 1107 | "shasum": "" 1108 | }, 1109 | "require": { 1110 | "php": "^7.0", 1111 | "sebastian/diff": "^2.0", 1112 | "sebastian/exporter": "^3.1" 1113 | }, 1114 | "require-dev": { 1115 | "phpunit/phpunit": "^6.4" 1116 | }, 1117 | "type": "library", 1118 | "extra": { 1119 | "branch-alias": { 1120 | "dev-master": "2.1.x-dev" 1121 | } 1122 | }, 1123 | "autoload": { 1124 | "classmap": [ 1125 | "src/" 1126 | ] 1127 | }, 1128 | "notification-url": "https://packagist.org/downloads/", 1129 | "license": [ 1130 | "BSD-3-Clause" 1131 | ], 1132 | "authors": [ 1133 | { 1134 | "name": "Jeff Welch", 1135 | "email": "whatthejeff@gmail.com" 1136 | }, 1137 | { 1138 | "name": "Volker Dusch", 1139 | "email": "github@wallbash.com" 1140 | }, 1141 | { 1142 | "name": "Bernhard Schussek", 1143 | "email": "bschussek@2bepublished.at" 1144 | }, 1145 | { 1146 | "name": "Sebastian Bergmann", 1147 | "email": "sebastian@phpunit.de" 1148 | } 1149 | ], 1150 | "description": "Provides the functionality to compare PHP values for equality", 1151 | "homepage": "https://github.com/sebastianbergmann/comparator", 1152 | "keywords": [ 1153 | "comparator", 1154 | "compare", 1155 | "equality" 1156 | ], 1157 | "time": "2018-01-12T06:34:42+00:00" 1158 | }, 1159 | { 1160 | "name": "sebastian/diff", 1161 | "version": "2.0.1", 1162 | "source": { 1163 | "type": "git", 1164 | "url": "https://github.com/sebastianbergmann/diff.git", 1165 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" 1166 | }, 1167 | "dist": { 1168 | "type": "zip", 1169 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1170 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1171 | "shasum": "" 1172 | }, 1173 | "require": { 1174 | "php": "^7.0" 1175 | }, 1176 | "require-dev": { 1177 | "phpunit/phpunit": "^6.2" 1178 | }, 1179 | "type": "library", 1180 | "extra": { 1181 | "branch-alias": { 1182 | "dev-master": "2.0-dev" 1183 | } 1184 | }, 1185 | "autoload": { 1186 | "classmap": [ 1187 | "src/" 1188 | ] 1189 | }, 1190 | "notification-url": "https://packagist.org/downloads/", 1191 | "license": [ 1192 | "BSD-3-Clause" 1193 | ], 1194 | "authors": [ 1195 | { 1196 | "name": "Kore Nordmann", 1197 | "email": "mail@kore-nordmann.de" 1198 | }, 1199 | { 1200 | "name": "Sebastian Bergmann", 1201 | "email": "sebastian@phpunit.de" 1202 | } 1203 | ], 1204 | "description": "Diff implementation", 1205 | "homepage": "https://github.com/sebastianbergmann/diff", 1206 | "keywords": [ 1207 | "diff" 1208 | ], 1209 | "time": "2017-08-03T08:09:46+00:00" 1210 | }, 1211 | { 1212 | "name": "sebastian/environment", 1213 | "version": "3.1.0", 1214 | "source": { 1215 | "type": "git", 1216 | "url": "https://github.com/sebastianbergmann/environment.git", 1217 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" 1218 | }, 1219 | "dist": { 1220 | "type": "zip", 1221 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1222 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1223 | "shasum": "" 1224 | }, 1225 | "require": { 1226 | "php": "^7.0" 1227 | }, 1228 | "require-dev": { 1229 | "phpunit/phpunit": "^6.1" 1230 | }, 1231 | "type": "library", 1232 | "extra": { 1233 | "branch-alias": { 1234 | "dev-master": "3.1.x-dev" 1235 | } 1236 | }, 1237 | "autoload": { 1238 | "classmap": [ 1239 | "src/" 1240 | ] 1241 | }, 1242 | "notification-url": "https://packagist.org/downloads/", 1243 | "license": [ 1244 | "BSD-3-Clause" 1245 | ], 1246 | "authors": [ 1247 | { 1248 | "name": "Sebastian Bergmann", 1249 | "email": "sebastian@phpunit.de" 1250 | } 1251 | ], 1252 | "description": "Provides functionality to handle HHVM/PHP environments", 1253 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1254 | "keywords": [ 1255 | "Xdebug", 1256 | "environment", 1257 | "hhvm" 1258 | ], 1259 | "time": "2017-07-01T08:51:00+00:00" 1260 | }, 1261 | { 1262 | "name": "sebastian/exporter", 1263 | "version": "3.1.0", 1264 | "source": { 1265 | "type": "git", 1266 | "url": "https://github.com/sebastianbergmann/exporter.git", 1267 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 1268 | }, 1269 | "dist": { 1270 | "type": "zip", 1271 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 1272 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 1273 | "shasum": "" 1274 | }, 1275 | "require": { 1276 | "php": "^7.0", 1277 | "sebastian/recursion-context": "^3.0" 1278 | }, 1279 | "require-dev": { 1280 | "ext-mbstring": "*", 1281 | "phpunit/phpunit": "^6.0" 1282 | }, 1283 | "type": "library", 1284 | "extra": { 1285 | "branch-alias": { 1286 | "dev-master": "3.1.x-dev" 1287 | } 1288 | }, 1289 | "autoload": { 1290 | "classmap": [ 1291 | "src/" 1292 | ] 1293 | }, 1294 | "notification-url": "https://packagist.org/downloads/", 1295 | "license": [ 1296 | "BSD-3-Clause" 1297 | ], 1298 | "authors": [ 1299 | { 1300 | "name": "Jeff Welch", 1301 | "email": "whatthejeff@gmail.com" 1302 | }, 1303 | { 1304 | "name": "Volker Dusch", 1305 | "email": "github@wallbash.com" 1306 | }, 1307 | { 1308 | "name": "Bernhard Schussek", 1309 | "email": "bschussek@2bepublished.at" 1310 | }, 1311 | { 1312 | "name": "Sebastian Bergmann", 1313 | "email": "sebastian@phpunit.de" 1314 | }, 1315 | { 1316 | "name": "Adam Harvey", 1317 | "email": "aharvey@php.net" 1318 | } 1319 | ], 1320 | "description": "Provides the functionality to export PHP variables for visualization", 1321 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1322 | "keywords": [ 1323 | "export", 1324 | "exporter" 1325 | ], 1326 | "time": "2017-04-03T13:19:02+00:00" 1327 | }, 1328 | { 1329 | "name": "sebastian/global-state", 1330 | "version": "2.0.0", 1331 | "source": { 1332 | "type": "git", 1333 | "url": "https://github.com/sebastianbergmann/global-state.git", 1334 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 1335 | }, 1336 | "dist": { 1337 | "type": "zip", 1338 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1339 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1340 | "shasum": "" 1341 | }, 1342 | "require": { 1343 | "php": "^7.0" 1344 | }, 1345 | "require-dev": { 1346 | "phpunit/phpunit": "^6.0" 1347 | }, 1348 | "suggest": { 1349 | "ext-uopz": "*" 1350 | }, 1351 | "type": "library", 1352 | "extra": { 1353 | "branch-alias": { 1354 | "dev-master": "2.0-dev" 1355 | } 1356 | }, 1357 | "autoload": { 1358 | "classmap": [ 1359 | "src/" 1360 | ] 1361 | }, 1362 | "notification-url": "https://packagist.org/downloads/", 1363 | "license": [ 1364 | "BSD-3-Clause" 1365 | ], 1366 | "authors": [ 1367 | { 1368 | "name": "Sebastian Bergmann", 1369 | "email": "sebastian@phpunit.de" 1370 | } 1371 | ], 1372 | "description": "Snapshotting of global state", 1373 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1374 | "keywords": [ 1375 | "global state" 1376 | ], 1377 | "time": "2017-04-27T15:39:26+00:00" 1378 | }, 1379 | { 1380 | "name": "sebastian/object-enumerator", 1381 | "version": "3.0.3", 1382 | "source": { 1383 | "type": "git", 1384 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1385 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 1386 | }, 1387 | "dist": { 1388 | "type": "zip", 1389 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1390 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1391 | "shasum": "" 1392 | }, 1393 | "require": { 1394 | "php": "^7.0", 1395 | "sebastian/object-reflector": "^1.1.1", 1396 | "sebastian/recursion-context": "^3.0" 1397 | }, 1398 | "require-dev": { 1399 | "phpunit/phpunit": "^6.0" 1400 | }, 1401 | "type": "library", 1402 | "extra": { 1403 | "branch-alias": { 1404 | "dev-master": "3.0.x-dev" 1405 | } 1406 | }, 1407 | "autoload": { 1408 | "classmap": [ 1409 | "src/" 1410 | ] 1411 | }, 1412 | "notification-url": "https://packagist.org/downloads/", 1413 | "license": [ 1414 | "BSD-3-Clause" 1415 | ], 1416 | "authors": [ 1417 | { 1418 | "name": "Sebastian Bergmann", 1419 | "email": "sebastian@phpunit.de" 1420 | } 1421 | ], 1422 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1423 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1424 | "time": "2017-08-03T12:35:26+00:00" 1425 | }, 1426 | { 1427 | "name": "sebastian/object-reflector", 1428 | "version": "1.1.1", 1429 | "source": { 1430 | "type": "git", 1431 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1432 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 1433 | }, 1434 | "dist": { 1435 | "type": "zip", 1436 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 1437 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 1438 | "shasum": "" 1439 | }, 1440 | "require": { 1441 | "php": "^7.0" 1442 | }, 1443 | "require-dev": { 1444 | "phpunit/phpunit": "^6.0" 1445 | }, 1446 | "type": "library", 1447 | "extra": { 1448 | "branch-alias": { 1449 | "dev-master": "1.1-dev" 1450 | } 1451 | }, 1452 | "autoload": { 1453 | "classmap": [ 1454 | "src/" 1455 | ] 1456 | }, 1457 | "notification-url": "https://packagist.org/downloads/", 1458 | "license": [ 1459 | "BSD-3-Clause" 1460 | ], 1461 | "authors": [ 1462 | { 1463 | "name": "Sebastian Bergmann", 1464 | "email": "sebastian@phpunit.de" 1465 | } 1466 | ], 1467 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1468 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1469 | "time": "2017-03-29T09:07:27+00:00" 1470 | }, 1471 | { 1472 | "name": "sebastian/recursion-context", 1473 | "version": "3.0.0", 1474 | "source": { 1475 | "type": "git", 1476 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1477 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 1478 | }, 1479 | "dist": { 1480 | "type": "zip", 1481 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1482 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1483 | "shasum": "" 1484 | }, 1485 | "require": { 1486 | "php": "^7.0" 1487 | }, 1488 | "require-dev": { 1489 | "phpunit/phpunit": "^6.0" 1490 | }, 1491 | "type": "library", 1492 | "extra": { 1493 | "branch-alias": { 1494 | "dev-master": "3.0.x-dev" 1495 | } 1496 | }, 1497 | "autoload": { 1498 | "classmap": [ 1499 | "src/" 1500 | ] 1501 | }, 1502 | "notification-url": "https://packagist.org/downloads/", 1503 | "license": [ 1504 | "BSD-3-Clause" 1505 | ], 1506 | "authors": [ 1507 | { 1508 | "name": "Jeff Welch", 1509 | "email": "whatthejeff@gmail.com" 1510 | }, 1511 | { 1512 | "name": "Sebastian Bergmann", 1513 | "email": "sebastian@phpunit.de" 1514 | }, 1515 | { 1516 | "name": "Adam Harvey", 1517 | "email": "aharvey@php.net" 1518 | } 1519 | ], 1520 | "description": "Provides functionality to recursively process PHP variables", 1521 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1522 | "time": "2017-03-03T06:23:57+00:00" 1523 | }, 1524 | { 1525 | "name": "sebastian/resource-operations", 1526 | "version": "1.0.0", 1527 | "source": { 1528 | "type": "git", 1529 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1530 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 1531 | }, 1532 | "dist": { 1533 | "type": "zip", 1534 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1535 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1536 | "shasum": "" 1537 | }, 1538 | "require": { 1539 | "php": ">=5.6.0" 1540 | }, 1541 | "type": "library", 1542 | "extra": { 1543 | "branch-alias": { 1544 | "dev-master": "1.0.x-dev" 1545 | } 1546 | }, 1547 | "autoload": { 1548 | "classmap": [ 1549 | "src/" 1550 | ] 1551 | }, 1552 | "notification-url": "https://packagist.org/downloads/", 1553 | "license": [ 1554 | "BSD-3-Clause" 1555 | ], 1556 | "authors": [ 1557 | { 1558 | "name": "Sebastian Bergmann", 1559 | "email": "sebastian@phpunit.de" 1560 | } 1561 | ], 1562 | "description": "Provides a list of PHP built-in functions that operate on resources", 1563 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1564 | "time": "2015-07-28T20:34:47+00:00" 1565 | }, 1566 | { 1567 | "name": "sebastian/version", 1568 | "version": "2.0.1", 1569 | "source": { 1570 | "type": "git", 1571 | "url": "https://github.com/sebastianbergmann/version.git", 1572 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 1573 | }, 1574 | "dist": { 1575 | "type": "zip", 1576 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 1577 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 1578 | "shasum": "" 1579 | }, 1580 | "require": { 1581 | "php": ">=5.6" 1582 | }, 1583 | "type": "library", 1584 | "extra": { 1585 | "branch-alias": { 1586 | "dev-master": "2.0.x-dev" 1587 | } 1588 | }, 1589 | "autoload": { 1590 | "classmap": [ 1591 | "src/" 1592 | ] 1593 | }, 1594 | "notification-url": "https://packagist.org/downloads/", 1595 | "license": [ 1596 | "BSD-3-Clause" 1597 | ], 1598 | "authors": [ 1599 | { 1600 | "name": "Sebastian Bergmann", 1601 | "email": "sebastian@phpunit.de", 1602 | "role": "lead" 1603 | } 1604 | ], 1605 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1606 | "homepage": "https://github.com/sebastianbergmann/version", 1607 | "time": "2016-10-03T07:35:21+00:00" 1608 | }, 1609 | { 1610 | "name": "theseer/tokenizer", 1611 | "version": "1.1.0", 1612 | "source": { 1613 | "type": "git", 1614 | "url": "https://github.com/theseer/tokenizer.git", 1615 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" 1616 | }, 1617 | "dist": { 1618 | "type": "zip", 1619 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", 1620 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", 1621 | "shasum": "" 1622 | }, 1623 | "require": { 1624 | "ext-dom": "*", 1625 | "ext-tokenizer": "*", 1626 | "ext-xmlwriter": "*", 1627 | "php": "^7.0" 1628 | }, 1629 | "type": "library", 1630 | "autoload": { 1631 | "classmap": [ 1632 | "src/" 1633 | ] 1634 | }, 1635 | "notification-url": "https://packagist.org/downloads/", 1636 | "license": [ 1637 | "BSD-3-Clause" 1638 | ], 1639 | "authors": [ 1640 | { 1641 | "name": "Arne Blankerts", 1642 | "email": "arne@blankerts.de", 1643 | "role": "Developer" 1644 | } 1645 | ], 1646 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 1647 | "time": "2017-04-07T12:08:54+00:00" 1648 | }, 1649 | { 1650 | "name": "webmozart/assert", 1651 | "version": "1.2.0", 1652 | "source": { 1653 | "type": "git", 1654 | "url": "https://github.com/webmozart/assert.git", 1655 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" 1656 | }, 1657 | "dist": { 1658 | "type": "zip", 1659 | "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", 1660 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", 1661 | "shasum": "" 1662 | }, 1663 | "require": { 1664 | "php": "^5.3.3 || ^7.0" 1665 | }, 1666 | "require-dev": { 1667 | "phpunit/phpunit": "^4.6", 1668 | "sebastian/version": "^1.0.1" 1669 | }, 1670 | "type": "library", 1671 | "extra": { 1672 | "branch-alias": { 1673 | "dev-master": "1.3-dev" 1674 | } 1675 | }, 1676 | "autoload": { 1677 | "psr-4": { 1678 | "Webmozart\\Assert\\": "src/" 1679 | } 1680 | }, 1681 | "notification-url": "https://packagist.org/downloads/", 1682 | "license": [ 1683 | "MIT" 1684 | ], 1685 | "authors": [ 1686 | { 1687 | "name": "Bernhard Schussek", 1688 | "email": "bschussek@gmail.com" 1689 | } 1690 | ], 1691 | "description": "Assertions to validate method input/output with nice error messages.", 1692 | "keywords": [ 1693 | "assert", 1694 | "check", 1695 | "validate" 1696 | ], 1697 | "time": "2016-11-23T20:04:58+00:00" 1698 | } 1699 | ], 1700 | "aliases": [], 1701 | "minimum-stability": "stable", 1702 | "stability-flags": [], 1703 | "prefer-stable": false, 1704 | "prefer-lowest": false, 1705 | "platform": [], 1706 | "platform-dev": [] 1707 | } 1708 | --------------------------------------------------------------------------------