├── .gitignore ├── README.md ├── client.php ├── composer.json ├── composer.lock └── test.php /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # lightning-charge-client-php 2 | 3 | PHP client for the Lightning Charge REST API. 4 | 5 | ## Install 6 | 7 | ```bash 8 | $ composer require elementsproject/lightning-charge-client-php 9 | ``` 10 | 11 | ## Use 12 | 13 | ```php 14 | invoice([ 'msatoshi' => 50, 'metadata' => [ 'customer' => 'Satoshi', 'products' => [ 'potato', 'chips' ] ] ]); 22 | 23 | tell_user("to pay, send $invoice->msatoshi milli-satoshis with rhash $invoice->rhash, or copy the BOLT11 payment request: $invoice->payreq"); 24 | 25 | // Create invoice denominated in USD 26 | $invoice = $charge->invoice([ 'currency' => 'USD', 'amount' => 0.15 ]); 27 | 28 | // Fetch invoice by id 29 | $invoice = $charge->fetch('m51vlVWuIKGumTLbJ1RPb'); 30 | 31 | // Fetch all invoices 32 | $invoice = $charge->fetchAll(); 33 | 34 | // Register web hook 35 | $charge->registerHook('m51vlVWuIKGumTLbJ1RPb', 'http://my-server.com/my-callback-url'); 36 | ``` 37 | 38 | *TODO*: document `wait` 39 | 40 | ## Test 41 | 42 | ```bash 43 | $ CHARGE_URL=http://api-token:[TOKEN]@localhost:8009 phpunit test 44 | ``` 45 | 46 | ## License 47 | MIT 48 | -------------------------------------------------------------------------------- /client.php: -------------------------------------------------------------------------------- 1 | api = new RestClient([ 7 | 'base_url' => rtrim($url, '/'), 8 | 'curl_options' => $api_token ? [ 9 | CURLOPT_USERPWD => 'api-token:' . $api_token 10 | ] : [] 11 | ]); 12 | } 13 | 14 | /** 15 | * Create a new invoice. 16 | * 17 | * @param string|int $msatoshi 18 | * @param object $metadata 19 | * @return object the invoice 20 | */ 21 | public function invoice($props) { 22 | $res = $this->api->post('/invoice', json_encode($props), [ 'Content-Type' => 'application/json' ]); 23 | 24 | if ($res->info->http_code !== 201) throw new Exception('failed saving invoice'); 25 | 26 | return $res->decode_response(); 27 | } 28 | 29 | /** 30 | * Fetch invoice by ID 31 | * 32 | * @param string $invoice_id 33 | * @return object the invoice 34 | */ 35 | public function fetch($invoice_id) { 36 | $res = $this->api->get('/invoice/' . urlencode($invoice_id)); 37 | if ($res->info->http_code !== 200) throw new Exception('failed fetching invoice'); 38 | return $res->decode_response(); 39 | } 40 | 41 | /** 42 | * Fetch all invoices 43 | * 44 | * @return array 45 | */ 46 | public function fetchAll() { 47 | $res = $this->api->get('/invoices'); 48 | if ($res->info->http_code !== 200) throw new Exception('failed fetching invoices'); 49 | return $res->decode_response(); 50 | } 51 | 52 | 53 | /** 54 | * Wait for an invoice to be paid. 55 | * 56 | * @param string $invoice_id 57 | * @param int $timeout the timeout in seconds 58 | * @return object|bool|null the paid invoice if paid, false if the invoice expired, or null if the timeout is reached. 59 | */ 60 | public function wait($invoice_id, $timeout) { 61 | $res = $this->api->get('/invoice/' . urlencode($invoice_id) . '/wait?timeout=' . (int)$timeout); 62 | 63 | switch ($res->info->http_code) { 64 | // 200 OK: invoice is paid, return the updated invoice 65 | case 200: return $res->decode_response(); 66 | // 402 Payment Required: timeout reached without payment, invoice is still payable 67 | case 402: return null; 68 | // 410 Gone: invoice expired and can not longer be paid 69 | case 410: return false; 70 | 71 | default: throw new Error('unknown status code ' . $res->info->http_code); 72 | } 73 | } 74 | 75 | /** 76 | * Register a new webhook. 77 | * 78 | * @param string $invoice_id 79 | * @param string $url 80 | * @return bool 81 | */ 82 | public function registerHook($invoice_id, $url) { 83 | $res = $this->api->post('/invoice/' . urlencode($invoice_id) . '/webhook', [ 'url' => $url ]); 84 | if ($res->info->http_code !== 201) 85 | throw new Exception('register hook failed'); 86 | return true; 87 | } 88 | } 89 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "elementsproject/lightning-charge-client-php", 3 | "description": "PHP client for the Lightning Charge REST API", 4 | "version": "0.1.4", 5 | "license": "MIT", 6 | "require": { 7 | "tcdent/php-restclient": "^0.1" 8 | }, 9 | "require-dev": { 10 | "phpunit/phpunit": "^6.4", 11 | "clue/phar-composer": "^1.0" 12 | }, 13 | "autoload": { 14 | "files": ["client.php"] 15 | } 16 | } 17 | -------------------------------------------------------------------------------- /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 | "hash": "ae0a259340e76a642eaa9a436ad91a13", 8 | "content-hash": "a328ecad1e6a04287be9ba5818de1efd", 9 | "packages": [ 10 | { 11 | "name": "tcdent/php-restclient", 12 | "version": "0.1.7", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/tcdent/php-restclient.git", 16 | "reference": "4522e8518eaef770d715977fcb45f187f8ad7499" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/tcdent/php-restclient/zipball/4522e8518eaef770d715977fcb45f187f8ad7499", 21 | "reference": "4522e8518eaef770d715977fcb45f187f8ad7499", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "ext-curl": "*", 26 | "ext-json": "*", 27 | "php": ">=5.4.0" 28 | }, 29 | "require-dev": { 30 | "php": ">=5.5.7", 31 | "phpunit/phpunit": ">=4.5" 32 | }, 33 | "type": "library", 34 | "autoload": { 35 | "files": [ 36 | "restclient.php" 37 | ] 38 | }, 39 | "notification-url": "https://packagist.org/downloads/", 40 | "license": [ 41 | "MIT" 42 | ], 43 | "authors": [ 44 | { 45 | "name": "Travis Dent", 46 | "email": "tcdent@gmail.com", 47 | "role": "Developer" 48 | } 49 | ], 50 | "description": "A generic REST API client for PHP", 51 | "homepage": "http://github.com/tcdent/php-restclient", 52 | "keywords": [ 53 | "api", 54 | "client", 55 | "curl", 56 | "json", 57 | "rest", 58 | "xml" 59 | ], 60 | "time": "2017-09-07 20:44:36" 61 | } 62 | ], 63 | "packages-dev": [ 64 | { 65 | "name": "clue/phar-composer", 66 | "version": "v1.0.0", 67 | "source": { 68 | "type": "git", 69 | "url": "https://github.com/clue/phar-composer.git", 70 | "reference": "3ea2cd961c45290b2578c6bf971ae028bfcd6377" 71 | }, 72 | "dist": { 73 | "type": "zip", 74 | "url": "https://api.github.com/repos/clue/phar-composer/zipball/3ea2cd961c45290b2578c6bf971ae028bfcd6377", 75 | "reference": "3ea2cd961c45290b2578c6bf971ae028bfcd6377", 76 | "shasum": "" 77 | }, 78 | "require": { 79 | "herrera-io/box": "~1.5", 80 | "knplabs/packagist-api": "~1.0", 81 | "symfony/console": "~2.1", 82 | "symfony/finder": "~2.1", 83 | "symfony/process": "~2.1" 84 | }, 85 | "bin": [ 86 | "bin/phar-composer" 87 | ], 88 | "type": "library", 89 | "extra": { 90 | "phar": { 91 | "bundler": "composer" 92 | } 93 | }, 94 | "autoload": { 95 | "psr-0": { 96 | "Clue": "src/" 97 | } 98 | }, 99 | "notification-url": "https://packagist.org/downloads/", 100 | "license": [ 101 | "MIT" 102 | ], 103 | "authors": [ 104 | { 105 | "name": "Christian Lück", 106 | "email": "christian@lueck.tv" 107 | } 108 | ], 109 | "description": "Simple phar creation for your projects managed via composer", 110 | "homepage": "https://github.com/clue/phar-composer", 111 | "keywords": [ 112 | "build process", 113 | "bundle dependencies", 114 | "executable phar" 115 | ], 116 | "time": "2015-11-15 18:36:37" 117 | }, 118 | { 119 | "name": "doctrine/inflector", 120 | "version": "v1.2.0", 121 | "source": { 122 | "type": "git", 123 | "url": "https://github.com/doctrine/inflector.git", 124 | "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462" 125 | }, 126 | "dist": { 127 | "type": "zip", 128 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/e11d84c6e018beedd929cff5220969a3c6d1d462", 129 | "reference": "e11d84c6e018beedd929cff5220969a3c6d1d462", 130 | "shasum": "" 131 | }, 132 | "require": { 133 | "php": "^7.0" 134 | }, 135 | "require-dev": { 136 | "phpunit/phpunit": "^6.2" 137 | }, 138 | "type": "library", 139 | "extra": { 140 | "branch-alias": { 141 | "dev-master": "1.2.x-dev" 142 | } 143 | }, 144 | "autoload": { 145 | "psr-4": { 146 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 147 | } 148 | }, 149 | "notification-url": "https://packagist.org/downloads/", 150 | "license": [ 151 | "MIT" 152 | ], 153 | "authors": [ 154 | { 155 | "name": "Roman Borschel", 156 | "email": "roman@code-factory.org" 157 | }, 158 | { 159 | "name": "Benjamin Eberlei", 160 | "email": "kontakt@beberlei.de" 161 | }, 162 | { 163 | "name": "Guilherme Blanco", 164 | "email": "guilhermeblanco@gmail.com" 165 | }, 166 | { 167 | "name": "Jonathan Wage", 168 | "email": "jonwage@gmail.com" 169 | }, 170 | { 171 | "name": "Johannes Schmitt", 172 | "email": "schmittjoh@gmail.com" 173 | } 174 | ], 175 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 176 | "homepage": "http://www.doctrine-project.org", 177 | "keywords": [ 178 | "inflection", 179 | "pluralize", 180 | "singularize", 181 | "string" 182 | ], 183 | "time": "2017-07-22 12:18:28" 184 | }, 185 | { 186 | "name": "doctrine/instantiator", 187 | "version": "1.0.5", 188 | "source": { 189 | "type": "git", 190 | "url": "https://github.com/doctrine/instantiator.git", 191 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 192 | }, 193 | "dist": { 194 | "type": "zip", 195 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 196 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 197 | "shasum": "" 198 | }, 199 | "require": { 200 | "php": ">=5.3,<8.0-DEV" 201 | }, 202 | "require-dev": { 203 | "athletic/athletic": "~0.1.8", 204 | "ext-pdo": "*", 205 | "ext-phar": "*", 206 | "phpunit/phpunit": "~4.0", 207 | "squizlabs/php_codesniffer": "~2.0" 208 | }, 209 | "type": "library", 210 | "extra": { 211 | "branch-alias": { 212 | "dev-master": "1.0.x-dev" 213 | } 214 | }, 215 | "autoload": { 216 | "psr-4": { 217 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 218 | } 219 | }, 220 | "notification-url": "https://packagist.org/downloads/", 221 | "license": [ 222 | "MIT" 223 | ], 224 | "authors": [ 225 | { 226 | "name": "Marco Pivetta", 227 | "email": "ocramius@gmail.com", 228 | "homepage": "http://ocramius.github.com/" 229 | } 230 | ], 231 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 232 | "homepage": "https://github.com/doctrine/instantiator", 233 | "keywords": [ 234 | "constructor", 235 | "instantiate" 236 | ], 237 | "time": "2015-06-14 21:17:01" 238 | }, 239 | { 240 | "name": "guzzlehttp/guzzle", 241 | "version": "6.3.0", 242 | "source": { 243 | "type": "git", 244 | "url": "https://github.com/guzzle/guzzle.git", 245 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699" 246 | }, 247 | "dist": { 248 | "type": "zip", 249 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699", 250 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699", 251 | "shasum": "" 252 | }, 253 | "require": { 254 | "guzzlehttp/promises": "^1.0", 255 | "guzzlehttp/psr7": "^1.4", 256 | "php": ">=5.5" 257 | }, 258 | "require-dev": { 259 | "ext-curl": "*", 260 | "phpunit/phpunit": "^4.0 || ^5.0", 261 | "psr/log": "^1.0" 262 | }, 263 | "suggest": { 264 | "psr/log": "Required for using the Log middleware" 265 | }, 266 | "type": "library", 267 | "extra": { 268 | "branch-alias": { 269 | "dev-master": "6.2-dev" 270 | } 271 | }, 272 | "autoload": { 273 | "files": [ 274 | "src/functions_include.php" 275 | ], 276 | "psr-4": { 277 | "GuzzleHttp\\": "src/" 278 | } 279 | }, 280 | "notification-url": "https://packagist.org/downloads/", 281 | "license": [ 282 | "MIT" 283 | ], 284 | "authors": [ 285 | { 286 | "name": "Michael Dowling", 287 | "email": "mtdowling@gmail.com", 288 | "homepage": "https://github.com/mtdowling" 289 | } 290 | ], 291 | "description": "Guzzle is a PHP HTTP client library", 292 | "homepage": "http://guzzlephp.org/", 293 | "keywords": [ 294 | "client", 295 | "curl", 296 | "framework", 297 | "http", 298 | "http client", 299 | "rest", 300 | "web service" 301 | ], 302 | "time": "2017-06-22 18:50:49" 303 | }, 304 | { 305 | "name": "guzzlehttp/promises", 306 | "version": "v1.3.1", 307 | "source": { 308 | "type": "git", 309 | "url": "https://github.com/guzzle/promises.git", 310 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 311 | }, 312 | "dist": { 313 | "type": "zip", 314 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 315 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 316 | "shasum": "" 317 | }, 318 | "require": { 319 | "php": ">=5.5.0" 320 | }, 321 | "require-dev": { 322 | "phpunit/phpunit": "^4.0" 323 | }, 324 | "type": "library", 325 | "extra": { 326 | "branch-alias": { 327 | "dev-master": "1.4-dev" 328 | } 329 | }, 330 | "autoload": { 331 | "psr-4": { 332 | "GuzzleHttp\\Promise\\": "src/" 333 | }, 334 | "files": [ 335 | "src/functions_include.php" 336 | ] 337 | }, 338 | "notification-url": "https://packagist.org/downloads/", 339 | "license": [ 340 | "MIT" 341 | ], 342 | "authors": [ 343 | { 344 | "name": "Michael Dowling", 345 | "email": "mtdowling@gmail.com", 346 | "homepage": "https://github.com/mtdowling" 347 | } 348 | ], 349 | "description": "Guzzle promises library", 350 | "keywords": [ 351 | "promise" 352 | ], 353 | "time": "2016-12-20 10:07:11" 354 | }, 355 | { 356 | "name": "guzzlehttp/psr7", 357 | "version": "1.4.2", 358 | "source": { 359 | "type": "git", 360 | "url": "https://github.com/guzzle/psr7.git", 361 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" 362 | }, 363 | "dist": { 364 | "type": "zip", 365 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 366 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 367 | "shasum": "" 368 | }, 369 | "require": { 370 | "php": ">=5.4.0", 371 | "psr/http-message": "~1.0" 372 | }, 373 | "provide": { 374 | "psr/http-message-implementation": "1.0" 375 | }, 376 | "require-dev": { 377 | "phpunit/phpunit": "~4.0" 378 | }, 379 | "type": "library", 380 | "extra": { 381 | "branch-alias": { 382 | "dev-master": "1.4-dev" 383 | } 384 | }, 385 | "autoload": { 386 | "psr-4": { 387 | "GuzzleHttp\\Psr7\\": "src/" 388 | }, 389 | "files": [ 390 | "src/functions_include.php" 391 | ] 392 | }, 393 | "notification-url": "https://packagist.org/downloads/", 394 | "license": [ 395 | "MIT" 396 | ], 397 | "authors": [ 398 | { 399 | "name": "Michael Dowling", 400 | "email": "mtdowling@gmail.com", 401 | "homepage": "https://github.com/mtdowling" 402 | }, 403 | { 404 | "name": "Tobias Schultze", 405 | "homepage": "https://github.com/Tobion" 406 | } 407 | ], 408 | "description": "PSR-7 message implementation that also provides common utility methods", 409 | "keywords": [ 410 | "http", 411 | "message", 412 | "request", 413 | "response", 414 | "stream", 415 | "uri", 416 | "url" 417 | ], 418 | "time": "2017-03-20 17:10:46" 419 | }, 420 | { 421 | "name": "herrera-io/box", 422 | "version": "1.6.1", 423 | "source": { 424 | "type": "git", 425 | "url": "https://github.com/box-project/box2-lib.git", 426 | "reference": "b55dceb5c65cc831e94ec0786b0b9b15f1103e8e" 427 | }, 428 | "dist": { 429 | "type": "zip", 430 | "url": "https://api.github.com/repos/box-project/box2-lib/zipball/b55dceb5c65cc831e94ec0786b0b9b15f1103e8e", 431 | "reference": "b55dceb5c65cc831e94ec0786b0b9b15f1103e8e", 432 | "shasum": "" 433 | }, 434 | "require": { 435 | "ext-phar": "*", 436 | "phine/path": "~1.0", 437 | "php": ">=5.3.3", 438 | "tedivm/jshrink": "~1.0" 439 | }, 440 | "require-dev": { 441 | "herrera-io/annotations": "~1.0", 442 | "herrera-io/phpunit-test-case": "1.*", 443 | "mikey179/vfsstream": "1.1.0", 444 | "phpseclib/phpseclib": "~0.3", 445 | "phpunit/phpunit": "3.7.*" 446 | }, 447 | "suggest": { 448 | "herrera-io/annotations": "For compacting annotated docblocks.", 449 | "phpseclib/phpseclib": "For verifying OpenSSL signed phars without the phar extension." 450 | }, 451 | "type": "library", 452 | "extra": { 453 | "branch-alias": { 454 | "dev-master": "1.0-dev" 455 | } 456 | }, 457 | "autoload": { 458 | "psr-0": { 459 | "Herrera\\Box": "src/lib" 460 | } 461 | }, 462 | "notification-url": "https://packagist.org/downloads/", 463 | "license": [ 464 | "MIT" 465 | ], 466 | "authors": [ 467 | { 468 | "name": "Kevin Herrera", 469 | "email": "kevin@herrera.io", 470 | "homepage": "http://kevin.herrera.io" 471 | } 472 | ], 473 | "description": "A library for simplifying the PHAR build process.", 474 | "homepage": "https://github.com/box-project/box2-lib", 475 | "keywords": [ 476 | "phar" 477 | ], 478 | "time": "2014-12-03 23:26:45" 479 | }, 480 | { 481 | "name": "knplabs/packagist-api", 482 | "version": "v1.5.0", 483 | "source": { 484 | "type": "git", 485 | "url": "https://github.com/KnpLabs/packagist-api.git", 486 | "reference": "44bdf781fa2ee0259bfff984b26d2b8666b0e89b" 487 | }, 488 | "dist": { 489 | "type": "zip", 490 | "url": "https://api.github.com/repos/KnpLabs/packagist-api/zipball/44bdf781fa2ee0259bfff984b26d2b8666b0e89b", 491 | "reference": "44bdf781fa2ee0259bfff984b26d2b8666b0e89b", 492 | "shasum": "" 493 | }, 494 | "require": { 495 | "doctrine/inflector": "~1.0", 496 | "guzzlehttp/guzzle": "~6.0", 497 | "php": ">=5.5" 498 | }, 499 | "require-dev": { 500 | "phpspec/phpspec": "~2.0" 501 | }, 502 | "type": "library", 503 | "extra": { 504 | "branch-alias": { 505 | "dev-master": "1.x-dev" 506 | } 507 | }, 508 | "autoload": { 509 | "psr-0": { 510 | "Packagist\\Api\\": "src/" 511 | } 512 | }, 513 | "notification-url": "https://packagist.org/downloads/", 514 | "license": [ 515 | "MIT" 516 | ], 517 | "authors": [ 518 | { 519 | "name": "KnpLabs Team", 520 | "homepage": "http://knplabs.com" 521 | } 522 | ], 523 | "description": "Packagist API client.", 524 | "homepage": "http://knplabs.com", 525 | "keywords": [ 526 | "api", 527 | "composer", 528 | "packagist" 529 | ], 530 | "time": "2017-05-31 17:28:36" 531 | }, 532 | { 533 | "name": "myclabs/deep-copy", 534 | "version": "1.7.0", 535 | "source": { 536 | "type": "git", 537 | "url": "https://github.com/myclabs/DeepCopy.git", 538 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" 539 | }, 540 | "dist": { 541 | "type": "zip", 542 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 543 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 544 | "shasum": "" 545 | }, 546 | "require": { 547 | "php": "^5.6 || ^7.0" 548 | }, 549 | "require-dev": { 550 | "doctrine/collections": "^1.0", 551 | "doctrine/common": "^2.6", 552 | "phpunit/phpunit": "^4.1" 553 | }, 554 | "type": "library", 555 | "autoload": { 556 | "psr-4": { 557 | "DeepCopy\\": "src/DeepCopy/" 558 | }, 559 | "files": [ 560 | "src/DeepCopy/deep_copy.php" 561 | ] 562 | }, 563 | "notification-url": "https://packagist.org/downloads/", 564 | "license": [ 565 | "MIT" 566 | ], 567 | "description": "Create deep copies (clones) of your objects", 568 | "keywords": [ 569 | "clone", 570 | "copy", 571 | "duplicate", 572 | "object", 573 | "object graph" 574 | ], 575 | "time": "2017-10-19 19:58:43" 576 | }, 577 | { 578 | "name": "phar-io/manifest", 579 | "version": "1.0.1", 580 | "source": { 581 | "type": "git", 582 | "url": "https://github.com/phar-io/manifest.git", 583 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" 584 | }, 585 | "dist": { 586 | "type": "zip", 587 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", 588 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", 589 | "shasum": "" 590 | }, 591 | "require": { 592 | "ext-dom": "*", 593 | "ext-phar": "*", 594 | "phar-io/version": "^1.0.1", 595 | "php": "^5.6 || ^7.0" 596 | }, 597 | "type": "library", 598 | "extra": { 599 | "branch-alias": { 600 | "dev-master": "1.0.x-dev" 601 | } 602 | }, 603 | "autoload": { 604 | "classmap": [ 605 | "src/" 606 | ] 607 | }, 608 | "notification-url": "https://packagist.org/downloads/", 609 | "license": [ 610 | "BSD-3-Clause" 611 | ], 612 | "authors": [ 613 | { 614 | "name": "Arne Blankerts", 615 | "email": "arne@blankerts.de", 616 | "role": "Developer" 617 | }, 618 | { 619 | "name": "Sebastian Heuer", 620 | "email": "sebastian@phpeople.de", 621 | "role": "Developer" 622 | }, 623 | { 624 | "name": "Sebastian Bergmann", 625 | "email": "sebastian@phpunit.de", 626 | "role": "Developer" 627 | } 628 | ], 629 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 630 | "time": "2017-03-05 18:14:27" 631 | }, 632 | { 633 | "name": "phar-io/version", 634 | "version": "1.0.1", 635 | "source": { 636 | "type": "git", 637 | "url": "https://github.com/phar-io/version.git", 638 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" 639 | }, 640 | "dist": { 641 | "type": "zip", 642 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", 643 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", 644 | "shasum": "" 645 | }, 646 | "require": { 647 | "php": "^5.6 || ^7.0" 648 | }, 649 | "type": "library", 650 | "autoload": { 651 | "classmap": [ 652 | "src/" 653 | ] 654 | }, 655 | "notification-url": "https://packagist.org/downloads/", 656 | "license": [ 657 | "BSD-3-Clause" 658 | ], 659 | "authors": [ 660 | { 661 | "name": "Arne Blankerts", 662 | "email": "arne@blankerts.de", 663 | "role": "Developer" 664 | }, 665 | { 666 | "name": "Sebastian Heuer", 667 | "email": "sebastian@phpeople.de", 668 | "role": "Developer" 669 | }, 670 | { 671 | "name": "Sebastian Bergmann", 672 | "email": "sebastian@phpunit.de", 673 | "role": "Developer" 674 | } 675 | ], 676 | "description": "Library for handling version information and constraints", 677 | "time": "2017-03-05 17:38:23" 678 | }, 679 | { 680 | "name": "phine/exception", 681 | "version": "1.0.0", 682 | "source": { 683 | "type": "git", 684 | "url": "https://github.com/kherge-abandoned/lib-exception.git", 685 | "reference": "150c6b6090b2ebc53c60e87cb20c7f1287b7b68a" 686 | }, 687 | "dist": { 688 | "type": "zip", 689 | "url": "https://api.github.com/repos/kherge-abandoned/lib-exception/zipball/150c6b6090b2ebc53c60e87cb20c7f1287b7b68a", 690 | "reference": "150c6b6090b2ebc53c60e87cb20c7f1287b7b68a", 691 | "shasum": "" 692 | }, 693 | "require": { 694 | "php": ">=5.3.3" 695 | }, 696 | "require-dev": { 697 | "league/phpunit-coverage-listener": "~1.0" 698 | }, 699 | "type": "library", 700 | "extra": { 701 | "branch-alias": { 702 | "dev-master": "1.0-dev" 703 | } 704 | }, 705 | "autoload": { 706 | "psr-0": { 707 | "Phine\\Exception": "src/lib" 708 | } 709 | }, 710 | "notification-url": "https://packagist.org/downloads/", 711 | "license": [ 712 | "MIT" 713 | ], 714 | "authors": [ 715 | { 716 | "name": "Kevin Herrera", 717 | "email": "kevin@herrera.io", 718 | "homepage": "http://kevin.herrera.io" 719 | } 720 | ], 721 | "description": "A PHP library for improving the use of exceptions.", 722 | "homepage": "https://github.com/phine/lib-exception", 723 | "keywords": [ 724 | "exception" 725 | ], 726 | "abandoned": true, 727 | "time": "2013-08-27 17:43:25" 728 | }, 729 | { 730 | "name": "phine/path", 731 | "version": "1.1.0", 732 | "source": { 733 | "type": "git", 734 | "url": "https://github.com/box-project/box2-path.git", 735 | "reference": "cbe1a5eb6cf22958394db2469af9b773508abddd" 736 | }, 737 | "dist": { 738 | "type": "zip", 739 | "url": "https://api.github.com/repos/box-project/box2-path/zipball/cbe1a5eb6cf22958394db2469af9b773508abddd", 740 | "reference": "cbe1a5eb6cf22958394db2469af9b773508abddd", 741 | "shasum": "" 742 | }, 743 | "require": { 744 | "phine/exception": "~1.0", 745 | "php": ">=5.3.3" 746 | }, 747 | "require-dev": { 748 | "league/phpunit-coverage-listener": "~1.0" 749 | }, 750 | "type": "library", 751 | "extra": { 752 | "branch-alias": { 753 | "dev-master": "1.0-dev" 754 | } 755 | }, 756 | "autoload": { 757 | "psr-0": { 758 | "Phine\\Path": "src/lib" 759 | } 760 | }, 761 | "notification-url": "https://packagist.org/downloads/", 762 | "license": [ 763 | "MIT" 764 | ], 765 | "authors": [ 766 | { 767 | "name": "Kevin Herrera", 768 | "email": "kevin@herrera.io", 769 | "homepage": "http://kevin.herrera.io" 770 | } 771 | ], 772 | "description": "A PHP library for improving the use of file system paths.", 773 | "homepage": "https://github.com/phine/lib-path", 774 | "keywords": [ 775 | "file", 776 | "path", 777 | "system" 778 | ], 779 | "abandoned": true, 780 | "time": "2013-10-15 22:58:04" 781 | }, 782 | { 783 | "name": "phpdocumentor/reflection-common", 784 | "version": "1.0.1", 785 | "source": { 786 | "type": "git", 787 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 788 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 789 | }, 790 | "dist": { 791 | "type": "zip", 792 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 793 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 794 | "shasum": "" 795 | }, 796 | "require": { 797 | "php": ">=5.5" 798 | }, 799 | "require-dev": { 800 | "phpunit/phpunit": "^4.6" 801 | }, 802 | "type": "library", 803 | "extra": { 804 | "branch-alias": { 805 | "dev-master": "1.0.x-dev" 806 | } 807 | }, 808 | "autoload": { 809 | "psr-4": { 810 | "phpDocumentor\\Reflection\\": [ 811 | "src" 812 | ] 813 | } 814 | }, 815 | "notification-url": "https://packagist.org/downloads/", 816 | "license": [ 817 | "MIT" 818 | ], 819 | "authors": [ 820 | { 821 | "name": "Jaap van Otterdijk", 822 | "email": "opensource@ijaap.nl" 823 | } 824 | ], 825 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 826 | "homepage": "http://www.phpdoc.org", 827 | "keywords": [ 828 | "FQSEN", 829 | "phpDocumentor", 830 | "phpdoc", 831 | "reflection", 832 | "static analysis" 833 | ], 834 | "time": "2017-09-11 18:02:19" 835 | }, 836 | { 837 | "name": "phpdocumentor/reflection-docblock", 838 | "version": "4.2.0", 839 | "source": { 840 | "type": "git", 841 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 842 | "reference": "66465776cfc249844bde6d117abff1d22e06c2da" 843 | }, 844 | "dist": { 845 | "type": "zip", 846 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/66465776cfc249844bde6d117abff1d22e06c2da", 847 | "reference": "66465776cfc249844bde6d117abff1d22e06c2da", 848 | "shasum": "" 849 | }, 850 | "require": { 851 | "php": "^7.0", 852 | "phpdocumentor/reflection-common": "^1.0.0", 853 | "phpdocumentor/type-resolver": "^0.4.0", 854 | "webmozart/assert": "^1.0" 855 | }, 856 | "require-dev": { 857 | "doctrine/instantiator": "~1.0.5", 858 | "mockery/mockery": "^1.0", 859 | "phpunit/phpunit": "^6.4" 860 | }, 861 | "type": "library", 862 | "extra": { 863 | "branch-alias": { 864 | "dev-master": "4.x-dev" 865 | } 866 | }, 867 | "autoload": { 868 | "psr-4": { 869 | "phpDocumentor\\Reflection\\": [ 870 | "src/" 871 | ] 872 | } 873 | }, 874 | "notification-url": "https://packagist.org/downloads/", 875 | "license": [ 876 | "MIT" 877 | ], 878 | "authors": [ 879 | { 880 | "name": "Mike van Riel", 881 | "email": "me@mikevanriel.com" 882 | } 883 | ], 884 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 885 | "time": "2017-11-27 17:38:31" 886 | }, 887 | { 888 | "name": "phpdocumentor/type-resolver", 889 | "version": "0.4.0", 890 | "source": { 891 | "type": "git", 892 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 893 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 894 | }, 895 | "dist": { 896 | "type": "zip", 897 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 898 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 899 | "shasum": "" 900 | }, 901 | "require": { 902 | "php": "^5.5 || ^7.0", 903 | "phpdocumentor/reflection-common": "^1.0" 904 | }, 905 | "require-dev": { 906 | "mockery/mockery": "^0.9.4", 907 | "phpunit/phpunit": "^5.2||^4.8.24" 908 | }, 909 | "type": "library", 910 | "extra": { 911 | "branch-alias": { 912 | "dev-master": "1.0.x-dev" 913 | } 914 | }, 915 | "autoload": { 916 | "psr-4": { 917 | "phpDocumentor\\Reflection\\": [ 918 | "src/" 919 | ] 920 | } 921 | }, 922 | "notification-url": "https://packagist.org/downloads/", 923 | "license": [ 924 | "MIT" 925 | ], 926 | "authors": [ 927 | { 928 | "name": "Mike van Riel", 929 | "email": "me@mikevanriel.com" 930 | } 931 | ], 932 | "time": "2017-07-14 14:27:02" 933 | }, 934 | { 935 | "name": "phpspec/prophecy", 936 | "version": "1.7.3", 937 | "source": { 938 | "type": "git", 939 | "url": "https://github.com/phpspec/prophecy.git", 940 | "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf" 941 | }, 942 | "dist": { 943 | "type": "zip", 944 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", 945 | "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf", 946 | "shasum": "" 947 | }, 948 | "require": { 949 | "doctrine/instantiator": "^1.0.2", 950 | "php": "^5.3|^7.0", 951 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 952 | "sebastian/comparator": "^1.1|^2.0", 953 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 954 | }, 955 | "require-dev": { 956 | "phpspec/phpspec": "^2.5|^3.2", 957 | "phpunit/phpunit": "^4.8.35 || ^5.7" 958 | }, 959 | "type": "library", 960 | "extra": { 961 | "branch-alias": { 962 | "dev-master": "1.7.x-dev" 963 | } 964 | }, 965 | "autoload": { 966 | "psr-0": { 967 | "Prophecy\\": "src/" 968 | } 969 | }, 970 | "notification-url": "https://packagist.org/downloads/", 971 | "license": [ 972 | "MIT" 973 | ], 974 | "authors": [ 975 | { 976 | "name": "Konstantin Kudryashov", 977 | "email": "ever.zet@gmail.com", 978 | "homepage": "http://everzet.com" 979 | }, 980 | { 981 | "name": "Marcello Duarte", 982 | "email": "marcello.duarte@gmail.com" 983 | } 984 | ], 985 | "description": "Highly opinionated mocking framework for PHP 5.3+", 986 | "homepage": "https://github.com/phpspec/prophecy", 987 | "keywords": [ 988 | "Double", 989 | "Dummy", 990 | "fake", 991 | "mock", 992 | "spy", 993 | "stub" 994 | ], 995 | "time": "2017-11-24 13:59:53" 996 | }, 997 | { 998 | "name": "phpunit/php-code-coverage", 999 | "version": "5.3.0", 1000 | "source": { 1001 | "type": "git", 1002 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1003 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1" 1004 | }, 1005 | "dist": { 1006 | "type": "zip", 1007 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1", 1008 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1", 1009 | "shasum": "" 1010 | }, 1011 | "require": { 1012 | "ext-dom": "*", 1013 | "ext-xmlwriter": "*", 1014 | "php": "^7.0", 1015 | "phpunit/php-file-iterator": "^1.4.2", 1016 | "phpunit/php-text-template": "^1.2.1", 1017 | "phpunit/php-token-stream": "^2.0.1", 1018 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1019 | "sebastian/environment": "^3.0", 1020 | "sebastian/version": "^2.0.1", 1021 | "theseer/tokenizer": "^1.1" 1022 | }, 1023 | "require-dev": { 1024 | "phpunit/phpunit": "^6.0" 1025 | }, 1026 | "suggest": { 1027 | "ext-xdebug": "^2.5.5" 1028 | }, 1029 | "type": "library", 1030 | "extra": { 1031 | "branch-alias": { 1032 | "dev-master": "5.3.x-dev" 1033 | } 1034 | }, 1035 | "autoload": { 1036 | "classmap": [ 1037 | "src/" 1038 | ] 1039 | }, 1040 | "notification-url": "https://packagist.org/downloads/", 1041 | "license": [ 1042 | "BSD-3-Clause" 1043 | ], 1044 | "authors": [ 1045 | { 1046 | "name": "Sebastian Bergmann", 1047 | "email": "sebastian@phpunit.de", 1048 | "role": "lead" 1049 | } 1050 | ], 1051 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1052 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1053 | "keywords": [ 1054 | "coverage", 1055 | "testing", 1056 | "xunit" 1057 | ], 1058 | "time": "2017-12-06 09:29:45" 1059 | }, 1060 | { 1061 | "name": "phpunit/php-file-iterator", 1062 | "version": "1.4.5", 1063 | "source": { 1064 | "type": "git", 1065 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1066 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 1067 | }, 1068 | "dist": { 1069 | "type": "zip", 1070 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 1071 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 1072 | "shasum": "" 1073 | }, 1074 | "require": { 1075 | "php": ">=5.3.3" 1076 | }, 1077 | "type": "library", 1078 | "extra": { 1079 | "branch-alias": { 1080 | "dev-master": "1.4.x-dev" 1081 | } 1082 | }, 1083 | "autoload": { 1084 | "classmap": [ 1085 | "src/" 1086 | ] 1087 | }, 1088 | "notification-url": "https://packagist.org/downloads/", 1089 | "license": [ 1090 | "BSD-3-Clause" 1091 | ], 1092 | "authors": [ 1093 | { 1094 | "name": "Sebastian Bergmann", 1095 | "email": "sb@sebastian-bergmann.de", 1096 | "role": "lead" 1097 | } 1098 | ], 1099 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1100 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1101 | "keywords": [ 1102 | "filesystem", 1103 | "iterator" 1104 | ], 1105 | "time": "2017-11-27 13:52:08" 1106 | }, 1107 | { 1108 | "name": "phpunit/php-text-template", 1109 | "version": "1.2.1", 1110 | "source": { 1111 | "type": "git", 1112 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1113 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1114 | }, 1115 | "dist": { 1116 | "type": "zip", 1117 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1118 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1119 | "shasum": "" 1120 | }, 1121 | "require": { 1122 | "php": ">=5.3.3" 1123 | }, 1124 | "type": "library", 1125 | "autoload": { 1126 | "classmap": [ 1127 | "src/" 1128 | ] 1129 | }, 1130 | "notification-url": "https://packagist.org/downloads/", 1131 | "license": [ 1132 | "BSD-3-Clause" 1133 | ], 1134 | "authors": [ 1135 | { 1136 | "name": "Sebastian Bergmann", 1137 | "email": "sebastian@phpunit.de", 1138 | "role": "lead" 1139 | } 1140 | ], 1141 | "description": "Simple template engine.", 1142 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1143 | "keywords": [ 1144 | "template" 1145 | ], 1146 | "time": "2015-06-21 13:50:34" 1147 | }, 1148 | { 1149 | "name": "phpunit/php-timer", 1150 | "version": "1.0.9", 1151 | "source": { 1152 | "type": "git", 1153 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1154 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 1155 | }, 1156 | "dist": { 1157 | "type": "zip", 1158 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1159 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1160 | "shasum": "" 1161 | }, 1162 | "require": { 1163 | "php": "^5.3.3 || ^7.0" 1164 | }, 1165 | "require-dev": { 1166 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 1167 | }, 1168 | "type": "library", 1169 | "extra": { 1170 | "branch-alias": { 1171 | "dev-master": "1.0-dev" 1172 | } 1173 | }, 1174 | "autoload": { 1175 | "classmap": [ 1176 | "src/" 1177 | ] 1178 | }, 1179 | "notification-url": "https://packagist.org/downloads/", 1180 | "license": [ 1181 | "BSD-3-Clause" 1182 | ], 1183 | "authors": [ 1184 | { 1185 | "name": "Sebastian Bergmann", 1186 | "email": "sb@sebastian-bergmann.de", 1187 | "role": "lead" 1188 | } 1189 | ], 1190 | "description": "Utility class for timing", 1191 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1192 | "keywords": [ 1193 | "timer" 1194 | ], 1195 | "time": "2017-02-26 11:10:40" 1196 | }, 1197 | { 1198 | "name": "phpunit/php-token-stream", 1199 | "version": "2.0.2", 1200 | "source": { 1201 | "type": "git", 1202 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1203 | "reference": "791198a2c6254db10131eecfe8c06670700904db" 1204 | }, 1205 | "dist": { 1206 | "type": "zip", 1207 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", 1208 | "reference": "791198a2c6254db10131eecfe8c06670700904db", 1209 | "shasum": "" 1210 | }, 1211 | "require": { 1212 | "ext-tokenizer": "*", 1213 | "php": "^7.0" 1214 | }, 1215 | "require-dev": { 1216 | "phpunit/phpunit": "^6.2.4" 1217 | }, 1218 | "type": "library", 1219 | "extra": { 1220 | "branch-alias": { 1221 | "dev-master": "2.0-dev" 1222 | } 1223 | }, 1224 | "autoload": { 1225 | "classmap": [ 1226 | "src/" 1227 | ] 1228 | }, 1229 | "notification-url": "https://packagist.org/downloads/", 1230 | "license": [ 1231 | "BSD-3-Clause" 1232 | ], 1233 | "authors": [ 1234 | { 1235 | "name": "Sebastian Bergmann", 1236 | "email": "sebastian@phpunit.de" 1237 | } 1238 | ], 1239 | "description": "Wrapper around PHP's tokenizer extension.", 1240 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1241 | "keywords": [ 1242 | "tokenizer" 1243 | ], 1244 | "time": "2017-11-27 05:48:46" 1245 | }, 1246 | { 1247 | "name": "phpunit/phpunit", 1248 | "version": "6.5.5", 1249 | "source": { 1250 | "type": "git", 1251 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1252 | "reference": "83d27937a310f2984fd575686138597147bdc7df" 1253 | }, 1254 | "dist": { 1255 | "type": "zip", 1256 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/83d27937a310f2984fd575686138597147bdc7df", 1257 | "reference": "83d27937a310f2984fd575686138597147bdc7df", 1258 | "shasum": "" 1259 | }, 1260 | "require": { 1261 | "ext-dom": "*", 1262 | "ext-json": "*", 1263 | "ext-libxml": "*", 1264 | "ext-mbstring": "*", 1265 | "ext-xml": "*", 1266 | "myclabs/deep-copy": "^1.6.1", 1267 | "phar-io/manifest": "^1.0.1", 1268 | "phar-io/version": "^1.0", 1269 | "php": "^7.0", 1270 | "phpspec/prophecy": "^1.7", 1271 | "phpunit/php-code-coverage": "^5.3", 1272 | "phpunit/php-file-iterator": "^1.4.3", 1273 | "phpunit/php-text-template": "^1.2.1", 1274 | "phpunit/php-timer": "^1.0.9", 1275 | "phpunit/phpunit-mock-objects": "^5.0.5", 1276 | "sebastian/comparator": "^2.1", 1277 | "sebastian/diff": "^2.0", 1278 | "sebastian/environment": "^3.1", 1279 | "sebastian/exporter": "^3.1", 1280 | "sebastian/global-state": "^2.0", 1281 | "sebastian/object-enumerator": "^3.0.3", 1282 | "sebastian/resource-operations": "^1.0", 1283 | "sebastian/version": "^2.0.1" 1284 | }, 1285 | "conflict": { 1286 | "phpdocumentor/reflection-docblock": "3.0.2", 1287 | "phpunit/dbunit": "<3.0" 1288 | }, 1289 | "require-dev": { 1290 | "ext-pdo": "*" 1291 | }, 1292 | "suggest": { 1293 | "ext-xdebug": "*", 1294 | "phpunit/php-invoker": "^1.1" 1295 | }, 1296 | "bin": [ 1297 | "phpunit" 1298 | ], 1299 | "type": "library", 1300 | "extra": { 1301 | "branch-alias": { 1302 | "dev-master": "6.5.x-dev" 1303 | } 1304 | }, 1305 | "autoload": { 1306 | "classmap": [ 1307 | "src/" 1308 | ] 1309 | }, 1310 | "notification-url": "https://packagist.org/downloads/", 1311 | "license": [ 1312 | "BSD-3-Clause" 1313 | ], 1314 | "authors": [ 1315 | { 1316 | "name": "Sebastian Bergmann", 1317 | "email": "sebastian@phpunit.de", 1318 | "role": "lead" 1319 | } 1320 | ], 1321 | "description": "The PHP Unit Testing framework.", 1322 | "homepage": "https://phpunit.de/", 1323 | "keywords": [ 1324 | "phpunit", 1325 | "testing", 1326 | "xunit" 1327 | ], 1328 | "time": "2017-12-17 06:31:19" 1329 | }, 1330 | { 1331 | "name": "phpunit/phpunit-mock-objects", 1332 | "version": "5.0.6", 1333 | "source": { 1334 | "type": "git", 1335 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 1336 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" 1337 | }, 1338 | "dist": { 1339 | "type": "zip", 1340 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", 1341 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", 1342 | "shasum": "" 1343 | }, 1344 | "require": { 1345 | "doctrine/instantiator": "^1.0.5", 1346 | "php": "^7.0", 1347 | "phpunit/php-text-template": "^1.2.1", 1348 | "sebastian/exporter": "^3.1" 1349 | }, 1350 | "conflict": { 1351 | "phpunit/phpunit": "<6.0" 1352 | }, 1353 | "require-dev": { 1354 | "phpunit/phpunit": "^6.5" 1355 | }, 1356 | "suggest": { 1357 | "ext-soap": "*" 1358 | }, 1359 | "type": "library", 1360 | "extra": { 1361 | "branch-alias": { 1362 | "dev-master": "5.0.x-dev" 1363 | } 1364 | }, 1365 | "autoload": { 1366 | "classmap": [ 1367 | "src/" 1368 | ] 1369 | }, 1370 | "notification-url": "https://packagist.org/downloads/", 1371 | "license": [ 1372 | "BSD-3-Clause" 1373 | ], 1374 | "authors": [ 1375 | { 1376 | "name": "Sebastian Bergmann", 1377 | "email": "sebastian@phpunit.de", 1378 | "role": "lead" 1379 | } 1380 | ], 1381 | "description": "Mock Object library for PHPUnit", 1382 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 1383 | "keywords": [ 1384 | "mock", 1385 | "xunit" 1386 | ], 1387 | "time": "2018-01-06 05:45:45" 1388 | }, 1389 | { 1390 | "name": "psr/http-message", 1391 | "version": "1.0.1", 1392 | "source": { 1393 | "type": "git", 1394 | "url": "https://github.com/php-fig/http-message.git", 1395 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 1396 | }, 1397 | "dist": { 1398 | "type": "zip", 1399 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 1400 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 1401 | "shasum": "" 1402 | }, 1403 | "require": { 1404 | "php": ">=5.3.0" 1405 | }, 1406 | "type": "library", 1407 | "extra": { 1408 | "branch-alias": { 1409 | "dev-master": "1.0.x-dev" 1410 | } 1411 | }, 1412 | "autoload": { 1413 | "psr-4": { 1414 | "Psr\\Http\\Message\\": "src/" 1415 | } 1416 | }, 1417 | "notification-url": "https://packagist.org/downloads/", 1418 | "license": [ 1419 | "MIT" 1420 | ], 1421 | "authors": [ 1422 | { 1423 | "name": "PHP-FIG", 1424 | "homepage": "http://www.php-fig.org/" 1425 | } 1426 | ], 1427 | "description": "Common interface for HTTP messages", 1428 | "homepage": "https://github.com/php-fig/http-message", 1429 | "keywords": [ 1430 | "http", 1431 | "http-message", 1432 | "psr", 1433 | "psr-7", 1434 | "request", 1435 | "response" 1436 | ], 1437 | "time": "2016-08-06 14:39:51" 1438 | }, 1439 | { 1440 | "name": "psr/log", 1441 | "version": "1.0.2", 1442 | "source": { 1443 | "type": "git", 1444 | "url": "https://github.com/php-fig/log.git", 1445 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 1446 | }, 1447 | "dist": { 1448 | "type": "zip", 1449 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1450 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1451 | "shasum": "" 1452 | }, 1453 | "require": { 1454 | "php": ">=5.3.0" 1455 | }, 1456 | "type": "library", 1457 | "extra": { 1458 | "branch-alias": { 1459 | "dev-master": "1.0.x-dev" 1460 | } 1461 | }, 1462 | "autoload": { 1463 | "psr-4": { 1464 | "Psr\\Log\\": "Psr/Log/" 1465 | } 1466 | }, 1467 | "notification-url": "https://packagist.org/downloads/", 1468 | "license": [ 1469 | "MIT" 1470 | ], 1471 | "authors": [ 1472 | { 1473 | "name": "PHP-FIG", 1474 | "homepage": "http://www.php-fig.org/" 1475 | } 1476 | ], 1477 | "description": "Common interface for logging libraries", 1478 | "homepage": "https://github.com/php-fig/log", 1479 | "keywords": [ 1480 | "log", 1481 | "psr", 1482 | "psr-3" 1483 | ], 1484 | "time": "2016-10-10 12:19:37" 1485 | }, 1486 | { 1487 | "name": "sebastian/code-unit-reverse-lookup", 1488 | "version": "1.0.1", 1489 | "source": { 1490 | "type": "git", 1491 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1492 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1493 | }, 1494 | "dist": { 1495 | "type": "zip", 1496 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1497 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1498 | "shasum": "" 1499 | }, 1500 | "require": { 1501 | "php": "^5.6 || ^7.0" 1502 | }, 1503 | "require-dev": { 1504 | "phpunit/phpunit": "^5.7 || ^6.0" 1505 | }, 1506 | "type": "library", 1507 | "extra": { 1508 | "branch-alias": { 1509 | "dev-master": "1.0.x-dev" 1510 | } 1511 | }, 1512 | "autoload": { 1513 | "classmap": [ 1514 | "src/" 1515 | ] 1516 | }, 1517 | "notification-url": "https://packagist.org/downloads/", 1518 | "license": [ 1519 | "BSD-3-Clause" 1520 | ], 1521 | "authors": [ 1522 | { 1523 | "name": "Sebastian Bergmann", 1524 | "email": "sebastian@phpunit.de" 1525 | } 1526 | ], 1527 | "description": "Looks up which function or method a line of code belongs to", 1528 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1529 | "time": "2017-03-04 06:30:41" 1530 | }, 1531 | { 1532 | "name": "sebastian/comparator", 1533 | "version": "2.1.2", 1534 | "source": { 1535 | "type": "git", 1536 | "url": "https://github.com/sebastianbergmann/comparator.git", 1537 | "reference": "11c07feade1d65453e06df3b3b90171d6d982087" 1538 | }, 1539 | "dist": { 1540 | "type": "zip", 1541 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/11c07feade1d65453e06df3b3b90171d6d982087", 1542 | "reference": "11c07feade1d65453e06df3b3b90171d6d982087", 1543 | "shasum": "" 1544 | }, 1545 | "require": { 1546 | "php": "^7.0", 1547 | "sebastian/diff": "^2.0", 1548 | "sebastian/exporter": "^3.1" 1549 | }, 1550 | "require-dev": { 1551 | "phpunit/phpunit": "^6.4" 1552 | }, 1553 | "type": "library", 1554 | "extra": { 1555 | "branch-alias": { 1556 | "dev-master": "2.1.x-dev" 1557 | } 1558 | }, 1559 | "autoload": { 1560 | "classmap": [ 1561 | "src/" 1562 | ] 1563 | }, 1564 | "notification-url": "https://packagist.org/downloads/", 1565 | "license": [ 1566 | "BSD-3-Clause" 1567 | ], 1568 | "authors": [ 1569 | { 1570 | "name": "Jeff Welch", 1571 | "email": "whatthejeff@gmail.com" 1572 | }, 1573 | { 1574 | "name": "Volker Dusch", 1575 | "email": "github@wallbash.com" 1576 | }, 1577 | { 1578 | "name": "Bernhard Schussek", 1579 | "email": "bschussek@2bepublished.at" 1580 | }, 1581 | { 1582 | "name": "Sebastian Bergmann", 1583 | "email": "sebastian@phpunit.de" 1584 | } 1585 | ], 1586 | "description": "Provides the functionality to compare PHP values for equality", 1587 | "homepage": "https://github.com/sebastianbergmann/comparator", 1588 | "keywords": [ 1589 | "comparator", 1590 | "compare", 1591 | "equality" 1592 | ], 1593 | "time": "2018-01-12 06:34:42" 1594 | }, 1595 | { 1596 | "name": "sebastian/diff", 1597 | "version": "2.0.1", 1598 | "source": { 1599 | "type": "git", 1600 | "url": "https://github.com/sebastianbergmann/diff.git", 1601 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" 1602 | }, 1603 | "dist": { 1604 | "type": "zip", 1605 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1606 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1607 | "shasum": "" 1608 | }, 1609 | "require": { 1610 | "php": "^7.0" 1611 | }, 1612 | "require-dev": { 1613 | "phpunit/phpunit": "^6.2" 1614 | }, 1615 | "type": "library", 1616 | "extra": { 1617 | "branch-alias": { 1618 | "dev-master": "2.0-dev" 1619 | } 1620 | }, 1621 | "autoload": { 1622 | "classmap": [ 1623 | "src/" 1624 | ] 1625 | }, 1626 | "notification-url": "https://packagist.org/downloads/", 1627 | "license": [ 1628 | "BSD-3-Clause" 1629 | ], 1630 | "authors": [ 1631 | { 1632 | "name": "Kore Nordmann", 1633 | "email": "mail@kore-nordmann.de" 1634 | }, 1635 | { 1636 | "name": "Sebastian Bergmann", 1637 | "email": "sebastian@phpunit.de" 1638 | } 1639 | ], 1640 | "description": "Diff implementation", 1641 | "homepage": "https://github.com/sebastianbergmann/diff", 1642 | "keywords": [ 1643 | "diff" 1644 | ], 1645 | "time": "2017-08-03 08:09:46" 1646 | }, 1647 | { 1648 | "name": "sebastian/environment", 1649 | "version": "3.1.0", 1650 | "source": { 1651 | "type": "git", 1652 | "url": "https://github.com/sebastianbergmann/environment.git", 1653 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" 1654 | }, 1655 | "dist": { 1656 | "type": "zip", 1657 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1658 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1659 | "shasum": "" 1660 | }, 1661 | "require": { 1662 | "php": "^7.0" 1663 | }, 1664 | "require-dev": { 1665 | "phpunit/phpunit": "^6.1" 1666 | }, 1667 | "type": "library", 1668 | "extra": { 1669 | "branch-alias": { 1670 | "dev-master": "3.1.x-dev" 1671 | } 1672 | }, 1673 | "autoload": { 1674 | "classmap": [ 1675 | "src/" 1676 | ] 1677 | }, 1678 | "notification-url": "https://packagist.org/downloads/", 1679 | "license": [ 1680 | "BSD-3-Clause" 1681 | ], 1682 | "authors": [ 1683 | { 1684 | "name": "Sebastian Bergmann", 1685 | "email": "sebastian@phpunit.de" 1686 | } 1687 | ], 1688 | "description": "Provides functionality to handle HHVM/PHP environments", 1689 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1690 | "keywords": [ 1691 | "Xdebug", 1692 | "environment", 1693 | "hhvm" 1694 | ], 1695 | "time": "2017-07-01 08:51:00" 1696 | }, 1697 | { 1698 | "name": "sebastian/exporter", 1699 | "version": "3.1.0", 1700 | "source": { 1701 | "type": "git", 1702 | "url": "https://github.com/sebastianbergmann/exporter.git", 1703 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 1704 | }, 1705 | "dist": { 1706 | "type": "zip", 1707 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 1708 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 1709 | "shasum": "" 1710 | }, 1711 | "require": { 1712 | "php": "^7.0", 1713 | "sebastian/recursion-context": "^3.0" 1714 | }, 1715 | "require-dev": { 1716 | "ext-mbstring": "*", 1717 | "phpunit/phpunit": "^6.0" 1718 | }, 1719 | "type": "library", 1720 | "extra": { 1721 | "branch-alias": { 1722 | "dev-master": "3.1.x-dev" 1723 | } 1724 | }, 1725 | "autoload": { 1726 | "classmap": [ 1727 | "src/" 1728 | ] 1729 | }, 1730 | "notification-url": "https://packagist.org/downloads/", 1731 | "license": [ 1732 | "BSD-3-Clause" 1733 | ], 1734 | "authors": [ 1735 | { 1736 | "name": "Jeff Welch", 1737 | "email": "whatthejeff@gmail.com" 1738 | }, 1739 | { 1740 | "name": "Volker Dusch", 1741 | "email": "github@wallbash.com" 1742 | }, 1743 | { 1744 | "name": "Bernhard Schussek", 1745 | "email": "bschussek@2bepublished.at" 1746 | }, 1747 | { 1748 | "name": "Sebastian Bergmann", 1749 | "email": "sebastian@phpunit.de" 1750 | }, 1751 | { 1752 | "name": "Adam Harvey", 1753 | "email": "aharvey@php.net" 1754 | } 1755 | ], 1756 | "description": "Provides the functionality to export PHP variables for visualization", 1757 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1758 | "keywords": [ 1759 | "export", 1760 | "exporter" 1761 | ], 1762 | "time": "2017-04-03 13:19:02" 1763 | }, 1764 | { 1765 | "name": "sebastian/global-state", 1766 | "version": "2.0.0", 1767 | "source": { 1768 | "type": "git", 1769 | "url": "https://github.com/sebastianbergmann/global-state.git", 1770 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 1771 | }, 1772 | "dist": { 1773 | "type": "zip", 1774 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1775 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1776 | "shasum": "" 1777 | }, 1778 | "require": { 1779 | "php": "^7.0" 1780 | }, 1781 | "require-dev": { 1782 | "phpunit/phpunit": "^6.0" 1783 | }, 1784 | "suggest": { 1785 | "ext-uopz": "*" 1786 | }, 1787 | "type": "library", 1788 | "extra": { 1789 | "branch-alias": { 1790 | "dev-master": "2.0-dev" 1791 | } 1792 | }, 1793 | "autoload": { 1794 | "classmap": [ 1795 | "src/" 1796 | ] 1797 | }, 1798 | "notification-url": "https://packagist.org/downloads/", 1799 | "license": [ 1800 | "BSD-3-Clause" 1801 | ], 1802 | "authors": [ 1803 | { 1804 | "name": "Sebastian Bergmann", 1805 | "email": "sebastian@phpunit.de" 1806 | } 1807 | ], 1808 | "description": "Snapshotting of global state", 1809 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1810 | "keywords": [ 1811 | "global state" 1812 | ], 1813 | "time": "2017-04-27 15:39:26" 1814 | }, 1815 | { 1816 | "name": "sebastian/object-enumerator", 1817 | "version": "3.0.3", 1818 | "source": { 1819 | "type": "git", 1820 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1821 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 1822 | }, 1823 | "dist": { 1824 | "type": "zip", 1825 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1826 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1827 | "shasum": "" 1828 | }, 1829 | "require": { 1830 | "php": "^7.0", 1831 | "sebastian/object-reflector": "^1.1.1", 1832 | "sebastian/recursion-context": "^3.0" 1833 | }, 1834 | "require-dev": { 1835 | "phpunit/phpunit": "^6.0" 1836 | }, 1837 | "type": "library", 1838 | "extra": { 1839 | "branch-alias": { 1840 | "dev-master": "3.0.x-dev" 1841 | } 1842 | }, 1843 | "autoload": { 1844 | "classmap": [ 1845 | "src/" 1846 | ] 1847 | }, 1848 | "notification-url": "https://packagist.org/downloads/", 1849 | "license": [ 1850 | "BSD-3-Clause" 1851 | ], 1852 | "authors": [ 1853 | { 1854 | "name": "Sebastian Bergmann", 1855 | "email": "sebastian@phpunit.de" 1856 | } 1857 | ], 1858 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1859 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1860 | "time": "2017-08-03 12:35:26" 1861 | }, 1862 | { 1863 | "name": "sebastian/object-reflector", 1864 | "version": "1.1.1", 1865 | "source": { 1866 | "type": "git", 1867 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1868 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 1869 | }, 1870 | "dist": { 1871 | "type": "zip", 1872 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 1873 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 1874 | "shasum": "" 1875 | }, 1876 | "require": { 1877 | "php": "^7.0" 1878 | }, 1879 | "require-dev": { 1880 | "phpunit/phpunit": "^6.0" 1881 | }, 1882 | "type": "library", 1883 | "extra": { 1884 | "branch-alias": { 1885 | "dev-master": "1.1-dev" 1886 | } 1887 | }, 1888 | "autoload": { 1889 | "classmap": [ 1890 | "src/" 1891 | ] 1892 | }, 1893 | "notification-url": "https://packagist.org/downloads/", 1894 | "license": [ 1895 | "BSD-3-Clause" 1896 | ], 1897 | "authors": [ 1898 | { 1899 | "name": "Sebastian Bergmann", 1900 | "email": "sebastian@phpunit.de" 1901 | } 1902 | ], 1903 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1904 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1905 | "time": "2017-03-29 09:07:27" 1906 | }, 1907 | { 1908 | "name": "sebastian/recursion-context", 1909 | "version": "3.0.0", 1910 | "source": { 1911 | "type": "git", 1912 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1913 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 1914 | }, 1915 | "dist": { 1916 | "type": "zip", 1917 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1918 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1919 | "shasum": "" 1920 | }, 1921 | "require": { 1922 | "php": "^7.0" 1923 | }, 1924 | "require-dev": { 1925 | "phpunit/phpunit": "^6.0" 1926 | }, 1927 | "type": "library", 1928 | "extra": { 1929 | "branch-alias": { 1930 | "dev-master": "3.0.x-dev" 1931 | } 1932 | }, 1933 | "autoload": { 1934 | "classmap": [ 1935 | "src/" 1936 | ] 1937 | }, 1938 | "notification-url": "https://packagist.org/downloads/", 1939 | "license": [ 1940 | "BSD-3-Clause" 1941 | ], 1942 | "authors": [ 1943 | { 1944 | "name": "Jeff Welch", 1945 | "email": "whatthejeff@gmail.com" 1946 | }, 1947 | { 1948 | "name": "Sebastian Bergmann", 1949 | "email": "sebastian@phpunit.de" 1950 | }, 1951 | { 1952 | "name": "Adam Harvey", 1953 | "email": "aharvey@php.net" 1954 | } 1955 | ], 1956 | "description": "Provides functionality to recursively process PHP variables", 1957 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1958 | "time": "2017-03-03 06:23:57" 1959 | }, 1960 | { 1961 | "name": "sebastian/resource-operations", 1962 | "version": "1.0.0", 1963 | "source": { 1964 | "type": "git", 1965 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1966 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 1967 | }, 1968 | "dist": { 1969 | "type": "zip", 1970 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1971 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1972 | "shasum": "" 1973 | }, 1974 | "require": { 1975 | "php": ">=5.6.0" 1976 | }, 1977 | "type": "library", 1978 | "extra": { 1979 | "branch-alias": { 1980 | "dev-master": "1.0.x-dev" 1981 | } 1982 | }, 1983 | "autoload": { 1984 | "classmap": [ 1985 | "src/" 1986 | ] 1987 | }, 1988 | "notification-url": "https://packagist.org/downloads/", 1989 | "license": [ 1990 | "BSD-3-Clause" 1991 | ], 1992 | "authors": [ 1993 | { 1994 | "name": "Sebastian Bergmann", 1995 | "email": "sebastian@phpunit.de" 1996 | } 1997 | ], 1998 | "description": "Provides a list of PHP built-in functions that operate on resources", 1999 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2000 | "time": "2015-07-28 20:34:47" 2001 | }, 2002 | { 2003 | "name": "sebastian/version", 2004 | "version": "2.0.1", 2005 | "source": { 2006 | "type": "git", 2007 | "url": "https://github.com/sebastianbergmann/version.git", 2008 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 2009 | }, 2010 | "dist": { 2011 | "type": "zip", 2012 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 2013 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 2014 | "shasum": "" 2015 | }, 2016 | "require": { 2017 | "php": ">=5.6" 2018 | }, 2019 | "type": "library", 2020 | "extra": { 2021 | "branch-alias": { 2022 | "dev-master": "2.0.x-dev" 2023 | } 2024 | }, 2025 | "autoload": { 2026 | "classmap": [ 2027 | "src/" 2028 | ] 2029 | }, 2030 | "notification-url": "https://packagist.org/downloads/", 2031 | "license": [ 2032 | "BSD-3-Clause" 2033 | ], 2034 | "authors": [ 2035 | { 2036 | "name": "Sebastian Bergmann", 2037 | "email": "sebastian@phpunit.de", 2038 | "role": "lead" 2039 | } 2040 | ], 2041 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2042 | "homepage": "https://github.com/sebastianbergmann/version", 2043 | "time": "2016-10-03 07:35:21" 2044 | }, 2045 | { 2046 | "name": "symfony/console", 2047 | "version": "v2.8.33", 2048 | "source": { 2049 | "type": "git", 2050 | "url": "https://github.com/symfony/console.git", 2051 | "reference": "a4bd0f02ea156cf7b5138774a7ba0ab44d8da4fe" 2052 | }, 2053 | "dist": { 2054 | "type": "zip", 2055 | "url": "https://api.github.com/repos/symfony/console/zipball/a4bd0f02ea156cf7b5138774a7ba0ab44d8da4fe", 2056 | "reference": "a4bd0f02ea156cf7b5138774a7ba0ab44d8da4fe", 2057 | "shasum": "" 2058 | }, 2059 | "require": { 2060 | "php": ">=5.3.9", 2061 | "symfony/debug": "^2.7.2|~3.0.0", 2062 | "symfony/polyfill-mbstring": "~1.0" 2063 | }, 2064 | "require-dev": { 2065 | "psr/log": "~1.0", 2066 | "symfony/event-dispatcher": "~2.1|~3.0.0", 2067 | "symfony/process": "~2.1|~3.0.0" 2068 | }, 2069 | "suggest": { 2070 | "psr/log": "For using the console logger", 2071 | "symfony/event-dispatcher": "", 2072 | "symfony/process": "" 2073 | }, 2074 | "type": "library", 2075 | "extra": { 2076 | "branch-alias": { 2077 | "dev-master": "2.8-dev" 2078 | } 2079 | }, 2080 | "autoload": { 2081 | "psr-4": { 2082 | "Symfony\\Component\\Console\\": "" 2083 | }, 2084 | "exclude-from-classmap": [ 2085 | "/Tests/" 2086 | ] 2087 | }, 2088 | "notification-url": "https://packagist.org/downloads/", 2089 | "license": [ 2090 | "MIT" 2091 | ], 2092 | "authors": [ 2093 | { 2094 | "name": "Fabien Potencier", 2095 | "email": "fabien@symfony.com" 2096 | }, 2097 | { 2098 | "name": "Symfony Community", 2099 | "homepage": "https://symfony.com/contributors" 2100 | } 2101 | ], 2102 | "description": "Symfony Console Component", 2103 | "homepage": "https://symfony.com", 2104 | "time": "2018-01-03 07:36:31" 2105 | }, 2106 | { 2107 | "name": "symfony/debug", 2108 | "version": "v3.0.9", 2109 | "source": { 2110 | "type": "git", 2111 | "url": "https://github.com/symfony/debug.git", 2112 | "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a" 2113 | }, 2114 | "dist": { 2115 | "type": "zip", 2116 | "url": "https://api.github.com/repos/symfony/debug/zipball/697c527acd9ea1b2d3efac34d9806bf255278b0a", 2117 | "reference": "697c527acd9ea1b2d3efac34d9806bf255278b0a", 2118 | "shasum": "" 2119 | }, 2120 | "require": { 2121 | "php": ">=5.5.9", 2122 | "psr/log": "~1.0" 2123 | }, 2124 | "conflict": { 2125 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 2126 | }, 2127 | "require-dev": { 2128 | "symfony/class-loader": "~2.8|~3.0", 2129 | "symfony/http-kernel": "~2.8|~3.0" 2130 | }, 2131 | "type": "library", 2132 | "extra": { 2133 | "branch-alias": { 2134 | "dev-master": "3.0-dev" 2135 | } 2136 | }, 2137 | "autoload": { 2138 | "psr-4": { 2139 | "Symfony\\Component\\Debug\\": "" 2140 | }, 2141 | "exclude-from-classmap": [ 2142 | "/Tests/" 2143 | ] 2144 | }, 2145 | "notification-url": "https://packagist.org/downloads/", 2146 | "license": [ 2147 | "MIT" 2148 | ], 2149 | "authors": [ 2150 | { 2151 | "name": "Fabien Potencier", 2152 | "email": "fabien@symfony.com" 2153 | }, 2154 | { 2155 | "name": "Symfony Community", 2156 | "homepage": "https://symfony.com/contributors" 2157 | } 2158 | ], 2159 | "description": "Symfony Debug Component", 2160 | "homepage": "https://symfony.com", 2161 | "time": "2016-07-30 07:22:48" 2162 | }, 2163 | { 2164 | "name": "symfony/finder", 2165 | "version": "v2.8.33", 2166 | "source": { 2167 | "type": "git", 2168 | "url": "https://github.com/symfony/finder.git", 2169 | "reference": "cb2ce50366dd3168f7b06135ffee0a5e35713ce8" 2170 | }, 2171 | "dist": { 2172 | "type": "zip", 2173 | "url": "https://api.github.com/repos/symfony/finder/zipball/cb2ce50366dd3168f7b06135ffee0a5e35713ce8", 2174 | "reference": "cb2ce50366dd3168f7b06135ffee0a5e35713ce8", 2175 | "shasum": "" 2176 | }, 2177 | "require": { 2178 | "php": ">=5.3.9" 2179 | }, 2180 | "type": "library", 2181 | "extra": { 2182 | "branch-alias": { 2183 | "dev-master": "2.8-dev" 2184 | } 2185 | }, 2186 | "autoload": { 2187 | "psr-4": { 2188 | "Symfony\\Component\\Finder\\": "" 2189 | }, 2190 | "exclude-from-classmap": [ 2191 | "/Tests/" 2192 | ] 2193 | }, 2194 | "notification-url": "https://packagist.org/downloads/", 2195 | "license": [ 2196 | "MIT" 2197 | ], 2198 | "authors": [ 2199 | { 2200 | "name": "Fabien Potencier", 2201 | "email": "fabien@symfony.com" 2202 | }, 2203 | { 2204 | "name": "Symfony Community", 2205 | "homepage": "https://symfony.com/contributors" 2206 | } 2207 | ], 2208 | "description": "Symfony Finder Component", 2209 | "homepage": "https://symfony.com", 2210 | "time": "2018-01-03 07:36:31" 2211 | }, 2212 | { 2213 | "name": "symfony/polyfill-mbstring", 2214 | "version": "v1.6.0", 2215 | "source": { 2216 | "type": "git", 2217 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2218 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296" 2219 | }, 2220 | "dist": { 2221 | "type": "zip", 2222 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", 2223 | "reference": "2ec8b39c38cb16674bbf3fea2b6ce5bf117e1296", 2224 | "shasum": "" 2225 | }, 2226 | "require": { 2227 | "php": ">=5.3.3" 2228 | }, 2229 | "suggest": { 2230 | "ext-mbstring": "For best performance" 2231 | }, 2232 | "type": "library", 2233 | "extra": { 2234 | "branch-alias": { 2235 | "dev-master": "1.6-dev" 2236 | } 2237 | }, 2238 | "autoload": { 2239 | "psr-4": { 2240 | "Symfony\\Polyfill\\Mbstring\\": "" 2241 | }, 2242 | "files": [ 2243 | "bootstrap.php" 2244 | ] 2245 | }, 2246 | "notification-url": "https://packagist.org/downloads/", 2247 | "license": [ 2248 | "MIT" 2249 | ], 2250 | "authors": [ 2251 | { 2252 | "name": "Nicolas Grekas", 2253 | "email": "p@tchwork.com" 2254 | }, 2255 | { 2256 | "name": "Symfony Community", 2257 | "homepage": "https://symfony.com/contributors" 2258 | } 2259 | ], 2260 | "description": "Symfony polyfill for the Mbstring extension", 2261 | "homepage": "https://symfony.com", 2262 | "keywords": [ 2263 | "compatibility", 2264 | "mbstring", 2265 | "polyfill", 2266 | "portable", 2267 | "shim" 2268 | ], 2269 | "time": "2017-10-11 12:05:26" 2270 | }, 2271 | { 2272 | "name": "symfony/process", 2273 | "version": "v2.8.33", 2274 | "source": { 2275 | "type": "git", 2276 | "url": "https://github.com/symfony/process.git", 2277 | "reference": "ea3226daa3c6789efa39570bfc6e5d55f7561a0a" 2278 | }, 2279 | "dist": { 2280 | "type": "zip", 2281 | "url": "https://api.github.com/repos/symfony/process/zipball/ea3226daa3c6789efa39570bfc6e5d55f7561a0a", 2282 | "reference": "ea3226daa3c6789efa39570bfc6e5d55f7561a0a", 2283 | "shasum": "" 2284 | }, 2285 | "require": { 2286 | "php": ">=5.3.9" 2287 | }, 2288 | "type": "library", 2289 | "extra": { 2290 | "branch-alias": { 2291 | "dev-master": "2.8-dev" 2292 | } 2293 | }, 2294 | "autoload": { 2295 | "psr-4": { 2296 | "Symfony\\Component\\Process\\": "" 2297 | }, 2298 | "exclude-from-classmap": [ 2299 | "/Tests/" 2300 | ] 2301 | }, 2302 | "notification-url": "https://packagist.org/downloads/", 2303 | "license": [ 2304 | "MIT" 2305 | ], 2306 | "authors": [ 2307 | { 2308 | "name": "Fabien Potencier", 2309 | "email": "fabien@symfony.com" 2310 | }, 2311 | { 2312 | "name": "Symfony Community", 2313 | "homepage": "https://symfony.com/contributors" 2314 | } 2315 | ], 2316 | "description": "Symfony Process Component", 2317 | "homepage": "https://symfony.com", 2318 | "time": "2018-01-03 07:36:31" 2319 | }, 2320 | { 2321 | "name": "tedivm/jshrink", 2322 | "version": "v1.3.0", 2323 | "source": { 2324 | "type": "git", 2325 | "url": "https://github.com/tedious/JShrink.git", 2326 | "reference": "68ce379b213741e86f02bf6053b0d26b9f833448" 2327 | }, 2328 | "dist": { 2329 | "type": "zip", 2330 | "url": "https://api.github.com/repos/tedious/JShrink/zipball/68ce379b213741e86f02bf6053b0d26b9f833448", 2331 | "reference": "68ce379b213741e86f02bf6053b0d26b9f833448", 2332 | "shasum": "" 2333 | }, 2334 | "require": { 2335 | "php": "^5.6|^7.0" 2336 | }, 2337 | "require-dev": { 2338 | "friendsofphp/php-cs-fixer": "^2.8", 2339 | "php-coveralls/php-coveralls": "^1.1.0", 2340 | "phpunit/phpunit": "^6" 2341 | }, 2342 | "type": "library", 2343 | "autoload": { 2344 | "psr-0": { 2345 | "JShrink": "src/" 2346 | } 2347 | }, 2348 | "notification-url": "https://packagist.org/downloads/", 2349 | "license": [ 2350 | "BSD-3-Clause" 2351 | ], 2352 | "authors": [ 2353 | { 2354 | "name": "Robert Hafner", 2355 | "email": "tedivm@tedivm.com" 2356 | } 2357 | ], 2358 | "description": "Javascript Minifier built in PHP", 2359 | "homepage": "http://github.com/tedious/JShrink", 2360 | "keywords": [ 2361 | "javascript", 2362 | "minifier" 2363 | ], 2364 | "time": "2017-12-08 00:59:56" 2365 | }, 2366 | { 2367 | "name": "theseer/tokenizer", 2368 | "version": "1.1.0", 2369 | "source": { 2370 | "type": "git", 2371 | "url": "https://github.com/theseer/tokenizer.git", 2372 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" 2373 | }, 2374 | "dist": { 2375 | "type": "zip", 2376 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", 2377 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", 2378 | "shasum": "" 2379 | }, 2380 | "require": { 2381 | "ext-dom": "*", 2382 | "ext-tokenizer": "*", 2383 | "ext-xmlwriter": "*", 2384 | "php": "^7.0" 2385 | }, 2386 | "type": "library", 2387 | "autoload": { 2388 | "classmap": [ 2389 | "src/" 2390 | ] 2391 | }, 2392 | "notification-url": "https://packagist.org/downloads/", 2393 | "license": [ 2394 | "BSD-3-Clause" 2395 | ], 2396 | "authors": [ 2397 | { 2398 | "name": "Arne Blankerts", 2399 | "email": "arne@blankerts.de", 2400 | "role": "Developer" 2401 | } 2402 | ], 2403 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2404 | "time": "2017-04-07 12:08:54" 2405 | }, 2406 | { 2407 | "name": "webmozart/assert", 2408 | "version": "1.2.0", 2409 | "source": { 2410 | "type": "git", 2411 | "url": "https://github.com/webmozart/assert.git", 2412 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" 2413 | }, 2414 | "dist": { 2415 | "type": "zip", 2416 | "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", 2417 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", 2418 | "shasum": "" 2419 | }, 2420 | "require": { 2421 | "php": "^5.3.3 || ^7.0" 2422 | }, 2423 | "require-dev": { 2424 | "phpunit/phpunit": "^4.6", 2425 | "sebastian/version": "^1.0.1" 2426 | }, 2427 | "type": "library", 2428 | "extra": { 2429 | "branch-alias": { 2430 | "dev-master": "1.3-dev" 2431 | } 2432 | }, 2433 | "autoload": { 2434 | "psr-4": { 2435 | "Webmozart\\Assert\\": "src/" 2436 | } 2437 | }, 2438 | "notification-url": "https://packagist.org/downloads/", 2439 | "license": [ 2440 | "MIT" 2441 | ], 2442 | "authors": [ 2443 | { 2444 | "name": "Bernhard Schussek", 2445 | "email": "bschussek@gmail.com" 2446 | } 2447 | ], 2448 | "description": "Assertions to validate method input/output with nice error messages.", 2449 | "keywords": [ 2450 | "assert", 2451 | "check", 2452 | "validate" 2453 | ], 2454 | "time": "2016-11-23 20:04:58" 2455 | } 2456 | ], 2457 | "aliases": [], 2458 | "minimum-stability": "stable", 2459 | "stability-flags": [], 2460 | "prefer-stable": false, 2461 | "prefer-lowest": false, 2462 | "platform": [], 2463 | "platform-dev": [] 2464 | } 2465 | -------------------------------------------------------------------------------- /test.php: -------------------------------------------------------------------------------- 1 | invoice([ 'msatoshi' => 50, 'metadata' => [ 'customer' => 'Satoshi', 'products' => [ 'potato', 'chips' ] ] ]); 9 | 10 | $this->assertObjectHasAttribute('id', $invoice); 11 | $this->assertObjectHasAttribute('rhash', $invoice); 12 | $this->assertObjectHasAttribute('payreq', $invoice); 13 | $this->assertEquals('50', $invoice->msatoshi); 14 | $this->assertEquals('Satoshi', $invoice->metadata->customer); 15 | $this->assertEquals('chips', $invoice->metadata->products[1]); 16 | } 17 | 18 | public function test_fetch_invoice(){ 19 | $charge = new LightningChargeClient(getenv('CHARGE_URL')); 20 | $saved = $charge->invoice( [ 'msatoshi' => 50, 'metadata' => 'test_fetch_invoice' ]); 21 | $loaded = $charge->fetch($saved->id); 22 | 23 | $this->assertEquals($saved->id, $loaded->id); 24 | $this->assertEquals($saved->rhash, $loaded->rhash); 25 | $this->assertEquals($loaded->metadata, 'test_fetch_invoice'); 26 | $this->assertEquals($loaded->msatoshi, '50'); 27 | } 28 | 29 | public function test_register_webhook(){ 30 | $charge = new LightningChargeClient(getenv('CHARGE_URL')); 31 | $invoice = $charge->invoice([ 'msatoshi' => 50 ]); 32 | $this->assertTrue($charge->registerHook($invoice->id, 'http://example.com/')); 33 | } 34 | } 35 | --------------------------------------------------------------------------------