├── .gitignore ├── .scrutinizer.yml ├── .travis.yml ├── LICENSE ├── composer.json ├── composer.lock ├── migrations └── 2017_11_24_094130_create_stripes_table.php ├── phpunit.xml ├── readme.md ├── src ├── ServiceProvider.php ├── Stripe.php ├── StripeConnect.php └── Transaction.php └── tests └── TransactionTest.php /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor 2 | /.idea 3 | build 4 | -------------------------------------------------------------------------------- /.scrutinizer.yml: -------------------------------------------------------------------------------- 1 | filter: 2 | excluded_paths: [tests, vendor] 3 | 4 | checks: 5 | php: 6 | remove_extra_empty_lines: true 7 | remove_php_closing_tag: true 8 | remove_trailing_whitespace: true 9 | fix_use_statements: 10 | remove_unused: true 11 | preserve_multiple: false 12 | preserve_blanklines: true 13 | order_alphabetically: true 14 | fix_php_opening_tag: true 15 | fix_linefeed: true 16 | fix_line_ending: true 17 | fix_identation_4spaces: true 18 | fix_doc_comments: true 19 | 20 | tools: 21 | external_code_coverage: 22 | timeout: 1800 23 | runs: 3 -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 7.1 5 | 6 | install: 7 | - travis_retry composer install --no-interaction --prefer-source 8 | 9 | script: 10 | - vendor/bin/phpunit 11 | 12 | after_script: 13 | - wget https://scrutinizer-ci.com/ocular.phar 14 | - php ocular.phar code-coverage:upload --format=php-clover coverage.clover -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Raphaël Huchet (a.k.a rap2h / rap2hpoutre) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rap2hpoutre/laravel-stripe-connect", 3 | "type": "library", 4 | "keywords": ["laravel", "stripe", "billing"], 5 | "require": { 6 | "illuminate/database": "^5.5", 7 | "illuminate/support": "^5.5", 8 | "stripe/stripe-php": "^5.0" 9 | }, 10 | "require-dev": { 11 | "phpunit/phpunit": "^6.4" 12 | }, 13 | "autoload": { 14 | "psr-4": { 15 | "Rap2hpoutre\\LaravelStripeConnect\\": "src/" 16 | } 17 | }, 18 | "autoload-dev": { 19 | "psr-4": { 20 | "Rap2hpoutre\\LaravelStripeConnect\\Tests\\": "tests/" 21 | } 22 | }, 23 | "extra": { 24 | "laravel": { 25 | "providers": [ 26 | "Rap2hpoutre\\LaravelStripeConnect\\ServiceProvider" 27 | ] 28 | } 29 | }, 30 | "license": "MIT", 31 | "authors": [ 32 | { 33 | "name": "rap2h", 34 | "email": "raphaelht@gmail.com" 35 | } 36 | ], 37 | "minimum-stability": "stable" 38 | } 39 | -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "7167ca6332501501fc5759898eafcd58", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "v1.3.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", 20 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^6.2" 28 | }, 29 | "type": "library", 30 | "extra": { 31 | "branch-alias": { 32 | "dev-master": "1.3.x-dev" 33 | } 34 | }, 35 | "autoload": { 36 | "psr-4": { 37 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 38 | } 39 | }, 40 | "notification-url": "https://packagist.org/downloads/", 41 | "license": [ 42 | "MIT" 43 | ], 44 | "authors": [ 45 | { 46 | "name": "Roman Borschel", 47 | "email": "roman@code-factory.org" 48 | }, 49 | { 50 | "name": "Benjamin Eberlei", 51 | "email": "kontakt@beberlei.de" 52 | }, 53 | { 54 | "name": "Guilherme Blanco", 55 | "email": "guilhermeblanco@gmail.com" 56 | }, 57 | { 58 | "name": "Jonathan Wage", 59 | "email": "jonwage@gmail.com" 60 | }, 61 | { 62 | "name": "Johannes Schmitt", 63 | "email": "schmittjoh@gmail.com" 64 | } 65 | ], 66 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 67 | "homepage": "http://www.doctrine-project.org", 68 | "keywords": [ 69 | "inflection", 70 | "pluralize", 71 | "singularize", 72 | "string" 73 | ], 74 | "time": "2018-01-09T20:05:19+00:00" 75 | }, 76 | { 77 | "name": "illuminate/container", 78 | "version": "v5.6.17", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/illuminate/container.git", 82 | "reference": "4a42d667a05ec6d31f05b532cdac7e8e68e5ea2a" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/illuminate/container/zipball/4a42d667a05ec6d31f05b532cdac7e8e68e5ea2a", 87 | "reference": "4a42d667a05ec6d31f05b532cdac7e8e68e5ea2a", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "illuminate/contracts": "5.6.*", 92 | "php": "^7.1.3", 93 | "psr/container": "~1.0" 94 | }, 95 | "type": "library", 96 | "extra": { 97 | "branch-alias": { 98 | "dev-master": "5.6-dev" 99 | } 100 | }, 101 | "autoload": { 102 | "psr-4": { 103 | "Illuminate\\Container\\": "" 104 | } 105 | }, 106 | "notification-url": "https://packagist.org/downloads/", 107 | "license": [ 108 | "MIT" 109 | ], 110 | "authors": [ 111 | { 112 | "name": "Taylor Otwell", 113 | "email": "taylor@laravel.com" 114 | } 115 | ], 116 | "description": "The Illuminate Container package.", 117 | "homepage": "https://laravel.com", 118 | "time": "2018-01-21T02:13:38+00:00" 119 | }, 120 | { 121 | "name": "illuminate/contracts", 122 | "version": "v5.6.17", 123 | "source": { 124 | "type": "git", 125 | "url": "https://github.com/illuminate/contracts.git", 126 | "reference": "322ec80498b3bf85bc4025d028e130a9b50242b9" 127 | }, 128 | "dist": { 129 | "type": "zip", 130 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/322ec80498b3bf85bc4025d028e130a9b50242b9", 131 | "reference": "322ec80498b3bf85bc4025d028e130a9b50242b9", 132 | "shasum": "" 133 | }, 134 | "require": { 135 | "php": "^7.1.3", 136 | "psr/container": "~1.0", 137 | "psr/simple-cache": "~1.0" 138 | }, 139 | "type": "library", 140 | "extra": { 141 | "branch-alias": { 142 | "dev-master": "5.6-dev" 143 | } 144 | }, 145 | "autoload": { 146 | "psr-4": { 147 | "Illuminate\\Contracts\\": "" 148 | } 149 | }, 150 | "notification-url": "https://packagist.org/downloads/", 151 | "license": [ 152 | "MIT" 153 | ], 154 | "authors": [ 155 | { 156 | "name": "Taylor Otwell", 157 | "email": "taylor@laravel.com" 158 | } 159 | ], 160 | "description": "The Illuminate Contracts package.", 161 | "homepage": "https://laravel.com", 162 | "time": "2018-04-07T17:05:26+00:00" 163 | }, 164 | { 165 | "name": "illuminate/database", 166 | "version": "v5.6.17", 167 | "source": { 168 | "type": "git", 169 | "url": "https://github.com/illuminate/database.git", 170 | "reference": "a949e082dbb520fdcb2798e0a5408669724aa197" 171 | }, 172 | "dist": { 173 | "type": "zip", 174 | "url": "https://api.github.com/repos/illuminate/database/zipball/a949e082dbb520fdcb2798e0a5408669724aa197", 175 | "reference": "a949e082dbb520fdcb2798e0a5408669724aa197", 176 | "shasum": "" 177 | }, 178 | "require": { 179 | "illuminate/container": "5.6.*", 180 | "illuminate/contracts": "5.6.*", 181 | "illuminate/support": "5.6.*", 182 | "php": "^7.1.3" 183 | }, 184 | "suggest": { 185 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.6).", 186 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", 187 | "illuminate/console": "Required to use the database commands (5.6.*).", 188 | "illuminate/events": "Required to use the observers with Eloquent (5.6.*).", 189 | "illuminate/filesystem": "Required to use the migrations (5.6.*).", 190 | "illuminate/pagination": "Required to paginate the result set (5.6.*)." 191 | }, 192 | "type": "library", 193 | "extra": { 194 | "branch-alias": { 195 | "dev-master": "5.6-dev" 196 | } 197 | }, 198 | "autoload": { 199 | "psr-4": { 200 | "Illuminate\\Database\\": "" 201 | } 202 | }, 203 | "notification-url": "https://packagist.org/downloads/", 204 | "license": [ 205 | "MIT" 206 | ], 207 | "authors": [ 208 | { 209 | "name": "Taylor Otwell", 210 | "email": "taylor@laravel.com" 211 | } 212 | ], 213 | "description": "The Illuminate Database package.", 214 | "homepage": "https://laravel.com", 215 | "keywords": [ 216 | "database", 217 | "laravel", 218 | "orm", 219 | "sql" 220 | ], 221 | "time": "2018-04-17T12:36:27+00:00" 222 | }, 223 | { 224 | "name": "illuminate/support", 225 | "version": "v5.6.17", 226 | "source": { 227 | "type": "git", 228 | "url": "https://github.com/illuminate/support.git", 229 | "reference": "cc8d6f5cef3a901de6bb7d1b362102a6db001085" 230 | }, 231 | "dist": { 232 | "type": "zip", 233 | "url": "https://api.github.com/repos/illuminate/support/zipball/cc8d6f5cef3a901de6bb7d1b362102a6db001085", 234 | "reference": "cc8d6f5cef3a901de6bb7d1b362102a6db001085", 235 | "shasum": "" 236 | }, 237 | "require": { 238 | "doctrine/inflector": "~1.1", 239 | "ext-mbstring": "*", 240 | "illuminate/contracts": "5.6.*", 241 | "nesbot/carbon": "^1.24.1", 242 | "php": "^7.1.3" 243 | }, 244 | "conflict": { 245 | "tightenco/collect": "<5.5.33" 246 | }, 247 | "suggest": { 248 | "illuminate/filesystem": "Required to use the composer class (5.6.*).", 249 | "symfony/process": "Required to use the composer class (~4.0).", 250 | "symfony/var-dumper": "Required to use the dd function (~4.0)." 251 | }, 252 | "type": "library", 253 | "extra": { 254 | "branch-alias": { 255 | "dev-master": "5.6-dev" 256 | } 257 | }, 258 | "autoload": { 259 | "psr-4": { 260 | "Illuminate\\Support\\": "" 261 | }, 262 | "files": [ 263 | "helpers.php" 264 | ] 265 | }, 266 | "notification-url": "https://packagist.org/downloads/", 267 | "license": [ 268 | "MIT" 269 | ], 270 | "authors": [ 271 | { 272 | "name": "Taylor Otwell", 273 | "email": "taylor@laravel.com" 274 | } 275 | ], 276 | "description": "The Illuminate Support package.", 277 | "homepage": "https://laravel.com", 278 | "time": "2018-04-17T12:26:47+00:00" 279 | }, 280 | { 281 | "name": "nesbot/carbon", 282 | "version": "1.26.4", 283 | "source": { 284 | "type": "git", 285 | "url": "https://github.com/briannesbitt/Carbon.git", 286 | "reference": "e3d9014279133a3cccc01f6a691322a2d5a6a87b" 287 | }, 288 | "dist": { 289 | "type": "zip", 290 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e3d9014279133a3cccc01f6a691322a2d5a6a87b", 291 | "reference": "e3d9014279133a3cccc01f6a691322a2d5a6a87b", 292 | "shasum": "" 293 | }, 294 | "require": { 295 | "php": ">=5.3.9", 296 | "symfony/translation": "~2.6 || ~3.0 || ~4.0" 297 | }, 298 | "require-dev": { 299 | "friendsofphp/php-cs-fixer": "~2", 300 | "phpunit/phpunit": "^4.8.35 || ^5.7" 301 | }, 302 | "type": "library", 303 | "autoload": { 304 | "psr-4": { 305 | "": "src/" 306 | } 307 | }, 308 | "notification-url": "https://packagist.org/downloads/", 309 | "license": [ 310 | "MIT" 311 | ], 312 | "authors": [ 313 | { 314 | "name": "Brian Nesbitt", 315 | "email": "brian@nesbot.com", 316 | "homepage": "http://nesbot.com" 317 | } 318 | ], 319 | "description": "A simple API extension for DateTime.", 320 | "homepage": "http://carbon.nesbot.com", 321 | "keywords": [ 322 | "date", 323 | "datetime", 324 | "time" 325 | ], 326 | "time": "2018-04-17T15:35:42+00:00" 327 | }, 328 | { 329 | "name": "psr/container", 330 | "version": "1.0.0", 331 | "source": { 332 | "type": "git", 333 | "url": "https://github.com/php-fig/container.git", 334 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 335 | }, 336 | "dist": { 337 | "type": "zip", 338 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 339 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 340 | "shasum": "" 341 | }, 342 | "require": { 343 | "php": ">=5.3.0" 344 | }, 345 | "type": "library", 346 | "extra": { 347 | "branch-alias": { 348 | "dev-master": "1.0.x-dev" 349 | } 350 | }, 351 | "autoload": { 352 | "psr-4": { 353 | "Psr\\Container\\": "src/" 354 | } 355 | }, 356 | "notification-url": "https://packagist.org/downloads/", 357 | "license": [ 358 | "MIT" 359 | ], 360 | "authors": [ 361 | { 362 | "name": "PHP-FIG", 363 | "homepage": "http://www.php-fig.org/" 364 | } 365 | ], 366 | "description": "Common Container Interface (PHP FIG PSR-11)", 367 | "homepage": "https://github.com/php-fig/container", 368 | "keywords": [ 369 | "PSR-11", 370 | "container", 371 | "container-interface", 372 | "container-interop", 373 | "psr" 374 | ], 375 | "time": "2017-02-14T16:28:37+00:00" 376 | }, 377 | { 378 | "name": "psr/simple-cache", 379 | "version": "1.0.1", 380 | "source": { 381 | "type": "git", 382 | "url": "https://github.com/php-fig/simple-cache.git", 383 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 384 | }, 385 | "dist": { 386 | "type": "zip", 387 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 388 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 389 | "shasum": "" 390 | }, 391 | "require": { 392 | "php": ">=5.3.0" 393 | }, 394 | "type": "library", 395 | "extra": { 396 | "branch-alias": { 397 | "dev-master": "1.0.x-dev" 398 | } 399 | }, 400 | "autoload": { 401 | "psr-4": { 402 | "Psr\\SimpleCache\\": "src/" 403 | } 404 | }, 405 | "notification-url": "https://packagist.org/downloads/", 406 | "license": [ 407 | "MIT" 408 | ], 409 | "authors": [ 410 | { 411 | "name": "PHP-FIG", 412 | "homepage": "http://www.php-fig.org/" 413 | } 414 | ], 415 | "description": "Common interfaces for simple caching", 416 | "keywords": [ 417 | "cache", 418 | "caching", 419 | "psr", 420 | "psr-16", 421 | "simple-cache" 422 | ], 423 | "time": "2017-10-23T01:57:42+00:00" 424 | }, 425 | { 426 | "name": "stripe/stripe-php", 427 | "version": "v5.9.2", 428 | "source": { 429 | "type": "git", 430 | "url": "https://github.com/stripe/stripe-php.git", 431 | "reference": "026191d12241a76c957884dff75e4f3721b0e77f" 432 | }, 433 | "dist": { 434 | "type": "zip", 435 | "url": "https://api.github.com/repos/stripe/stripe-php/zipball/026191d12241a76c957884dff75e4f3721b0e77f", 436 | "reference": "026191d12241a76c957884dff75e4f3721b0e77f", 437 | "shasum": "" 438 | }, 439 | "require": { 440 | "ext-curl": "*", 441 | "ext-json": "*", 442 | "ext-mbstring": "*", 443 | "php": ">=5.3.3" 444 | }, 445 | "require-dev": { 446 | "phpunit/phpunit": "~4.0", 447 | "satooshi/php-coveralls": "~0.6.1", 448 | "squizlabs/php_codesniffer": "~2.0" 449 | }, 450 | "type": "library", 451 | "extra": { 452 | "branch-alias": { 453 | "dev-master": "2.0-dev" 454 | } 455 | }, 456 | "autoload": { 457 | "psr-4": { 458 | "Stripe\\": "lib/" 459 | } 460 | }, 461 | "notification-url": "https://packagist.org/downloads/", 462 | "license": [ 463 | "MIT" 464 | ], 465 | "authors": [ 466 | { 467 | "name": "Stripe and contributors", 468 | "homepage": "https://github.com/stripe/stripe-php/contributors" 469 | } 470 | ], 471 | "description": "Stripe PHP Library", 472 | "homepage": "https://stripe.com/", 473 | "keywords": [ 474 | "api", 475 | "payment processing", 476 | "stripe" 477 | ], 478 | "time": "2018-02-07T18:36:55+00:00" 479 | }, 480 | { 481 | "name": "symfony/polyfill-mbstring", 482 | "version": "v1.7.0", 483 | "source": { 484 | "type": "git", 485 | "url": "https://github.com/symfony/polyfill-mbstring.git", 486 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" 487 | }, 488 | "dist": { 489 | "type": "zip", 490 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", 491 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", 492 | "shasum": "" 493 | }, 494 | "require": { 495 | "php": ">=5.3.3" 496 | }, 497 | "suggest": { 498 | "ext-mbstring": "For best performance" 499 | }, 500 | "type": "library", 501 | "extra": { 502 | "branch-alias": { 503 | "dev-master": "1.7-dev" 504 | } 505 | }, 506 | "autoload": { 507 | "psr-4": { 508 | "Symfony\\Polyfill\\Mbstring\\": "" 509 | }, 510 | "files": [ 511 | "bootstrap.php" 512 | ] 513 | }, 514 | "notification-url": "https://packagist.org/downloads/", 515 | "license": [ 516 | "MIT" 517 | ], 518 | "authors": [ 519 | { 520 | "name": "Nicolas Grekas", 521 | "email": "p@tchwork.com" 522 | }, 523 | { 524 | "name": "Symfony Community", 525 | "homepage": "https://symfony.com/contributors" 526 | } 527 | ], 528 | "description": "Symfony polyfill for the Mbstring extension", 529 | "homepage": "https://symfony.com", 530 | "keywords": [ 531 | "compatibility", 532 | "mbstring", 533 | "polyfill", 534 | "portable", 535 | "shim" 536 | ], 537 | "time": "2018-01-30T19:27:44+00:00" 538 | }, 539 | { 540 | "name": "symfony/translation", 541 | "version": "v4.0.8", 542 | "source": { 543 | "type": "git", 544 | "url": "https://github.com/symfony/translation.git", 545 | "reference": "e20a9b7f9f62cb33a11638b345c248e7d510c938" 546 | }, 547 | "dist": { 548 | "type": "zip", 549 | "url": "https://api.github.com/repos/symfony/translation/zipball/e20a9b7f9f62cb33a11638b345c248e7d510c938", 550 | "reference": "e20a9b7f9f62cb33a11638b345c248e7d510c938", 551 | "shasum": "" 552 | }, 553 | "require": { 554 | "php": "^7.1.3", 555 | "symfony/polyfill-mbstring": "~1.0" 556 | }, 557 | "conflict": { 558 | "symfony/config": "<3.4", 559 | "symfony/dependency-injection": "<3.4", 560 | "symfony/yaml": "<3.4" 561 | }, 562 | "require-dev": { 563 | "psr/log": "~1.0", 564 | "symfony/config": "~3.4|~4.0", 565 | "symfony/dependency-injection": "~3.4|~4.0", 566 | "symfony/finder": "~2.8|~3.0|~4.0", 567 | "symfony/intl": "~3.4|~4.0", 568 | "symfony/yaml": "~3.4|~4.0" 569 | }, 570 | "suggest": { 571 | "psr/log": "To use logging capability in translator", 572 | "symfony/config": "", 573 | "symfony/yaml": "" 574 | }, 575 | "type": "library", 576 | "extra": { 577 | "branch-alias": { 578 | "dev-master": "4.0-dev" 579 | } 580 | }, 581 | "autoload": { 582 | "psr-4": { 583 | "Symfony\\Component\\Translation\\": "" 584 | }, 585 | "exclude-from-classmap": [ 586 | "/Tests/" 587 | ] 588 | }, 589 | "notification-url": "https://packagist.org/downloads/", 590 | "license": [ 591 | "MIT" 592 | ], 593 | "authors": [ 594 | { 595 | "name": "Fabien Potencier", 596 | "email": "fabien@symfony.com" 597 | }, 598 | { 599 | "name": "Symfony Community", 600 | "homepage": "https://symfony.com/contributors" 601 | } 602 | ], 603 | "description": "Symfony Translation Component", 604 | "homepage": "https://symfony.com", 605 | "time": "2018-02-22T10:50:29+00:00" 606 | } 607 | ], 608 | "packages-dev": [ 609 | { 610 | "name": "doctrine/instantiator", 611 | "version": "1.1.0", 612 | "source": { 613 | "type": "git", 614 | "url": "https://github.com/doctrine/instantiator.git", 615 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda" 616 | }, 617 | "dist": { 618 | "type": "zip", 619 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 620 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda", 621 | "shasum": "" 622 | }, 623 | "require": { 624 | "php": "^7.1" 625 | }, 626 | "require-dev": { 627 | "athletic/athletic": "~0.1.8", 628 | "ext-pdo": "*", 629 | "ext-phar": "*", 630 | "phpunit/phpunit": "^6.2.3", 631 | "squizlabs/php_codesniffer": "^3.0.2" 632 | }, 633 | "type": "library", 634 | "extra": { 635 | "branch-alias": { 636 | "dev-master": "1.2.x-dev" 637 | } 638 | }, 639 | "autoload": { 640 | "psr-4": { 641 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 642 | } 643 | }, 644 | "notification-url": "https://packagist.org/downloads/", 645 | "license": [ 646 | "MIT" 647 | ], 648 | "authors": [ 649 | { 650 | "name": "Marco Pivetta", 651 | "email": "ocramius@gmail.com", 652 | "homepage": "http://ocramius.github.com/" 653 | } 654 | ], 655 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 656 | "homepage": "https://github.com/doctrine/instantiator", 657 | "keywords": [ 658 | "constructor", 659 | "instantiate" 660 | ], 661 | "time": "2017-07-22T11:58:36+00:00" 662 | }, 663 | { 664 | "name": "myclabs/deep-copy", 665 | "version": "1.7.0", 666 | "source": { 667 | "type": "git", 668 | "url": "https://github.com/myclabs/DeepCopy.git", 669 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" 670 | }, 671 | "dist": { 672 | "type": "zip", 673 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 674 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 675 | "shasum": "" 676 | }, 677 | "require": { 678 | "php": "^5.6 || ^7.0" 679 | }, 680 | "require-dev": { 681 | "doctrine/collections": "^1.0", 682 | "doctrine/common": "^2.6", 683 | "phpunit/phpunit": "^4.1" 684 | }, 685 | "type": "library", 686 | "autoload": { 687 | "psr-4": { 688 | "DeepCopy\\": "src/DeepCopy/" 689 | }, 690 | "files": [ 691 | "src/DeepCopy/deep_copy.php" 692 | ] 693 | }, 694 | "notification-url": "https://packagist.org/downloads/", 695 | "license": [ 696 | "MIT" 697 | ], 698 | "description": "Create deep copies (clones) of your objects", 699 | "keywords": [ 700 | "clone", 701 | "copy", 702 | "duplicate", 703 | "object", 704 | "object graph" 705 | ], 706 | "time": "2017-10-19T19:58:43+00:00" 707 | }, 708 | { 709 | "name": "phar-io/manifest", 710 | "version": "1.0.1", 711 | "source": { 712 | "type": "git", 713 | "url": "https://github.com/phar-io/manifest.git", 714 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" 715 | }, 716 | "dist": { 717 | "type": "zip", 718 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", 719 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", 720 | "shasum": "" 721 | }, 722 | "require": { 723 | "ext-dom": "*", 724 | "ext-phar": "*", 725 | "phar-io/version": "^1.0.1", 726 | "php": "^5.6 || ^7.0" 727 | }, 728 | "type": "library", 729 | "extra": { 730 | "branch-alias": { 731 | "dev-master": "1.0.x-dev" 732 | } 733 | }, 734 | "autoload": { 735 | "classmap": [ 736 | "src/" 737 | ] 738 | }, 739 | "notification-url": "https://packagist.org/downloads/", 740 | "license": [ 741 | "BSD-3-Clause" 742 | ], 743 | "authors": [ 744 | { 745 | "name": "Arne Blankerts", 746 | "email": "arne@blankerts.de", 747 | "role": "Developer" 748 | }, 749 | { 750 | "name": "Sebastian Heuer", 751 | "email": "sebastian@phpeople.de", 752 | "role": "Developer" 753 | }, 754 | { 755 | "name": "Sebastian Bergmann", 756 | "email": "sebastian@phpunit.de", 757 | "role": "Developer" 758 | } 759 | ], 760 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 761 | "time": "2017-03-05T18:14:27+00:00" 762 | }, 763 | { 764 | "name": "phar-io/version", 765 | "version": "1.0.1", 766 | "source": { 767 | "type": "git", 768 | "url": "https://github.com/phar-io/version.git", 769 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" 770 | }, 771 | "dist": { 772 | "type": "zip", 773 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", 774 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", 775 | "shasum": "" 776 | }, 777 | "require": { 778 | "php": "^5.6 || ^7.0" 779 | }, 780 | "type": "library", 781 | "autoload": { 782 | "classmap": [ 783 | "src/" 784 | ] 785 | }, 786 | "notification-url": "https://packagist.org/downloads/", 787 | "license": [ 788 | "BSD-3-Clause" 789 | ], 790 | "authors": [ 791 | { 792 | "name": "Arne Blankerts", 793 | "email": "arne@blankerts.de", 794 | "role": "Developer" 795 | }, 796 | { 797 | "name": "Sebastian Heuer", 798 | "email": "sebastian@phpeople.de", 799 | "role": "Developer" 800 | }, 801 | { 802 | "name": "Sebastian Bergmann", 803 | "email": "sebastian@phpunit.de", 804 | "role": "Developer" 805 | } 806 | ], 807 | "description": "Library for handling version information and constraints", 808 | "time": "2017-03-05T17:38:23+00:00" 809 | }, 810 | { 811 | "name": "phpdocumentor/reflection-common", 812 | "version": "1.0.1", 813 | "source": { 814 | "type": "git", 815 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 816 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 817 | }, 818 | "dist": { 819 | "type": "zip", 820 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 821 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 822 | "shasum": "" 823 | }, 824 | "require": { 825 | "php": ">=5.5" 826 | }, 827 | "require-dev": { 828 | "phpunit/phpunit": "^4.6" 829 | }, 830 | "type": "library", 831 | "extra": { 832 | "branch-alias": { 833 | "dev-master": "1.0.x-dev" 834 | } 835 | }, 836 | "autoload": { 837 | "psr-4": { 838 | "phpDocumentor\\Reflection\\": [ 839 | "src" 840 | ] 841 | } 842 | }, 843 | "notification-url": "https://packagist.org/downloads/", 844 | "license": [ 845 | "MIT" 846 | ], 847 | "authors": [ 848 | { 849 | "name": "Jaap van Otterdijk", 850 | "email": "opensource@ijaap.nl" 851 | } 852 | ], 853 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 854 | "homepage": "http://www.phpdoc.org", 855 | "keywords": [ 856 | "FQSEN", 857 | "phpDocumentor", 858 | "phpdoc", 859 | "reflection", 860 | "static analysis" 861 | ], 862 | "time": "2017-09-11T18:02:19+00:00" 863 | }, 864 | { 865 | "name": "phpdocumentor/reflection-docblock", 866 | "version": "4.3.0", 867 | "source": { 868 | "type": "git", 869 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 870 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 871 | }, 872 | "dist": { 873 | "type": "zip", 874 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 875 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 876 | "shasum": "" 877 | }, 878 | "require": { 879 | "php": "^7.0", 880 | "phpdocumentor/reflection-common": "^1.0.0", 881 | "phpdocumentor/type-resolver": "^0.4.0", 882 | "webmozart/assert": "^1.0" 883 | }, 884 | "require-dev": { 885 | "doctrine/instantiator": "~1.0.5", 886 | "mockery/mockery": "^1.0", 887 | "phpunit/phpunit": "^6.4" 888 | }, 889 | "type": "library", 890 | "extra": { 891 | "branch-alias": { 892 | "dev-master": "4.x-dev" 893 | } 894 | }, 895 | "autoload": { 896 | "psr-4": { 897 | "phpDocumentor\\Reflection\\": [ 898 | "src/" 899 | ] 900 | } 901 | }, 902 | "notification-url": "https://packagist.org/downloads/", 903 | "license": [ 904 | "MIT" 905 | ], 906 | "authors": [ 907 | { 908 | "name": "Mike van Riel", 909 | "email": "me@mikevanriel.com" 910 | } 911 | ], 912 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 913 | "time": "2017-11-30T07:14:17+00:00" 914 | }, 915 | { 916 | "name": "phpdocumentor/type-resolver", 917 | "version": "0.4.0", 918 | "source": { 919 | "type": "git", 920 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 921 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 922 | }, 923 | "dist": { 924 | "type": "zip", 925 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 926 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 927 | "shasum": "" 928 | }, 929 | "require": { 930 | "php": "^5.5 || ^7.0", 931 | "phpdocumentor/reflection-common": "^1.0" 932 | }, 933 | "require-dev": { 934 | "mockery/mockery": "^0.9.4", 935 | "phpunit/phpunit": "^5.2||^4.8.24" 936 | }, 937 | "type": "library", 938 | "extra": { 939 | "branch-alias": { 940 | "dev-master": "1.0.x-dev" 941 | } 942 | }, 943 | "autoload": { 944 | "psr-4": { 945 | "phpDocumentor\\Reflection\\": [ 946 | "src/" 947 | ] 948 | } 949 | }, 950 | "notification-url": "https://packagist.org/downloads/", 951 | "license": [ 952 | "MIT" 953 | ], 954 | "authors": [ 955 | { 956 | "name": "Mike van Riel", 957 | "email": "me@mikevanriel.com" 958 | } 959 | ], 960 | "time": "2017-07-14T14:27:02+00:00" 961 | }, 962 | { 963 | "name": "phpspec/prophecy", 964 | "version": "1.7.6", 965 | "source": { 966 | "type": "git", 967 | "url": "https://github.com/phpspec/prophecy.git", 968 | "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712" 969 | }, 970 | "dist": { 971 | "type": "zip", 972 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712", 973 | "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712", 974 | "shasum": "" 975 | }, 976 | "require": { 977 | "doctrine/instantiator": "^1.0.2", 978 | "php": "^5.3|^7.0", 979 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 980 | "sebastian/comparator": "^1.1|^2.0|^3.0", 981 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 982 | }, 983 | "require-dev": { 984 | "phpspec/phpspec": "^2.5|^3.2", 985 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" 986 | }, 987 | "type": "library", 988 | "extra": { 989 | "branch-alias": { 990 | "dev-master": "1.7.x-dev" 991 | } 992 | }, 993 | "autoload": { 994 | "psr-0": { 995 | "Prophecy\\": "src/" 996 | } 997 | }, 998 | "notification-url": "https://packagist.org/downloads/", 999 | "license": [ 1000 | "MIT" 1001 | ], 1002 | "authors": [ 1003 | { 1004 | "name": "Konstantin Kudryashov", 1005 | "email": "ever.zet@gmail.com", 1006 | "homepage": "http://everzet.com" 1007 | }, 1008 | { 1009 | "name": "Marcello Duarte", 1010 | "email": "marcello.duarte@gmail.com" 1011 | } 1012 | ], 1013 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1014 | "homepage": "https://github.com/phpspec/prophecy", 1015 | "keywords": [ 1016 | "Double", 1017 | "Dummy", 1018 | "fake", 1019 | "mock", 1020 | "spy", 1021 | "stub" 1022 | ], 1023 | "time": "2018-04-18T13:57:24+00:00" 1024 | }, 1025 | { 1026 | "name": "phpunit/php-code-coverage", 1027 | "version": "5.3.2", 1028 | "source": { 1029 | "type": "git", 1030 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1031 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac" 1032 | }, 1033 | "dist": { 1034 | "type": "zip", 1035 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", 1036 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac", 1037 | "shasum": "" 1038 | }, 1039 | "require": { 1040 | "ext-dom": "*", 1041 | "ext-xmlwriter": "*", 1042 | "php": "^7.0", 1043 | "phpunit/php-file-iterator": "^1.4.2", 1044 | "phpunit/php-text-template": "^1.2.1", 1045 | "phpunit/php-token-stream": "^2.0.1", 1046 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1047 | "sebastian/environment": "^3.0", 1048 | "sebastian/version": "^2.0.1", 1049 | "theseer/tokenizer": "^1.1" 1050 | }, 1051 | "require-dev": { 1052 | "phpunit/phpunit": "^6.0" 1053 | }, 1054 | "suggest": { 1055 | "ext-xdebug": "^2.5.5" 1056 | }, 1057 | "type": "library", 1058 | "extra": { 1059 | "branch-alias": { 1060 | "dev-master": "5.3.x-dev" 1061 | } 1062 | }, 1063 | "autoload": { 1064 | "classmap": [ 1065 | "src/" 1066 | ] 1067 | }, 1068 | "notification-url": "https://packagist.org/downloads/", 1069 | "license": [ 1070 | "BSD-3-Clause" 1071 | ], 1072 | "authors": [ 1073 | { 1074 | "name": "Sebastian Bergmann", 1075 | "email": "sebastian@phpunit.de", 1076 | "role": "lead" 1077 | } 1078 | ], 1079 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1080 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1081 | "keywords": [ 1082 | "coverage", 1083 | "testing", 1084 | "xunit" 1085 | ], 1086 | "time": "2018-04-06T15:36:58+00:00" 1087 | }, 1088 | { 1089 | "name": "phpunit/php-file-iterator", 1090 | "version": "1.4.5", 1091 | "source": { 1092 | "type": "git", 1093 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1094 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 1095 | }, 1096 | "dist": { 1097 | "type": "zip", 1098 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 1099 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 1100 | "shasum": "" 1101 | }, 1102 | "require": { 1103 | "php": ">=5.3.3" 1104 | }, 1105 | "type": "library", 1106 | "extra": { 1107 | "branch-alias": { 1108 | "dev-master": "1.4.x-dev" 1109 | } 1110 | }, 1111 | "autoload": { 1112 | "classmap": [ 1113 | "src/" 1114 | ] 1115 | }, 1116 | "notification-url": "https://packagist.org/downloads/", 1117 | "license": [ 1118 | "BSD-3-Clause" 1119 | ], 1120 | "authors": [ 1121 | { 1122 | "name": "Sebastian Bergmann", 1123 | "email": "sb@sebastian-bergmann.de", 1124 | "role": "lead" 1125 | } 1126 | ], 1127 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1128 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1129 | "keywords": [ 1130 | "filesystem", 1131 | "iterator" 1132 | ], 1133 | "time": "2017-11-27T13:52:08+00:00" 1134 | }, 1135 | { 1136 | "name": "phpunit/php-text-template", 1137 | "version": "1.2.1", 1138 | "source": { 1139 | "type": "git", 1140 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1141 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1142 | }, 1143 | "dist": { 1144 | "type": "zip", 1145 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1146 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1147 | "shasum": "" 1148 | }, 1149 | "require": { 1150 | "php": ">=5.3.3" 1151 | }, 1152 | "type": "library", 1153 | "autoload": { 1154 | "classmap": [ 1155 | "src/" 1156 | ] 1157 | }, 1158 | "notification-url": "https://packagist.org/downloads/", 1159 | "license": [ 1160 | "BSD-3-Clause" 1161 | ], 1162 | "authors": [ 1163 | { 1164 | "name": "Sebastian Bergmann", 1165 | "email": "sebastian@phpunit.de", 1166 | "role": "lead" 1167 | } 1168 | ], 1169 | "description": "Simple template engine.", 1170 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1171 | "keywords": [ 1172 | "template" 1173 | ], 1174 | "time": "2015-06-21T13:50:34+00:00" 1175 | }, 1176 | { 1177 | "name": "phpunit/php-timer", 1178 | "version": "1.0.9", 1179 | "source": { 1180 | "type": "git", 1181 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1182 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 1183 | }, 1184 | "dist": { 1185 | "type": "zip", 1186 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1187 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1188 | "shasum": "" 1189 | }, 1190 | "require": { 1191 | "php": "^5.3.3 || ^7.0" 1192 | }, 1193 | "require-dev": { 1194 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 1195 | }, 1196 | "type": "library", 1197 | "extra": { 1198 | "branch-alias": { 1199 | "dev-master": "1.0-dev" 1200 | } 1201 | }, 1202 | "autoload": { 1203 | "classmap": [ 1204 | "src/" 1205 | ] 1206 | }, 1207 | "notification-url": "https://packagist.org/downloads/", 1208 | "license": [ 1209 | "BSD-3-Clause" 1210 | ], 1211 | "authors": [ 1212 | { 1213 | "name": "Sebastian Bergmann", 1214 | "email": "sb@sebastian-bergmann.de", 1215 | "role": "lead" 1216 | } 1217 | ], 1218 | "description": "Utility class for timing", 1219 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1220 | "keywords": [ 1221 | "timer" 1222 | ], 1223 | "time": "2017-02-26T11:10:40+00:00" 1224 | }, 1225 | { 1226 | "name": "phpunit/php-token-stream", 1227 | "version": "2.0.2", 1228 | "source": { 1229 | "type": "git", 1230 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1231 | "reference": "791198a2c6254db10131eecfe8c06670700904db" 1232 | }, 1233 | "dist": { 1234 | "type": "zip", 1235 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", 1236 | "reference": "791198a2c6254db10131eecfe8c06670700904db", 1237 | "shasum": "" 1238 | }, 1239 | "require": { 1240 | "ext-tokenizer": "*", 1241 | "php": "^7.0" 1242 | }, 1243 | "require-dev": { 1244 | "phpunit/phpunit": "^6.2.4" 1245 | }, 1246 | "type": "library", 1247 | "extra": { 1248 | "branch-alias": { 1249 | "dev-master": "2.0-dev" 1250 | } 1251 | }, 1252 | "autoload": { 1253 | "classmap": [ 1254 | "src/" 1255 | ] 1256 | }, 1257 | "notification-url": "https://packagist.org/downloads/", 1258 | "license": [ 1259 | "BSD-3-Clause" 1260 | ], 1261 | "authors": [ 1262 | { 1263 | "name": "Sebastian Bergmann", 1264 | "email": "sebastian@phpunit.de" 1265 | } 1266 | ], 1267 | "description": "Wrapper around PHP's tokenizer extension.", 1268 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1269 | "keywords": [ 1270 | "tokenizer" 1271 | ], 1272 | "time": "2017-11-27T05:48:46+00:00" 1273 | }, 1274 | { 1275 | "name": "phpunit/phpunit", 1276 | "version": "6.5.8", 1277 | "source": { 1278 | "type": "git", 1279 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1280 | "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b" 1281 | }, 1282 | "dist": { 1283 | "type": "zip", 1284 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b", 1285 | "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b", 1286 | "shasum": "" 1287 | }, 1288 | "require": { 1289 | "ext-dom": "*", 1290 | "ext-json": "*", 1291 | "ext-libxml": "*", 1292 | "ext-mbstring": "*", 1293 | "ext-xml": "*", 1294 | "myclabs/deep-copy": "^1.6.1", 1295 | "phar-io/manifest": "^1.0.1", 1296 | "phar-io/version": "^1.0", 1297 | "php": "^7.0", 1298 | "phpspec/prophecy": "^1.7", 1299 | "phpunit/php-code-coverage": "^5.3", 1300 | "phpunit/php-file-iterator": "^1.4.3", 1301 | "phpunit/php-text-template": "^1.2.1", 1302 | "phpunit/php-timer": "^1.0.9", 1303 | "phpunit/phpunit-mock-objects": "^5.0.5", 1304 | "sebastian/comparator": "^2.1", 1305 | "sebastian/diff": "^2.0", 1306 | "sebastian/environment": "^3.1", 1307 | "sebastian/exporter": "^3.1", 1308 | "sebastian/global-state": "^2.0", 1309 | "sebastian/object-enumerator": "^3.0.3", 1310 | "sebastian/resource-operations": "^1.0", 1311 | "sebastian/version": "^2.0.1" 1312 | }, 1313 | "conflict": { 1314 | "phpdocumentor/reflection-docblock": "3.0.2", 1315 | "phpunit/dbunit": "<3.0" 1316 | }, 1317 | "require-dev": { 1318 | "ext-pdo": "*" 1319 | }, 1320 | "suggest": { 1321 | "ext-xdebug": "*", 1322 | "phpunit/php-invoker": "^1.1" 1323 | }, 1324 | "bin": [ 1325 | "phpunit" 1326 | ], 1327 | "type": "library", 1328 | "extra": { 1329 | "branch-alias": { 1330 | "dev-master": "6.5.x-dev" 1331 | } 1332 | }, 1333 | "autoload": { 1334 | "classmap": [ 1335 | "src/" 1336 | ] 1337 | }, 1338 | "notification-url": "https://packagist.org/downloads/", 1339 | "license": [ 1340 | "BSD-3-Clause" 1341 | ], 1342 | "authors": [ 1343 | { 1344 | "name": "Sebastian Bergmann", 1345 | "email": "sebastian@phpunit.de", 1346 | "role": "lead" 1347 | } 1348 | ], 1349 | "description": "The PHP Unit Testing framework.", 1350 | "homepage": "https://phpunit.de/", 1351 | "keywords": [ 1352 | "phpunit", 1353 | "testing", 1354 | "xunit" 1355 | ], 1356 | "time": "2018-04-10T11:38:34+00:00" 1357 | }, 1358 | { 1359 | "name": "phpunit/phpunit-mock-objects", 1360 | "version": "5.0.6", 1361 | "source": { 1362 | "type": "git", 1363 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 1364 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf" 1365 | }, 1366 | "dist": { 1367 | "type": "zip", 1368 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf", 1369 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf", 1370 | "shasum": "" 1371 | }, 1372 | "require": { 1373 | "doctrine/instantiator": "^1.0.5", 1374 | "php": "^7.0", 1375 | "phpunit/php-text-template": "^1.2.1", 1376 | "sebastian/exporter": "^3.1" 1377 | }, 1378 | "conflict": { 1379 | "phpunit/phpunit": "<6.0" 1380 | }, 1381 | "require-dev": { 1382 | "phpunit/phpunit": "^6.5" 1383 | }, 1384 | "suggest": { 1385 | "ext-soap": "*" 1386 | }, 1387 | "type": "library", 1388 | "extra": { 1389 | "branch-alias": { 1390 | "dev-master": "5.0.x-dev" 1391 | } 1392 | }, 1393 | "autoload": { 1394 | "classmap": [ 1395 | "src/" 1396 | ] 1397 | }, 1398 | "notification-url": "https://packagist.org/downloads/", 1399 | "license": [ 1400 | "BSD-3-Clause" 1401 | ], 1402 | "authors": [ 1403 | { 1404 | "name": "Sebastian Bergmann", 1405 | "email": "sebastian@phpunit.de", 1406 | "role": "lead" 1407 | } 1408 | ], 1409 | "description": "Mock Object library for PHPUnit", 1410 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 1411 | "keywords": [ 1412 | "mock", 1413 | "xunit" 1414 | ], 1415 | "time": "2018-01-06T05:45:45+00:00" 1416 | }, 1417 | { 1418 | "name": "sebastian/code-unit-reverse-lookup", 1419 | "version": "1.0.1", 1420 | "source": { 1421 | "type": "git", 1422 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1423 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1424 | }, 1425 | "dist": { 1426 | "type": "zip", 1427 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1428 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1429 | "shasum": "" 1430 | }, 1431 | "require": { 1432 | "php": "^5.6 || ^7.0" 1433 | }, 1434 | "require-dev": { 1435 | "phpunit/phpunit": "^5.7 || ^6.0" 1436 | }, 1437 | "type": "library", 1438 | "extra": { 1439 | "branch-alias": { 1440 | "dev-master": "1.0.x-dev" 1441 | } 1442 | }, 1443 | "autoload": { 1444 | "classmap": [ 1445 | "src/" 1446 | ] 1447 | }, 1448 | "notification-url": "https://packagist.org/downloads/", 1449 | "license": [ 1450 | "BSD-3-Clause" 1451 | ], 1452 | "authors": [ 1453 | { 1454 | "name": "Sebastian Bergmann", 1455 | "email": "sebastian@phpunit.de" 1456 | } 1457 | ], 1458 | "description": "Looks up which function or method a line of code belongs to", 1459 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1460 | "time": "2017-03-04T06:30:41+00:00" 1461 | }, 1462 | { 1463 | "name": "sebastian/comparator", 1464 | "version": "2.1.3", 1465 | "source": { 1466 | "type": "git", 1467 | "url": "https://github.com/sebastianbergmann/comparator.git", 1468 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" 1469 | }, 1470 | "dist": { 1471 | "type": "zip", 1472 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", 1473 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", 1474 | "shasum": "" 1475 | }, 1476 | "require": { 1477 | "php": "^7.0", 1478 | "sebastian/diff": "^2.0 || ^3.0", 1479 | "sebastian/exporter": "^3.1" 1480 | }, 1481 | "require-dev": { 1482 | "phpunit/phpunit": "^6.4" 1483 | }, 1484 | "type": "library", 1485 | "extra": { 1486 | "branch-alias": { 1487 | "dev-master": "2.1.x-dev" 1488 | } 1489 | }, 1490 | "autoload": { 1491 | "classmap": [ 1492 | "src/" 1493 | ] 1494 | }, 1495 | "notification-url": "https://packagist.org/downloads/", 1496 | "license": [ 1497 | "BSD-3-Clause" 1498 | ], 1499 | "authors": [ 1500 | { 1501 | "name": "Jeff Welch", 1502 | "email": "whatthejeff@gmail.com" 1503 | }, 1504 | { 1505 | "name": "Volker Dusch", 1506 | "email": "github@wallbash.com" 1507 | }, 1508 | { 1509 | "name": "Bernhard Schussek", 1510 | "email": "bschussek@2bepublished.at" 1511 | }, 1512 | { 1513 | "name": "Sebastian Bergmann", 1514 | "email": "sebastian@phpunit.de" 1515 | } 1516 | ], 1517 | "description": "Provides the functionality to compare PHP values for equality", 1518 | "homepage": "https://github.com/sebastianbergmann/comparator", 1519 | "keywords": [ 1520 | "comparator", 1521 | "compare", 1522 | "equality" 1523 | ], 1524 | "time": "2018-02-01T13:46:46+00:00" 1525 | }, 1526 | { 1527 | "name": "sebastian/diff", 1528 | "version": "2.0.1", 1529 | "source": { 1530 | "type": "git", 1531 | "url": "https://github.com/sebastianbergmann/diff.git", 1532 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" 1533 | }, 1534 | "dist": { 1535 | "type": "zip", 1536 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1537 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1538 | "shasum": "" 1539 | }, 1540 | "require": { 1541 | "php": "^7.0" 1542 | }, 1543 | "require-dev": { 1544 | "phpunit/phpunit": "^6.2" 1545 | }, 1546 | "type": "library", 1547 | "extra": { 1548 | "branch-alias": { 1549 | "dev-master": "2.0-dev" 1550 | } 1551 | }, 1552 | "autoload": { 1553 | "classmap": [ 1554 | "src/" 1555 | ] 1556 | }, 1557 | "notification-url": "https://packagist.org/downloads/", 1558 | "license": [ 1559 | "BSD-3-Clause" 1560 | ], 1561 | "authors": [ 1562 | { 1563 | "name": "Kore Nordmann", 1564 | "email": "mail@kore-nordmann.de" 1565 | }, 1566 | { 1567 | "name": "Sebastian Bergmann", 1568 | "email": "sebastian@phpunit.de" 1569 | } 1570 | ], 1571 | "description": "Diff implementation", 1572 | "homepage": "https://github.com/sebastianbergmann/diff", 1573 | "keywords": [ 1574 | "diff" 1575 | ], 1576 | "time": "2017-08-03T08:09:46+00:00" 1577 | }, 1578 | { 1579 | "name": "sebastian/environment", 1580 | "version": "3.1.0", 1581 | "source": { 1582 | "type": "git", 1583 | "url": "https://github.com/sebastianbergmann/environment.git", 1584 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" 1585 | }, 1586 | "dist": { 1587 | "type": "zip", 1588 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1589 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1590 | "shasum": "" 1591 | }, 1592 | "require": { 1593 | "php": "^7.0" 1594 | }, 1595 | "require-dev": { 1596 | "phpunit/phpunit": "^6.1" 1597 | }, 1598 | "type": "library", 1599 | "extra": { 1600 | "branch-alias": { 1601 | "dev-master": "3.1.x-dev" 1602 | } 1603 | }, 1604 | "autoload": { 1605 | "classmap": [ 1606 | "src/" 1607 | ] 1608 | }, 1609 | "notification-url": "https://packagist.org/downloads/", 1610 | "license": [ 1611 | "BSD-3-Clause" 1612 | ], 1613 | "authors": [ 1614 | { 1615 | "name": "Sebastian Bergmann", 1616 | "email": "sebastian@phpunit.de" 1617 | } 1618 | ], 1619 | "description": "Provides functionality to handle HHVM/PHP environments", 1620 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1621 | "keywords": [ 1622 | "Xdebug", 1623 | "environment", 1624 | "hhvm" 1625 | ], 1626 | "time": "2017-07-01T08:51:00+00:00" 1627 | }, 1628 | { 1629 | "name": "sebastian/exporter", 1630 | "version": "3.1.0", 1631 | "source": { 1632 | "type": "git", 1633 | "url": "https://github.com/sebastianbergmann/exporter.git", 1634 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 1635 | }, 1636 | "dist": { 1637 | "type": "zip", 1638 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 1639 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 1640 | "shasum": "" 1641 | }, 1642 | "require": { 1643 | "php": "^7.0", 1644 | "sebastian/recursion-context": "^3.0" 1645 | }, 1646 | "require-dev": { 1647 | "ext-mbstring": "*", 1648 | "phpunit/phpunit": "^6.0" 1649 | }, 1650 | "type": "library", 1651 | "extra": { 1652 | "branch-alias": { 1653 | "dev-master": "3.1.x-dev" 1654 | } 1655 | }, 1656 | "autoload": { 1657 | "classmap": [ 1658 | "src/" 1659 | ] 1660 | }, 1661 | "notification-url": "https://packagist.org/downloads/", 1662 | "license": [ 1663 | "BSD-3-Clause" 1664 | ], 1665 | "authors": [ 1666 | { 1667 | "name": "Jeff Welch", 1668 | "email": "whatthejeff@gmail.com" 1669 | }, 1670 | { 1671 | "name": "Volker Dusch", 1672 | "email": "github@wallbash.com" 1673 | }, 1674 | { 1675 | "name": "Bernhard Schussek", 1676 | "email": "bschussek@2bepublished.at" 1677 | }, 1678 | { 1679 | "name": "Sebastian Bergmann", 1680 | "email": "sebastian@phpunit.de" 1681 | }, 1682 | { 1683 | "name": "Adam Harvey", 1684 | "email": "aharvey@php.net" 1685 | } 1686 | ], 1687 | "description": "Provides the functionality to export PHP variables for visualization", 1688 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1689 | "keywords": [ 1690 | "export", 1691 | "exporter" 1692 | ], 1693 | "time": "2017-04-03T13:19:02+00:00" 1694 | }, 1695 | { 1696 | "name": "sebastian/global-state", 1697 | "version": "2.0.0", 1698 | "source": { 1699 | "type": "git", 1700 | "url": "https://github.com/sebastianbergmann/global-state.git", 1701 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 1702 | }, 1703 | "dist": { 1704 | "type": "zip", 1705 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1706 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 1707 | "shasum": "" 1708 | }, 1709 | "require": { 1710 | "php": "^7.0" 1711 | }, 1712 | "require-dev": { 1713 | "phpunit/phpunit": "^6.0" 1714 | }, 1715 | "suggest": { 1716 | "ext-uopz": "*" 1717 | }, 1718 | "type": "library", 1719 | "extra": { 1720 | "branch-alias": { 1721 | "dev-master": "2.0-dev" 1722 | } 1723 | }, 1724 | "autoload": { 1725 | "classmap": [ 1726 | "src/" 1727 | ] 1728 | }, 1729 | "notification-url": "https://packagist.org/downloads/", 1730 | "license": [ 1731 | "BSD-3-Clause" 1732 | ], 1733 | "authors": [ 1734 | { 1735 | "name": "Sebastian Bergmann", 1736 | "email": "sebastian@phpunit.de" 1737 | } 1738 | ], 1739 | "description": "Snapshotting of global state", 1740 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1741 | "keywords": [ 1742 | "global state" 1743 | ], 1744 | "time": "2017-04-27T15:39:26+00:00" 1745 | }, 1746 | { 1747 | "name": "sebastian/object-enumerator", 1748 | "version": "3.0.3", 1749 | "source": { 1750 | "type": "git", 1751 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1752 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 1753 | }, 1754 | "dist": { 1755 | "type": "zip", 1756 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1757 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 1758 | "shasum": "" 1759 | }, 1760 | "require": { 1761 | "php": "^7.0", 1762 | "sebastian/object-reflector": "^1.1.1", 1763 | "sebastian/recursion-context": "^3.0" 1764 | }, 1765 | "require-dev": { 1766 | "phpunit/phpunit": "^6.0" 1767 | }, 1768 | "type": "library", 1769 | "extra": { 1770 | "branch-alias": { 1771 | "dev-master": "3.0.x-dev" 1772 | } 1773 | }, 1774 | "autoload": { 1775 | "classmap": [ 1776 | "src/" 1777 | ] 1778 | }, 1779 | "notification-url": "https://packagist.org/downloads/", 1780 | "license": [ 1781 | "BSD-3-Clause" 1782 | ], 1783 | "authors": [ 1784 | { 1785 | "name": "Sebastian Bergmann", 1786 | "email": "sebastian@phpunit.de" 1787 | } 1788 | ], 1789 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1790 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1791 | "time": "2017-08-03T12:35:26+00:00" 1792 | }, 1793 | { 1794 | "name": "sebastian/object-reflector", 1795 | "version": "1.1.1", 1796 | "source": { 1797 | "type": "git", 1798 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 1799 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 1800 | }, 1801 | "dist": { 1802 | "type": "zip", 1803 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 1804 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 1805 | "shasum": "" 1806 | }, 1807 | "require": { 1808 | "php": "^7.0" 1809 | }, 1810 | "require-dev": { 1811 | "phpunit/phpunit": "^6.0" 1812 | }, 1813 | "type": "library", 1814 | "extra": { 1815 | "branch-alias": { 1816 | "dev-master": "1.1-dev" 1817 | } 1818 | }, 1819 | "autoload": { 1820 | "classmap": [ 1821 | "src/" 1822 | ] 1823 | }, 1824 | "notification-url": "https://packagist.org/downloads/", 1825 | "license": [ 1826 | "BSD-3-Clause" 1827 | ], 1828 | "authors": [ 1829 | { 1830 | "name": "Sebastian Bergmann", 1831 | "email": "sebastian@phpunit.de" 1832 | } 1833 | ], 1834 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 1835 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 1836 | "time": "2017-03-29T09:07:27+00:00" 1837 | }, 1838 | { 1839 | "name": "sebastian/recursion-context", 1840 | "version": "3.0.0", 1841 | "source": { 1842 | "type": "git", 1843 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1844 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 1845 | }, 1846 | "dist": { 1847 | "type": "zip", 1848 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1849 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 1850 | "shasum": "" 1851 | }, 1852 | "require": { 1853 | "php": "^7.0" 1854 | }, 1855 | "require-dev": { 1856 | "phpunit/phpunit": "^6.0" 1857 | }, 1858 | "type": "library", 1859 | "extra": { 1860 | "branch-alias": { 1861 | "dev-master": "3.0.x-dev" 1862 | } 1863 | }, 1864 | "autoload": { 1865 | "classmap": [ 1866 | "src/" 1867 | ] 1868 | }, 1869 | "notification-url": "https://packagist.org/downloads/", 1870 | "license": [ 1871 | "BSD-3-Clause" 1872 | ], 1873 | "authors": [ 1874 | { 1875 | "name": "Jeff Welch", 1876 | "email": "whatthejeff@gmail.com" 1877 | }, 1878 | { 1879 | "name": "Sebastian Bergmann", 1880 | "email": "sebastian@phpunit.de" 1881 | }, 1882 | { 1883 | "name": "Adam Harvey", 1884 | "email": "aharvey@php.net" 1885 | } 1886 | ], 1887 | "description": "Provides functionality to recursively process PHP variables", 1888 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1889 | "time": "2017-03-03T06:23:57+00:00" 1890 | }, 1891 | { 1892 | "name": "sebastian/resource-operations", 1893 | "version": "1.0.0", 1894 | "source": { 1895 | "type": "git", 1896 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1897 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 1898 | }, 1899 | "dist": { 1900 | "type": "zip", 1901 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1902 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1903 | "shasum": "" 1904 | }, 1905 | "require": { 1906 | "php": ">=5.6.0" 1907 | }, 1908 | "type": "library", 1909 | "extra": { 1910 | "branch-alias": { 1911 | "dev-master": "1.0.x-dev" 1912 | } 1913 | }, 1914 | "autoload": { 1915 | "classmap": [ 1916 | "src/" 1917 | ] 1918 | }, 1919 | "notification-url": "https://packagist.org/downloads/", 1920 | "license": [ 1921 | "BSD-3-Clause" 1922 | ], 1923 | "authors": [ 1924 | { 1925 | "name": "Sebastian Bergmann", 1926 | "email": "sebastian@phpunit.de" 1927 | } 1928 | ], 1929 | "description": "Provides a list of PHP built-in functions that operate on resources", 1930 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1931 | "time": "2015-07-28T20:34:47+00:00" 1932 | }, 1933 | { 1934 | "name": "sebastian/version", 1935 | "version": "2.0.1", 1936 | "source": { 1937 | "type": "git", 1938 | "url": "https://github.com/sebastianbergmann/version.git", 1939 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 1940 | }, 1941 | "dist": { 1942 | "type": "zip", 1943 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 1944 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 1945 | "shasum": "" 1946 | }, 1947 | "require": { 1948 | "php": ">=5.6" 1949 | }, 1950 | "type": "library", 1951 | "extra": { 1952 | "branch-alias": { 1953 | "dev-master": "2.0.x-dev" 1954 | } 1955 | }, 1956 | "autoload": { 1957 | "classmap": [ 1958 | "src/" 1959 | ] 1960 | }, 1961 | "notification-url": "https://packagist.org/downloads/", 1962 | "license": [ 1963 | "BSD-3-Clause" 1964 | ], 1965 | "authors": [ 1966 | { 1967 | "name": "Sebastian Bergmann", 1968 | "email": "sebastian@phpunit.de", 1969 | "role": "lead" 1970 | } 1971 | ], 1972 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1973 | "homepage": "https://github.com/sebastianbergmann/version", 1974 | "time": "2016-10-03T07:35:21+00:00" 1975 | }, 1976 | { 1977 | "name": "theseer/tokenizer", 1978 | "version": "1.1.0", 1979 | "source": { 1980 | "type": "git", 1981 | "url": "https://github.com/theseer/tokenizer.git", 1982 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" 1983 | }, 1984 | "dist": { 1985 | "type": "zip", 1986 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", 1987 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", 1988 | "shasum": "" 1989 | }, 1990 | "require": { 1991 | "ext-dom": "*", 1992 | "ext-tokenizer": "*", 1993 | "ext-xmlwriter": "*", 1994 | "php": "^7.0" 1995 | }, 1996 | "type": "library", 1997 | "autoload": { 1998 | "classmap": [ 1999 | "src/" 2000 | ] 2001 | }, 2002 | "notification-url": "https://packagist.org/downloads/", 2003 | "license": [ 2004 | "BSD-3-Clause" 2005 | ], 2006 | "authors": [ 2007 | { 2008 | "name": "Arne Blankerts", 2009 | "email": "arne@blankerts.de", 2010 | "role": "Developer" 2011 | } 2012 | ], 2013 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2014 | "time": "2017-04-07T12:08:54+00:00" 2015 | }, 2016 | { 2017 | "name": "webmozart/assert", 2018 | "version": "1.3.0", 2019 | "source": { 2020 | "type": "git", 2021 | "url": "https://github.com/webmozart/assert.git", 2022 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a" 2023 | }, 2024 | "dist": { 2025 | "type": "zip", 2026 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", 2027 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a", 2028 | "shasum": "" 2029 | }, 2030 | "require": { 2031 | "php": "^5.3.3 || ^7.0" 2032 | }, 2033 | "require-dev": { 2034 | "phpunit/phpunit": "^4.6", 2035 | "sebastian/version": "^1.0.1" 2036 | }, 2037 | "type": "library", 2038 | "extra": { 2039 | "branch-alias": { 2040 | "dev-master": "1.3-dev" 2041 | } 2042 | }, 2043 | "autoload": { 2044 | "psr-4": { 2045 | "Webmozart\\Assert\\": "src/" 2046 | } 2047 | }, 2048 | "notification-url": "https://packagist.org/downloads/", 2049 | "license": [ 2050 | "MIT" 2051 | ], 2052 | "authors": [ 2053 | { 2054 | "name": "Bernhard Schussek", 2055 | "email": "bschussek@gmail.com" 2056 | } 2057 | ], 2058 | "description": "Assertions to validate method input/output with nice error messages.", 2059 | "keywords": [ 2060 | "assert", 2061 | "check", 2062 | "validate" 2063 | ], 2064 | "time": "2018-01-29T19:49:41+00:00" 2065 | } 2066 | ], 2067 | "aliases": [], 2068 | "minimum-stability": "stable", 2069 | "stability-flags": [], 2070 | "prefer-stable": false, 2071 | "prefer-lowest": false, 2072 | "platform": [], 2073 | "platform-dev": [] 2074 | } 2075 | -------------------------------------------------------------------------------- /migrations/2017_11_24_094130_create_stripes_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 18 | 19 | $table->string('account_id')->nullable(); 20 | $table->string('customer_id')->nullable(); 21 | 22 | $table->bigInteger('user_id')->unsigned()->index(); 23 | $table->foreign('user_id')->references('id')->on('users'); 24 | 25 | $table->timestamps(); 26 | }); 27 | } 28 | 29 | /** 30 | * Reverse the migrations. 31 | * 32 | * @return void 33 | */ 34 | public function down() 35 | { 36 | Schema::dropIfExists('stripes'); 37 | } 38 | } 39 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | tests/ 6 | 7 | 8 | 9 | 10 | src/ 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Laravel Stripe Connect 2 | 3 | [![Packagist](https://img.shields.io/packagist/v/rap2hpoutre/laravel-stripe-connect.svg)]() 4 | [![Packagist](https://img.shields.io/packagist/l/rap2hpoutre/laravel-stripe-connect.svg)](https://packagist.org/packages/rap2hpoutre/laravel-stripe-connect) 5 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/rap2hpoutre/laravel-stripe-connect/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/rap2hpoutre/laravel-stripe-connect/?branch=master) 6 | 7 | ## 2024 Update 🎉 8 | 9 | [@simonhamp](https://github.com/simonhamp) made a fork: https://github.com/simonhamp/laravel-stripe-connect. You should now use this one! 10 | 11 | ## Previous readme 12 | 13 | ⚠️ _Deprecated, then abandoned in 2019, ~~looking for a competitor~~. See this [reddit post](https://www.reddit.com/r/laravel/comments/avdki2/is_there_an_alternative_to_laravelstripeconnect/)._ 14 | 15 | 16 | 17 | > Marketplaces and platforms use Stripe Connect to accept money and pay out to third parties. Connect provides a complete set of building blocks to support virtually any business model, including on-demand businesses, e‑commerce, crowdfunding, fintech, and travel and events. 18 | 19 | Create a marketplace application with this helper for [Stripe Connect](https://stripe.com/connect). 20 | 21 | ## Installation 22 | 23 | Install via composer 24 | 25 | ``` 26 | composer require rap2hpoutre/laravel-stripe-connect 27 | ``` 28 | 29 | Add your stripe credentials in `.env`: 30 | 31 | ``` 32 | STRIPE_KEY=pk_test_XxxXXxXXX 33 | STRIPE_SECRET=sk_test_XxxXXxXXX 34 | ``` 35 | 36 | Run migrations: 37 | 38 | ``` 39 | php artisan migrate 40 | ``` 41 | 42 | ## Usage 43 | 44 | You can make a single payment from a user to another user 45 | or save a customer card for later use. Just remember to 46 | import the base class via: 47 | 48 | ```php 49 | use Rap2hpoutre\LaravelStripeConnect\StripeConnect; 50 | ``` 51 | 52 | ### Example #1: direct charge 53 | 54 | The customer gives his credentials via Stripe Checkout and is charged. 55 | It's a one shot process. `$customer` and `$vendor` must be `User` instances. The `$token` must have been created using [Checkout](https://stripe.com/docs/checkout/tutorial) or [Elements](https://stripe.com/docs/stripe-js). 56 | 57 | ```php 58 | StripeConnect::transaction($token) 59 | ->amount(1000, 'usd') 60 | ->from($customer) 61 | ->to($vendor) 62 | ->create(); 63 | ``` 64 | 65 | ### Example #2: save a customer then charge later 66 | 67 | Sometimes, you may want to register a card then charge later. 68 | First, create the customer. 69 | 70 | ```php 71 | StripeConnect::createCustomer($token, $customer); 72 | ``` 73 | 74 | Then, (later) charge the customer without token. 75 | 76 | ```php 77 | StripeConnect::transaction() 78 | ->amount(1000, 'usd') 79 | ->useSavedCustomer() 80 | ->from($customer) 81 | ->to($vendor) 82 | ->create(); 83 | ``` 84 | 85 | ### Exemple #3: create a vendor account 86 | 87 | You may want to create the vendor account before charging anybody. 88 | Just call `createAccount` with a `User` instance. 89 | 90 | ```php 91 | StripeConnect::createAccount($vendor); 92 | ``` 93 | 94 | ### Exemple #4: Charge with application fee 95 | 96 | ```php 97 | StripeConnect::transaction($token) 98 | ->amount(1000, 'usd') 99 | ->fee(50) 100 | ->from($customer) 101 | ->to($vendor) 102 | ->create(); 103 | ``` 104 | -------------------------------------------------------------------------------- /src/ServiceProvider.php: -------------------------------------------------------------------------------- 1 | loadMigrationsFrom(__DIR__.'/../migrations'); 20 | } 21 | 22 | /** 23 | * Register the application services. 24 | * 25 | * @return void 26 | */ 27 | public function register() 28 | { 29 | // 30 | } 31 | } -------------------------------------------------------------------------------- /src/Stripe.php: -------------------------------------------------------------------------------- 1 | id)->first(); 33 | if (!$stripe) { 34 | $stripe = new Stripe(); 35 | $stripe->user_id = $user->id; 36 | $stripe->save(); 37 | } 38 | return $stripe; 39 | } 40 | 41 | /** 42 | * @param $to 43 | * @param array $params 44 | * @return Stripe 45 | */ 46 | public static function createAccount($to, $params = []) 47 | { 48 | $params = array_merge([ 49 | "type" => "custom", 50 | "email" => $to->email, 51 | ], $params); 52 | return self::create($to, 'account_id', function () use ($params) { 53 | return StripeAccount::create($params); 54 | }); 55 | } 56 | 57 | /** 58 | * @param $token 59 | * @param $from 60 | * @param array $params 61 | * @return Stripe 62 | */ 63 | public static function createCustomer($token, $from, $params = []) 64 | { 65 | $params = array_merge([ 66 | "email" => $from->email, 67 | 'source' => $token, 68 | ], $params); 69 | return self::create($from, 'customer_id', function () use ($params) { 70 | return Customer::create($params); 71 | }); 72 | } 73 | 74 | /** 75 | * @param $token 76 | * @param $from 77 | * @param array $params 78 | * @return Stripe 79 | */ 80 | public function createOrUpdateCustomer($token, $from, $params = []) 81 | { 82 | self::prepare(); 83 | $user = self::getStripeModel($from); 84 | if (!$user) { 85 | return self::createCustomer($token, $from, $params); 86 | } 87 | $customer = \Stripe\Customer::retrieve($token->customer_id); 88 | $customer->source = $token; 89 | $customer->save(); 90 | return $user; 91 | } 92 | 93 | /** 94 | * @param $user 95 | * @param $id_key 96 | * @param $callback 97 | * @return Stripe 98 | */ 99 | private static function create($user, $id_key, $callback) { 100 | self::prepare(); 101 | $user = self::getStripeModel($user); 102 | if (!$user->$id_key) { 103 | $user->$id_key = call_user_func($callback)->id; 104 | $user->save(); 105 | } 106 | return $user; 107 | } 108 | 109 | /** 110 | * @param null $token 111 | * @return Transaction 112 | */ 113 | public static function transaction($token = null) 114 | { 115 | return new Transaction($token); 116 | } 117 | } -------------------------------------------------------------------------------- /src/Transaction.php: -------------------------------------------------------------------------------- 1 | token = $token; 30 | } 31 | 32 | /** 33 | * Set the Customer. 34 | * 35 | * @param $user 36 | * @param array $params 37 | * @return $this 38 | */ 39 | public function from($user, $params = []) 40 | { 41 | $this->from = $user; 42 | $this->from_params = $params; 43 | return $this; 44 | } 45 | 46 | /** 47 | * @return $this 48 | */ 49 | public function useSavedCustomer() 50 | { 51 | $this->saved_customer = true; 52 | return $this; 53 | } 54 | 55 | /** 56 | * Set the Vendor. 57 | * 58 | * @param $user 59 | * @param array $params 60 | * @return $this 61 | */ 62 | public function to($user, $params = []) 63 | { 64 | $this->to = $user; 65 | $this->to_params = $params; 66 | return $this; 67 | } 68 | 69 | /** 70 | * The amount of the transaction. 71 | * 72 | * @param $value 73 | * @param $currency 74 | * @return $this 75 | */ 76 | public function amount($value, $currency) 77 | { 78 | $this->value = $value; 79 | $this->currency = $currency; 80 | return $this; 81 | } 82 | 83 | /** 84 | * Take your fees here. 85 | * 86 | * @param $amount 87 | * @return $this 88 | */ 89 | public function fee($amount) 90 | { 91 | $this->fee = $amount; 92 | return $this; 93 | } 94 | 95 | /** 96 | * Create the transaction: charge customer and credit vendor. 97 | * This function saves the two accounts. 98 | * 99 | * @param array $params 100 | * @return Charge 101 | */ 102 | public function create($params = []) 103 | { 104 | // Prepare vendor 105 | $vendor = StripeConnect::createAccount($this->to, $this->to_params); 106 | // Prepare customer 107 | if ($this->saved_customer) { 108 | $customer = StripeConnect::createCustomer($this->token, $this->from, $this->from_params); 109 | $params["customer"] = $customer->customer_id; 110 | } else { 111 | $params["source"] = $this->token; 112 | } 113 | 114 | return Charge::create(array_merge([ 115 | "amount" => $this->value, 116 | "currency" => $this->currency, 117 | "destination" => [ 118 | "account" => $vendor->account_id, 119 | ], 120 | "application_fee" => $this->fee ?? null, 121 | ], $params)); 122 | } 123 | } -------------------------------------------------------------------------------- /tests/TransactionTest.php: -------------------------------------------------------------------------------- 1 | fee(35)->amount(1000, 'usd'); 17 | $this->assertInstanceOf(Transaction::class, $transaction); 18 | } 19 | } 20 | --------------------------------------------------------------------------------