├── .gitignore ├── README.md ├── composer.json ├── composer.lock ├── phpunit.xml ├── src ├── MonitorsSchedule.php ├── ScheduleMonitorServiceProvider.php └── migrations │ └── 2016_05_31_124502_create_scheduled_events_table.php └── tests └── TestCase.php /.gitignore: -------------------------------------------------------------------------------- 1 | /vendor/ 2 | .idea -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # laravel-schedule-monitor 2 | Track the output of your scheduled tasks in a database table. 3 | 4 | ## Installation 5 | 6 | 1. Install through composer: `composer require mirzabusatlic/laravel-schedule-monitor` 7 | 2. Add `Busatlic\ScheduleMonitor\ScheduleMonitorServiceProvider::class` to your list of `$providers` in to your `config/app.php`. 8 | 3. Publish the migration using `php artisan vendor:publish --provider=Busatlic\\ScheduleMonitor\\ScheduleMonitorServiceProvider`. 9 | 4. Run `php artisan migrate` to create the `scheduled_events` table in your database. 10 | 11 | ## Usage 12 | 13 | - In your `app/Console/Kernel.php`, include the `Busatlic\ScheduleMonitor\MonitorsSchedule` trait. 14 | - Call `$this->monitor($schedule)` after you've defined your scheduled commands in `schedule()`. 15 | 16 | This will look something like: 17 | 18 | ```php 19 | command('files:delete')->dailyAt('00:05'); 51 | 52 | $schedule->command('events:flush')->hourly(); 53 | 54 | $this->monitor($schedule); 55 | } 56 | } 57 | ``` 58 | 59 | Whenever a scheduled command is then run, the its output will be inserted into the `scheduled_events` table. 60 | 61 | | Logged | Command | Output 62 | |---|---|---| 63 | | 2016-07-11 02:21:38 | files:delete | Deleted (6391/6391) total files. 64 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "mirzabusatlic/laravel-schedule-monitor", 3 | "description": "Monitor the output of scheduled tasks in a database table", 4 | "authors": [ 5 | { 6 | "name": "Mirza Busatlic", 7 | "email": "mirza.busatlic@gmail.com" 8 | } 9 | ], 10 | "require": { 11 | "illuminate/support": ">=5.3.0", 12 | "illuminate/database": ">=5.3.0", 13 | "illuminate/console": ">=5.3.0" 14 | }, 15 | "require-dev": { 16 | "phpunit/phpunit": "5.4.*" 17 | }, 18 | "autoload": { 19 | "psr-4": { 20 | "Busatlic\\ScheduleMonitor\\": "src/" 21 | } 22 | }, 23 | "autoload-dev": { 24 | "classmap": [ 25 | "tests/TestCase.php" 26 | ] 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /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": "c730b32a446a64b567559bf23cc1e9db", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "v1.1.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", 20 | "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.3.2" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "4.*" 28 | }, 29 | "type": "library", 30 | "extra": { 31 | "branch-alias": { 32 | "dev-master": "1.1.x-dev" 33 | } 34 | }, 35 | "autoload": { 36 | "psr-0": { 37 | "Doctrine\\Common\\Inflector\\": "lib/" 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": "2015-11-06T14:35:42+00:00" 75 | }, 76 | { 77 | "name": "illuminate/console", 78 | "version": "v5.4.13", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/illuminate/console.git", 82 | "reference": "8cfa6ee659849456bc655794b5f8f63872b3c28c" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/illuminate/console/zipball/8cfa6ee659849456bc655794b5f8f63872b3c28c", 87 | "reference": "8cfa6ee659849456bc655794b5f8f63872b3c28c", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "illuminate/contracts": "5.4.*", 92 | "illuminate/support": "5.4.*", 93 | "nesbot/carbon": "~1.20", 94 | "php": ">=5.6.4", 95 | "symfony/console": "~3.2" 96 | }, 97 | "suggest": { 98 | "guzzlehttp/guzzle": "Required to use the ping methods on schedules (~6.0).", 99 | "mtdowling/cron-expression": "Required to use scheduling component (~1.0).", 100 | "symfony/process": "Required to use scheduling component (~3.2)." 101 | }, 102 | "type": "library", 103 | "extra": { 104 | "branch-alias": { 105 | "dev-master": "5.4-dev" 106 | } 107 | }, 108 | "autoload": { 109 | "psr-4": { 110 | "Illuminate\\Console\\": "" 111 | } 112 | }, 113 | "notification-url": "https://packagist.org/downloads/", 114 | "license": [ 115 | "MIT" 116 | ], 117 | "authors": [ 118 | { 119 | "name": "Taylor Otwell", 120 | "email": "taylor@laravel.com" 121 | } 122 | ], 123 | "description": "The Illuminate Console package.", 124 | "homepage": "https://laravel.com", 125 | "time": "2017-01-27T22:46:14+00:00" 126 | }, 127 | { 128 | "name": "illuminate/container", 129 | "version": "v5.4.13", 130 | "source": { 131 | "type": "git", 132 | "url": "https://github.com/illuminate/container.git", 133 | "reference": "ccbfa2c69369a11b419d071ad11147b59eb9f052" 134 | }, 135 | "dist": { 136 | "type": "zip", 137 | "url": "https://api.github.com/repos/illuminate/container/zipball/ccbfa2c69369a11b419d071ad11147b59eb9f052", 138 | "reference": "ccbfa2c69369a11b419d071ad11147b59eb9f052", 139 | "shasum": "" 140 | }, 141 | "require": { 142 | "illuminate/contracts": "5.4.*", 143 | "php": ">=5.6.4" 144 | }, 145 | "type": "library", 146 | "extra": { 147 | "branch-alias": { 148 | "dev-master": "5.4-dev" 149 | } 150 | }, 151 | "autoload": { 152 | "psr-4": { 153 | "Illuminate\\Container\\": "" 154 | } 155 | }, 156 | "notification-url": "https://packagist.org/downloads/", 157 | "license": [ 158 | "MIT" 159 | ], 160 | "authors": [ 161 | { 162 | "name": "Taylor Otwell", 163 | "email": "taylor@laravel.com" 164 | } 165 | ], 166 | "description": "The Illuminate Container package.", 167 | "homepage": "https://laravel.com", 168 | "time": "2017-01-28T17:55:54+00:00" 169 | }, 170 | { 171 | "name": "illuminate/contracts", 172 | "version": "v5.4.13", 173 | "source": { 174 | "type": "git", 175 | "url": "https://github.com/illuminate/contracts.git", 176 | "reference": "dd256891c80fd94a58ab83d7989d6da2f50e30ea" 177 | }, 178 | "dist": { 179 | "type": "zip", 180 | "url": "https://api.github.com/repos/illuminate/contracts/zipball/dd256891c80fd94a58ab83d7989d6da2f50e30ea", 181 | "reference": "dd256891c80fd94a58ab83d7989d6da2f50e30ea", 182 | "shasum": "" 183 | }, 184 | "require": { 185 | "php": ">=5.6.4" 186 | }, 187 | "type": "library", 188 | "extra": { 189 | "branch-alias": { 190 | "dev-master": "5.4-dev" 191 | } 192 | }, 193 | "autoload": { 194 | "psr-4": { 195 | "Illuminate\\Contracts\\": "" 196 | } 197 | }, 198 | "notification-url": "https://packagist.org/downloads/", 199 | "license": [ 200 | "MIT" 201 | ], 202 | "authors": [ 203 | { 204 | "name": "Taylor Otwell", 205 | "email": "taylor@laravel.com" 206 | } 207 | ], 208 | "description": "The Illuminate Contracts package.", 209 | "homepage": "https://laravel.com", 210 | "time": "2017-02-21T14:21:59+00:00" 211 | }, 212 | { 213 | "name": "illuminate/database", 214 | "version": "v5.4.13", 215 | "source": { 216 | "type": "git", 217 | "url": "https://github.com/illuminate/database.git", 218 | "reference": "607d5e1c8e2ecc61d312a455a5e93d6793f694df" 219 | }, 220 | "dist": { 221 | "type": "zip", 222 | "url": "https://api.github.com/repos/illuminate/database/zipball/607d5e1c8e2ecc61d312a455a5e93d6793f694df", 223 | "reference": "607d5e1c8e2ecc61d312a455a5e93d6793f694df", 224 | "shasum": "" 225 | }, 226 | "require": { 227 | "illuminate/container": "5.4.*", 228 | "illuminate/contracts": "5.4.*", 229 | "illuminate/support": "5.4.*", 230 | "nesbot/carbon": "~1.20", 231 | "php": ">=5.6.4" 232 | }, 233 | "suggest": { 234 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.5).", 235 | "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", 236 | "illuminate/console": "Required to use the database commands (5.4.*).", 237 | "illuminate/events": "Required to use the observers with Eloquent (5.4.*).", 238 | "illuminate/filesystem": "Required to use the migrations (5.4.*).", 239 | "illuminate/pagination": "Required to paginate the result set (5.4.*)." 240 | }, 241 | "type": "library", 242 | "extra": { 243 | "branch-alias": { 244 | "dev-master": "5.4-dev" 245 | } 246 | }, 247 | "autoload": { 248 | "psr-4": { 249 | "Illuminate\\Database\\": "" 250 | } 251 | }, 252 | "notification-url": "https://packagist.org/downloads/", 253 | "license": [ 254 | "MIT" 255 | ], 256 | "authors": [ 257 | { 258 | "name": "Taylor Otwell", 259 | "email": "taylor@laravel.com" 260 | } 261 | ], 262 | "description": "The Illuminate Database package.", 263 | "homepage": "https://laravel.com", 264 | "keywords": [ 265 | "database", 266 | "laravel", 267 | "orm", 268 | "sql" 269 | ], 270 | "time": "2017-02-22T14:16:49+00:00" 271 | }, 272 | { 273 | "name": "illuminate/support", 274 | "version": "v5.4.13", 275 | "source": { 276 | "type": "git", 277 | "url": "https://github.com/illuminate/support.git", 278 | "reference": "904f63003fd67ede2ec3be018b322d1c29415465" 279 | }, 280 | "dist": { 281 | "type": "zip", 282 | "url": "https://api.github.com/repos/illuminate/support/zipball/904f63003fd67ede2ec3be018b322d1c29415465", 283 | "reference": "904f63003fd67ede2ec3be018b322d1c29415465", 284 | "shasum": "" 285 | }, 286 | "require": { 287 | "doctrine/inflector": "~1.0", 288 | "ext-mbstring": "*", 289 | "illuminate/contracts": "5.4.*", 290 | "paragonie/random_compat": "~1.4|~2.0", 291 | "php": ">=5.6.4" 292 | }, 293 | "replace": { 294 | "tightenco/collect": "self.version" 295 | }, 296 | "suggest": { 297 | "illuminate/filesystem": "Required to use the composer class (5.2.*).", 298 | "symfony/process": "Required to use the composer class (~3.2).", 299 | "symfony/var-dumper": "Required to use the dd function (~3.2)." 300 | }, 301 | "type": "library", 302 | "extra": { 303 | "branch-alias": { 304 | "dev-master": "5.4-dev" 305 | } 306 | }, 307 | "autoload": { 308 | "psr-4": { 309 | "Illuminate\\Support\\": "" 310 | }, 311 | "files": [ 312 | "helpers.php" 313 | ] 314 | }, 315 | "notification-url": "https://packagist.org/downloads/", 316 | "license": [ 317 | "MIT" 318 | ], 319 | "authors": [ 320 | { 321 | "name": "Taylor Otwell", 322 | "email": "taylor@laravel.com" 323 | } 324 | ], 325 | "description": "The Illuminate Support package.", 326 | "homepage": "https://laravel.com", 327 | "time": "2017-02-15T19:29:24+00:00" 328 | }, 329 | { 330 | "name": "nesbot/carbon", 331 | "version": "1.22.1", 332 | "source": { 333 | "type": "git", 334 | "url": "https://github.com/briannesbitt/Carbon.git", 335 | "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc" 336 | }, 337 | "dist": { 338 | "type": "zip", 339 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", 340 | "reference": "7cdf42c0b1cc763ab7e4c33c47a24e27c66bfccc", 341 | "shasum": "" 342 | }, 343 | "require": { 344 | "php": ">=5.3.0", 345 | "symfony/translation": "~2.6 || ~3.0" 346 | }, 347 | "require-dev": { 348 | "friendsofphp/php-cs-fixer": "~2", 349 | "phpunit/phpunit": "~4.0 || ~5.0" 350 | }, 351 | "type": "library", 352 | "extra": { 353 | "branch-alias": { 354 | "dev-master": "1.23-dev" 355 | } 356 | }, 357 | "autoload": { 358 | "psr-4": { 359 | "Carbon\\": "src/Carbon/" 360 | } 361 | }, 362 | "notification-url": "https://packagist.org/downloads/", 363 | "license": [ 364 | "MIT" 365 | ], 366 | "authors": [ 367 | { 368 | "name": "Brian Nesbitt", 369 | "email": "brian@nesbot.com", 370 | "homepage": "http://nesbot.com" 371 | } 372 | ], 373 | "description": "A simple API extension for DateTime.", 374 | "homepage": "http://carbon.nesbot.com", 375 | "keywords": [ 376 | "date", 377 | "datetime", 378 | "time" 379 | ], 380 | "time": "2017-01-16T07:55:07+00:00" 381 | }, 382 | { 383 | "name": "paragonie/random_compat", 384 | "version": "v2.0.10", 385 | "source": { 386 | "type": "git", 387 | "url": "https://github.com/paragonie/random_compat.git", 388 | "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d" 389 | }, 390 | "dist": { 391 | "type": "zip", 392 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/634bae8e911eefa89c1abfbf1b66da679ac8f54d", 393 | "reference": "634bae8e911eefa89c1abfbf1b66da679ac8f54d", 394 | "shasum": "" 395 | }, 396 | "require": { 397 | "php": ">=5.2.0" 398 | }, 399 | "require-dev": { 400 | "phpunit/phpunit": "4.*|5.*" 401 | }, 402 | "suggest": { 403 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 404 | }, 405 | "type": "library", 406 | "autoload": { 407 | "files": [ 408 | "lib/random.php" 409 | ] 410 | }, 411 | "notification-url": "https://packagist.org/downloads/", 412 | "license": [ 413 | "MIT" 414 | ], 415 | "authors": [ 416 | { 417 | "name": "Paragon Initiative Enterprises", 418 | "email": "security@paragonie.com", 419 | "homepage": "https://paragonie.com" 420 | } 421 | ], 422 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 423 | "keywords": [ 424 | "csprng", 425 | "pseudorandom", 426 | "random" 427 | ], 428 | "time": "2017-03-13T16:27:32+00:00" 429 | }, 430 | { 431 | "name": "psr/log", 432 | "version": "1.0.2", 433 | "source": { 434 | "type": "git", 435 | "url": "https://github.com/php-fig/log.git", 436 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 437 | }, 438 | "dist": { 439 | "type": "zip", 440 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 441 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 442 | "shasum": "" 443 | }, 444 | "require": { 445 | "php": ">=5.3.0" 446 | }, 447 | "type": "library", 448 | "extra": { 449 | "branch-alias": { 450 | "dev-master": "1.0.x-dev" 451 | } 452 | }, 453 | "autoload": { 454 | "psr-4": { 455 | "Psr\\Log\\": "Psr/Log/" 456 | } 457 | }, 458 | "notification-url": "https://packagist.org/downloads/", 459 | "license": [ 460 | "MIT" 461 | ], 462 | "authors": [ 463 | { 464 | "name": "PHP-FIG", 465 | "homepage": "http://www.php-fig.org/" 466 | } 467 | ], 468 | "description": "Common interface for logging libraries", 469 | "homepage": "https://github.com/php-fig/log", 470 | "keywords": [ 471 | "log", 472 | "psr", 473 | "psr-3" 474 | ], 475 | "time": "2016-10-10T12:19:37+00:00" 476 | }, 477 | { 478 | "name": "symfony/console", 479 | "version": "v3.2.6", 480 | "source": { 481 | "type": "git", 482 | "url": "https://github.com/symfony/console.git", 483 | "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd" 484 | }, 485 | "dist": { 486 | "type": "zip", 487 | "url": "https://api.github.com/repos/symfony/console/zipball/28fb243a2b5727774ca309ec2d92da240f1af0dd", 488 | "reference": "28fb243a2b5727774ca309ec2d92da240f1af0dd", 489 | "shasum": "" 490 | }, 491 | "require": { 492 | "php": ">=5.5.9", 493 | "symfony/debug": "~2.8|~3.0", 494 | "symfony/polyfill-mbstring": "~1.0" 495 | }, 496 | "require-dev": { 497 | "psr/log": "~1.0", 498 | "symfony/event-dispatcher": "~2.8|~3.0", 499 | "symfony/filesystem": "~2.8|~3.0", 500 | "symfony/process": "~2.8|~3.0" 501 | }, 502 | "suggest": { 503 | "psr/log": "For using the console logger", 504 | "symfony/event-dispatcher": "", 505 | "symfony/filesystem": "", 506 | "symfony/process": "" 507 | }, 508 | "type": "library", 509 | "extra": { 510 | "branch-alias": { 511 | "dev-master": "3.2-dev" 512 | } 513 | }, 514 | "autoload": { 515 | "psr-4": { 516 | "Symfony\\Component\\Console\\": "" 517 | }, 518 | "exclude-from-classmap": [ 519 | "/Tests/" 520 | ] 521 | }, 522 | "notification-url": "https://packagist.org/downloads/", 523 | "license": [ 524 | "MIT" 525 | ], 526 | "authors": [ 527 | { 528 | "name": "Fabien Potencier", 529 | "email": "fabien@symfony.com" 530 | }, 531 | { 532 | "name": "Symfony Community", 533 | "homepage": "https://symfony.com/contributors" 534 | } 535 | ], 536 | "description": "Symfony Console Component", 537 | "homepage": "https://symfony.com", 538 | "time": "2017-03-06T19:30:27+00:00" 539 | }, 540 | { 541 | "name": "symfony/debug", 542 | "version": "v3.2.6", 543 | "source": { 544 | "type": "git", 545 | "url": "https://github.com/symfony/debug.git", 546 | "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a" 547 | }, 548 | "dist": { 549 | "type": "zip", 550 | "url": "https://api.github.com/repos/symfony/debug/zipball/b90c9f91ad8ac37d9f114e369042d3226b34dc1a", 551 | "reference": "b90c9f91ad8ac37d9f114e369042d3226b34dc1a", 552 | "shasum": "" 553 | }, 554 | "require": { 555 | "php": ">=5.5.9", 556 | "psr/log": "~1.0" 557 | }, 558 | "conflict": { 559 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 560 | }, 561 | "require-dev": { 562 | "symfony/class-loader": "~2.8|~3.0", 563 | "symfony/http-kernel": "~2.8|~3.0" 564 | }, 565 | "type": "library", 566 | "extra": { 567 | "branch-alias": { 568 | "dev-master": "3.2-dev" 569 | } 570 | }, 571 | "autoload": { 572 | "psr-4": { 573 | "Symfony\\Component\\Debug\\": "" 574 | }, 575 | "exclude-from-classmap": [ 576 | "/Tests/" 577 | ] 578 | }, 579 | "notification-url": "https://packagist.org/downloads/", 580 | "license": [ 581 | "MIT" 582 | ], 583 | "authors": [ 584 | { 585 | "name": "Fabien Potencier", 586 | "email": "fabien@symfony.com" 587 | }, 588 | { 589 | "name": "Symfony Community", 590 | "homepage": "https://symfony.com/contributors" 591 | } 592 | ], 593 | "description": "Symfony Debug Component", 594 | "homepage": "https://symfony.com", 595 | "time": "2017-02-18T17:28:00+00:00" 596 | }, 597 | { 598 | "name": "symfony/polyfill-mbstring", 599 | "version": "v1.3.0", 600 | "source": { 601 | "type": "git", 602 | "url": "https://github.com/symfony/polyfill-mbstring.git", 603 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" 604 | }, 605 | "dist": { 606 | "type": "zip", 607 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", 608 | "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", 609 | "shasum": "" 610 | }, 611 | "require": { 612 | "php": ">=5.3.3" 613 | }, 614 | "suggest": { 615 | "ext-mbstring": "For best performance" 616 | }, 617 | "type": "library", 618 | "extra": { 619 | "branch-alias": { 620 | "dev-master": "1.3-dev" 621 | } 622 | }, 623 | "autoload": { 624 | "psr-4": { 625 | "Symfony\\Polyfill\\Mbstring\\": "" 626 | }, 627 | "files": [ 628 | "bootstrap.php" 629 | ] 630 | }, 631 | "notification-url": "https://packagist.org/downloads/", 632 | "license": [ 633 | "MIT" 634 | ], 635 | "authors": [ 636 | { 637 | "name": "Nicolas Grekas", 638 | "email": "p@tchwork.com" 639 | }, 640 | { 641 | "name": "Symfony Community", 642 | "homepage": "https://symfony.com/contributors" 643 | } 644 | ], 645 | "description": "Symfony polyfill for the Mbstring extension", 646 | "homepage": "https://symfony.com", 647 | "keywords": [ 648 | "compatibility", 649 | "mbstring", 650 | "polyfill", 651 | "portable", 652 | "shim" 653 | ], 654 | "time": "2016-11-14T01:06:16+00:00" 655 | }, 656 | { 657 | "name": "symfony/translation", 658 | "version": "v3.2.6", 659 | "source": { 660 | "type": "git", 661 | "url": "https://github.com/symfony/translation.git", 662 | "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690" 663 | }, 664 | "dist": { 665 | "type": "zip", 666 | "url": "https://api.github.com/repos/symfony/translation/zipball/0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690", 667 | "reference": "0e1b15ce8fbf3890f4ccdac430ed5e07fdfe0690", 668 | "shasum": "" 669 | }, 670 | "require": { 671 | "php": ">=5.5.9", 672 | "symfony/polyfill-mbstring": "~1.0" 673 | }, 674 | "conflict": { 675 | "symfony/config": "<2.8" 676 | }, 677 | "require-dev": { 678 | "psr/log": "~1.0", 679 | "symfony/config": "~2.8|~3.0", 680 | "symfony/intl": "^2.8.18|^3.2.5", 681 | "symfony/yaml": "~2.8|~3.0" 682 | }, 683 | "suggest": { 684 | "psr/log": "To use logging capability in translator", 685 | "symfony/config": "", 686 | "symfony/yaml": "" 687 | }, 688 | "type": "library", 689 | "extra": { 690 | "branch-alias": { 691 | "dev-master": "3.2-dev" 692 | } 693 | }, 694 | "autoload": { 695 | "psr-4": { 696 | "Symfony\\Component\\Translation\\": "" 697 | }, 698 | "exclude-from-classmap": [ 699 | "/Tests/" 700 | ] 701 | }, 702 | "notification-url": "https://packagist.org/downloads/", 703 | "license": [ 704 | "MIT" 705 | ], 706 | "authors": [ 707 | { 708 | "name": "Fabien Potencier", 709 | "email": "fabien@symfony.com" 710 | }, 711 | { 712 | "name": "Symfony Community", 713 | "homepage": "https://symfony.com/contributors" 714 | } 715 | ], 716 | "description": "Symfony Translation Component", 717 | "homepage": "https://symfony.com", 718 | "time": "2017-03-04T12:23:14+00:00" 719 | } 720 | ], 721 | "packages-dev": [ 722 | { 723 | "name": "doctrine/instantiator", 724 | "version": "1.0.5", 725 | "source": { 726 | "type": "git", 727 | "url": "https://github.com/doctrine/instantiator.git", 728 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 729 | }, 730 | "dist": { 731 | "type": "zip", 732 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 733 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 734 | "shasum": "" 735 | }, 736 | "require": { 737 | "php": ">=5.3,<8.0-DEV" 738 | }, 739 | "require-dev": { 740 | "athletic/athletic": "~0.1.8", 741 | "ext-pdo": "*", 742 | "ext-phar": "*", 743 | "phpunit/phpunit": "~4.0", 744 | "squizlabs/php_codesniffer": "~2.0" 745 | }, 746 | "type": "library", 747 | "extra": { 748 | "branch-alias": { 749 | "dev-master": "1.0.x-dev" 750 | } 751 | }, 752 | "autoload": { 753 | "psr-4": { 754 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 755 | } 756 | }, 757 | "notification-url": "https://packagist.org/downloads/", 758 | "license": [ 759 | "MIT" 760 | ], 761 | "authors": [ 762 | { 763 | "name": "Marco Pivetta", 764 | "email": "ocramius@gmail.com", 765 | "homepage": "http://ocramius.github.com/" 766 | } 767 | ], 768 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 769 | "homepage": "https://github.com/doctrine/instantiator", 770 | "keywords": [ 771 | "constructor", 772 | "instantiate" 773 | ], 774 | "time": "2015-06-14T21:17:01+00:00" 775 | }, 776 | { 777 | "name": "myclabs/deep-copy", 778 | "version": "1.6.0", 779 | "source": { 780 | "type": "git", 781 | "url": "https://github.com/myclabs/DeepCopy.git", 782 | "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe" 783 | }, 784 | "dist": { 785 | "type": "zip", 786 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5a5a9fc8025a08d8919be87d6884d5a92520cefe", 787 | "reference": "5a5a9fc8025a08d8919be87d6884d5a92520cefe", 788 | "shasum": "" 789 | }, 790 | "require": { 791 | "php": ">=5.4.0" 792 | }, 793 | "require-dev": { 794 | "doctrine/collections": "1.*", 795 | "phpunit/phpunit": "~4.1" 796 | }, 797 | "type": "library", 798 | "autoload": { 799 | "psr-4": { 800 | "DeepCopy\\": "src/DeepCopy/" 801 | } 802 | }, 803 | "notification-url": "https://packagist.org/downloads/", 804 | "license": [ 805 | "MIT" 806 | ], 807 | "description": "Create deep copies (clones) of your objects", 808 | "homepage": "https://github.com/myclabs/DeepCopy", 809 | "keywords": [ 810 | "clone", 811 | "copy", 812 | "duplicate", 813 | "object", 814 | "object graph" 815 | ], 816 | "time": "2017-01-26T22:05:40+00:00" 817 | }, 818 | { 819 | "name": "phpdocumentor/reflection-common", 820 | "version": "1.0", 821 | "source": { 822 | "type": "git", 823 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 824 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" 825 | }, 826 | "dist": { 827 | "type": "zip", 828 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 829 | "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", 830 | "shasum": "" 831 | }, 832 | "require": { 833 | "php": ">=5.5" 834 | }, 835 | "require-dev": { 836 | "phpunit/phpunit": "^4.6" 837 | }, 838 | "type": "library", 839 | "extra": { 840 | "branch-alias": { 841 | "dev-master": "1.0.x-dev" 842 | } 843 | }, 844 | "autoload": { 845 | "psr-4": { 846 | "phpDocumentor\\Reflection\\": [ 847 | "src" 848 | ] 849 | } 850 | }, 851 | "notification-url": "https://packagist.org/downloads/", 852 | "license": [ 853 | "MIT" 854 | ], 855 | "authors": [ 856 | { 857 | "name": "Jaap van Otterdijk", 858 | "email": "opensource@ijaap.nl" 859 | } 860 | ], 861 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 862 | "homepage": "http://www.phpdoc.org", 863 | "keywords": [ 864 | "FQSEN", 865 | "phpDocumentor", 866 | "phpdoc", 867 | "reflection", 868 | "static analysis" 869 | ], 870 | "time": "2015-12-27T11:43:31+00:00" 871 | }, 872 | { 873 | "name": "phpdocumentor/reflection-docblock", 874 | "version": "3.1.1", 875 | "source": { 876 | "type": "git", 877 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 878 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" 879 | }, 880 | "dist": { 881 | "type": "zip", 882 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", 883 | "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", 884 | "shasum": "" 885 | }, 886 | "require": { 887 | "php": ">=5.5", 888 | "phpdocumentor/reflection-common": "^1.0@dev", 889 | "phpdocumentor/type-resolver": "^0.2.0", 890 | "webmozart/assert": "^1.0" 891 | }, 892 | "require-dev": { 893 | "mockery/mockery": "^0.9.4", 894 | "phpunit/phpunit": "^4.4" 895 | }, 896 | "type": "library", 897 | "autoload": { 898 | "psr-4": { 899 | "phpDocumentor\\Reflection\\": [ 900 | "src/" 901 | ] 902 | } 903 | }, 904 | "notification-url": "https://packagist.org/downloads/", 905 | "license": [ 906 | "MIT" 907 | ], 908 | "authors": [ 909 | { 910 | "name": "Mike van Riel", 911 | "email": "me@mikevanriel.com" 912 | } 913 | ], 914 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 915 | "time": "2016-09-30T07:12:33+00:00" 916 | }, 917 | { 918 | "name": "phpdocumentor/type-resolver", 919 | "version": "0.2.1", 920 | "source": { 921 | "type": "git", 922 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 923 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" 924 | }, 925 | "dist": { 926 | "type": "zip", 927 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 928 | "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", 929 | "shasum": "" 930 | }, 931 | "require": { 932 | "php": ">=5.5", 933 | "phpdocumentor/reflection-common": "^1.0" 934 | }, 935 | "require-dev": { 936 | "mockery/mockery": "^0.9.4", 937 | "phpunit/phpunit": "^5.2||^4.8.24" 938 | }, 939 | "type": "library", 940 | "extra": { 941 | "branch-alias": { 942 | "dev-master": "1.0.x-dev" 943 | } 944 | }, 945 | "autoload": { 946 | "psr-4": { 947 | "phpDocumentor\\Reflection\\": [ 948 | "src/" 949 | ] 950 | } 951 | }, 952 | "notification-url": "https://packagist.org/downloads/", 953 | "license": [ 954 | "MIT" 955 | ], 956 | "authors": [ 957 | { 958 | "name": "Mike van Riel", 959 | "email": "me@mikevanriel.com" 960 | } 961 | ], 962 | "time": "2016-11-25T06:54:22+00:00" 963 | }, 964 | { 965 | "name": "phpspec/prophecy", 966 | "version": "v1.7.0", 967 | "source": { 968 | "type": "git", 969 | "url": "https://github.com/phpspec/prophecy.git", 970 | "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" 971 | }, 972 | "dist": { 973 | "type": "zip", 974 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", 975 | "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", 976 | "shasum": "" 977 | }, 978 | "require": { 979 | "doctrine/instantiator": "^1.0.2", 980 | "php": "^5.3|^7.0", 981 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", 982 | "sebastian/comparator": "^1.1|^2.0", 983 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 984 | }, 985 | "require-dev": { 986 | "phpspec/phpspec": "^2.5|^3.2", 987 | "phpunit/phpunit": "^4.8 || ^5.6.5" 988 | }, 989 | "type": "library", 990 | "extra": { 991 | "branch-alias": { 992 | "dev-master": "1.6.x-dev" 993 | } 994 | }, 995 | "autoload": { 996 | "psr-0": { 997 | "Prophecy\\": "src/" 998 | } 999 | }, 1000 | "notification-url": "https://packagist.org/downloads/", 1001 | "license": [ 1002 | "MIT" 1003 | ], 1004 | "authors": [ 1005 | { 1006 | "name": "Konstantin Kudryashov", 1007 | "email": "ever.zet@gmail.com", 1008 | "homepage": "http://everzet.com" 1009 | }, 1010 | { 1011 | "name": "Marcello Duarte", 1012 | "email": "marcello.duarte@gmail.com" 1013 | } 1014 | ], 1015 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1016 | "homepage": "https://github.com/phpspec/prophecy", 1017 | "keywords": [ 1018 | "Double", 1019 | "Dummy", 1020 | "fake", 1021 | "mock", 1022 | "spy", 1023 | "stub" 1024 | ], 1025 | "time": "2017-03-02T20:05:34+00:00" 1026 | }, 1027 | { 1028 | "name": "phpunit/php-code-coverage", 1029 | "version": "4.0.7", 1030 | "source": { 1031 | "type": "git", 1032 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1033 | "reference": "09e2277d14ea467e5a984010f501343ef29ffc69" 1034 | }, 1035 | "dist": { 1036 | "type": "zip", 1037 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/09e2277d14ea467e5a984010f501343ef29ffc69", 1038 | "reference": "09e2277d14ea467e5a984010f501343ef29ffc69", 1039 | "shasum": "" 1040 | }, 1041 | "require": { 1042 | "ext-dom": "*", 1043 | "ext-xmlwriter": "*", 1044 | "php": "^5.6 || ^7.0", 1045 | "phpunit/php-file-iterator": "^1.3", 1046 | "phpunit/php-text-template": "^1.2", 1047 | "phpunit/php-token-stream": "^1.4.2 || ^2.0", 1048 | "sebastian/code-unit-reverse-lookup": "^1.0", 1049 | "sebastian/environment": "^1.3.2 || ^2.0", 1050 | "sebastian/version": "^1.0 || ^2.0" 1051 | }, 1052 | "require-dev": { 1053 | "ext-xdebug": "^2.1.4", 1054 | "phpunit/phpunit": "^5.7" 1055 | }, 1056 | "suggest": { 1057 | "ext-xdebug": "^2.5.1" 1058 | }, 1059 | "type": "library", 1060 | "extra": { 1061 | "branch-alias": { 1062 | "dev-master": "4.0.x-dev" 1063 | } 1064 | }, 1065 | "autoload": { 1066 | "classmap": [ 1067 | "src/" 1068 | ] 1069 | }, 1070 | "notification-url": "https://packagist.org/downloads/", 1071 | "license": [ 1072 | "BSD-3-Clause" 1073 | ], 1074 | "authors": [ 1075 | { 1076 | "name": "Sebastian Bergmann", 1077 | "email": "sb@sebastian-bergmann.de", 1078 | "role": "lead" 1079 | } 1080 | ], 1081 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1082 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1083 | "keywords": [ 1084 | "coverage", 1085 | "testing", 1086 | "xunit" 1087 | ], 1088 | "time": "2017-03-01T09:12:17+00:00" 1089 | }, 1090 | { 1091 | "name": "phpunit/php-file-iterator", 1092 | "version": "1.4.2", 1093 | "source": { 1094 | "type": "git", 1095 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1096 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" 1097 | }, 1098 | "dist": { 1099 | "type": "zip", 1100 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", 1101 | "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", 1102 | "shasum": "" 1103 | }, 1104 | "require": { 1105 | "php": ">=5.3.3" 1106 | }, 1107 | "type": "library", 1108 | "extra": { 1109 | "branch-alias": { 1110 | "dev-master": "1.4.x-dev" 1111 | } 1112 | }, 1113 | "autoload": { 1114 | "classmap": [ 1115 | "src/" 1116 | ] 1117 | }, 1118 | "notification-url": "https://packagist.org/downloads/", 1119 | "license": [ 1120 | "BSD-3-Clause" 1121 | ], 1122 | "authors": [ 1123 | { 1124 | "name": "Sebastian Bergmann", 1125 | "email": "sb@sebastian-bergmann.de", 1126 | "role": "lead" 1127 | } 1128 | ], 1129 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1130 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1131 | "keywords": [ 1132 | "filesystem", 1133 | "iterator" 1134 | ], 1135 | "time": "2016-10-03T07:40:28+00:00" 1136 | }, 1137 | { 1138 | "name": "phpunit/php-text-template", 1139 | "version": "1.2.1", 1140 | "source": { 1141 | "type": "git", 1142 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1143 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1144 | }, 1145 | "dist": { 1146 | "type": "zip", 1147 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1148 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1149 | "shasum": "" 1150 | }, 1151 | "require": { 1152 | "php": ">=5.3.3" 1153 | }, 1154 | "type": "library", 1155 | "autoload": { 1156 | "classmap": [ 1157 | "src/" 1158 | ] 1159 | }, 1160 | "notification-url": "https://packagist.org/downloads/", 1161 | "license": [ 1162 | "BSD-3-Clause" 1163 | ], 1164 | "authors": [ 1165 | { 1166 | "name": "Sebastian Bergmann", 1167 | "email": "sebastian@phpunit.de", 1168 | "role": "lead" 1169 | } 1170 | ], 1171 | "description": "Simple template engine.", 1172 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1173 | "keywords": [ 1174 | "template" 1175 | ], 1176 | "time": "2015-06-21T13:50:34+00:00" 1177 | }, 1178 | { 1179 | "name": "phpunit/php-timer", 1180 | "version": "1.0.9", 1181 | "source": { 1182 | "type": "git", 1183 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1184 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 1185 | }, 1186 | "dist": { 1187 | "type": "zip", 1188 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1189 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1190 | "shasum": "" 1191 | }, 1192 | "require": { 1193 | "php": "^5.3.3 || ^7.0" 1194 | }, 1195 | "require-dev": { 1196 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 1197 | }, 1198 | "type": "library", 1199 | "extra": { 1200 | "branch-alias": { 1201 | "dev-master": "1.0-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": "Sebastian Bergmann", 1216 | "email": "sb@sebastian-bergmann.de", 1217 | "role": "lead" 1218 | } 1219 | ], 1220 | "description": "Utility class for timing", 1221 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1222 | "keywords": [ 1223 | "timer" 1224 | ], 1225 | "time": "2017-02-26T11:10:40+00:00" 1226 | }, 1227 | { 1228 | "name": "phpunit/php-token-stream", 1229 | "version": "1.4.11", 1230 | "source": { 1231 | "type": "git", 1232 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1233 | "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" 1234 | }, 1235 | "dist": { 1236 | "type": "zip", 1237 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", 1238 | "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", 1239 | "shasum": "" 1240 | }, 1241 | "require": { 1242 | "ext-tokenizer": "*", 1243 | "php": ">=5.3.3" 1244 | }, 1245 | "require-dev": { 1246 | "phpunit/phpunit": "~4.2" 1247 | }, 1248 | "type": "library", 1249 | "extra": { 1250 | "branch-alias": { 1251 | "dev-master": "1.4-dev" 1252 | } 1253 | }, 1254 | "autoload": { 1255 | "classmap": [ 1256 | "src/" 1257 | ] 1258 | }, 1259 | "notification-url": "https://packagist.org/downloads/", 1260 | "license": [ 1261 | "BSD-3-Clause" 1262 | ], 1263 | "authors": [ 1264 | { 1265 | "name": "Sebastian Bergmann", 1266 | "email": "sebastian@phpunit.de" 1267 | } 1268 | ], 1269 | "description": "Wrapper around PHP's tokenizer extension.", 1270 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1271 | "keywords": [ 1272 | "tokenizer" 1273 | ], 1274 | "time": "2017-02-27T10:12:30+00:00" 1275 | }, 1276 | { 1277 | "name": "phpunit/phpunit", 1278 | "version": "5.4.8", 1279 | "source": { 1280 | "type": "git", 1281 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1282 | "reference": "3132365e1430c091f208e120b8845d39c25f20e6" 1283 | }, 1284 | "dist": { 1285 | "type": "zip", 1286 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3132365e1430c091f208e120b8845d39c25f20e6", 1287 | "reference": "3132365e1430c091f208e120b8845d39c25f20e6", 1288 | "shasum": "" 1289 | }, 1290 | "require": { 1291 | "ext-dom": "*", 1292 | "ext-json": "*", 1293 | "ext-pcre": "*", 1294 | "ext-reflection": "*", 1295 | "ext-spl": "*", 1296 | "myclabs/deep-copy": "~1.3", 1297 | "php": "^5.6 || ^7.0", 1298 | "phpspec/prophecy": "^1.3.1", 1299 | "phpunit/php-code-coverage": "^4.0.1", 1300 | "phpunit/php-file-iterator": "~1.4", 1301 | "phpunit/php-text-template": "~1.2", 1302 | "phpunit/php-timer": "^1.0.6", 1303 | "phpunit/phpunit-mock-objects": "^3.2", 1304 | "sebastian/comparator": "~1.1", 1305 | "sebastian/diff": "~1.2", 1306 | "sebastian/environment": "^1.3 || ^2.0", 1307 | "sebastian/exporter": "~1.2", 1308 | "sebastian/global-state": "~1.0", 1309 | "sebastian/object-enumerator": "~1.0", 1310 | "sebastian/resource-operations": "~1.0", 1311 | "sebastian/version": "~1.0|~2.0", 1312 | "symfony/yaml": "~2.1|~3.0" 1313 | }, 1314 | "conflict": { 1315 | "phpdocumentor/reflection-docblock": "3.0.2" 1316 | }, 1317 | "suggest": { 1318 | "phpunit/php-invoker": "~1.1" 1319 | }, 1320 | "bin": [ 1321 | "phpunit" 1322 | ], 1323 | "type": "library", 1324 | "extra": { 1325 | "branch-alias": { 1326 | "dev-master": "5.4.x-dev" 1327 | } 1328 | }, 1329 | "autoload": { 1330 | "classmap": [ 1331 | "src/" 1332 | ] 1333 | }, 1334 | "notification-url": "https://packagist.org/downloads/", 1335 | "license": [ 1336 | "BSD-3-Clause" 1337 | ], 1338 | "authors": [ 1339 | { 1340 | "name": "Sebastian Bergmann", 1341 | "email": "sebastian@phpunit.de", 1342 | "role": "lead" 1343 | } 1344 | ], 1345 | "description": "The PHP Unit Testing framework.", 1346 | "homepage": "https://phpunit.de/", 1347 | "keywords": [ 1348 | "phpunit", 1349 | "testing", 1350 | "xunit" 1351 | ], 1352 | "time": "2016-07-26T14:48:00+00:00" 1353 | }, 1354 | { 1355 | "name": "phpunit/phpunit-mock-objects", 1356 | "version": "3.4.3", 1357 | "source": { 1358 | "type": "git", 1359 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 1360 | "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24" 1361 | }, 1362 | "dist": { 1363 | "type": "zip", 1364 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", 1365 | "reference": "3ab72b65b39b491e0c011e2e09bb2206c2aa8e24", 1366 | "shasum": "" 1367 | }, 1368 | "require": { 1369 | "doctrine/instantiator": "^1.0.2", 1370 | "php": "^5.6 || ^7.0", 1371 | "phpunit/php-text-template": "^1.2", 1372 | "sebastian/exporter": "^1.2 || ^2.0" 1373 | }, 1374 | "conflict": { 1375 | "phpunit/phpunit": "<5.4.0" 1376 | }, 1377 | "require-dev": { 1378 | "phpunit/phpunit": "^5.4" 1379 | }, 1380 | "suggest": { 1381 | "ext-soap": "*" 1382 | }, 1383 | "type": "library", 1384 | "extra": { 1385 | "branch-alias": { 1386 | "dev-master": "3.2.x-dev" 1387 | } 1388 | }, 1389 | "autoload": { 1390 | "classmap": [ 1391 | "src/" 1392 | ] 1393 | }, 1394 | "notification-url": "https://packagist.org/downloads/", 1395 | "license": [ 1396 | "BSD-3-Clause" 1397 | ], 1398 | "authors": [ 1399 | { 1400 | "name": "Sebastian Bergmann", 1401 | "email": "sb@sebastian-bergmann.de", 1402 | "role": "lead" 1403 | } 1404 | ], 1405 | "description": "Mock Object library for PHPUnit", 1406 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 1407 | "keywords": [ 1408 | "mock", 1409 | "xunit" 1410 | ], 1411 | "time": "2016-12-08T20:27:08+00:00" 1412 | }, 1413 | { 1414 | "name": "sebastian/code-unit-reverse-lookup", 1415 | "version": "1.0.1", 1416 | "source": { 1417 | "type": "git", 1418 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1419 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1420 | }, 1421 | "dist": { 1422 | "type": "zip", 1423 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1424 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1425 | "shasum": "" 1426 | }, 1427 | "require": { 1428 | "php": "^5.6 || ^7.0" 1429 | }, 1430 | "require-dev": { 1431 | "phpunit/phpunit": "^5.7 || ^6.0" 1432 | }, 1433 | "type": "library", 1434 | "extra": { 1435 | "branch-alias": { 1436 | "dev-master": "1.0.x-dev" 1437 | } 1438 | }, 1439 | "autoload": { 1440 | "classmap": [ 1441 | "src/" 1442 | ] 1443 | }, 1444 | "notification-url": "https://packagist.org/downloads/", 1445 | "license": [ 1446 | "BSD-3-Clause" 1447 | ], 1448 | "authors": [ 1449 | { 1450 | "name": "Sebastian Bergmann", 1451 | "email": "sebastian@phpunit.de" 1452 | } 1453 | ], 1454 | "description": "Looks up which function or method a line of code belongs to", 1455 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1456 | "time": "2017-03-04T06:30:41+00:00" 1457 | }, 1458 | { 1459 | "name": "sebastian/comparator", 1460 | "version": "1.2.4", 1461 | "source": { 1462 | "type": "git", 1463 | "url": "https://github.com/sebastianbergmann/comparator.git", 1464 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be" 1465 | }, 1466 | "dist": { 1467 | "type": "zip", 1468 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 1469 | "reference": "2b7424b55f5047b47ac6e5ccb20b2aea4011d9be", 1470 | "shasum": "" 1471 | }, 1472 | "require": { 1473 | "php": ">=5.3.3", 1474 | "sebastian/diff": "~1.2", 1475 | "sebastian/exporter": "~1.2 || ~2.0" 1476 | }, 1477 | "require-dev": { 1478 | "phpunit/phpunit": "~4.4" 1479 | }, 1480 | "type": "library", 1481 | "extra": { 1482 | "branch-alias": { 1483 | "dev-master": "1.2.x-dev" 1484 | } 1485 | }, 1486 | "autoload": { 1487 | "classmap": [ 1488 | "src/" 1489 | ] 1490 | }, 1491 | "notification-url": "https://packagist.org/downloads/", 1492 | "license": [ 1493 | "BSD-3-Clause" 1494 | ], 1495 | "authors": [ 1496 | { 1497 | "name": "Jeff Welch", 1498 | "email": "whatthejeff@gmail.com" 1499 | }, 1500 | { 1501 | "name": "Volker Dusch", 1502 | "email": "github@wallbash.com" 1503 | }, 1504 | { 1505 | "name": "Bernhard Schussek", 1506 | "email": "bschussek@2bepublished.at" 1507 | }, 1508 | { 1509 | "name": "Sebastian Bergmann", 1510 | "email": "sebastian@phpunit.de" 1511 | } 1512 | ], 1513 | "description": "Provides the functionality to compare PHP values for equality", 1514 | "homepage": "http://www.github.com/sebastianbergmann/comparator", 1515 | "keywords": [ 1516 | "comparator", 1517 | "compare", 1518 | "equality" 1519 | ], 1520 | "time": "2017-01-29T09:50:25+00:00" 1521 | }, 1522 | { 1523 | "name": "sebastian/diff", 1524 | "version": "1.4.1", 1525 | "source": { 1526 | "type": "git", 1527 | "url": "https://github.com/sebastianbergmann/diff.git", 1528 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" 1529 | }, 1530 | "dist": { 1531 | "type": "zip", 1532 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", 1533 | "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", 1534 | "shasum": "" 1535 | }, 1536 | "require": { 1537 | "php": ">=5.3.3" 1538 | }, 1539 | "require-dev": { 1540 | "phpunit/phpunit": "~4.8" 1541 | }, 1542 | "type": "library", 1543 | "extra": { 1544 | "branch-alias": { 1545 | "dev-master": "1.4-dev" 1546 | } 1547 | }, 1548 | "autoload": { 1549 | "classmap": [ 1550 | "src/" 1551 | ] 1552 | }, 1553 | "notification-url": "https://packagist.org/downloads/", 1554 | "license": [ 1555 | "BSD-3-Clause" 1556 | ], 1557 | "authors": [ 1558 | { 1559 | "name": "Kore Nordmann", 1560 | "email": "mail@kore-nordmann.de" 1561 | }, 1562 | { 1563 | "name": "Sebastian Bergmann", 1564 | "email": "sebastian@phpunit.de" 1565 | } 1566 | ], 1567 | "description": "Diff implementation", 1568 | "homepage": "https://github.com/sebastianbergmann/diff", 1569 | "keywords": [ 1570 | "diff" 1571 | ], 1572 | "time": "2015-12-08T07:14:41+00:00" 1573 | }, 1574 | { 1575 | "name": "sebastian/environment", 1576 | "version": "2.0.0", 1577 | "source": { 1578 | "type": "git", 1579 | "url": "https://github.com/sebastianbergmann/environment.git", 1580 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac" 1581 | }, 1582 | "dist": { 1583 | "type": "zip", 1584 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5795ffe5dc5b02460c3e34222fee8cbe245d8fac", 1585 | "reference": "5795ffe5dc5b02460c3e34222fee8cbe245d8fac", 1586 | "shasum": "" 1587 | }, 1588 | "require": { 1589 | "php": "^5.6 || ^7.0" 1590 | }, 1591 | "require-dev": { 1592 | "phpunit/phpunit": "^5.0" 1593 | }, 1594 | "type": "library", 1595 | "extra": { 1596 | "branch-alias": { 1597 | "dev-master": "2.0.x-dev" 1598 | } 1599 | }, 1600 | "autoload": { 1601 | "classmap": [ 1602 | "src/" 1603 | ] 1604 | }, 1605 | "notification-url": "https://packagist.org/downloads/", 1606 | "license": [ 1607 | "BSD-3-Clause" 1608 | ], 1609 | "authors": [ 1610 | { 1611 | "name": "Sebastian Bergmann", 1612 | "email": "sebastian@phpunit.de" 1613 | } 1614 | ], 1615 | "description": "Provides functionality to handle HHVM/PHP environments", 1616 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1617 | "keywords": [ 1618 | "Xdebug", 1619 | "environment", 1620 | "hhvm" 1621 | ], 1622 | "time": "2016-11-26T07:53:53+00:00" 1623 | }, 1624 | { 1625 | "name": "sebastian/exporter", 1626 | "version": "1.2.2", 1627 | "source": { 1628 | "type": "git", 1629 | "url": "https://github.com/sebastianbergmann/exporter.git", 1630 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" 1631 | }, 1632 | "dist": { 1633 | "type": "zip", 1634 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", 1635 | "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", 1636 | "shasum": "" 1637 | }, 1638 | "require": { 1639 | "php": ">=5.3.3", 1640 | "sebastian/recursion-context": "~1.0" 1641 | }, 1642 | "require-dev": { 1643 | "ext-mbstring": "*", 1644 | "phpunit/phpunit": "~4.4" 1645 | }, 1646 | "type": "library", 1647 | "extra": { 1648 | "branch-alias": { 1649 | "dev-master": "1.3.x-dev" 1650 | } 1651 | }, 1652 | "autoload": { 1653 | "classmap": [ 1654 | "src/" 1655 | ] 1656 | }, 1657 | "notification-url": "https://packagist.org/downloads/", 1658 | "license": [ 1659 | "BSD-3-Clause" 1660 | ], 1661 | "authors": [ 1662 | { 1663 | "name": "Jeff Welch", 1664 | "email": "whatthejeff@gmail.com" 1665 | }, 1666 | { 1667 | "name": "Volker Dusch", 1668 | "email": "github@wallbash.com" 1669 | }, 1670 | { 1671 | "name": "Bernhard Schussek", 1672 | "email": "bschussek@2bepublished.at" 1673 | }, 1674 | { 1675 | "name": "Sebastian Bergmann", 1676 | "email": "sebastian@phpunit.de" 1677 | }, 1678 | { 1679 | "name": "Adam Harvey", 1680 | "email": "aharvey@php.net" 1681 | } 1682 | ], 1683 | "description": "Provides the functionality to export PHP variables for visualization", 1684 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 1685 | "keywords": [ 1686 | "export", 1687 | "exporter" 1688 | ], 1689 | "time": "2016-06-17T09:04:28+00:00" 1690 | }, 1691 | { 1692 | "name": "sebastian/global-state", 1693 | "version": "1.1.1", 1694 | "source": { 1695 | "type": "git", 1696 | "url": "https://github.com/sebastianbergmann/global-state.git", 1697 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" 1698 | }, 1699 | "dist": { 1700 | "type": "zip", 1701 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", 1702 | "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", 1703 | "shasum": "" 1704 | }, 1705 | "require": { 1706 | "php": ">=5.3.3" 1707 | }, 1708 | "require-dev": { 1709 | "phpunit/phpunit": "~4.2" 1710 | }, 1711 | "suggest": { 1712 | "ext-uopz": "*" 1713 | }, 1714 | "type": "library", 1715 | "extra": { 1716 | "branch-alias": { 1717 | "dev-master": "1.0-dev" 1718 | } 1719 | }, 1720 | "autoload": { 1721 | "classmap": [ 1722 | "src/" 1723 | ] 1724 | }, 1725 | "notification-url": "https://packagist.org/downloads/", 1726 | "license": [ 1727 | "BSD-3-Clause" 1728 | ], 1729 | "authors": [ 1730 | { 1731 | "name": "Sebastian Bergmann", 1732 | "email": "sebastian@phpunit.de" 1733 | } 1734 | ], 1735 | "description": "Snapshotting of global state", 1736 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 1737 | "keywords": [ 1738 | "global state" 1739 | ], 1740 | "time": "2015-10-12T03:26:01+00:00" 1741 | }, 1742 | { 1743 | "name": "sebastian/object-enumerator", 1744 | "version": "1.0.0", 1745 | "source": { 1746 | "type": "git", 1747 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 1748 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26" 1749 | }, 1750 | "dist": { 1751 | "type": "zip", 1752 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/d4ca2fb70344987502567bc50081c03e6192fb26", 1753 | "reference": "d4ca2fb70344987502567bc50081c03e6192fb26", 1754 | "shasum": "" 1755 | }, 1756 | "require": { 1757 | "php": ">=5.6", 1758 | "sebastian/recursion-context": "~1.0" 1759 | }, 1760 | "require-dev": { 1761 | "phpunit/phpunit": "~5" 1762 | }, 1763 | "type": "library", 1764 | "extra": { 1765 | "branch-alias": { 1766 | "dev-master": "1.0.x-dev" 1767 | } 1768 | }, 1769 | "autoload": { 1770 | "classmap": [ 1771 | "src/" 1772 | ] 1773 | }, 1774 | "notification-url": "https://packagist.org/downloads/", 1775 | "license": [ 1776 | "BSD-3-Clause" 1777 | ], 1778 | "authors": [ 1779 | { 1780 | "name": "Sebastian Bergmann", 1781 | "email": "sebastian@phpunit.de" 1782 | } 1783 | ], 1784 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 1785 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 1786 | "time": "2016-01-28T13:25:10+00:00" 1787 | }, 1788 | { 1789 | "name": "sebastian/recursion-context", 1790 | "version": "1.0.5", 1791 | "source": { 1792 | "type": "git", 1793 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 1794 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7" 1795 | }, 1796 | "dist": { 1797 | "type": "zip", 1798 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 1799 | "reference": "b19cc3298482a335a95f3016d2f8a6950f0fbcd7", 1800 | "shasum": "" 1801 | }, 1802 | "require": { 1803 | "php": ">=5.3.3" 1804 | }, 1805 | "require-dev": { 1806 | "phpunit/phpunit": "~4.4" 1807 | }, 1808 | "type": "library", 1809 | "extra": { 1810 | "branch-alias": { 1811 | "dev-master": "1.0.x-dev" 1812 | } 1813 | }, 1814 | "autoload": { 1815 | "classmap": [ 1816 | "src/" 1817 | ] 1818 | }, 1819 | "notification-url": "https://packagist.org/downloads/", 1820 | "license": [ 1821 | "BSD-3-Clause" 1822 | ], 1823 | "authors": [ 1824 | { 1825 | "name": "Jeff Welch", 1826 | "email": "whatthejeff@gmail.com" 1827 | }, 1828 | { 1829 | "name": "Sebastian Bergmann", 1830 | "email": "sebastian@phpunit.de" 1831 | }, 1832 | { 1833 | "name": "Adam Harvey", 1834 | "email": "aharvey@php.net" 1835 | } 1836 | ], 1837 | "description": "Provides functionality to recursively process PHP variables", 1838 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 1839 | "time": "2016-10-03T07:41:43+00:00" 1840 | }, 1841 | { 1842 | "name": "sebastian/resource-operations", 1843 | "version": "1.0.0", 1844 | "source": { 1845 | "type": "git", 1846 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 1847 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 1848 | }, 1849 | "dist": { 1850 | "type": "zip", 1851 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1852 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 1853 | "shasum": "" 1854 | }, 1855 | "require": { 1856 | "php": ">=5.6.0" 1857 | }, 1858 | "type": "library", 1859 | "extra": { 1860 | "branch-alias": { 1861 | "dev-master": "1.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": "Sebastian Bergmann", 1876 | "email": "sebastian@phpunit.de" 1877 | } 1878 | ], 1879 | "description": "Provides a list of PHP built-in functions that operate on resources", 1880 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 1881 | "time": "2015-07-28T20:34:47+00:00" 1882 | }, 1883 | { 1884 | "name": "sebastian/version", 1885 | "version": "2.0.1", 1886 | "source": { 1887 | "type": "git", 1888 | "url": "https://github.com/sebastianbergmann/version.git", 1889 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 1890 | }, 1891 | "dist": { 1892 | "type": "zip", 1893 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 1894 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 1895 | "shasum": "" 1896 | }, 1897 | "require": { 1898 | "php": ">=5.6" 1899 | }, 1900 | "type": "library", 1901 | "extra": { 1902 | "branch-alias": { 1903 | "dev-master": "2.0.x-dev" 1904 | } 1905 | }, 1906 | "autoload": { 1907 | "classmap": [ 1908 | "src/" 1909 | ] 1910 | }, 1911 | "notification-url": "https://packagist.org/downloads/", 1912 | "license": [ 1913 | "BSD-3-Clause" 1914 | ], 1915 | "authors": [ 1916 | { 1917 | "name": "Sebastian Bergmann", 1918 | "email": "sebastian@phpunit.de", 1919 | "role": "lead" 1920 | } 1921 | ], 1922 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 1923 | "homepage": "https://github.com/sebastianbergmann/version", 1924 | "time": "2016-10-03T07:35:21+00:00" 1925 | }, 1926 | { 1927 | "name": "symfony/yaml", 1928 | "version": "v3.2.6", 1929 | "source": { 1930 | "type": "git", 1931 | "url": "https://github.com/symfony/yaml.git", 1932 | "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a" 1933 | }, 1934 | "dist": { 1935 | "type": "zip", 1936 | "url": "https://api.github.com/repos/symfony/yaml/zipball/093e416ad096355149e265ea2e4cc1f9ee40ab1a", 1937 | "reference": "093e416ad096355149e265ea2e4cc1f9ee40ab1a", 1938 | "shasum": "" 1939 | }, 1940 | "require": { 1941 | "php": ">=5.5.9" 1942 | }, 1943 | "require-dev": { 1944 | "symfony/console": "~2.8|~3.0" 1945 | }, 1946 | "suggest": { 1947 | "symfony/console": "For validating YAML files using the lint command" 1948 | }, 1949 | "type": "library", 1950 | "extra": { 1951 | "branch-alias": { 1952 | "dev-master": "3.2-dev" 1953 | } 1954 | }, 1955 | "autoload": { 1956 | "psr-4": { 1957 | "Symfony\\Component\\Yaml\\": "" 1958 | }, 1959 | "exclude-from-classmap": [ 1960 | "/Tests/" 1961 | ] 1962 | }, 1963 | "notification-url": "https://packagist.org/downloads/", 1964 | "license": [ 1965 | "MIT" 1966 | ], 1967 | "authors": [ 1968 | { 1969 | "name": "Fabien Potencier", 1970 | "email": "fabien@symfony.com" 1971 | }, 1972 | { 1973 | "name": "Symfony Community", 1974 | "homepage": "https://symfony.com/contributors" 1975 | } 1976 | ], 1977 | "description": "Symfony Yaml Component", 1978 | "homepage": "https://symfony.com", 1979 | "time": "2017-03-07T16:47:02+00:00" 1980 | }, 1981 | { 1982 | "name": "webmozart/assert", 1983 | "version": "1.2.0", 1984 | "source": { 1985 | "type": "git", 1986 | "url": "https://github.com/webmozart/assert.git", 1987 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" 1988 | }, 1989 | "dist": { 1990 | "type": "zip", 1991 | "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", 1992 | "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", 1993 | "shasum": "" 1994 | }, 1995 | "require": { 1996 | "php": "^5.3.3 || ^7.0" 1997 | }, 1998 | "require-dev": { 1999 | "phpunit/phpunit": "^4.6", 2000 | "sebastian/version": "^1.0.1" 2001 | }, 2002 | "type": "library", 2003 | "extra": { 2004 | "branch-alias": { 2005 | "dev-master": "1.3-dev" 2006 | } 2007 | }, 2008 | "autoload": { 2009 | "psr-4": { 2010 | "Webmozart\\Assert\\": "src/" 2011 | } 2012 | }, 2013 | "notification-url": "https://packagist.org/downloads/", 2014 | "license": [ 2015 | "MIT" 2016 | ], 2017 | "authors": [ 2018 | { 2019 | "name": "Bernhard Schussek", 2020 | "email": "bschussek@gmail.com" 2021 | } 2022 | ], 2023 | "description": "Assertions to validate method input/output with nice error messages.", 2024 | "keywords": [ 2025 | "assert", 2026 | "check", 2027 | "validate" 2028 | ], 2029 | "time": "2016-11-23T20:04:58+00:00" 2030 | } 2031 | ], 2032 | "aliases": [], 2033 | "minimum-stability": "stable", 2034 | "stability-flags": [], 2035 | "prefer-stable": false, 2036 | "prefer-lowest": false, 2037 | "platform": [], 2038 | "platform-dev": [] 2039 | } 2040 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | ./tests/ 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/MonitorsSchedule.php: -------------------------------------------------------------------------------- 1 | toDateString(); 21 | 22 | $events = new Collection($schedule->events()); 23 | 24 | $events->each(function (Event $event) use ($date) { 25 | 26 | $command = substr($event->command, strpos($event->command, 'artisan') + strlen('artisan') + 1); 27 | 28 | $filename = str_slug($command) . "-$date.log"; 29 | 30 | $path = storage_path("logs/$filename"); 31 | 32 | $event->sendOutputTo($path)->after(function () use ($command, $path) { 33 | 34 | if (file_exists($path) && ($output = file_get_contents($path))) { 35 | 36 | DB::table('scheduled_events')->insert([ 37 | 'command' => $command, 38 | 'output' => $output, 39 | 'logged_at' => Carbon::now(), 40 | ]); 41 | 42 | unlink($path); 43 | } 44 | }); 45 | }); 46 | } 47 | } -------------------------------------------------------------------------------- /src/ScheduleMonitorServiceProvider.php: -------------------------------------------------------------------------------- 1 | loadMigrationsFrom(__DIR__ . '/migrations'); 17 | } 18 | } -------------------------------------------------------------------------------- /src/migrations/2016_05_31_124502_create_scheduled_events_table.php: -------------------------------------------------------------------------------- 1 | increments('id'); 17 | $table->string('command')->index(); 18 | $table->text('output'); 19 | $table->dateTime('logged_at'); 20 | }); 21 | } 22 | 23 | /** 24 | * Reverse the migrations. 25 | * 26 | * @return void 27 | */ 28 | public function down() 29 | { 30 | Schema::dropIfExists('scheduled_events'); 31 | } 32 | } 33 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 |