├── .gitignore ├── CONTRIBUTING.md ├── composer.json ├── src └── IndieLogin │ └── Client.php ├── example.php ├── README.md └── composer.lock /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | .DS_Store 3 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | By contributing to this project, you agree to irrevocably release your contributions under the same licenses as this project. See README.md for more details. 2 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "indielogin/client", 3 | "description": "IndieLogin Client Library", 4 | "require": { 5 | "php": ">7.2.0", 6 | "indieauth/client": "^1.1" 7 | }, 8 | "license": "Apache-2.0", 9 | "authors": [ 10 | { 11 | "name": "Aaron Parecki", 12 | "homepage": "https://aaronparecki.com" 13 | } 14 | ], 15 | "autoload": { 16 | "psr-0": { 17 | "IndieLogin": "src/" 18 | } 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/IndieLogin/Client.php: -------------------------------------------------------------------------------- 1 | 6 |
7 | 8 | 9 |
10 | Error: ".htmlspecialchars($_GET['error'])."

"; 23 | echo "

".htmlspecialchars($_GET['error_description'])."

"; 24 | die(); 25 | } 26 | 27 | if(!isset($_GET['code'])) { 28 | $url = IndieLogin\Client::normalizeMeURL($_POST['url']); 29 | 30 | list($authorizationURL, $error) = IndieLogin\Client::begin($_POST['url']); 31 | 32 | echo 'continue to authorize'; 33 | die(); 34 | } 35 | 36 | list($user, $error) = IndieLogin\Client::complete($_GET); 37 | 38 | echo '
';
39 | print_r($user);
40 | if($error) {
41 |   echo "Error:\n";
42 |   print_r($error);
43 | }
44 | echo '
'; 45 | 46 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | IndieLogin Client 2 | ================= 3 | 4 | This is a helper library to use with services like IndieLogin.com. That service provides an API that works very similar to the [IndieAuth](https://indieauth.net) protocol, but can authenticate users with a number of different methods, including IndieAuth, email, PGP keys, GitHub and Twitter. 5 | 6 | When users log in with this library, it will first check their website for an authorization endpoint and do an IndieAuth flow directly if found. Otherwise, it will redirect them to the configured server to authenticate there. 7 | 8 | 9 | Usage 10 | ----- 11 | 12 | ### Create a Login Form 13 | 14 | You'll first need to create a login form to prompt the user to enter their website address. This might look something like the HTML below. 15 | 16 | ```html 17 |
18 | 19 | 20 |
21 | ``` 22 | 23 | ### Begin the Login Flow 24 | 25 | In the `login.php` file, you'll need to initialize the session, and tell this library to discover the user's endpoints. If everything succeeds, the library will return a URL that you can use to redirect the user to begin the flow. 26 | 27 | The example below will have some really basic error handling, which you'll probably want to replace with something nicer looking. 28 | 29 | Example `login.php` file: 30 | 31 | ```php 32 | Error: ".$error['error']."

"; 89 | echo "

".$error['error_description']."

"; 90 | } else { 91 | // Login succeeded! 92 | // The library will return the user's profile URL in the property "me" 93 | // It will also return the full response from the authorization or token endpoint, as well as debug info 94 | echo "URL: ".$response['me']."
"; 95 | 96 | // The full parsed response from the endpoint will be available as: 97 | // $response['response'] 98 | 99 | // The raw response: 100 | // $response['raw_response'] 101 | 102 | // The HTTP response code: 103 | // $response['response_code'] 104 | 105 | // You'll probably want to save the user's URL in the session 106 | $_SESSION['user'] = $user['me']; 107 | } 108 | ``` 109 | 110 | License 111 | ------- 112 | 113 | Copyright 2013-2020 by Aaron Parecki and contributors 114 | 115 | Available under the MIT and Apache 2.0 licenses. See LICENSE.txt 116 | 117 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "3a7c30b2c223948d679e8df50488288f", 8 | "packages": [ 9 | { 10 | "name": "doctrine/instantiator", 11 | "version": "1.4.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/instantiator.git", 15 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", 20 | "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1 || ^8.0" 25 | }, 26 | "require-dev": { 27 | "doctrine/coding-standard": "^8.0", 28 | "ext-pdo": "*", 29 | "ext-phar": "*", 30 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", 31 | "phpstan/phpstan": "^0.12", 32 | "phpstan/phpstan-phpunit": "^0.12", 33 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 34 | }, 35 | "type": "library", 36 | "autoload": { 37 | "psr-4": { 38 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 39 | } 40 | }, 41 | "notification-url": "https://packagist.org/downloads/", 42 | "license": [ 43 | "MIT" 44 | ], 45 | "authors": [ 46 | { 47 | "name": "Marco Pivetta", 48 | "email": "ocramius@gmail.com", 49 | "homepage": "https://ocramius.github.io/" 50 | } 51 | ], 52 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 53 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 54 | "keywords": [ 55 | "constructor", 56 | "instantiate" 57 | ], 58 | "funding": [ 59 | { 60 | "url": "https://www.doctrine-project.org/sponsorship.html", 61 | "type": "custom" 62 | }, 63 | { 64 | "url": "https://www.patreon.com/phpdoctrine", 65 | "type": "patreon" 66 | }, 67 | { 68 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 69 | "type": "tidelift" 70 | } 71 | ], 72 | "time": "2020-11-10T18:47:58+00:00" 73 | }, 74 | { 75 | "name": "indieauth/client", 76 | "version": "1.1.4", 77 | "source": { 78 | "type": "git", 79 | "url": "https://github.com/indieweb/indieauth-client-php.git", 80 | "reference": "d5b3320cf28f8c6e0f4eb45955288f518d7489f1" 81 | }, 82 | "dist": { 83 | "type": "zip", 84 | "url": "https://api.github.com/repos/indieweb/indieauth-client-php/zipball/d5b3320cf28f8c6e0f4eb45955288f518d7489f1", 85 | "reference": "d5b3320cf28f8c6e0f4eb45955288f518d7489f1", 86 | "shasum": "" 87 | }, 88 | "require": { 89 | "indieweb/representative-h-card": "^0.1.2", 90 | "mf2/mf2": ">=0.3.2", 91 | "p3k/http": ">=0.1.6", 92 | "php": ">5.6.0" 93 | }, 94 | "require-dev": { 95 | "phpunit/phpunit": "4.8.*" 96 | }, 97 | "type": "library", 98 | "autoload": { 99 | "psr-0": { 100 | "IndieAuth": "src/" 101 | } 102 | }, 103 | "notification-url": "https://packagist.org/downloads/", 104 | "license": [ 105 | "Apache-2.0" 106 | ], 107 | "authors": [ 108 | { 109 | "name": "Aaron Parecki", 110 | "homepage": "https://aaronparecki.com" 111 | } 112 | ], 113 | "description": "IndieAuth Client Library", 114 | "funding": [ 115 | { 116 | "url": "https://opencollective.com/indieweb", 117 | "type": "opencollective" 118 | } 119 | ], 120 | "time": "2020-11-27T17:00:33+00:00" 121 | }, 122 | { 123 | "name": "indieweb/link-rel-parser", 124 | "version": "0.1.3", 125 | "source": { 126 | "type": "git", 127 | "url": "https://github.com/indieweb/link-rel-parser-php.git", 128 | "reference": "295420e4f16d9a9d262a3c25a7a583794428f055" 129 | }, 130 | "dist": { 131 | "type": "zip", 132 | "url": "https://api.github.com/repos/indieweb/link-rel-parser-php/zipball/295420e4f16d9a9d262a3c25a7a583794428f055", 133 | "reference": "295420e4f16d9a9d262a3c25a7a583794428f055", 134 | "shasum": "" 135 | }, 136 | "require": { 137 | "php": ">=5.3.0" 138 | }, 139 | "type": "library", 140 | "autoload": { 141 | "files": [ 142 | "src/IndieWeb/link_rel_parser.php" 143 | ] 144 | }, 145 | "notification-url": "https://packagist.org/downloads/", 146 | "license": [ 147 | "Apache-2.0" 148 | ], 149 | "authors": [ 150 | { 151 | "name": "Aaron Parecki", 152 | "homepage": "http://aaronparecki.com" 153 | }, 154 | { 155 | "name": "Tantek Çelik", 156 | "homepage": "http://tantek.com" 157 | } 158 | ], 159 | "description": "Parse rel values from HTTP headers", 160 | "homepage": "https://github.com/indieweb/link-rel-parser-php", 161 | "keywords": [ 162 | "http", 163 | "indieweb", 164 | "microformats2" 165 | ], 166 | "time": "2017-01-11T17:14:49+00:00" 167 | }, 168 | { 169 | "name": "indieweb/representative-h-card", 170 | "version": "0.1.2", 171 | "source": { 172 | "type": "git", 173 | "url": "https://github.com/indieweb/representative-h-card-php.git", 174 | "reference": "b70b01bd0dd7f2a940602137335dbf46ab6e2e38" 175 | }, 176 | "dist": { 177 | "type": "zip", 178 | "url": "https://api.github.com/repos/indieweb/representative-h-card-php/zipball/b70b01bd0dd7f2a940602137335dbf46ab6e2e38", 179 | "reference": "b70b01bd0dd7f2a940602137335dbf46ab6e2e38", 180 | "shasum": "" 181 | }, 182 | "require": { 183 | "php": ">=5.4" 184 | }, 185 | "require-dev": { 186 | "mf2/mf2": "0.2.*", 187 | "phpunit/phpunit": "*" 188 | }, 189 | "type": "library", 190 | "autoload": { 191 | "files": [ 192 | "src/mf2/representative-h-card.php" 193 | ] 194 | }, 195 | "notification-url": "https://packagist.org/downloads/", 196 | "license": [ 197 | "Apache-2.0" 198 | ], 199 | "authors": [ 200 | { 201 | "name": "Aaron Parecki", 202 | "homepage": "http://aaronparecki.com" 203 | } 204 | ], 205 | "keywords": [ 206 | "h-card", 207 | "indieweb", 208 | "mf2", 209 | "microformats" 210 | ], 211 | "time": "2015-12-23T18:11:19+00:00" 212 | }, 213 | { 214 | "name": "mf2/mf2", 215 | "version": "0.4.6", 216 | "source": { 217 | "type": "git", 218 | "url": "https://github.com/microformats/php-mf2.git", 219 | "reference": "00b70ee7eb7f5b0585b1bd467f6c9cbd75055d23" 220 | }, 221 | "dist": { 222 | "type": "zip", 223 | "url": "https://api.github.com/repos/microformats/php-mf2/zipball/00b70ee7eb7f5b0585b1bd467f6c9cbd75055d23", 224 | "reference": "00b70ee7eb7f5b0585b1bd467f6c9cbd75055d23", 225 | "shasum": "" 226 | }, 227 | "require": { 228 | "php": ">=5.4.0" 229 | }, 230 | "require-dev": { 231 | "mf2/tests": "@dev", 232 | "phpdocumentor/phpdocumentor": "v2.8.4", 233 | "phpunit/phpunit": "4.8.*" 234 | }, 235 | "suggest": { 236 | "barnabywalters/mf-cleaner": "To more easily handle the canonical data php-mf2 gives you", 237 | "masterminds/html5": "Alternative HTML parser for PHP, for better HTML5 support." 238 | }, 239 | "bin": [ 240 | "bin/fetch-mf2", 241 | "bin/parse-mf2" 242 | ], 243 | "type": "library", 244 | "autoload": { 245 | "files": [ 246 | "Mf2/Parser.php" 247 | ] 248 | }, 249 | "notification-url": "https://packagist.org/downloads/", 250 | "license": [ 251 | "CC0-1.0" 252 | ], 253 | "authors": [ 254 | { 255 | "name": "Barnaby Walters", 256 | "homepage": "http://waterpigs.co.uk" 257 | } 258 | ], 259 | "description": "A pure, generic microformats2 parser — makes HTML as easy to consume as a JSON API", 260 | "keywords": [ 261 | "html", 262 | "microformats", 263 | "microformats 2", 264 | "parser", 265 | "semantic" 266 | ], 267 | "time": "2018-08-24T14:47:04+00:00" 268 | }, 269 | { 270 | "name": "p3k/http", 271 | "version": "0.1.11", 272 | "source": { 273 | "type": "git", 274 | "url": "https://github.com/aaronpk/p3k-http.git", 275 | "reference": "24d28287e0c5606aa45b23c6e3c17628d89468f7" 276 | }, 277 | "dist": { 278 | "type": "zip", 279 | "url": "https://api.github.com/repos/aaronpk/p3k-http/zipball/24d28287e0c5606aa45b23c6e3c17628d89468f7", 280 | "reference": "24d28287e0c5606aa45b23c6e3c17628d89468f7", 281 | "shasum": "" 282 | }, 283 | "require": { 284 | "indieweb/link-rel-parser": "0.1.*", 285 | "mf2/mf2": ">=0.3.2" 286 | }, 287 | "type": "library", 288 | "autoload": { 289 | "psr-4": { 290 | "p3k\\": "src/p3k" 291 | } 292 | }, 293 | "notification-url": "https://packagist.org/downloads/", 294 | "license": [ 295 | "MIT" 296 | ], 297 | "authors": [ 298 | { 299 | "name": "Aaron Parecki", 300 | "homepage": "https://aaronparecki.com" 301 | } 302 | ], 303 | "description": "A simple wrapper API around the PHP curl functions", 304 | "homepage": "https://github.com/aaronpk/p3k-http", 305 | "time": "2020-02-19T03:00:09+00:00" 306 | }, 307 | { 308 | "name": "phpdocumentor/reflection-common", 309 | "version": "2.2.0", 310 | "source": { 311 | "type": "git", 312 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 313 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" 314 | }, 315 | "dist": { 316 | "type": "zip", 317 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", 318 | "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", 319 | "shasum": "" 320 | }, 321 | "require": { 322 | "php": "^7.2 || ^8.0" 323 | }, 324 | "type": "library", 325 | "extra": { 326 | "branch-alias": { 327 | "dev-2.x": "2.x-dev" 328 | } 329 | }, 330 | "autoload": { 331 | "psr-4": { 332 | "phpDocumentor\\Reflection\\": "src/" 333 | } 334 | }, 335 | "notification-url": "https://packagist.org/downloads/", 336 | "license": [ 337 | "MIT" 338 | ], 339 | "authors": [ 340 | { 341 | "name": "Jaap van Otterdijk", 342 | "email": "opensource@ijaap.nl" 343 | } 344 | ], 345 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 346 | "homepage": "http://www.phpdoc.org", 347 | "keywords": [ 348 | "FQSEN", 349 | "phpDocumentor", 350 | "phpdoc", 351 | "reflection", 352 | "static analysis" 353 | ], 354 | "time": "2020-06-27T09:03:43+00:00" 355 | }, 356 | { 357 | "name": "phpdocumentor/reflection-docblock", 358 | "version": "5.2.2", 359 | "source": { 360 | "type": "git", 361 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 362 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" 363 | }, 364 | "dist": { 365 | "type": "zip", 366 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", 367 | "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", 368 | "shasum": "" 369 | }, 370 | "require": { 371 | "ext-filter": "*", 372 | "php": "^7.2 || ^8.0", 373 | "phpdocumentor/reflection-common": "^2.2", 374 | "phpdocumentor/type-resolver": "^1.3", 375 | "webmozart/assert": "^1.9.1" 376 | }, 377 | "require-dev": { 378 | "mockery/mockery": "~1.3.2" 379 | }, 380 | "type": "library", 381 | "extra": { 382 | "branch-alias": { 383 | "dev-master": "5.x-dev" 384 | } 385 | }, 386 | "autoload": { 387 | "psr-4": { 388 | "phpDocumentor\\Reflection\\": "src" 389 | } 390 | }, 391 | "notification-url": "https://packagist.org/downloads/", 392 | "license": [ 393 | "MIT" 394 | ], 395 | "authors": [ 396 | { 397 | "name": "Mike van Riel", 398 | "email": "me@mikevanriel.com" 399 | }, 400 | { 401 | "name": "Jaap van Otterdijk", 402 | "email": "account@ijaap.nl" 403 | } 404 | ], 405 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 406 | "time": "2020-09-03T19:13:55+00:00" 407 | }, 408 | { 409 | "name": "phpdocumentor/type-resolver", 410 | "version": "1.4.0", 411 | "source": { 412 | "type": "git", 413 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 414 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" 415 | }, 416 | "dist": { 417 | "type": "zip", 418 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", 419 | "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", 420 | "shasum": "" 421 | }, 422 | "require": { 423 | "php": "^7.2 || ^8.0", 424 | "phpdocumentor/reflection-common": "^2.0" 425 | }, 426 | "require-dev": { 427 | "ext-tokenizer": "*" 428 | }, 429 | "type": "library", 430 | "extra": { 431 | "branch-alias": { 432 | "dev-1.x": "1.x-dev" 433 | } 434 | }, 435 | "autoload": { 436 | "psr-4": { 437 | "phpDocumentor\\Reflection\\": "src" 438 | } 439 | }, 440 | "notification-url": "https://packagist.org/downloads/", 441 | "license": [ 442 | "MIT" 443 | ], 444 | "authors": [ 445 | { 446 | "name": "Mike van Riel", 447 | "email": "me@mikevanriel.com" 448 | } 449 | ], 450 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 451 | "time": "2020-09-17T18:55:26+00:00" 452 | }, 453 | { 454 | "name": "phpspec/prophecy", 455 | "version": "v1.10.3", 456 | "source": { 457 | "type": "git", 458 | "url": "https://github.com/phpspec/prophecy.git", 459 | "reference": "451c3cd1418cf640de218914901e51b064abb093" 460 | }, 461 | "dist": { 462 | "type": "zip", 463 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", 464 | "reference": "451c3cd1418cf640de218914901e51b064abb093", 465 | "shasum": "" 466 | }, 467 | "require": { 468 | "doctrine/instantiator": "^1.0.2", 469 | "php": "^5.3|^7.0", 470 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", 471 | "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", 472 | "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" 473 | }, 474 | "require-dev": { 475 | "phpspec/phpspec": "^2.5 || ^3.2", 476 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 477 | }, 478 | "type": "library", 479 | "extra": { 480 | "branch-alias": { 481 | "dev-master": "1.10.x-dev" 482 | } 483 | }, 484 | "autoload": { 485 | "psr-4": { 486 | "Prophecy\\": "src/Prophecy" 487 | } 488 | }, 489 | "notification-url": "https://packagist.org/downloads/", 490 | "license": [ 491 | "MIT" 492 | ], 493 | "authors": [ 494 | { 495 | "name": "Konstantin Kudryashov", 496 | "email": "ever.zet@gmail.com", 497 | "homepage": "http://everzet.com" 498 | }, 499 | { 500 | "name": "Marcello Duarte", 501 | "email": "marcello.duarte@gmail.com" 502 | } 503 | ], 504 | "description": "Highly opinionated mocking framework for PHP 5.3+", 505 | "homepage": "https://github.com/phpspec/prophecy", 506 | "keywords": [ 507 | "Double", 508 | "Dummy", 509 | "fake", 510 | "mock", 511 | "spy", 512 | "stub" 513 | ], 514 | "time": "2020-03-05T15:02:03+00:00" 515 | }, 516 | { 517 | "name": "phpunit/php-code-coverage", 518 | "version": "2.2.4", 519 | "source": { 520 | "type": "git", 521 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 522 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" 523 | }, 524 | "dist": { 525 | "type": "zip", 526 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", 527 | "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", 528 | "shasum": "" 529 | }, 530 | "require": { 531 | "php": ">=5.3.3", 532 | "phpunit/php-file-iterator": "~1.3", 533 | "phpunit/php-text-template": "~1.2", 534 | "phpunit/php-token-stream": "~1.3", 535 | "sebastian/environment": "^1.3.2", 536 | "sebastian/version": "~1.0" 537 | }, 538 | "require-dev": { 539 | "ext-xdebug": ">=2.1.4", 540 | "phpunit/phpunit": "~4" 541 | }, 542 | "suggest": { 543 | "ext-dom": "*", 544 | "ext-xdebug": ">=2.2.1", 545 | "ext-xmlwriter": "*" 546 | }, 547 | "type": "library", 548 | "extra": { 549 | "branch-alias": { 550 | "dev-master": "2.2.x-dev" 551 | } 552 | }, 553 | "autoload": { 554 | "classmap": [ 555 | "src/" 556 | ] 557 | }, 558 | "notification-url": "https://packagist.org/downloads/", 559 | "license": [ 560 | "BSD-3-Clause" 561 | ], 562 | "authors": [ 563 | { 564 | "name": "Sebastian Bergmann", 565 | "email": "sb@sebastian-bergmann.de", 566 | "role": "lead" 567 | } 568 | ], 569 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 570 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 571 | "keywords": [ 572 | "coverage", 573 | "testing", 574 | "xunit" 575 | ], 576 | "time": "2015-10-06T15:47:00+00:00" 577 | }, 578 | { 579 | "name": "phpunit/php-file-iterator", 580 | "version": "1.4.5", 581 | "source": { 582 | "type": "git", 583 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 584 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 585 | }, 586 | "dist": { 587 | "type": "zip", 588 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 589 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 590 | "shasum": "" 591 | }, 592 | "require": { 593 | "php": ">=5.3.3" 594 | }, 595 | "type": "library", 596 | "extra": { 597 | "branch-alias": { 598 | "dev-master": "1.4.x-dev" 599 | } 600 | }, 601 | "autoload": { 602 | "classmap": [ 603 | "src/" 604 | ] 605 | }, 606 | "notification-url": "https://packagist.org/downloads/", 607 | "license": [ 608 | "BSD-3-Clause" 609 | ], 610 | "authors": [ 611 | { 612 | "name": "Sebastian Bergmann", 613 | "email": "sb@sebastian-bergmann.de", 614 | "role": "lead" 615 | } 616 | ], 617 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 618 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 619 | "keywords": [ 620 | "filesystem", 621 | "iterator" 622 | ], 623 | "time": "2017-11-27T13:52:08+00:00" 624 | }, 625 | { 626 | "name": "phpunit/php-text-template", 627 | "version": "1.2.1", 628 | "source": { 629 | "type": "git", 630 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 631 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 632 | }, 633 | "dist": { 634 | "type": "zip", 635 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 636 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 637 | "shasum": "" 638 | }, 639 | "require": { 640 | "php": ">=5.3.3" 641 | }, 642 | "type": "library", 643 | "autoload": { 644 | "classmap": [ 645 | "src/" 646 | ] 647 | }, 648 | "notification-url": "https://packagist.org/downloads/", 649 | "license": [ 650 | "BSD-3-Clause" 651 | ], 652 | "authors": [ 653 | { 654 | "name": "Sebastian Bergmann", 655 | "email": "sebastian@phpunit.de", 656 | "role": "lead" 657 | } 658 | ], 659 | "description": "Simple template engine.", 660 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 661 | "keywords": [ 662 | "template" 663 | ], 664 | "time": "2015-06-21T13:50:34+00:00" 665 | }, 666 | { 667 | "name": "phpunit/php-timer", 668 | "version": "1.0.9", 669 | "source": { 670 | "type": "git", 671 | "url": "https://github.com/sebastianbergmann/php-timer.git", 672 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 673 | }, 674 | "dist": { 675 | "type": "zip", 676 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 677 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 678 | "shasum": "" 679 | }, 680 | "require": { 681 | "php": "^5.3.3 || ^7.0" 682 | }, 683 | "require-dev": { 684 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 685 | }, 686 | "type": "library", 687 | "extra": { 688 | "branch-alias": { 689 | "dev-master": "1.0-dev" 690 | } 691 | }, 692 | "autoload": { 693 | "classmap": [ 694 | "src/" 695 | ] 696 | }, 697 | "notification-url": "https://packagist.org/downloads/", 698 | "license": [ 699 | "BSD-3-Clause" 700 | ], 701 | "authors": [ 702 | { 703 | "name": "Sebastian Bergmann", 704 | "email": "sb@sebastian-bergmann.de", 705 | "role": "lead" 706 | } 707 | ], 708 | "description": "Utility class for timing", 709 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 710 | "keywords": [ 711 | "timer" 712 | ], 713 | "time": "2017-02-26T11:10:40+00:00" 714 | }, 715 | { 716 | "name": "phpunit/php-token-stream", 717 | "version": "1.4.12", 718 | "source": { 719 | "type": "git", 720 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 721 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16" 722 | }, 723 | "dist": { 724 | "type": "zip", 725 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/1ce90ba27c42e4e44e6d8458241466380b51fa16", 726 | "reference": "1ce90ba27c42e4e44e6d8458241466380b51fa16", 727 | "shasum": "" 728 | }, 729 | "require": { 730 | "ext-tokenizer": "*", 731 | "php": ">=5.3.3" 732 | }, 733 | "require-dev": { 734 | "phpunit/phpunit": "~4.2" 735 | }, 736 | "type": "library", 737 | "extra": { 738 | "branch-alias": { 739 | "dev-master": "1.4-dev" 740 | } 741 | }, 742 | "autoload": { 743 | "classmap": [ 744 | "src/" 745 | ] 746 | }, 747 | "notification-url": "https://packagist.org/downloads/", 748 | "license": [ 749 | "BSD-3-Clause" 750 | ], 751 | "authors": [ 752 | { 753 | "name": "Sebastian Bergmann", 754 | "email": "sebastian@phpunit.de" 755 | } 756 | ], 757 | "description": "Wrapper around PHP's tokenizer extension.", 758 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 759 | "keywords": [ 760 | "tokenizer" 761 | ], 762 | "abandoned": true, 763 | "time": "2017-12-04T08:55:13+00:00" 764 | }, 765 | { 766 | "name": "phpunit/phpunit", 767 | "version": "4.8.36", 768 | "source": { 769 | "type": "git", 770 | "url": "https://github.com/sebastianbergmann/phpunit.git", 771 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517" 772 | }, 773 | "dist": { 774 | "type": "zip", 775 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/46023de9a91eec7dfb06cc56cb4e260017298517", 776 | "reference": "46023de9a91eec7dfb06cc56cb4e260017298517", 777 | "shasum": "" 778 | }, 779 | "require": { 780 | "ext-dom": "*", 781 | "ext-json": "*", 782 | "ext-pcre": "*", 783 | "ext-reflection": "*", 784 | "ext-spl": "*", 785 | "php": ">=5.3.3", 786 | "phpspec/prophecy": "^1.3.1", 787 | "phpunit/php-code-coverage": "~2.1", 788 | "phpunit/php-file-iterator": "~1.4", 789 | "phpunit/php-text-template": "~1.2", 790 | "phpunit/php-timer": "^1.0.6", 791 | "phpunit/phpunit-mock-objects": "~2.3", 792 | "sebastian/comparator": "~1.2.2", 793 | "sebastian/diff": "~1.2", 794 | "sebastian/environment": "~1.3", 795 | "sebastian/exporter": "~1.2", 796 | "sebastian/global-state": "~1.0", 797 | "sebastian/version": "~1.0", 798 | "symfony/yaml": "~2.1|~3.0" 799 | }, 800 | "suggest": { 801 | "phpunit/php-invoker": "~1.1" 802 | }, 803 | "bin": [ 804 | "phpunit" 805 | ], 806 | "type": "library", 807 | "extra": { 808 | "branch-alias": { 809 | "dev-master": "4.8.x-dev" 810 | } 811 | }, 812 | "autoload": { 813 | "classmap": [ 814 | "src/" 815 | ] 816 | }, 817 | "notification-url": "https://packagist.org/downloads/", 818 | "license": [ 819 | "BSD-3-Clause" 820 | ], 821 | "authors": [ 822 | { 823 | "name": "Sebastian Bergmann", 824 | "email": "sebastian@phpunit.de", 825 | "role": "lead" 826 | } 827 | ], 828 | "description": "The PHP Unit Testing framework.", 829 | "homepage": "https://phpunit.de/", 830 | "keywords": [ 831 | "phpunit", 832 | "testing", 833 | "xunit" 834 | ], 835 | "time": "2017-06-21T08:07:12+00:00" 836 | }, 837 | { 838 | "name": "phpunit/phpunit-mock-objects", 839 | "version": "2.3.8", 840 | "source": { 841 | "type": "git", 842 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 843 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" 844 | }, 845 | "dist": { 846 | "type": "zip", 847 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", 848 | "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", 849 | "shasum": "" 850 | }, 851 | "require": { 852 | "doctrine/instantiator": "^1.0.2", 853 | "php": ">=5.3.3", 854 | "phpunit/php-text-template": "~1.2", 855 | "sebastian/exporter": "~1.2" 856 | }, 857 | "require-dev": { 858 | "phpunit/phpunit": "~4.4" 859 | }, 860 | "suggest": { 861 | "ext-soap": "*" 862 | }, 863 | "type": "library", 864 | "extra": { 865 | "branch-alias": { 866 | "dev-master": "2.3.x-dev" 867 | } 868 | }, 869 | "autoload": { 870 | "classmap": [ 871 | "src/" 872 | ] 873 | }, 874 | "notification-url": "https://packagist.org/downloads/", 875 | "license": [ 876 | "BSD-3-Clause" 877 | ], 878 | "authors": [ 879 | { 880 | "name": "Sebastian Bergmann", 881 | "email": "sb@sebastian-bergmann.de", 882 | "role": "lead" 883 | } 884 | ], 885 | "description": "Mock Object library for PHPUnit", 886 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 887 | "keywords": [ 888 | "mock", 889 | "xunit" 890 | ], 891 | "abandoned": true, 892 | "time": "2015-10-02T06:51:40+00:00" 893 | }, 894 | { 895 | "name": "sebastian/comparator", 896 | "version": "1.2.4", 897 | "source": { 898 | "type": "git", 899 | "url": "https://github.com/sebastianbergmann/comparator.git", 900 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" 901 | }, 902 | "dist": { 903 | "type": "zip", 904 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 905 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 906 | "shasum": "" 907 | }, 908 | "require": { 909 | "php": ">=5.3.3", 910 | "sebastian/diff": "~1.2", 911 | "sebastian/exporter": "~1.2 || ~2.0" 912 | }, 913 | "require-dev": { 914 | "phpunit/phpunit": "~4.4" 915 | }, 916 | "type": "library", 917 | "extra": { 918 | "branch-alias": { 919 | "dev-master": "1.2.x-dev" 920 | } 921 | }, 922 | "autoload": { 923 | "classmap": [ 924 | "src/" 925 | ] 926 | }, 927 | "notification-url": "https://packagist.org/downloads/", 928 | "license": [ 929 | "BSD-3-Clause" 930 | ], 931 | "authors": [ 932 | { 933 | "name": "Jeff Welch", 934 | "email": "whatthejeff@gmail.com" 935 | }, 936 | { 937 | "name": "Volker Dusch", 938 | "email": "github@wallbash.com" 939 | }, 940 | { 941 | "name": "Bernhard Schussek", 942 | "email": "bschussek@2bepublished.at" 943 | }, 944 | { 945 | "name": "Sebastian Bergmann", 946 | "email": "sebastian@phpunit.de" 947 | } 948 | ], 949 | "description": "Provides the functionality to compare PHP values for equality", 950 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 951 | "keywords": [ 952 | "comparator", 953 | "compare", 954 | "equality" 955 | ], 956 | "time": "2017-01-29T09:50:25+00:00" 957 | }, 958 | { 959 | "name": "sebastian/diff", 960 | "version": "1.4.3", 961 | "source": { 962 | "type": "git", 963 | "url": "https://github.com/sebastianbergmann/diff.git", 964 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4" 965 | }, 966 | "dist": { 967 | "type": "zip", 968 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/7f066a26a962dbe58ddea9f72a4e82874a3975a4", 969 | "reference": "7f066a26a962dbe58ddea9f72a4e82874a3975a4", 970 | "shasum": "" 971 | }, 972 | "require": { 973 | "php": "^5.3.3 || ^7.0" 974 | }, 975 | "require-dev": { 976 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 977 | }, 978 | "type": "library", 979 | "extra": { 980 | "branch-alias": { 981 | "dev-master": "1.4-dev" 982 | } 983 | }, 984 | "autoload": { 985 | "classmap": [ 986 | "src/" 987 | ] 988 | }, 989 | "notification-url": "https://packagist.org/downloads/", 990 | "license": [ 991 | "BSD-3-Clause" 992 | ], 993 | "authors": [ 994 | { 995 | "name": "Kore Nordmann", 996 | "email": "mail@kore-nordmann.de" 997 | }, 998 | { 999 | "name": "Sebastian Bergmann", 1000 | "email": "sebastian@phpunit.de" 1001 | } 1002 | ], 1003 | "description": "Diff implementation", 1004 | "homepage": "https://github.com/sebastianbergmann/diff", 1005 | "keywords": [ 1006 | "diff" 1007 | ], 1008 | "time": "2017-05-22T07:24:03+00:00" 1009 | }, 1010 | { 1011 | "name": "sebastian/environment", 1012 | "version": "1.3.8", 1013 | "source": { 1014 | "type": "git", 1015 | "url": "https://github.com/sebastianbergmann/environment.git", 1016 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea" 1017 | }, 1018 | "dist": { 1019 | "type": "zip", 1020 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea", 1021 | "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea", 1022 | "shasum": "" 1023 | }, 1024 | "require": { 1025 | "php": "^5.3.3 || ^7.0" 1026 | }, 1027 | "require-dev": { 1028 | "phpunit/phpunit": "^4.8 || ^5.0" 1029 | }, 1030 | "type": "library", 1031 | "extra": { 1032 | "branch-alias": { 1033 | "dev-master": "1.3.x-dev" 1034 | } 1035 | }, 1036 | "autoload": { 1037 | "classmap": [ 1038 | "src/" 1039 | ] 1040 | }, 1041 | "notification-url": "https://packagist.org/downloads/", 1042 | "license": [ 1043 | "BSD-3-Clause" 1044 | ], 1045 | "authors": [ 1046 | { 1047 | "name": "Sebastian Bergmann", 1048 | "email": "sebastian@phpunit.de" 1049 | } 1050 | ], 1051 | "description": "Provides functionality to handle HHVM/PHP environments", 1052 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1053 | "keywords": [ 1054 | "Xdebug", 1055 | "environment", 1056 | "hhvm" 1057 | ], 1058 | "time": "2016-08-18T05:49:44+00:00" 1059 | }, 1060 | { 1061 | "name": "sebastian/exporter", 1062 | "version": "1.2.2", 1063 | "source": { 1064 | "type": "git", 1065 | "url": "https://github.com/sebastianbergmann/exporter.git", 1066 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 1067 | }, 1068 | "dist": { 1069 | "type": "zip", 1070 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 1071 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 1072 | "shasum": "" 1073 | }, 1074 | "require": { 1075 | "php": ">=5.3.3", 1076 | "sebastian/recursion-context": "~1.0" 1077 | }, 1078 | "require-dev": { 1079 | "ext-mbstring": "*", 1080 | "phpunit/phpunit": "~4.4" 1081 | }, 1082 | "type": "library", 1083 | "extra": { 1084 | "branch-alias": { 1085 | "dev-master": "1.3.x-dev" 1086 | } 1087 | }, 1088 | "autoload": { 1089 | "classmap": [ 1090 | "src/" 1091 | ] 1092 | }, 1093 | "notification-url": "https://packagist.org/downloads/", 1094 | "license": [ 1095 | "BSD-3-Clause" 1096 | ], 1097 | "authors": [ 1098 | { 1099 | "name": "Jeff Welch", 1100 | "email": "whatthejeff@gmail.com" 1101 | }, 1102 | { 1103 | "name": "Volker Dusch", 1104 | "email": "github@wallbash.com" 1105 | }, 1106 | { 1107 | "name": "Bernhard Schussek", 1108 | "email": "bschussek@2bepublished.at" 1109 | }, 1110 | { 1111 | "name": "Sebastian Bergmann", 1112 | "email": "sebastian@phpunit.de" 1113 | }, 1114 | { 1115 | "name": "Adam Harvey", 1116 | "email": "aharvey@php.net" 1117 | } 1118 | ], 1119 | "description": "Provides the functionality to export PHP variables for visualization", 1120 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1121 | "keywords": [ 1122 | "export", 1123 | "exporter" 1124 | ], 1125 | "time": "2016-06-17T09:04:28+00:00" 1126 | }, 1127 | { 1128 | "name": "sebastian/global-state", 1129 | "version": "1.1.1", 1130 | "source": { 1131 | "type": "git", 1132 | "url": "https://github.com/sebastianbergmann/global-state.git", 1133 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 1134 | }, 1135 | "dist": { 1136 | "type": "zip", 1137 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 1138 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 1139 | "shasum": "" 1140 | }, 1141 | "require": { 1142 | "php": ">=5.3.3" 1143 | }, 1144 | "require-dev": { 1145 | "phpunit/phpunit": "~4.2" 1146 | }, 1147 | "suggest": { 1148 | "ext-uopz": "*" 1149 | }, 1150 | "type": "library", 1151 | "extra": { 1152 | "branch-alias": { 1153 | "dev-master": "1.0-dev" 1154 | } 1155 | }, 1156 | "autoload": { 1157 | "classmap": [ 1158 | "src/" 1159 | ] 1160 | }, 1161 | "notification-url": "https://packagist.org/downloads/", 1162 | "license": [ 1163 | "BSD-3-Clause" 1164 | ], 1165 | "authors": [ 1166 | { 1167 | "name": "Sebastian Bergmann", 1168 | "email": "sebastian@phpunit.de" 1169 | } 1170 | ], 1171 | "description": "Snapshotting of global state", 1172 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1173 | "keywords": [ 1174 | "global state" 1175 | ], 1176 | "time": "2015-10-12T03:26:01+00:00" 1177 | }, 1178 | { 1179 | "name": "sebastian/recursion-context", 1180 | "version": "1.0.5", 1181 | "source": { 1182 | "type": "git", 1183 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1184 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" 1185 | }, 1186 | "dist": { 1187 | "type": "zip", 1188 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 1189 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 1190 | "shasum": "" 1191 | }, 1192 | "require": { 1193 | "php": ">=5.3.3" 1194 | }, 1195 | "require-dev": { 1196 | "phpunit/phpunit": "~4.4" 1197 | }, 1198 | "type": "library", 1199 | "extra": { 1200 | "branch-alias": { 1201 | "dev-master": "1.0.x-dev" 1202 | } 1203 | }, 1204 | "autoload": { 1205 | "classmap": [ 1206 | "src/" 1207 | ] 1208 | }, 1209 | "notification-url": "https://packagist.org/downloads/", 1210 | "license": [ 1211 | "BSD-3-Clause" 1212 | ], 1213 | "authors": [ 1214 | { 1215 | "name": "Jeff Welch", 1216 | "email": "whatthejeff@gmail.com" 1217 | }, 1218 | { 1219 | "name": "Sebastian Bergmann", 1220 | "email": "sebastian@phpunit.de" 1221 | }, 1222 | { 1223 | "name": "Adam Harvey", 1224 | "email": "aharvey@php.net" 1225 | } 1226 | ], 1227 | "description": "Provides functionality to recursively process PHP variables", 1228 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1229 | "time": "2016-10-03T07:41:43+00:00" 1230 | }, 1231 | { 1232 | "name": "sebastian/version", 1233 | "version": "1.0.6", 1234 | "source": { 1235 | "type": "git", 1236 | "url": "https://github.com/sebastianbergmann/version.git", 1237 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" 1238 | }, 1239 | "dist": { 1240 | "type": "zip", 1241 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 1242 | "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", 1243 | "shasum": "" 1244 | }, 1245 | "type": "library", 1246 | "autoload": { 1247 | "classmap": [ 1248 | "src/" 1249 | ] 1250 | }, 1251 | "notification-url": "https://packagist.org/downloads/", 1252 | "license": [ 1253 | "BSD-3-Clause" 1254 | ], 1255 | "authors": [ 1256 | { 1257 | "name": "Sebastian Bergmann", 1258 | "email": "sebastian@phpunit.de", 1259 | "role": "lead" 1260 | } 1261 | ], 1262 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1263 | "homepage": "https://github.com/sebastianbergmann/version", 1264 | "time": "2015-06-21T13:59:46+00:00" 1265 | }, 1266 | { 1267 | "name": "symfony/polyfill-ctype", 1268 | "version": "v1.20.0", 1269 | "source": { 1270 | "type": "git", 1271 | "url": "https://github.com/symfony/polyfill-ctype.git", 1272 | "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41" 1273 | }, 1274 | "dist": { 1275 | "type": "zip", 1276 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/f4ba089a5b6366e453971d3aad5fe8e897b37f41", 1277 | "reference": "f4ba089a5b6366e453971d3aad5fe8e897b37f41", 1278 | "shasum": "" 1279 | }, 1280 | "require": { 1281 | "php": ">=7.1" 1282 | }, 1283 | "suggest": { 1284 | "ext-ctype": "For best performance" 1285 | }, 1286 | "type": "library", 1287 | "extra": { 1288 | "branch-alias": { 1289 | "dev-main": "1.20-dev" 1290 | }, 1291 | "thanks": { 1292 | "name": "symfony/polyfill", 1293 | "url": "https://github.com/symfony/polyfill" 1294 | } 1295 | }, 1296 | "autoload": { 1297 | "psr-4": { 1298 | "Symfony\\Polyfill\\Ctype\\": "" 1299 | }, 1300 | "files": [ 1301 | "bootstrap.php" 1302 | ] 1303 | }, 1304 | "notification-url": "https://packagist.org/downloads/", 1305 | "license": [ 1306 | "MIT" 1307 | ], 1308 | "authors": [ 1309 | { 1310 | "name": "Gert de Pagter", 1311 | "email": "BackEndTea@gmail.com" 1312 | }, 1313 | { 1314 | "name": "Symfony Community", 1315 | "homepage": "https://symfony.com/contributors" 1316 | } 1317 | ], 1318 | "description": "Symfony polyfill for ctype functions", 1319 | "homepage": "https://symfony.com", 1320 | "keywords": [ 1321 | "compatibility", 1322 | "ctype", 1323 | "polyfill", 1324 | "portable" 1325 | ], 1326 | "funding": [ 1327 | { 1328 | "url": "https://symfony.com/sponsor", 1329 | "type": "custom" 1330 | }, 1331 | { 1332 | "url": "https://github.com/fabpot", 1333 | "type": "github" 1334 | }, 1335 | { 1336 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1337 | "type": "tidelift" 1338 | } 1339 | ], 1340 | "time": "2020-10-23T14:02:19+00:00" 1341 | }, 1342 | { 1343 | "name": "symfony/yaml", 1344 | "version": "v3.4.46", 1345 | "source": { 1346 | "type": "git", 1347 | "url": "https://github.com/symfony/yaml.git", 1348 | "reference": "88289caa3c166321883f67fe5130188ebbb47094" 1349 | }, 1350 | "dist": { 1351 | "type": "zip", 1352 | "url": "https://api.github.com/repos/symfony/yaml/zipball/88289caa3c166321883f67fe5130188ebbb47094", 1353 | "reference": "88289caa3c166321883f67fe5130188ebbb47094", 1354 | "shasum": "" 1355 | }, 1356 | "require": { 1357 | "php": "^5.5.9|>=7.0.8", 1358 | "symfony/polyfill-ctype": "~1.8" 1359 | }, 1360 | "conflict": { 1361 | "symfony/console": "<3.4" 1362 | }, 1363 | "require-dev": { 1364 | "symfony/console": "~3.4|~4.0" 1365 | }, 1366 | "suggest": { 1367 | "symfony/console": "For validating YAML files using the lint command" 1368 | }, 1369 | "type": "library", 1370 | "autoload": { 1371 | "psr-4": { 1372 | "Symfony\\Component\\Yaml\\": "" 1373 | }, 1374 | "exclude-from-classmap": [ 1375 | "/Tests/" 1376 | ] 1377 | }, 1378 | "notification-url": "https://packagist.org/downloads/", 1379 | "license": [ 1380 | "MIT" 1381 | ], 1382 | "authors": [ 1383 | { 1384 | "name": "Fabien Potencier", 1385 | "email": "fabien@symfony.com" 1386 | }, 1387 | { 1388 | "name": "Symfony Community", 1389 | "homepage": "https://symfony.com/contributors" 1390 | } 1391 | ], 1392 | "description": "Symfony Yaml Component", 1393 | "homepage": "https://symfony.com", 1394 | "funding": [ 1395 | { 1396 | "url": "https://symfony.com/sponsor", 1397 | "type": "custom" 1398 | }, 1399 | { 1400 | "url": "https://github.com/fabpot", 1401 | "type": "github" 1402 | }, 1403 | { 1404 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 1405 | "type": "tidelift" 1406 | } 1407 | ], 1408 | "time": "2020-10-24T10:57:07+00:00" 1409 | }, 1410 | { 1411 | "name": "webmozart/assert", 1412 | "version": "1.9.1", 1413 | "source": { 1414 | "type": "git", 1415 | "url": "https://github.com/webmozart/assert.git", 1416 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" 1417 | }, 1418 | "dist": { 1419 | "type": "zip", 1420 | "url": "https://api.github.com/repos/webmozart/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", 1421 | "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", 1422 | "shasum": "" 1423 | }, 1424 | "require": { 1425 | "php": "^5.3.3 || ^7.0 || ^8.0", 1426 | "symfony/polyfill-ctype": "^1.8" 1427 | }, 1428 | "conflict": { 1429 | "phpstan/phpstan": "<0.12.20", 1430 | "vimeo/psalm": "<3.9.1" 1431 | }, 1432 | "require-dev": { 1433 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 1434 | }, 1435 | "type": "library", 1436 | "autoload": { 1437 | "psr-4": { 1438 | "Webmozart\\Assert\\": "src/" 1439 | } 1440 | }, 1441 | "notification-url": "https://packagist.org/downloads/", 1442 | "license": [ 1443 | "MIT" 1444 | ], 1445 | "authors": [ 1446 | { 1447 | "name": "Bernhard Schussek", 1448 | "email": "bschussek@gmail.com" 1449 | } 1450 | ], 1451 | "description": "Assertions to validate method input/output with nice error messages.", 1452 | "keywords": [ 1453 | "assert", 1454 | "check", 1455 | "validate" 1456 | ], 1457 | "time": "2020-07-08T17:02:28+00:00" 1458 | } 1459 | ], 1460 | "packages-dev": [], 1461 | "aliases": [], 1462 | "minimum-stability": "stable", 1463 | "stability-flags": [], 1464 | "prefer-stable": false, 1465 | "prefer-lowest": false, 1466 | "platform": { 1467 | "php": ">7.2.0" 1468 | }, 1469 | "platform-dev": [], 1470 | "plugin-api-version": "1.1.0" 1471 | } 1472 | --------------------------------------------------------------------------------