├── LICENSE.md ├── composer.json ├── composer.lock ├── readme.md └── src ├── EloquentOrderableServiceProvider.php ├── Events ├── OrderableModelCreating.php ├── OrderableModelDeleted.php ├── OrderableModelUpdated.php └── OrderableModelUpdating.php ├── Interfaces └── OrderableInterface.php ├── Listeners ├── UpdateOrderToFitUpdatedOrderableModel.php ├── UpdateOrderToFitUpdatingOrderableModel.php ├── UpdateOrdersToFitDeletedModel.php └── UpdateOrdersToFitNewOrderableModel.php └── Traits ├── Orderable.php ├── OrderableWithinGroup.php ├── PivotOrderable.php └── SharedOrderableMethods.php /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Philip Brechmann 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. -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "flyhjaelp/laravel-eloquent-orderable", 3 | "description": "Make your Eloquent models orderable by using the orderable trait on them. Which automatically updates the order of all other models within it's group when the order of a current model is updated or a new model insereted or deleted.", 4 | "type": "library", 5 | "license": "MIT", 6 | "authors": [ 7 | { 8 | "name": "Philip Brechmann", 9 | "email": "pb@milkwood.dk" 10 | } 11 | ], 12 | "require": {}, 13 | "require-dev": { 14 | "phpunit/phpunit": "^8.1", 15 | "orchestra/testbench": "^3.8" 16 | }, 17 | "autoload": { 18 | "psr-4": { 19 | "Flyhjaelp\\LaravelEloquentOrderable\\": "src/" 20 | } 21 | }, 22 | "autoload-dev": { 23 | "psr-4": { 24 | "Flyhjaelp\\LaravelEloquentOrderable\\Tests\\": "tests/" 25 | } 26 | }, 27 | "extra": { 28 | "laravel": { 29 | "providers": [ 30 | "Flyhjaelp\\LaravelEloquentOrderable\\EloquentOrderableServiceProvider" 31 | ] 32 | } 33 | } 34 | } -------------------------------------------------------------------------------- /composer.lock: -------------------------------------------------------------------------------- 1 | { 2 | "_readme": [ 3 | "This file locks the dependencies of your project to a known state", 4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", 5 | "This file is @generated automatically" 6 | ], 7 | "content-hash": "bf695502e39d8be96eb467b0e135b825", 8 | "packages": [], 9 | "packages-dev": [ 10 | { 11 | "name": "doctrine/inflector", 12 | "version": "v1.3.0", 13 | "source": { 14 | "type": "git", 15 | "url": "https://github.com/doctrine/inflector.git", 16 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" 17 | }, 18 | "dist": { 19 | "type": "zip", 20 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", 21 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", 22 | "shasum": "" 23 | }, 24 | "require": { 25 | "php": "^7.1" 26 | }, 27 | "require-dev": { 28 | "phpunit/phpunit": "^6.2" 29 | }, 30 | "type": "library", 31 | "extra": { 32 | "branch-alias": { 33 | "dev-master": "1.3.x-dev" 34 | } 35 | }, 36 | "autoload": { 37 | "psr-4": { 38 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 39 | } 40 | }, 41 | "notification-url": "https://packagist.org/downloads/", 42 | "license": [ 43 | "MIT" 44 | ], 45 | "authors": [ 46 | { 47 | "name": "Roman Borschel", 48 | "email": "roman@code-factory.org" 49 | }, 50 | { 51 | "name": "Benjamin Eberlei", 52 | "email": "kontakt@beberlei.de" 53 | }, 54 | { 55 | "name": "Guilherme Blanco", 56 | "email": "guilhermeblanco@gmail.com" 57 | }, 58 | { 59 | "name": "Jonathan Wage", 60 | "email": "jonwage@gmail.com" 61 | }, 62 | { 63 | "name": "Johannes Schmitt", 64 | "email": "schmittjoh@gmail.com" 65 | } 66 | ], 67 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 68 | "homepage": "http://www.doctrine-project.org", 69 | "keywords": [ 70 | "inflection", 71 | "pluralize", 72 | "singularize", 73 | "string" 74 | ], 75 | "time": "2018-01-09T20:05:19+00:00" 76 | }, 77 | { 78 | "name": "doctrine/instantiator", 79 | "version": "1.2.0", 80 | "source": { 81 | "type": "git", 82 | "url": "https://github.com/doctrine/instantiator.git", 83 | "reference": "a2c590166b2133a4633738648b6b064edae0814a" 84 | }, 85 | "dist": { 86 | "type": "zip", 87 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", 88 | "reference": "a2c590166b2133a4633738648b6b064edae0814a", 89 | "shasum": "" 90 | }, 91 | "require": { 92 | "php": "^7.1" 93 | }, 94 | "require-dev": { 95 | "doctrine/coding-standard": "^6.0", 96 | "ext-pdo": "*", 97 | "ext-phar": "*", 98 | "phpbench/phpbench": "^0.13", 99 | "phpstan/phpstan-phpunit": "^0.11", 100 | "phpstan/phpstan-shim": "^0.11", 101 | "phpunit/phpunit": "^7.0" 102 | }, 103 | "type": "library", 104 | "extra": { 105 | "branch-alias": { 106 | "dev-master": "1.2.x-dev" 107 | } 108 | }, 109 | "autoload": { 110 | "psr-4": { 111 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 112 | } 113 | }, 114 | "notification-url": "https://packagist.org/downloads/", 115 | "license": [ 116 | "MIT" 117 | ], 118 | "authors": [ 119 | { 120 | "name": "Marco Pivetta", 121 | "email": "ocramius@gmail.com", 122 | "homepage": "http://ocramius.github.com/" 123 | } 124 | ], 125 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 126 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 127 | "keywords": [ 128 | "constructor", 129 | "instantiate" 130 | ], 131 | "time": "2019-03-17T17:37:11+00:00" 132 | }, 133 | { 134 | "name": "doctrine/lexer", 135 | "version": "v1.0.1", 136 | "source": { 137 | "type": "git", 138 | "url": "https://github.com/doctrine/lexer.git", 139 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c" 140 | }, 141 | "dist": { 142 | "type": "zip", 143 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/83893c552fd2045dd78aef794c31e694c37c0b8c", 144 | "reference": "83893c552fd2045dd78aef794c31e694c37c0b8c", 145 | "shasum": "" 146 | }, 147 | "require": { 148 | "php": ">=5.3.2" 149 | }, 150 | "type": "library", 151 | "extra": { 152 | "branch-alias": { 153 | "dev-master": "1.0.x-dev" 154 | } 155 | }, 156 | "autoload": { 157 | "psr-0": { 158 | "Doctrine\\Common\\Lexer\\": "lib/" 159 | } 160 | }, 161 | "notification-url": "https://packagist.org/downloads/", 162 | "license": [ 163 | "MIT" 164 | ], 165 | "authors": [ 166 | { 167 | "name": "Roman Borschel", 168 | "email": "roman@code-factory.org" 169 | }, 170 | { 171 | "name": "Guilherme Blanco", 172 | "email": "guilhermeblanco@gmail.com" 173 | }, 174 | { 175 | "name": "Johannes Schmitt", 176 | "email": "schmittjoh@gmail.com" 177 | } 178 | ], 179 | "description": "Base library for a lexer that can be used in Top-Down, Recursive Descent Parsers.", 180 | "homepage": "http://www.doctrine-project.org", 181 | "keywords": [ 182 | "lexer", 183 | "parser" 184 | ], 185 | "time": "2014-09-09T13:34:57+00:00" 186 | }, 187 | { 188 | "name": "dragonmantank/cron-expression", 189 | "version": "v2.3.0", 190 | "source": { 191 | "type": "git", 192 | "url": "https://github.com/dragonmantank/cron-expression.git", 193 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" 194 | }, 195 | "dist": { 196 | "type": "zip", 197 | "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", 198 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", 199 | "shasum": "" 200 | }, 201 | "require": { 202 | "php": "^7.0" 203 | }, 204 | "require-dev": { 205 | "phpunit/phpunit": "^6.4|^7.0" 206 | }, 207 | "type": "library", 208 | "extra": { 209 | "branch-alias": { 210 | "dev-master": "2.3-dev" 211 | } 212 | }, 213 | "autoload": { 214 | "psr-4": { 215 | "Cron\\": "src/Cron/" 216 | } 217 | }, 218 | "notification-url": "https://packagist.org/downloads/", 219 | "license": [ 220 | "MIT" 221 | ], 222 | "authors": [ 223 | { 224 | "name": "Michael Dowling", 225 | "email": "mtdowling@gmail.com", 226 | "homepage": "https://github.com/mtdowling" 227 | }, 228 | { 229 | "name": "Chris Tankersley", 230 | "email": "chris@ctankersley.com", 231 | "homepage": "https://github.com/dragonmantank" 232 | } 233 | ], 234 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", 235 | "keywords": [ 236 | "cron", 237 | "schedule" 238 | ], 239 | "time": "2019-03-31T00:38:28+00:00" 240 | }, 241 | { 242 | "name": "egulias/email-validator", 243 | "version": "2.1.7", 244 | "source": { 245 | "type": "git", 246 | "url": "https://github.com/egulias/EmailValidator.git", 247 | "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" 248 | }, 249 | "dist": { 250 | "type": "zip", 251 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", 252 | "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", 253 | "shasum": "" 254 | }, 255 | "require": { 256 | "doctrine/lexer": "^1.0.1", 257 | "php": ">= 5.5" 258 | }, 259 | "require-dev": { 260 | "dominicsayers/isemail": "dev-master", 261 | "phpunit/phpunit": "^4.8.35||^5.7||^6.0", 262 | "satooshi/php-coveralls": "^1.0.1" 263 | }, 264 | "suggest": { 265 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 266 | }, 267 | "type": "library", 268 | "extra": { 269 | "branch-alias": { 270 | "dev-master": "2.0.x-dev" 271 | } 272 | }, 273 | "autoload": { 274 | "psr-4": { 275 | "Egulias\\EmailValidator\\": "EmailValidator" 276 | } 277 | }, 278 | "notification-url": "https://packagist.org/downloads/", 279 | "license": [ 280 | "MIT" 281 | ], 282 | "authors": [ 283 | { 284 | "name": "Eduardo Gulias Davis" 285 | } 286 | ], 287 | "description": "A library for validating emails against several RFCs", 288 | "homepage": "https://github.com/egulias/EmailValidator", 289 | "keywords": [ 290 | "email", 291 | "emailvalidation", 292 | "emailvalidator", 293 | "validation", 294 | "validator" 295 | ], 296 | "time": "2018-12-04T22:38:24+00:00" 297 | }, 298 | { 299 | "name": "erusev/parsedown", 300 | "version": "1.7.3", 301 | "source": { 302 | "type": "git", 303 | "url": "https://github.com/erusev/parsedown.git", 304 | "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" 305 | }, 306 | "dist": { 307 | "type": "zip", 308 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", 309 | "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", 310 | "shasum": "" 311 | }, 312 | "require": { 313 | "ext-mbstring": "*", 314 | "php": ">=5.3.0" 315 | }, 316 | "require-dev": { 317 | "phpunit/phpunit": "^4.8.35" 318 | }, 319 | "type": "library", 320 | "autoload": { 321 | "psr-0": { 322 | "Parsedown": "" 323 | } 324 | }, 325 | "notification-url": "https://packagist.org/downloads/", 326 | "license": [ 327 | "MIT" 328 | ], 329 | "authors": [ 330 | { 331 | "name": "Emanuil Rusev", 332 | "email": "hello@erusev.com", 333 | "homepage": "http://erusev.com" 334 | } 335 | ], 336 | "description": "Parser for Markdown.", 337 | "homepage": "http://parsedown.org", 338 | "keywords": [ 339 | "markdown", 340 | "parser" 341 | ], 342 | "time": "2019-03-17T18:48:37+00:00" 343 | }, 344 | { 345 | "name": "fzaninotto/faker", 346 | "version": "v1.8.0", 347 | "source": { 348 | "type": "git", 349 | "url": "https://github.com/fzaninotto/Faker.git", 350 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" 351 | }, 352 | "dist": { 353 | "type": "zip", 354 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", 355 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", 356 | "shasum": "" 357 | }, 358 | "require": { 359 | "php": "^5.3.3 || ^7.0" 360 | }, 361 | "require-dev": { 362 | "ext-intl": "*", 363 | "phpunit/phpunit": "^4.8.35 || ^5.7", 364 | "squizlabs/php_codesniffer": "^1.5" 365 | }, 366 | "type": "library", 367 | "extra": { 368 | "branch-alias": { 369 | "dev-master": "1.8-dev" 370 | } 371 | }, 372 | "autoload": { 373 | "psr-4": { 374 | "Faker\\": "src/Faker/" 375 | } 376 | }, 377 | "notification-url": "https://packagist.org/downloads/", 378 | "license": [ 379 | "MIT" 380 | ], 381 | "authors": [ 382 | { 383 | "name": "François Zaninotto" 384 | } 385 | ], 386 | "description": "Faker is a PHP library that generates fake data for you.", 387 | "keywords": [ 388 | "data", 389 | "faker", 390 | "fixtures" 391 | ], 392 | "time": "2018-07-12T10:23:15+00:00" 393 | }, 394 | { 395 | "name": "hamcrest/hamcrest-php", 396 | "version": "v2.0.0", 397 | "source": { 398 | "type": "git", 399 | "url": "https://github.com/hamcrest/hamcrest-php.git", 400 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" 401 | }, 402 | "dist": { 403 | "type": "zip", 404 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", 405 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", 406 | "shasum": "" 407 | }, 408 | "require": { 409 | "php": "^5.3|^7.0" 410 | }, 411 | "replace": { 412 | "cordoval/hamcrest-php": "*", 413 | "davedevelopment/hamcrest-php": "*", 414 | "kodova/hamcrest-php": "*" 415 | }, 416 | "require-dev": { 417 | "phpunit/php-file-iterator": "1.3.3", 418 | "phpunit/phpunit": "~4.0", 419 | "satooshi/php-coveralls": "^1.0" 420 | }, 421 | "type": "library", 422 | "extra": { 423 | "branch-alias": { 424 | "dev-master": "2.0-dev" 425 | } 426 | }, 427 | "autoload": { 428 | "classmap": [ 429 | "hamcrest" 430 | ] 431 | }, 432 | "notification-url": "https://packagist.org/downloads/", 433 | "license": [ 434 | "BSD" 435 | ], 436 | "description": "This is the PHP port of Hamcrest Matchers", 437 | "keywords": [ 438 | "test" 439 | ], 440 | "time": "2016-01-20T08:20:44+00:00" 441 | }, 442 | { 443 | "name": "laravel/framework", 444 | "version": "v5.8.10", 445 | "source": { 446 | "type": "git", 447 | "url": "https://github.com/laravel/framework.git", 448 | "reference": "505325b4577968750e622d7a5a271cf8785a7a1a" 449 | }, 450 | "dist": { 451 | "type": "zip", 452 | "url": "https://api.github.com/repos/laravel/framework/zipball/505325b4577968750e622d7a5a271cf8785a7a1a", 453 | "reference": "505325b4577968750e622d7a5a271cf8785a7a1a", 454 | "shasum": "" 455 | }, 456 | "require": { 457 | "doctrine/inflector": "^1.1", 458 | "dragonmantank/cron-expression": "^2.0", 459 | "egulias/email-validator": "^2.0", 460 | "erusev/parsedown": "^1.7", 461 | "ext-json": "*", 462 | "ext-mbstring": "*", 463 | "ext-openssl": "*", 464 | "league/flysystem": "^1.0.8", 465 | "monolog/monolog": "^1.12", 466 | "nesbot/carbon": "^1.26.3 || ^2.0", 467 | "opis/closure": "^3.1", 468 | "php": "^7.1.3", 469 | "psr/container": "^1.0", 470 | "psr/simple-cache": "^1.0", 471 | "ramsey/uuid": "^3.7", 472 | "swiftmailer/swiftmailer": "^6.0", 473 | "symfony/console": "^4.2", 474 | "symfony/debug": "^4.2", 475 | "symfony/finder": "^4.2", 476 | "symfony/http-foundation": "^4.2", 477 | "symfony/http-kernel": "^4.2", 478 | "symfony/process": "^4.2", 479 | "symfony/routing": "^4.2", 480 | "symfony/var-dumper": "^4.2", 481 | "tijsverkoyen/css-to-inline-styles": "^2.2.1", 482 | "vlucas/phpdotenv": "^3.3" 483 | }, 484 | "conflict": { 485 | "tightenco/collect": "<5.5.33" 486 | }, 487 | "replace": { 488 | "illuminate/auth": "self.version", 489 | "illuminate/broadcasting": "self.version", 490 | "illuminate/bus": "self.version", 491 | "illuminate/cache": "self.version", 492 | "illuminate/config": "self.version", 493 | "illuminate/console": "self.version", 494 | "illuminate/container": "self.version", 495 | "illuminate/contracts": "self.version", 496 | "illuminate/cookie": "self.version", 497 | "illuminate/database": "self.version", 498 | "illuminate/encryption": "self.version", 499 | "illuminate/events": "self.version", 500 | "illuminate/filesystem": "self.version", 501 | "illuminate/hashing": "self.version", 502 | "illuminate/http": "self.version", 503 | "illuminate/log": "self.version", 504 | "illuminate/mail": "self.version", 505 | "illuminate/notifications": "self.version", 506 | "illuminate/pagination": "self.version", 507 | "illuminate/pipeline": "self.version", 508 | "illuminate/queue": "self.version", 509 | "illuminate/redis": "self.version", 510 | "illuminate/routing": "self.version", 511 | "illuminate/session": "self.version", 512 | "illuminate/support": "self.version", 513 | "illuminate/translation": "self.version", 514 | "illuminate/validation": "self.version", 515 | "illuminate/view": "self.version" 516 | }, 517 | "require-dev": { 518 | "aws/aws-sdk-php": "^3.0", 519 | "doctrine/dbal": "^2.6", 520 | "filp/whoops": "^2.1.4", 521 | "guzzlehttp/guzzle": "^6.3", 522 | "league/flysystem-cached-adapter": "^1.0", 523 | "mockery/mockery": "^1.0", 524 | "moontoast/math": "^1.1", 525 | "orchestra/testbench-core": "3.8.*", 526 | "pda/pheanstalk": "^4.0", 527 | "phpunit/phpunit": "^7.5|^8.0", 528 | "predis/predis": "^1.1.1", 529 | "symfony/css-selector": "^4.2", 530 | "symfony/dom-crawler": "^4.2", 531 | "true/punycode": "^2.1" 532 | }, 533 | "suggest": { 534 | "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", 535 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", 536 | "ext-pcntl": "Required to use all features of the queue worker.", 537 | "ext-posix": "Required to use all features of the queue worker.", 538 | "filp/whoops": "Required for friendly error pages in development (^2.1.4).", 539 | "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", 540 | "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", 541 | "laravel/tinker": "Required to use the tinker console command (^1.0).", 542 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", 543 | "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", 544 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", 545 | "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", 546 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 547 | "nexmo/client": "Required to use the Nexmo transport (^1.0).", 548 | "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", 549 | "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", 550 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", 551 | "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", 552 | "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", 553 | "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", 554 | "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." 555 | }, 556 | "type": "library", 557 | "extra": { 558 | "branch-alias": { 559 | "dev-master": "5.8-dev" 560 | } 561 | }, 562 | "autoload": { 563 | "files": [ 564 | "src/Illuminate/Foundation/helpers.php", 565 | "src/Illuminate/Support/helpers.php" 566 | ], 567 | "psr-4": { 568 | "Illuminate\\": "src/Illuminate/" 569 | } 570 | }, 571 | "notification-url": "https://packagist.org/downloads/", 572 | "license": [ 573 | "MIT" 574 | ], 575 | "authors": [ 576 | { 577 | "name": "Taylor Otwell", 578 | "email": "taylor@laravel.com" 579 | } 580 | ], 581 | "description": "The Laravel Framework.", 582 | "homepage": "https://laravel.com", 583 | "keywords": [ 584 | "framework", 585 | "laravel" 586 | ], 587 | "time": "2019-04-04T13:39:49+00:00" 588 | }, 589 | { 590 | "name": "league/flysystem", 591 | "version": "1.0.51", 592 | "source": { 593 | "type": "git", 594 | "url": "https://github.com/thephpleague/flysystem.git", 595 | "reference": "755ba7bf3fb9031e6581d091db84d78275874396" 596 | }, 597 | "dist": { 598 | "type": "zip", 599 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/755ba7bf3fb9031e6581d091db84d78275874396", 600 | "reference": "755ba7bf3fb9031e6581d091db84d78275874396", 601 | "shasum": "" 602 | }, 603 | "require": { 604 | "ext-fileinfo": "*", 605 | "php": ">=5.5.9" 606 | }, 607 | "conflict": { 608 | "league/flysystem-sftp": "<1.0.6" 609 | }, 610 | "require-dev": { 611 | "phpspec/phpspec": "^3.4", 612 | "phpunit/phpunit": "^5.7.10" 613 | }, 614 | "suggest": { 615 | "ext-fileinfo": "Required for MimeType", 616 | "ext-ftp": "Allows you to use FTP server storage", 617 | "ext-openssl": "Allows you to use FTPS server storage", 618 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 619 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 620 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 621 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 622 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 623 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 624 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 625 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 626 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 627 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 628 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 629 | }, 630 | "type": "library", 631 | "extra": { 632 | "branch-alias": { 633 | "dev-master": "1.1-dev" 634 | } 635 | }, 636 | "autoload": { 637 | "psr-4": { 638 | "League\\Flysystem\\": "src/" 639 | } 640 | }, 641 | "notification-url": "https://packagist.org/downloads/", 642 | "license": [ 643 | "MIT" 644 | ], 645 | "authors": [ 646 | { 647 | "name": "Frank de Jonge", 648 | "email": "info@frenky.net" 649 | } 650 | ], 651 | "description": "Filesystem abstraction: Many filesystems, one API.", 652 | "keywords": [ 653 | "Cloud Files", 654 | "WebDAV", 655 | "abstraction", 656 | "aws", 657 | "cloud", 658 | "copy.com", 659 | "dropbox", 660 | "file systems", 661 | "files", 662 | "filesystem", 663 | "filesystems", 664 | "ftp", 665 | "rackspace", 666 | "remote", 667 | "s3", 668 | "sftp", 669 | "storage" 670 | ], 671 | "time": "2019-03-30T13:22:34+00:00" 672 | }, 673 | { 674 | "name": "mockery/mockery", 675 | "version": "1.2.2", 676 | "source": { 677 | "type": "git", 678 | "url": "https://github.com/mockery/mockery.git", 679 | "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2" 680 | }, 681 | "dist": { 682 | "type": "zip", 683 | "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", 684 | "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", 685 | "shasum": "" 686 | }, 687 | "require": { 688 | "hamcrest/hamcrest-php": "~2.0", 689 | "lib-pcre": ">=7.0", 690 | "php": ">=5.6.0" 691 | }, 692 | "require-dev": { 693 | "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" 694 | }, 695 | "type": "library", 696 | "extra": { 697 | "branch-alias": { 698 | "dev-master": "1.0.x-dev" 699 | } 700 | }, 701 | "autoload": { 702 | "psr-0": { 703 | "Mockery": "library/" 704 | } 705 | }, 706 | "notification-url": "https://packagist.org/downloads/", 707 | "license": [ 708 | "BSD-3-Clause" 709 | ], 710 | "authors": [ 711 | { 712 | "name": "Pádraic Brady", 713 | "email": "padraic.brady@gmail.com", 714 | "homepage": "http://blog.astrumfutura.com" 715 | }, 716 | { 717 | "name": "Dave Marshall", 718 | "email": "dave.marshall@atstsolutions.co.uk", 719 | "homepage": "http://davedevelopment.co.uk" 720 | } 721 | ], 722 | "description": "Mockery is a simple yet flexible PHP mock object framework", 723 | "homepage": "https://github.com/mockery/mockery", 724 | "keywords": [ 725 | "BDD", 726 | "TDD", 727 | "library", 728 | "mock", 729 | "mock objects", 730 | "mockery", 731 | "stub", 732 | "test", 733 | "test double", 734 | "testing" 735 | ], 736 | "time": "2019-02-13T09:37:52+00:00" 737 | }, 738 | { 739 | "name": "monolog/monolog", 740 | "version": "1.24.0", 741 | "source": { 742 | "type": "git", 743 | "url": "https://github.com/Seldaek/monolog.git", 744 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" 745 | }, 746 | "dist": { 747 | "type": "zip", 748 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", 749 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", 750 | "shasum": "" 751 | }, 752 | "require": { 753 | "php": ">=5.3.0", 754 | "psr/log": "~1.0" 755 | }, 756 | "provide": { 757 | "psr/log-implementation": "1.0.0" 758 | }, 759 | "require-dev": { 760 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 761 | "doctrine/couchdb": "~1.0@dev", 762 | "graylog2/gelf-php": "~1.0", 763 | "jakub-onderka/php-parallel-lint": "0.9", 764 | "php-amqplib/php-amqplib": "~2.4", 765 | "php-console/php-console": "^3.1.3", 766 | "phpunit/phpunit": "~4.5", 767 | "phpunit/phpunit-mock-objects": "2.3.0", 768 | "ruflin/elastica": ">=0.90 <3.0", 769 | "sentry/sentry": "^0.13", 770 | "swiftmailer/swiftmailer": "^5.3|^6.0" 771 | }, 772 | "suggest": { 773 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 774 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 775 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 776 | "ext-mongo": "Allow sending log messages to a MongoDB server", 777 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 778 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", 779 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 780 | "php-console/php-console": "Allow sending log messages to Google Chrome", 781 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 782 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 783 | "sentry/sentry": "Allow sending log messages to a Sentry server" 784 | }, 785 | "type": "library", 786 | "extra": { 787 | "branch-alias": { 788 | "dev-master": "2.0.x-dev" 789 | } 790 | }, 791 | "autoload": { 792 | "psr-4": { 793 | "Monolog\\": "src/Monolog" 794 | } 795 | }, 796 | "notification-url": "https://packagist.org/downloads/", 797 | "license": [ 798 | "MIT" 799 | ], 800 | "authors": [ 801 | { 802 | "name": "Jordi Boggiano", 803 | "email": "j.boggiano@seld.be", 804 | "homepage": "http://seld.be" 805 | } 806 | ], 807 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 808 | "homepage": "http://github.com/Seldaek/monolog", 809 | "keywords": [ 810 | "log", 811 | "logging", 812 | "psr-3" 813 | ], 814 | "time": "2018-11-05T09:00:11+00:00" 815 | }, 816 | { 817 | "name": "myclabs/deep-copy", 818 | "version": "1.9.0", 819 | "source": { 820 | "type": "git", 821 | "url": "https://github.com/myclabs/DeepCopy.git", 822 | "reference": "78af75148f9fdd34ea727c8b529a9b4a8f7b740c" 823 | }, 824 | "dist": { 825 | "type": "zip", 826 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/78af75148f9fdd34ea727c8b529a9b4a8f7b740c", 827 | "reference": "78af75148f9fdd34ea727c8b529a9b4a8f7b740c", 828 | "shasum": "" 829 | }, 830 | "require": { 831 | "php": "^7.2" 832 | }, 833 | "replace": { 834 | "myclabs/deep-copy": "self.version" 835 | }, 836 | "require-dev": { 837 | "doctrine/collections": "^1.0", 838 | "doctrine/common": "^2.6", 839 | "phpstan/phpstan": "^0.9.2", 840 | "phpstan/phpstan-phpunit": "^0.9.4", 841 | "phpunit/phpunit": "^7.1" 842 | }, 843 | "type": "library", 844 | "autoload": { 845 | "psr-4": { 846 | "DeepCopy\\": "src/DeepCopy/" 847 | }, 848 | "files": [ 849 | "src/DeepCopy/deep_copy.php" 850 | ] 851 | }, 852 | "notification-url": "https://packagist.org/downloads/", 853 | "license": [ 854 | "MIT" 855 | ], 856 | "description": "Create deep copies (clones) of your objects", 857 | "keywords": [ 858 | "clone", 859 | "copy", 860 | "duplicate", 861 | "object", 862 | "object graph" 863 | ], 864 | "time": "2018-10-30T00:14:44+00:00" 865 | }, 866 | { 867 | "name": "nesbot/carbon", 868 | "version": "2.16.3", 869 | "source": { 870 | "type": "git", 871 | "url": "https://github.com/briannesbitt/Carbon.git", 872 | "reference": "373d9f0d58651af366435148c39beb702c2b7ef4" 873 | }, 874 | "dist": { 875 | "type": "zip", 876 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/373d9f0d58651af366435148c39beb702c2b7ef4", 877 | "reference": "373d9f0d58651af366435148c39beb702c2b7ef4", 878 | "shasum": "" 879 | }, 880 | "require": { 881 | "ext-json": "*", 882 | "php": "^7.1.8 || ^8.0", 883 | "symfony/translation": "^3.4 || ^4.0" 884 | }, 885 | "require-dev": { 886 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", 887 | "kylekatarnls/multi-tester": "^0.1", 888 | "phpmd/phpmd": "^2.6", 889 | "phpstan/phpstan": "^0.10.8", 890 | "phpunit/phpunit": "^7.5 || ^8.0", 891 | "squizlabs/php_codesniffer": "^3.4" 892 | }, 893 | "type": "library", 894 | "extra": { 895 | "laravel": { 896 | "providers": [ 897 | "Carbon\\Laravel\\ServiceProvider" 898 | ] 899 | } 900 | }, 901 | "autoload": { 902 | "psr-4": { 903 | "Carbon\\": "src/Carbon/" 904 | } 905 | }, 906 | "notification-url": "https://packagist.org/downloads/", 907 | "license": [ 908 | "MIT" 909 | ], 910 | "authors": [ 911 | { 912 | "name": "Brian Nesbitt", 913 | "email": "brian@nesbot.com", 914 | "homepage": "http://nesbot.com" 915 | } 916 | ], 917 | "description": "A simple API extension for DateTime.", 918 | "homepage": "http://carbon.nesbot.com", 919 | "keywords": [ 920 | "date", 921 | "datetime", 922 | "time" 923 | ], 924 | "time": "2019-04-06T17:09:23+00:00" 925 | }, 926 | { 927 | "name": "opis/closure", 928 | "version": "3.1.6", 929 | "source": { 930 | "type": "git", 931 | "url": "https://github.com/opis/closure.git", 932 | "reference": "ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b" 933 | }, 934 | "dist": { 935 | "type": "zip", 936 | "url": "https://api.github.com/repos/opis/closure/zipball/ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b", 937 | "reference": "ccb8e3928c5c8181c76cdd0ed9366c5bcaafd91b", 938 | "shasum": "" 939 | }, 940 | "require": { 941 | "php": "^5.4 || ^7.0" 942 | }, 943 | "require-dev": { 944 | "jeremeamia/superclosure": "^2.0", 945 | "phpunit/phpunit": "^4.0|^5.0|^6.0|^7.0" 946 | }, 947 | "type": "library", 948 | "extra": { 949 | "branch-alias": { 950 | "dev-master": "3.1.x-dev" 951 | } 952 | }, 953 | "autoload": { 954 | "psr-4": { 955 | "Opis\\Closure\\": "src/" 956 | }, 957 | "files": [ 958 | "functions.php" 959 | ] 960 | }, 961 | "notification-url": "https://packagist.org/downloads/", 962 | "license": [ 963 | "MIT" 964 | ], 965 | "authors": [ 966 | { 967 | "name": "Marius Sarca", 968 | "email": "marius.sarca@gmail.com" 969 | }, 970 | { 971 | "name": "Sorin Sarca", 972 | "email": "sarca_sorin@hotmail.com" 973 | } 974 | ], 975 | "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", 976 | "homepage": "https://opis.io/closure", 977 | "keywords": [ 978 | "anonymous functions", 979 | "closure", 980 | "function", 981 | "serializable", 982 | "serialization", 983 | "serialize" 984 | ], 985 | "time": "2019-02-22T10:30:00+00:00" 986 | }, 987 | { 988 | "name": "orchestra/testbench", 989 | "version": "v3.8.1", 990 | "source": { 991 | "type": "git", 992 | "url": "https://github.com/orchestral/testbench.git", 993 | "reference": "2a79dc414c27457e2c7500c763eba2594b51f14c" 994 | }, 995 | "dist": { 996 | "type": "zip", 997 | "url": "https://api.github.com/repos/orchestral/testbench/zipball/2a79dc414c27457e2c7500c763eba2594b51f14c", 998 | "reference": "2a79dc414c27457e2c7500c763eba2594b51f14c", 999 | "shasum": "" 1000 | }, 1001 | "require": { 1002 | "laravel/framework": "~5.8.2", 1003 | "mockery/mockery": "^1.0", 1004 | "orchestra/testbench-core": "~3.8.1", 1005 | "php": ">=7.1", 1006 | "phpunit/phpunit": "^7.5 || ^8.0" 1007 | }, 1008 | "type": "library", 1009 | "extra": { 1010 | "branch-alias": { 1011 | "dev-master": "3.8-dev" 1012 | } 1013 | }, 1014 | "notification-url": "https://packagist.org/downloads/", 1015 | "license": [ 1016 | "MIT" 1017 | ], 1018 | "authors": [ 1019 | { 1020 | "name": "Mior Muhammad Zaki", 1021 | "email": "crynobone@gmail.com", 1022 | "homepage": "https://github.com/crynobone" 1023 | } 1024 | ], 1025 | "description": "Laravel Testing Helper for Packages Development", 1026 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 1027 | "keywords": [ 1028 | "BDD", 1029 | "TDD", 1030 | "laravel", 1031 | "orchestra-platform", 1032 | "orchestral", 1033 | "testing" 1034 | ], 1035 | "time": "2019-02-28T01:19:16+00:00" 1036 | }, 1037 | { 1038 | "name": "orchestra/testbench-core", 1039 | "version": "v3.8.1", 1040 | "source": { 1041 | "type": "git", 1042 | "url": "https://github.com/orchestral/testbench-core.git", 1043 | "reference": "51192972746beb3766327bb84838998d3a59e99c" 1044 | }, 1045 | "dist": { 1046 | "type": "zip", 1047 | "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/51192972746beb3766327bb84838998d3a59e99c", 1048 | "reference": "51192972746beb3766327bb84838998d3a59e99c", 1049 | "shasum": "" 1050 | }, 1051 | "require": { 1052 | "fzaninotto/faker": "^1.4", 1053 | "php": ">=7.1" 1054 | }, 1055 | "require-dev": { 1056 | "laravel/framework": "~5.8.0", 1057 | "mockery/mockery": "^1.0", 1058 | "phpunit/phpunit": "^7.5 || ^8.0" 1059 | }, 1060 | "suggest": { 1061 | "laravel/framework": "Required for testing (~5.8.0).", 1062 | "mockery/mockery": "Allow to use Mockery for testing (^1.0).", 1063 | "orchestra/testbench-browser-kit": "Allow to use legacy Laravel BrowserKit for testing (^3.8).", 1064 | "orchestra/testbench-dusk": "Allow to use Laravel Dusk for testing (^3.8).", 1065 | "phpunit/phpunit": "Allow to use PHPUnit for testing (^7.5 || ^8.0)." 1066 | }, 1067 | "type": "library", 1068 | "extra": { 1069 | "branch-alias": { 1070 | "dev-master": "3.8-dev" 1071 | } 1072 | }, 1073 | "autoload": { 1074 | "psr-4": { 1075 | "Orchestra\\Testbench\\": "src/" 1076 | } 1077 | }, 1078 | "notification-url": "https://packagist.org/downloads/", 1079 | "license": [ 1080 | "MIT" 1081 | ], 1082 | "authors": [ 1083 | { 1084 | "name": "Mior Muhammad Zaki", 1085 | "email": "crynobone@gmail.com", 1086 | "homepage": "https://github.com/crynobone" 1087 | } 1088 | ], 1089 | "description": "Testing Helper for Laravel Development", 1090 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 1091 | "keywords": [ 1092 | "BDD", 1093 | "TDD", 1094 | "laravel", 1095 | "orchestra-platform", 1096 | "orchestral", 1097 | "testing" 1098 | ], 1099 | "time": "2019-02-28T00:40:46+00:00" 1100 | }, 1101 | { 1102 | "name": "paragonie/random_compat", 1103 | "version": "v9.99.99", 1104 | "source": { 1105 | "type": "git", 1106 | "url": "https://github.com/paragonie/random_compat.git", 1107 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" 1108 | }, 1109 | "dist": { 1110 | "type": "zip", 1111 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 1112 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 1113 | "shasum": "" 1114 | }, 1115 | "require": { 1116 | "php": "^7" 1117 | }, 1118 | "require-dev": { 1119 | "phpunit/phpunit": "4.*|5.*", 1120 | "vimeo/psalm": "^1" 1121 | }, 1122 | "suggest": { 1123 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 1124 | }, 1125 | "type": "library", 1126 | "notification-url": "https://packagist.org/downloads/", 1127 | "license": [ 1128 | "MIT" 1129 | ], 1130 | "authors": [ 1131 | { 1132 | "name": "Paragon Initiative Enterprises", 1133 | "email": "security@paragonie.com", 1134 | "homepage": "https://paragonie.com" 1135 | } 1136 | ], 1137 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 1138 | "keywords": [ 1139 | "csprng", 1140 | "polyfill", 1141 | "pseudorandom", 1142 | "random" 1143 | ], 1144 | "time": "2018-07-02T15:55:56+00:00" 1145 | }, 1146 | { 1147 | "name": "phar-io/manifest", 1148 | "version": "1.0.3", 1149 | "source": { 1150 | "type": "git", 1151 | "url": "https://github.com/phar-io/manifest.git", 1152 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 1153 | }, 1154 | "dist": { 1155 | "type": "zip", 1156 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1157 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 1158 | "shasum": "" 1159 | }, 1160 | "require": { 1161 | "ext-dom": "*", 1162 | "ext-phar": "*", 1163 | "phar-io/version": "^2.0", 1164 | "php": "^5.6 || ^7.0" 1165 | }, 1166 | "type": "library", 1167 | "extra": { 1168 | "branch-alias": { 1169 | "dev-master": "1.0.x-dev" 1170 | } 1171 | }, 1172 | "autoload": { 1173 | "classmap": [ 1174 | "src/" 1175 | ] 1176 | }, 1177 | "notification-url": "https://packagist.org/downloads/", 1178 | "license": [ 1179 | "BSD-3-Clause" 1180 | ], 1181 | "authors": [ 1182 | { 1183 | "name": "Arne Blankerts", 1184 | "email": "arne@blankerts.de", 1185 | "role": "Developer" 1186 | }, 1187 | { 1188 | "name": "Sebastian Heuer", 1189 | "email": "sebastian@phpeople.de", 1190 | "role": "Developer" 1191 | }, 1192 | { 1193 | "name": "Sebastian Bergmann", 1194 | "email": "sebastian@phpunit.de", 1195 | "role": "Developer" 1196 | } 1197 | ], 1198 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1199 | "time": "2018-07-08T19:23:20+00:00" 1200 | }, 1201 | { 1202 | "name": "phar-io/version", 1203 | "version": "2.0.1", 1204 | "source": { 1205 | "type": "git", 1206 | "url": "https://github.com/phar-io/version.git", 1207 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 1208 | }, 1209 | "dist": { 1210 | "type": "zip", 1211 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1212 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 1213 | "shasum": "" 1214 | }, 1215 | "require": { 1216 | "php": "^5.6 || ^7.0" 1217 | }, 1218 | "type": "library", 1219 | "autoload": { 1220 | "classmap": [ 1221 | "src/" 1222 | ] 1223 | }, 1224 | "notification-url": "https://packagist.org/downloads/", 1225 | "license": [ 1226 | "BSD-3-Clause" 1227 | ], 1228 | "authors": [ 1229 | { 1230 | "name": "Arne Blankerts", 1231 | "email": "arne@blankerts.de", 1232 | "role": "Developer" 1233 | }, 1234 | { 1235 | "name": "Sebastian Heuer", 1236 | "email": "sebastian@phpeople.de", 1237 | "role": "Developer" 1238 | }, 1239 | { 1240 | "name": "Sebastian Bergmann", 1241 | "email": "sebastian@phpunit.de", 1242 | "role": "Developer" 1243 | } 1244 | ], 1245 | "description": "Library for handling version information and constraints", 1246 | "time": "2018-07-08T19:19:57+00:00" 1247 | }, 1248 | { 1249 | "name": "phpdocumentor/reflection-common", 1250 | "version": "1.0.1", 1251 | "source": { 1252 | "type": "git", 1253 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 1254 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 1255 | }, 1256 | "dist": { 1257 | "type": "zip", 1258 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 1259 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 1260 | "shasum": "" 1261 | }, 1262 | "require": { 1263 | "php": ">=5.5" 1264 | }, 1265 | "require-dev": { 1266 | "phpunit/phpunit": "^4.6" 1267 | }, 1268 | "type": "library", 1269 | "extra": { 1270 | "branch-alias": { 1271 | "dev-master": "1.0.x-dev" 1272 | } 1273 | }, 1274 | "autoload": { 1275 | "psr-4": { 1276 | "phpDocumentor\\Reflection\\": [ 1277 | "src" 1278 | ] 1279 | } 1280 | }, 1281 | "notification-url": "https://packagist.org/downloads/", 1282 | "license": [ 1283 | "MIT" 1284 | ], 1285 | "authors": [ 1286 | { 1287 | "name": "Jaap van Otterdijk", 1288 | "email": "opensource@ijaap.nl" 1289 | } 1290 | ], 1291 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 1292 | "homepage": "http://www.phpdoc.org", 1293 | "keywords": [ 1294 | "FQSEN", 1295 | "phpDocumentor", 1296 | "phpdoc", 1297 | "reflection", 1298 | "static analysis" 1299 | ], 1300 | "time": "2017-09-11T18:02:19+00:00" 1301 | }, 1302 | { 1303 | "name": "phpdocumentor/reflection-docblock", 1304 | "version": "4.3.0", 1305 | "source": { 1306 | "type": "git", 1307 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 1308 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 1309 | }, 1310 | "dist": { 1311 | "type": "zip", 1312 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 1313 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 1314 | "shasum": "" 1315 | }, 1316 | "require": { 1317 | "php": "^7.0", 1318 | "phpdocumentor/reflection-common": "^1.0.0", 1319 | "phpdocumentor/type-resolver": "^0.4.0", 1320 | "webmozart/assert": "^1.0" 1321 | }, 1322 | "require-dev": { 1323 | "doctrine/instantiator": "~1.0.5", 1324 | "mockery/mockery": "^1.0", 1325 | "phpunit/phpunit": "^6.4" 1326 | }, 1327 | "type": "library", 1328 | "extra": { 1329 | "branch-alias": { 1330 | "dev-master": "4.x-dev" 1331 | } 1332 | }, 1333 | "autoload": { 1334 | "psr-4": { 1335 | "phpDocumentor\\Reflection\\": [ 1336 | "src/" 1337 | ] 1338 | } 1339 | }, 1340 | "notification-url": "https://packagist.org/downloads/", 1341 | "license": [ 1342 | "MIT" 1343 | ], 1344 | "authors": [ 1345 | { 1346 | "name": "Mike van Riel", 1347 | "email": "me@mikevanriel.com" 1348 | } 1349 | ], 1350 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 1351 | "time": "2017-11-30T07:14:17+00:00" 1352 | }, 1353 | { 1354 | "name": "phpdocumentor/type-resolver", 1355 | "version": "0.4.0", 1356 | "source": { 1357 | "type": "git", 1358 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 1359 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 1360 | }, 1361 | "dist": { 1362 | "type": "zip", 1363 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 1364 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 1365 | "shasum": "" 1366 | }, 1367 | "require": { 1368 | "php": "^5.5 || ^7.0", 1369 | "phpdocumentor/reflection-common": "^1.0" 1370 | }, 1371 | "require-dev": { 1372 | "mockery/mockery": "^0.9.4", 1373 | "phpunit/phpunit": "^5.2||^4.8.24" 1374 | }, 1375 | "type": "library", 1376 | "extra": { 1377 | "branch-alias": { 1378 | "dev-master": "1.0.x-dev" 1379 | } 1380 | }, 1381 | "autoload": { 1382 | "psr-4": { 1383 | "phpDocumentor\\Reflection\\": [ 1384 | "src/" 1385 | ] 1386 | } 1387 | }, 1388 | "notification-url": "https://packagist.org/downloads/", 1389 | "license": [ 1390 | "MIT" 1391 | ], 1392 | "authors": [ 1393 | { 1394 | "name": "Mike van Riel", 1395 | "email": "me@mikevanriel.com" 1396 | } 1397 | ], 1398 | "time": "2017-07-14T14:27:02+00:00" 1399 | }, 1400 | { 1401 | "name": "phpoption/phpoption", 1402 | "version": "1.5.0", 1403 | "source": { 1404 | "type": "git", 1405 | "url": "https://github.com/schmittjoh/php-option.git", 1406 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" 1407 | }, 1408 | "dist": { 1409 | "type": "zip", 1410 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", 1411 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", 1412 | "shasum": "" 1413 | }, 1414 | "require": { 1415 | "php": ">=5.3.0" 1416 | }, 1417 | "require-dev": { 1418 | "phpunit/phpunit": "4.7.*" 1419 | }, 1420 | "type": "library", 1421 | "extra": { 1422 | "branch-alias": { 1423 | "dev-master": "1.3-dev" 1424 | } 1425 | }, 1426 | "autoload": { 1427 | "psr-0": { 1428 | "PhpOption\\": "src/" 1429 | } 1430 | }, 1431 | "notification-url": "https://packagist.org/downloads/", 1432 | "license": [ 1433 | "Apache2" 1434 | ], 1435 | "authors": [ 1436 | { 1437 | "name": "Johannes M. Schmitt", 1438 | "email": "schmittjoh@gmail.com" 1439 | } 1440 | ], 1441 | "description": "Option Type for PHP", 1442 | "keywords": [ 1443 | "language", 1444 | "option", 1445 | "php", 1446 | "type" 1447 | ], 1448 | "time": "2015-07-25T16:39:46+00:00" 1449 | }, 1450 | { 1451 | "name": "phpspec/prophecy", 1452 | "version": "1.8.0", 1453 | "source": { 1454 | "type": "git", 1455 | "url": "https://github.com/phpspec/prophecy.git", 1456 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" 1457 | }, 1458 | "dist": { 1459 | "type": "zip", 1460 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1461 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1462 | "shasum": "" 1463 | }, 1464 | "require": { 1465 | "doctrine/instantiator": "^1.0.2", 1466 | "php": "^5.3|^7.0", 1467 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 1468 | "sebastian/comparator": "^1.1|^2.0|^3.0", 1469 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 1470 | }, 1471 | "require-dev": { 1472 | "phpspec/phpspec": "^2.5|^3.2", 1473 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 1474 | }, 1475 | "type": "library", 1476 | "extra": { 1477 | "branch-alias": { 1478 | "dev-master": "1.8.x-dev" 1479 | } 1480 | }, 1481 | "autoload": { 1482 | "psr-0": { 1483 | "Prophecy\\": "src/" 1484 | } 1485 | }, 1486 | "notification-url": "https://packagist.org/downloads/", 1487 | "license": [ 1488 | "MIT" 1489 | ], 1490 | "authors": [ 1491 | { 1492 | "name": "Konstantin Kudryashov", 1493 | "email": "ever.zet@gmail.com", 1494 | "homepage": "http://everzet.com" 1495 | }, 1496 | { 1497 | "name": "Marcello Duarte", 1498 | "email": "marcello.duarte@gmail.com" 1499 | } 1500 | ], 1501 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1502 | "homepage": "https://github.com/phpspec/prophecy", 1503 | "keywords": [ 1504 | "Double", 1505 | "Dummy", 1506 | "fake", 1507 | "mock", 1508 | "spy", 1509 | "stub" 1510 | ], 1511 | "time": "2018-08-05T17:53:17+00:00" 1512 | }, 1513 | { 1514 | "name": "phpunit/php-code-coverage", 1515 | "version": "7.0.3", 1516 | "source": { 1517 | "type": "git", 1518 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1519 | "reference": "0317a769a81845c390e19684d9ba25d7f6aa4707" 1520 | }, 1521 | "dist": { 1522 | "type": "zip", 1523 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/0317a769a81845c390e19684d9ba25d7f6aa4707", 1524 | "reference": "0317a769a81845c390e19684d9ba25d7f6aa4707", 1525 | "shasum": "" 1526 | }, 1527 | "require": { 1528 | "ext-dom": "*", 1529 | "ext-xmlwriter": "*", 1530 | "php": "^7.2", 1531 | "phpunit/php-file-iterator": "^2.0.2", 1532 | "phpunit/php-text-template": "^1.2.1", 1533 | "phpunit/php-token-stream": "^3.0.1", 1534 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1535 | "sebastian/environment": "^4.1", 1536 | "sebastian/version": "^2.0.1", 1537 | "theseer/tokenizer": "^1.1" 1538 | }, 1539 | "require-dev": { 1540 | "phpunit/phpunit": "^8.0" 1541 | }, 1542 | "suggest": { 1543 | "ext-xdebug": "^2.6.1" 1544 | }, 1545 | "type": "library", 1546 | "extra": { 1547 | "branch-alias": { 1548 | "dev-master": "7.0-dev" 1549 | } 1550 | }, 1551 | "autoload": { 1552 | "classmap": [ 1553 | "src/" 1554 | ] 1555 | }, 1556 | "notification-url": "https://packagist.org/downloads/", 1557 | "license": [ 1558 | "BSD-3-Clause" 1559 | ], 1560 | "authors": [ 1561 | { 1562 | "name": "Sebastian Bergmann", 1563 | "email": "sebastian@phpunit.de", 1564 | "role": "lead" 1565 | } 1566 | ], 1567 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1568 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1569 | "keywords": [ 1570 | "coverage", 1571 | "testing", 1572 | "xunit" 1573 | ], 1574 | "time": "2019-02-26T07:38:26+00:00" 1575 | }, 1576 | { 1577 | "name": "phpunit/php-file-iterator", 1578 | "version": "2.0.2", 1579 | "source": { 1580 | "type": "git", 1581 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1582 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 1583 | }, 1584 | "dist": { 1585 | "type": "zip", 1586 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 1587 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 1588 | "shasum": "" 1589 | }, 1590 | "require": { 1591 | "php": "^7.1" 1592 | }, 1593 | "require-dev": { 1594 | "phpunit/phpunit": "^7.1" 1595 | }, 1596 | "type": "library", 1597 | "extra": { 1598 | "branch-alias": { 1599 | "dev-master": "2.0.x-dev" 1600 | } 1601 | }, 1602 | "autoload": { 1603 | "classmap": [ 1604 | "src/" 1605 | ] 1606 | }, 1607 | "notification-url": "https://packagist.org/downloads/", 1608 | "license": [ 1609 | "BSD-3-Clause" 1610 | ], 1611 | "authors": [ 1612 | { 1613 | "name": "Sebastian Bergmann", 1614 | "email": "sebastian@phpunit.de", 1615 | "role": "lead" 1616 | } 1617 | ], 1618 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1619 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1620 | "keywords": [ 1621 | "filesystem", 1622 | "iterator" 1623 | ], 1624 | "time": "2018-09-13T20:33:42+00:00" 1625 | }, 1626 | { 1627 | "name": "phpunit/php-text-template", 1628 | "version": "1.2.1", 1629 | "source": { 1630 | "type": "git", 1631 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1632 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1633 | }, 1634 | "dist": { 1635 | "type": "zip", 1636 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1637 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1638 | "shasum": "" 1639 | }, 1640 | "require": { 1641 | "php": ">=5.3.3" 1642 | }, 1643 | "type": "library", 1644 | "autoload": { 1645 | "classmap": [ 1646 | "src/" 1647 | ] 1648 | }, 1649 | "notification-url": "https://packagist.org/downloads/", 1650 | "license": [ 1651 | "BSD-3-Clause" 1652 | ], 1653 | "authors": [ 1654 | { 1655 | "name": "Sebastian Bergmann", 1656 | "email": "sebastian@phpunit.de", 1657 | "role": "lead" 1658 | } 1659 | ], 1660 | "description": "Simple template engine.", 1661 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1662 | "keywords": [ 1663 | "template" 1664 | ], 1665 | "time": "2015-06-21T13:50:34+00:00" 1666 | }, 1667 | { 1668 | "name": "phpunit/php-timer", 1669 | "version": "2.1.1", 1670 | "source": { 1671 | "type": "git", 1672 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1673 | "reference": "8b389aebe1b8b0578430bda0c7c95a829608e059" 1674 | }, 1675 | "dist": { 1676 | "type": "zip", 1677 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8b389aebe1b8b0578430bda0c7c95a829608e059", 1678 | "reference": "8b389aebe1b8b0578430bda0c7c95a829608e059", 1679 | "shasum": "" 1680 | }, 1681 | "require": { 1682 | "php": "^7.1" 1683 | }, 1684 | "require-dev": { 1685 | "phpunit/phpunit": "^7.0" 1686 | }, 1687 | "type": "library", 1688 | "extra": { 1689 | "branch-alias": { 1690 | "dev-master": "2.1-dev" 1691 | } 1692 | }, 1693 | "autoload": { 1694 | "classmap": [ 1695 | "src/" 1696 | ] 1697 | }, 1698 | "notification-url": "https://packagist.org/downloads/", 1699 | "license": [ 1700 | "BSD-3-Clause" 1701 | ], 1702 | "authors": [ 1703 | { 1704 | "name": "Sebastian Bergmann", 1705 | "email": "sebastian@phpunit.de", 1706 | "role": "lead" 1707 | } 1708 | ], 1709 | "description": "Utility class for timing", 1710 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1711 | "keywords": [ 1712 | "timer" 1713 | ], 1714 | "time": "2019-02-20T10:12:59+00:00" 1715 | }, 1716 | { 1717 | "name": "phpunit/php-token-stream", 1718 | "version": "3.0.1", 1719 | "source": { 1720 | "type": "git", 1721 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1722 | "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" 1723 | }, 1724 | "dist": { 1725 | "type": "zip", 1726 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", 1727 | "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", 1728 | "shasum": "" 1729 | }, 1730 | "require": { 1731 | "ext-tokenizer": "*", 1732 | "php": "^7.1" 1733 | }, 1734 | "require-dev": { 1735 | "phpunit/phpunit": "^7.0" 1736 | }, 1737 | "type": "library", 1738 | "extra": { 1739 | "branch-alias": { 1740 | "dev-master": "3.0-dev" 1741 | } 1742 | }, 1743 | "autoload": { 1744 | "classmap": [ 1745 | "src/" 1746 | ] 1747 | }, 1748 | "notification-url": "https://packagist.org/downloads/", 1749 | "license": [ 1750 | "BSD-3-Clause" 1751 | ], 1752 | "authors": [ 1753 | { 1754 | "name": "Sebastian Bergmann", 1755 | "email": "sebastian@phpunit.de" 1756 | } 1757 | ], 1758 | "description": "Wrapper around PHP's tokenizer extension.", 1759 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1760 | "keywords": [ 1761 | "tokenizer" 1762 | ], 1763 | "time": "2018-10-30T05:52:18+00:00" 1764 | }, 1765 | { 1766 | "name": "phpunit/phpunit", 1767 | "version": "8.1.2", 1768 | "source": { 1769 | "type": "git", 1770 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1771 | "reference": "e7450b51b6f5d29edcd645ff72b355ab0633ca35" 1772 | }, 1773 | "dist": { 1774 | "type": "zip", 1775 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/e7450b51b6f5d29edcd645ff72b355ab0633ca35", 1776 | "reference": "e7450b51b6f5d29edcd645ff72b355ab0633ca35", 1777 | "shasum": "" 1778 | }, 1779 | "require": { 1780 | "doctrine/instantiator": "^1.1", 1781 | "ext-dom": "*", 1782 | "ext-json": "*", 1783 | "ext-libxml": "*", 1784 | "ext-mbstring": "*", 1785 | "ext-xml": "*", 1786 | "ext-xmlwriter": "*", 1787 | "myclabs/deep-copy": "^1.7", 1788 | "phar-io/manifest": "^1.0.2", 1789 | "phar-io/version": "^2.0", 1790 | "php": "^7.2", 1791 | "phpspec/prophecy": "^1.7", 1792 | "phpunit/php-code-coverage": "^7.0", 1793 | "phpunit/php-file-iterator": "^2.0.1", 1794 | "phpunit/php-text-template": "^1.2.1", 1795 | "phpunit/php-timer": "^2.1", 1796 | "sebastian/comparator": "^3.0", 1797 | "sebastian/diff": "^3.0", 1798 | "sebastian/environment": "^4.1", 1799 | "sebastian/exporter": "^3.1", 1800 | "sebastian/global-state": "^3.0", 1801 | "sebastian/object-enumerator": "^3.0.3", 1802 | "sebastian/resource-operations": "^2.0", 1803 | "sebastian/version": "^2.0.1" 1804 | }, 1805 | "require-dev": { 1806 | "ext-pdo": "*" 1807 | }, 1808 | "suggest": { 1809 | "ext-soap": "*", 1810 | "ext-xdebug": "*", 1811 | "phpunit/php-invoker": "^2.0" 1812 | }, 1813 | "bin": [ 1814 | "phpunit" 1815 | ], 1816 | "type": "library", 1817 | "extra": { 1818 | "branch-alias": { 1819 | "dev-master": "8.1-dev" 1820 | } 1821 | }, 1822 | "autoload": { 1823 | "classmap": [ 1824 | "src/" 1825 | ] 1826 | }, 1827 | "notification-url": "https://packagist.org/downloads/", 1828 | "license": [ 1829 | "BSD-3-Clause" 1830 | ], 1831 | "authors": [ 1832 | { 1833 | "name": "Sebastian Bergmann", 1834 | "email": "sebastian@phpunit.de", 1835 | "role": "lead" 1836 | } 1837 | ], 1838 | "description": "The PHP Unit Testing framework.", 1839 | "homepage": "https://phpunit.de/", 1840 | "keywords": [ 1841 | "phpunit", 1842 | "testing", 1843 | "xunit" 1844 | ], 1845 | "time": "2019-04-08T16:03:02+00:00" 1846 | }, 1847 | { 1848 | "name": "psr/container", 1849 | "version": "1.0.0", 1850 | "source": { 1851 | "type": "git", 1852 | "url": "https://github.com/php-fig/container.git", 1853 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 1854 | }, 1855 | "dist": { 1856 | "type": "zip", 1857 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1858 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 1859 | "shasum": "" 1860 | }, 1861 | "require": { 1862 | "php": ">=5.3.0" 1863 | }, 1864 | "type": "library", 1865 | "extra": { 1866 | "branch-alias": { 1867 | "dev-master": "1.0.x-dev" 1868 | } 1869 | }, 1870 | "autoload": { 1871 | "psr-4": { 1872 | "Psr\\Container\\": "src/" 1873 | } 1874 | }, 1875 | "notification-url": "https://packagist.org/downloads/", 1876 | "license": [ 1877 | "MIT" 1878 | ], 1879 | "authors": [ 1880 | { 1881 | "name": "PHP-FIG", 1882 | "homepage": "http://www.php-fig.org/" 1883 | } 1884 | ], 1885 | "description": "Common Container Interface (PHP FIG PSR-11)", 1886 | "homepage": "https://github.com/php-fig/container", 1887 | "keywords": [ 1888 | "PSR-11", 1889 | "container", 1890 | "container-interface", 1891 | "container-interop", 1892 | "psr" 1893 | ], 1894 | "time": "2017-02-14T16:28:37+00:00" 1895 | }, 1896 | { 1897 | "name": "psr/log", 1898 | "version": "1.1.0", 1899 | "source": { 1900 | "type": "git", 1901 | "url": "https://github.com/php-fig/log.git", 1902 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" 1903 | }, 1904 | "dist": { 1905 | "type": "zip", 1906 | "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 1907 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 1908 | "shasum": "" 1909 | }, 1910 | "require": { 1911 | "php": ">=5.3.0" 1912 | }, 1913 | "type": "library", 1914 | "extra": { 1915 | "branch-alias": { 1916 | "dev-master": "1.0.x-dev" 1917 | } 1918 | }, 1919 | "autoload": { 1920 | "psr-4": { 1921 | "Psr\\Log\\": "Psr/Log/" 1922 | } 1923 | }, 1924 | "notification-url": "https://packagist.org/downloads/", 1925 | "license": [ 1926 | "MIT" 1927 | ], 1928 | "authors": [ 1929 | { 1930 | "name": "PHP-FIG", 1931 | "homepage": "http://www.php-fig.org/" 1932 | } 1933 | ], 1934 | "description": "Common interface for logging libraries", 1935 | "homepage": "https://github.com/php-fig/log", 1936 | "keywords": [ 1937 | "log", 1938 | "psr", 1939 | "psr-3" 1940 | ], 1941 | "time": "2018-11-20T15:27:04+00:00" 1942 | }, 1943 | { 1944 | "name": "psr/simple-cache", 1945 | "version": "1.0.1", 1946 | "source": { 1947 | "type": "git", 1948 | "url": "https://github.com/php-fig/simple-cache.git", 1949 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 1950 | }, 1951 | "dist": { 1952 | "type": "zip", 1953 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1954 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1955 | "shasum": "" 1956 | }, 1957 | "require": { 1958 | "php": ">=5.3.0" 1959 | }, 1960 | "type": "library", 1961 | "extra": { 1962 | "branch-alias": { 1963 | "dev-master": "1.0.x-dev" 1964 | } 1965 | }, 1966 | "autoload": { 1967 | "psr-4": { 1968 | "Psr\\SimpleCache\\": "src/" 1969 | } 1970 | }, 1971 | "notification-url": "https://packagist.org/downloads/", 1972 | "license": [ 1973 | "MIT" 1974 | ], 1975 | "authors": [ 1976 | { 1977 | "name": "PHP-FIG", 1978 | "homepage": "http://www.php-fig.org/" 1979 | } 1980 | ], 1981 | "description": "Common interfaces for simple caching", 1982 | "keywords": [ 1983 | "cache", 1984 | "caching", 1985 | "psr", 1986 | "psr-16", 1987 | "simple-cache" 1988 | ], 1989 | "time": "2017-10-23T01:57:42+00:00" 1990 | }, 1991 | { 1992 | "name": "ramsey/uuid", 1993 | "version": "3.8.0", 1994 | "source": { 1995 | "type": "git", 1996 | "url": "https://github.com/ramsey/uuid.git", 1997 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" 1998 | }, 1999 | "dist": { 2000 | "type": "zip", 2001 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", 2002 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", 2003 | "shasum": "" 2004 | }, 2005 | "require": { 2006 | "paragonie/random_compat": "^1.0|^2.0|9.99.99", 2007 | "php": "^5.4 || ^7.0", 2008 | "symfony/polyfill-ctype": "^1.8" 2009 | }, 2010 | "replace": { 2011 | "rhumsaa/uuid": "self.version" 2012 | }, 2013 | "require-dev": { 2014 | "codeception/aspect-mock": "^1.0 | ~2.0.0", 2015 | "doctrine/annotations": "~1.2.0", 2016 | "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", 2017 | "ircmaxell/random-lib": "^1.1", 2018 | "jakub-onderka/php-parallel-lint": "^0.9.0", 2019 | "mockery/mockery": "^0.9.9", 2020 | "moontoast/math": "^1.1", 2021 | "php-mock/php-mock-phpunit": "^0.3|^1.1", 2022 | "phpunit/phpunit": "^4.7|^5.0|^6.5", 2023 | "squizlabs/php_codesniffer": "^2.3" 2024 | }, 2025 | "suggest": { 2026 | "ext-ctype": "Provides support for PHP Ctype functions", 2027 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", 2028 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", 2029 | "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 2030 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", 2031 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", 2032 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 2033 | }, 2034 | "type": "library", 2035 | "extra": { 2036 | "branch-alias": { 2037 | "dev-master": "3.x-dev" 2038 | } 2039 | }, 2040 | "autoload": { 2041 | "psr-4": { 2042 | "Ramsey\\Uuid\\": "src/" 2043 | } 2044 | }, 2045 | "notification-url": "https://packagist.org/downloads/", 2046 | "license": [ 2047 | "MIT" 2048 | ], 2049 | "authors": [ 2050 | { 2051 | "name": "Marijn Huizendveld", 2052 | "email": "marijn.huizendveld@gmail.com" 2053 | }, 2054 | { 2055 | "name": "Thibaud Fabre", 2056 | "email": "thibaud@aztech.io" 2057 | }, 2058 | { 2059 | "name": "Ben Ramsey", 2060 | "email": "ben@benramsey.com", 2061 | "homepage": "https://benramsey.com" 2062 | } 2063 | ], 2064 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", 2065 | "homepage": "https://github.com/ramsey/uuid", 2066 | "keywords": [ 2067 | "guid", 2068 | "identifier", 2069 | "uuid" 2070 | ], 2071 | "time": "2018-07-19T23:38:55+00:00" 2072 | }, 2073 | { 2074 | "name": "sebastian/code-unit-reverse-lookup", 2075 | "version": "1.0.1", 2076 | "source": { 2077 | "type": "git", 2078 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 2079 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 2080 | }, 2081 | "dist": { 2082 | "type": "zip", 2083 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 2084 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 2085 | "shasum": "" 2086 | }, 2087 | "require": { 2088 | "php": "^5.6 || ^7.0" 2089 | }, 2090 | "require-dev": { 2091 | "phpunit/phpunit": "^5.7 || ^6.0" 2092 | }, 2093 | "type": "library", 2094 | "extra": { 2095 | "branch-alias": { 2096 | "dev-master": "1.0.x-dev" 2097 | } 2098 | }, 2099 | "autoload": { 2100 | "classmap": [ 2101 | "src/" 2102 | ] 2103 | }, 2104 | "notification-url": "https://packagist.org/downloads/", 2105 | "license": [ 2106 | "BSD-3-Clause" 2107 | ], 2108 | "authors": [ 2109 | { 2110 | "name": "Sebastian Bergmann", 2111 | "email": "sebastian@phpunit.de" 2112 | } 2113 | ], 2114 | "description": "Looks up which function or method a line of code belongs to", 2115 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 2116 | "time": "2017-03-04T06:30:41+00:00" 2117 | }, 2118 | { 2119 | "name": "sebastian/comparator", 2120 | "version": "3.0.2", 2121 | "source": { 2122 | "type": "git", 2123 | "url": "https://github.com/sebastianbergmann/comparator.git", 2124 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 2125 | }, 2126 | "dist": { 2127 | "type": "zip", 2128 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 2129 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 2130 | "shasum": "" 2131 | }, 2132 | "require": { 2133 | "php": "^7.1", 2134 | "sebastian/diff": "^3.0", 2135 | "sebastian/exporter": "^3.1" 2136 | }, 2137 | "require-dev": { 2138 | "phpunit/phpunit": "^7.1" 2139 | }, 2140 | "type": "library", 2141 | "extra": { 2142 | "branch-alias": { 2143 | "dev-master": "3.0-dev" 2144 | } 2145 | }, 2146 | "autoload": { 2147 | "classmap": [ 2148 | "src/" 2149 | ] 2150 | }, 2151 | "notification-url": "https://packagist.org/downloads/", 2152 | "license": [ 2153 | "BSD-3-Clause" 2154 | ], 2155 | "authors": [ 2156 | { 2157 | "name": "Jeff Welch", 2158 | "email": "whatthejeff@gmail.com" 2159 | }, 2160 | { 2161 | "name": "Volker Dusch", 2162 | "email": "github@wallbash.com" 2163 | }, 2164 | { 2165 | "name": "Bernhard Schussek", 2166 | "email": "bschussek@2bepublished.at" 2167 | }, 2168 | { 2169 | "name": "Sebastian Bergmann", 2170 | "email": "sebastian@phpunit.de" 2171 | } 2172 | ], 2173 | "description": "Provides the functionality to compare PHP values for equality", 2174 | "homepage": "https://github.com/sebastianbergmann/comparator", 2175 | "keywords": [ 2176 | "comparator", 2177 | "compare", 2178 | "equality" 2179 | ], 2180 | "time": "2018-07-12T15:12:46+00:00" 2181 | }, 2182 | { 2183 | "name": "sebastian/diff", 2184 | "version": "3.0.2", 2185 | "source": { 2186 | "type": "git", 2187 | "url": "https://github.com/sebastianbergmann/diff.git", 2188 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 2189 | }, 2190 | "dist": { 2191 | "type": "zip", 2192 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 2193 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 2194 | "shasum": "" 2195 | }, 2196 | "require": { 2197 | "php": "^7.1" 2198 | }, 2199 | "require-dev": { 2200 | "phpunit/phpunit": "^7.5 || ^8.0", 2201 | "symfony/process": "^2 || ^3.3 || ^4" 2202 | }, 2203 | "type": "library", 2204 | "extra": { 2205 | "branch-alias": { 2206 | "dev-master": "3.0-dev" 2207 | } 2208 | }, 2209 | "autoload": { 2210 | "classmap": [ 2211 | "src/" 2212 | ] 2213 | }, 2214 | "notification-url": "https://packagist.org/downloads/", 2215 | "license": [ 2216 | "BSD-3-Clause" 2217 | ], 2218 | "authors": [ 2219 | { 2220 | "name": "Kore Nordmann", 2221 | "email": "mail@kore-nordmann.de" 2222 | }, 2223 | { 2224 | "name": "Sebastian Bergmann", 2225 | "email": "sebastian@phpunit.de" 2226 | } 2227 | ], 2228 | "description": "Diff implementation", 2229 | "homepage": "https://github.com/sebastianbergmann/diff", 2230 | "keywords": [ 2231 | "diff", 2232 | "udiff", 2233 | "unidiff", 2234 | "unified diff" 2235 | ], 2236 | "time": "2019-02-04T06:01:07+00:00" 2237 | }, 2238 | { 2239 | "name": "sebastian/environment", 2240 | "version": "4.1.0", 2241 | "source": { 2242 | "type": "git", 2243 | "url": "https://github.com/sebastianbergmann/environment.git", 2244 | "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656" 2245 | }, 2246 | "dist": { 2247 | "type": "zip", 2248 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6fda8ce1974b62b14935adc02a9ed38252eca656", 2249 | "reference": "6fda8ce1974b62b14935adc02a9ed38252eca656", 2250 | "shasum": "" 2251 | }, 2252 | "require": { 2253 | "php": "^7.1" 2254 | }, 2255 | "require-dev": { 2256 | "phpunit/phpunit": "^7.5" 2257 | }, 2258 | "suggest": { 2259 | "ext-posix": "*" 2260 | }, 2261 | "type": "library", 2262 | "extra": { 2263 | "branch-alias": { 2264 | "dev-master": "4.1-dev" 2265 | } 2266 | }, 2267 | "autoload": { 2268 | "classmap": [ 2269 | "src/" 2270 | ] 2271 | }, 2272 | "notification-url": "https://packagist.org/downloads/", 2273 | "license": [ 2274 | "BSD-3-Clause" 2275 | ], 2276 | "authors": [ 2277 | { 2278 | "name": "Sebastian Bergmann", 2279 | "email": "sebastian@phpunit.de" 2280 | } 2281 | ], 2282 | "description": "Provides functionality to handle HHVM/PHP environments", 2283 | "homepage": "http://www.github.com/sebastianbergmann/environment", 2284 | "keywords": [ 2285 | "Xdebug", 2286 | "environment", 2287 | "hhvm" 2288 | ], 2289 | "time": "2019-02-01T05:27:49+00:00" 2290 | }, 2291 | { 2292 | "name": "sebastian/exporter", 2293 | "version": "3.1.0", 2294 | "source": { 2295 | "type": "git", 2296 | "url": "https://github.com/sebastianbergmann/exporter.git", 2297 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 2298 | }, 2299 | "dist": { 2300 | "type": "zip", 2301 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 2302 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 2303 | "shasum": "" 2304 | }, 2305 | "require": { 2306 | "php": "^7.0", 2307 | "sebastian/recursion-context": "^3.0" 2308 | }, 2309 | "require-dev": { 2310 | "ext-mbstring": "*", 2311 | "phpunit/phpunit": "^6.0" 2312 | }, 2313 | "type": "library", 2314 | "extra": { 2315 | "branch-alias": { 2316 | "dev-master": "3.1.x-dev" 2317 | } 2318 | }, 2319 | "autoload": { 2320 | "classmap": [ 2321 | "src/" 2322 | ] 2323 | }, 2324 | "notification-url": "https://packagist.org/downloads/", 2325 | "license": [ 2326 | "BSD-3-Clause" 2327 | ], 2328 | "authors": [ 2329 | { 2330 | "name": "Jeff Welch", 2331 | "email": "whatthejeff@gmail.com" 2332 | }, 2333 | { 2334 | "name": "Volker Dusch", 2335 | "email": "github@wallbash.com" 2336 | }, 2337 | { 2338 | "name": "Bernhard Schussek", 2339 | "email": "bschussek@2bepublished.at" 2340 | }, 2341 | { 2342 | "name": "Sebastian Bergmann", 2343 | "email": "sebastian@phpunit.de" 2344 | }, 2345 | { 2346 | "name": "Adam Harvey", 2347 | "email": "aharvey@php.net" 2348 | } 2349 | ], 2350 | "description": "Provides the functionality to export PHP variables for visualization", 2351 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2352 | "keywords": [ 2353 | "export", 2354 | "exporter" 2355 | ], 2356 | "time": "2017-04-03T13:19:02+00:00" 2357 | }, 2358 | { 2359 | "name": "sebastian/global-state", 2360 | "version": "3.0.0", 2361 | "source": { 2362 | "type": "git", 2363 | "url": "https://github.com/sebastianbergmann/global-state.git", 2364 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" 2365 | }, 2366 | "dist": { 2367 | "type": "zip", 2368 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 2369 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 2370 | "shasum": "" 2371 | }, 2372 | "require": { 2373 | "php": "^7.2", 2374 | "sebastian/object-reflector": "^1.1.1", 2375 | "sebastian/recursion-context": "^3.0" 2376 | }, 2377 | "require-dev": { 2378 | "ext-dom": "*", 2379 | "phpunit/phpunit": "^8.0" 2380 | }, 2381 | "suggest": { 2382 | "ext-uopz": "*" 2383 | }, 2384 | "type": "library", 2385 | "extra": { 2386 | "branch-alias": { 2387 | "dev-master": "3.0-dev" 2388 | } 2389 | }, 2390 | "autoload": { 2391 | "classmap": [ 2392 | "src/" 2393 | ] 2394 | }, 2395 | "notification-url": "https://packagist.org/downloads/", 2396 | "license": [ 2397 | "BSD-3-Clause" 2398 | ], 2399 | "authors": [ 2400 | { 2401 | "name": "Sebastian Bergmann", 2402 | "email": "sebastian@phpunit.de" 2403 | } 2404 | ], 2405 | "description": "Snapshotting of global state", 2406 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2407 | "keywords": [ 2408 | "global state" 2409 | ], 2410 | "time": "2019-02-01T05:30:01+00:00" 2411 | }, 2412 | { 2413 | "name": "sebastian/object-enumerator", 2414 | "version": "3.0.3", 2415 | "source": { 2416 | "type": "git", 2417 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2418 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 2419 | }, 2420 | "dist": { 2421 | "type": "zip", 2422 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2423 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2424 | "shasum": "" 2425 | }, 2426 | "require": { 2427 | "php": "^7.0", 2428 | "sebastian/object-reflector": "^1.1.1", 2429 | "sebastian/recursion-context": "^3.0" 2430 | }, 2431 | "require-dev": { 2432 | "phpunit/phpunit": "^6.0" 2433 | }, 2434 | "type": "library", 2435 | "extra": { 2436 | "branch-alias": { 2437 | "dev-master": "3.0.x-dev" 2438 | } 2439 | }, 2440 | "autoload": { 2441 | "classmap": [ 2442 | "src/" 2443 | ] 2444 | }, 2445 | "notification-url": "https://packagist.org/downloads/", 2446 | "license": [ 2447 | "BSD-3-Clause" 2448 | ], 2449 | "authors": [ 2450 | { 2451 | "name": "Sebastian Bergmann", 2452 | "email": "sebastian@phpunit.de" 2453 | } 2454 | ], 2455 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2456 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2457 | "time": "2017-08-03T12:35:26+00:00" 2458 | }, 2459 | { 2460 | "name": "sebastian/object-reflector", 2461 | "version": "1.1.1", 2462 | "source": { 2463 | "type": "git", 2464 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2465 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 2466 | }, 2467 | "dist": { 2468 | "type": "zip", 2469 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 2470 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 2471 | "shasum": "" 2472 | }, 2473 | "require": { 2474 | "php": "^7.0" 2475 | }, 2476 | "require-dev": { 2477 | "phpunit/phpunit": "^6.0" 2478 | }, 2479 | "type": "library", 2480 | "extra": { 2481 | "branch-alias": { 2482 | "dev-master": "1.1-dev" 2483 | } 2484 | }, 2485 | "autoload": { 2486 | "classmap": [ 2487 | "src/" 2488 | ] 2489 | }, 2490 | "notification-url": "https://packagist.org/downloads/", 2491 | "license": [ 2492 | "BSD-3-Clause" 2493 | ], 2494 | "authors": [ 2495 | { 2496 | "name": "Sebastian Bergmann", 2497 | "email": "sebastian@phpunit.de" 2498 | } 2499 | ], 2500 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2501 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2502 | "time": "2017-03-29T09:07:27+00:00" 2503 | }, 2504 | { 2505 | "name": "sebastian/recursion-context", 2506 | "version": "3.0.0", 2507 | "source": { 2508 | "type": "git", 2509 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2510 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 2511 | }, 2512 | "dist": { 2513 | "type": "zip", 2514 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2515 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2516 | "shasum": "" 2517 | }, 2518 | "require": { 2519 | "php": "^7.0" 2520 | }, 2521 | "require-dev": { 2522 | "phpunit/phpunit": "^6.0" 2523 | }, 2524 | "type": "library", 2525 | "extra": { 2526 | "branch-alias": { 2527 | "dev-master": "3.0.x-dev" 2528 | } 2529 | }, 2530 | "autoload": { 2531 | "classmap": [ 2532 | "src/" 2533 | ] 2534 | }, 2535 | "notification-url": "https://packagist.org/downloads/", 2536 | "license": [ 2537 | "BSD-3-Clause" 2538 | ], 2539 | "authors": [ 2540 | { 2541 | "name": "Jeff Welch", 2542 | "email": "whatthejeff@gmail.com" 2543 | }, 2544 | { 2545 | "name": "Sebastian Bergmann", 2546 | "email": "sebastian@phpunit.de" 2547 | }, 2548 | { 2549 | "name": "Adam Harvey", 2550 | "email": "aharvey@php.net" 2551 | } 2552 | ], 2553 | "description": "Provides functionality to recursively process PHP variables", 2554 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2555 | "time": "2017-03-03T06:23:57+00:00" 2556 | }, 2557 | { 2558 | "name": "sebastian/resource-operations", 2559 | "version": "2.0.1", 2560 | "source": { 2561 | "type": "git", 2562 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2563 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 2564 | }, 2565 | "dist": { 2566 | "type": "zip", 2567 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2568 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 2569 | "shasum": "" 2570 | }, 2571 | "require": { 2572 | "php": "^7.1" 2573 | }, 2574 | "type": "library", 2575 | "extra": { 2576 | "branch-alias": { 2577 | "dev-master": "2.0-dev" 2578 | } 2579 | }, 2580 | "autoload": { 2581 | "classmap": [ 2582 | "src/" 2583 | ] 2584 | }, 2585 | "notification-url": "https://packagist.org/downloads/", 2586 | "license": [ 2587 | "BSD-3-Clause" 2588 | ], 2589 | "authors": [ 2590 | { 2591 | "name": "Sebastian Bergmann", 2592 | "email": "sebastian@phpunit.de" 2593 | } 2594 | ], 2595 | "description": "Provides a list of PHP built-in functions that operate on resources", 2596 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2597 | "time": "2018-10-04T04:07:39+00:00" 2598 | }, 2599 | { 2600 | "name": "sebastian/version", 2601 | "version": "2.0.1", 2602 | "source": { 2603 | "type": "git", 2604 | "url": "https://github.com/sebastianbergmann/version.git", 2605 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 2606 | }, 2607 | "dist": { 2608 | "type": "zip", 2609 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 2610 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 2611 | "shasum": "" 2612 | }, 2613 | "require": { 2614 | "php": ">=5.6" 2615 | }, 2616 | "type": "library", 2617 | "extra": { 2618 | "branch-alias": { 2619 | "dev-master": "2.0.x-dev" 2620 | } 2621 | }, 2622 | "autoload": { 2623 | "classmap": [ 2624 | "src/" 2625 | ] 2626 | }, 2627 | "notification-url": "https://packagist.org/downloads/", 2628 | "license": [ 2629 | "BSD-3-Clause" 2630 | ], 2631 | "authors": [ 2632 | { 2633 | "name": "Sebastian Bergmann", 2634 | "email": "sebastian@phpunit.de", 2635 | "role": "lead" 2636 | } 2637 | ], 2638 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2639 | "homepage": "https://github.com/sebastianbergmann/version", 2640 | "time": "2016-10-03T07:35:21+00:00" 2641 | }, 2642 | { 2643 | "name": "swiftmailer/swiftmailer", 2644 | "version": "v6.2.0", 2645 | "source": { 2646 | "type": "git", 2647 | "url": "https://github.com/swiftmailer/swiftmailer.git", 2648 | "reference": "6fa3232ff9d3f8237c0fae4b7ff05e1baa4cd707" 2649 | }, 2650 | "dist": { 2651 | "type": "zip", 2652 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/6fa3232ff9d3f8237c0fae4b7ff05e1baa4cd707", 2653 | "reference": "6fa3232ff9d3f8237c0fae4b7ff05e1baa4cd707", 2654 | "shasum": "" 2655 | }, 2656 | "require": { 2657 | "egulias/email-validator": "~2.0", 2658 | "php": ">=7.0.0", 2659 | "symfony/polyfill-iconv": "^1.0", 2660 | "symfony/polyfill-intl-idn": "^1.10", 2661 | "symfony/polyfill-mbstring": "^1.0" 2662 | }, 2663 | "require-dev": { 2664 | "mockery/mockery": "~0.9.1", 2665 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8" 2666 | }, 2667 | "suggest": { 2668 | "ext-intl": "Needed to support internationalized email addresses", 2669 | "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" 2670 | }, 2671 | "type": "library", 2672 | "extra": { 2673 | "branch-alias": { 2674 | "dev-master": "6.2-dev" 2675 | } 2676 | }, 2677 | "autoload": { 2678 | "files": [ 2679 | "lib/swift_required.php" 2680 | ] 2681 | }, 2682 | "notification-url": "https://packagist.org/downloads/", 2683 | "license": [ 2684 | "MIT" 2685 | ], 2686 | "authors": [ 2687 | { 2688 | "name": "Chris Corbyn" 2689 | }, 2690 | { 2691 | "name": "Fabien Potencier", 2692 | "email": "fabien@symfony.com" 2693 | } 2694 | ], 2695 | "description": "Swiftmailer, free feature-rich PHP mailer", 2696 | "homepage": "https://swiftmailer.symfony.com", 2697 | "keywords": [ 2698 | "email", 2699 | "mail", 2700 | "mailer" 2701 | ], 2702 | "time": "2019-03-10T07:52:41+00:00" 2703 | }, 2704 | { 2705 | "name": "symfony/console", 2706 | "version": "v4.2.5", 2707 | "source": { 2708 | "type": "git", 2709 | "url": "https://github.com/symfony/console.git", 2710 | "reference": "24206aff3efe6962593297e57ef697ebb220e384" 2711 | }, 2712 | "dist": { 2713 | "type": "zip", 2714 | "url": "https://api.github.com/repos/symfony/console/zipball/24206aff3efe6962593297e57ef697ebb220e384", 2715 | "reference": "24206aff3efe6962593297e57ef697ebb220e384", 2716 | "shasum": "" 2717 | }, 2718 | "require": { 2719 | "php": "^7.1.3", 2720 | "symfony/contracts": "^1.0", 2721 | "symfony/polyfill-mbstring": "~1.0" 2722 | }, 2723 | "conflict": { 2724 | "symfony/dependency-injection": "<3.4", 2725 | "symfony/process": "<3.3" 2726 | }, 2727 | "provide": { 2728 | "psr/log-implementation": "1.0" 2729 | }, 2730 | "require-dev": { 2731 | "psr/log": "~1.0", 2732 | "symfony/config": "~3.4|~4.0", 2733 | "symfony/dependency-injection": "~3.4|~4.0", 2734 | "symfony/event-dispatcher": "~3.4|~4.0", 2735 | "symfony/lock": "~3.4|~4.0", 2736 | "symfony/process": "~3.4|~4.0" 2737 | }, 2738 | "suggest": { 2739 | "psr/log": "For using the console logger", 2740 | "symfony/event-dispatcher": "", 2741 | "symfony/lock": "", 2742 | "symfony/process": "" 2743 | }, 2744 | "type": "library", 2745 | "extra": { 2746 | "branch-alias": { 2747 | "dev-master": "4.2-dev" 2748 | } 2749 | }, 2750 | "autoload": { 2751 | "psr-4": { 2752 | "Symfony\\Component\\Console\\": "" 2753 | }, 2754 | "exclude-from-classmap": [ 2755 | "/Tests/" 2756 | ] 2757 | }, 2758 | "notification-url": "https://packagist.org/downloads/", 2759 | "license": [ 2760 | "MIT" 2761 | ], 2762 | "authors": [ 2763 | { 2764 | "name": "Fabien Potencier", 2765 | "email": "fabien@symfony.com" 2766 | }, 2767 | { 2768 | "name": "Symfony Community", 2769 | "homepage": "https://symfony.com/contributors" 2770 | } 2771 | ], 2772 | "description": "Symfony Console Component", 2773 | "homepage": "https://symfony.com", 2774 | "time": "2019-04-01T07:32:59+00:00" 2775 | }, 2776 | { 2777 | "name": "symfony/contracts", 2778 | "version": "v1.0.2", 2779 | "source": { 2780 | "type": "git", 2781 | "url": "https://github.com/symfony/contracts.git", 2782 | "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" 2783 | }, 2784 | "dist": { 2785 | "type": "zip", 2786 | "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", 2787 | "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", 2788 | "shasum": "" 2789 | }, 2790 | "require": { 2791 | "php": "^7.1.3" 2792 | }, 2793 | "require-dev": { 2794 | "psr/cache": "^1.0", 2795 | "psr/container": "^1.0" 2796 | }, 2797 | "suggest": { 2798 | "psr/cache": "When using the Cache contracts", 2799 | "psr/container": "When using the Service contracts", 2800 | "symfony/cache-contracts-implementation": "", 2801 | "symfony/service-contracts-implementation": "", 2802 | "symfony/translation-contracts-implementation": "" 2803 | }, 2804 | "type": "library", 2805 | "extra": { 2806 | "branch-alias": { 2807 | "dev-master": "1.0-dev" 2808 | } 2809 | }, 2810 | "autoload": { 2811 | "psr-4": { 2812 | "Symfony\\Contracts\\": "" 2813 | }, 2814 | "exclude-from-classmap": [ 2815 | "**/Tests/" 2816 | ] 2817 | }, 2818 | "notification-url": "https://packagist.org/downloads/", 2819 | "license": [ 2820 | "MIT" 2821 | ], 2822 | "authors": [ 2823 | { 2824 | "name": "Nicolas Grekas", 2825 | "email": "p@tchwork.com" 2826 | }, 2827 | { 2828 | "name": "Symfony Community", 2829 | "homepage": "https://symfony.com/contributors" 2830 | } 2831 | ], 2832 | "description": "A set of abstractions extracted out of the Symfony components", 2833 | "homepage": "https://symfony.com", 2834 | "keywords": [ 2835 | "abstractions", 2836 | "contracts", 2837 | "decoupling", 2838 | "interfaces", 2839 | "interoperability", 2840 | "standards" 2841 | ], 2842 | "time": "2018-12-05T08:06:11+00:00" 2843 | }, 2844 | { 2845 | "name": "symfony/css-selector", 2846 | "version": "v4.2.5", 2847 | "source": { 2848 | "type": "git", 2849 | "url": "https://github.com/symfony/css-selector.git", 2850 | "reference": "48eddf66950fa57996e1be4a55916d65c10c604a" 2851 | }, 2852 | "dist": { 2853 | "type": "zip", 2854 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/48eddf66950fa57996e1be4a55916d65c10c604a", 2855 | "reference": "48eddf66950fa57996e1be4a55916d65c10c604a", 2856 | "shasum": "" 2857 | }, 2858 | "require": { 2859 | "php": "^7.1.3" 2860 | }, 2861 | "type": "library", 2862 | "extra": { 2863 | "branch-alias": { 2864 | "dev-master": "4.2-dev" 2865 | } 2866 | }, 2867 | "autoload": { 2868 | "psr-4": { 2869 | "Symfony\\Component\\CssSelector\\": "" 2870 | }, 2871 | "exclude-from-classmap": [ 2872 | "/Tests/" 2873 | ] 2874 | }, 2875 | "notification-url": "https://packagist.org/downloads/", 2876 | "license": [ 2877 | "MIT" 2878 | ], 2879 | "authors": [ 2880 | { 2881 | "name": "Jean-François Simon", 2882 | "email": "jeanfrancois.simon@sensiolabs.com" 2883 | }, 2884 | { 2885 | "name": "Fabien Potencier", 2886 | "email": "fabien@symfony.com" 2887 | }, 2888 | { 2889 | "name": "Symfony Community", 2890 | "homepage": "https://symfony.com/contributors" 2891 | } 2892 | ], 2893 | "description": "Symfony CssSelector Component", 2894 | "homepage": "https://symfony.com", 2895 | "time": "2019-01-16T20:31:39+00:00" 2896 | }, 2897 | { 2898 | "name": "symfony/debug", 2899 | "version": "v4.2.5", 2900 | "source": { 2901 | "type": "git", 2902 | "url": "https://github.com/symfony/debug.git", 2903 | "reference": "43ce8ab34c734dcc8a4af576cb86711daab964c5" 2904 | }, 2905 | "dist": { 2906 | "type": "zip", 2907 | "url": "https://api.github.com/repos/symfony/debug/zipball/43ce8ab34c734dcc8a4af576cb86711daab964c5", 2908 | "reference": "43ce8ab34c734dcc8a4af576cb86711daab964c5", 2909 | "shasum": "" 2910 | }, 2911 | "require": { 2912 | "php": "^7.1.3", 2913 | "psr/log": "~1.0" 2914 | }, 2915 | "conflict": { 2916 | "symfony/http-kernel": "<3.4" 2917 | }, 2918 | "require-dev": { 2919 | "symfony/http-kernel": "~3.4|~4.0" 2920 | }, 2921 | "type": "library", 2922 | "extra": { 2923 | "branch-alias": { 2924 | "dev-master": "4.2-dev" 2925 | } 2926 | }, 2927 | "autoload": { 2928 | "psr-4": { 2929 | "Symfony\\Component\\Debug\\": "" 2930 | }, 2931 | "exclude-from-classmap": [ 2932 | "/Tests/" 2933 | ] 2934 | }, 2935 | "notification-url": "https://packagist.org/downloads/", 2936 | "license": [ 2937 | "MIT" 2938 | ], 2939 | "authors": [ 2940 | { 2941 | "name": "Fabien Potencier", 2942 | "email": "fabien@symfony.com" 2943 | }, 2944 | { 2945 | "name": "Symfony Community", 2946 | "homepage": "https://symfony.com/contributors" 2947 | } 2948 | ], 2949 | "description": "Symfony Debug Component", 2950 | "homepage": "https://symfony.com", 2951 | "time": "2019-03-10T17:09:50+00:00" 2952 | }, 2953 | { 2954 | "name": "symfony/event-dispatcher", 2955 | "version": "v4.2.5", 2956 | "source": { 2957 | "type": "git", 2958 | "url": "https://github.com/symfony/event-dispatcher.git", 2959 | "reference": "ca5af306fbc37f3cf597e91bc9cfa0c7d3f33544" 2960 | }, 2961 | "dist": { 2962 | "type": "zip", 2963 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ca5af306fbc37f3cf597e91bc9cfa0c7d3f33544", 2964 | "reference": "ca5af306fbc37f3cf597e91bc9cfa0c7d3f33544", 2965 | "shasum": "" 2966 | }, 2967 | "require": { 2968 | "php": "^7.1.3", 2969 | "symfony/contracts": "^1.0" 2970 | }, 2971 | "conflict": { 2972 | "symfony/dependency-injection": "<3.4" 2973 | }, 2974 | "require-dev": { 2975 | "psr/log": "~1.0", 2976 | "symfony/config": "~3.4|~4.0", 2977 | "symfony/dependency-injection": "~3.4|~4.0", 2978 | "symfony/expression-language": "~3.4|~4.0", 2979 | "symfony/stopwatch": "~3.4|~4.0" 2980 | }, 2981 | "suggest": { 2982 | "symfony/dependency-injection": "", 2983 | "symfony/http-kernel": "" 2984 | }, 2985 | "type": "library", 2986 | "extra": { 2987 | "branch-alias": { 2988 | "dev-master": "4.2-dev" 2989 | } 2990 | }, 2991 | "autoload": { 2992 | "psr-4": { 2993 | "Symfony\\Component\\EventDispatcher\\": "" 2994 | }, 2995 | "exclude-from-classmap": [ 2996 | "/Tests/" 2997 | ] 2998 | }, 2999 | "notification-url": "https://packagist.org/downloads/", 3000 | "license": [ 3001 | "MIT" 3002 | ], 3003 | "authors": [ 3004 | { 3005 | "name": "Fabien Potencier", 3006 | "email": "fabien@symfony.com" 3007 | }, 3008 | { 3009 | "name": "Symfony Community", 3010 | "homepage": "https://symfony.com/contributors" 3011 | } 3012 | ], 3013 | "description": "Symfony EventDispatcher Component", 3014 | "homepage": "https://symfony.com", 3015 | "time": "2019-03-30T15:58:42+00:00" 3016 | }, 3017 | { 3018 | "name": "symfony/finder", 3019 | "version": "v4.2.5", 3020 | "source": { 3021 | "type": "git", 3022 | "url": "https://github.com/symfony/finder.git", 3023 | "reference": "267b7002c1b70ea80db0833c3afe05f0fbde580a" 3024 | }, 3025 | "dist": { 3026 | "type": "zip", 3027 | "url": "https://api.github.com/repos/symfony/finder/zipball/267b7002c1b70ea80db0833c3afe05f0fbde580a", 3028 | "reference": "267b7002c1b70ea80db0833c3afe05f0fbde580a", 3029 | "shasum": "" 3030 | }, 3031 | "require": { 3032 | "php": "^7.1.3" 3033 | }, 3034 | "type": "library", 3035 | "extra": { 3036 | "branch-alias": { 3037 | "dev-master": "4.2-dev" 3038 | } 3039 | }, 3040 | "autoload": { 3041 | "psr-4": { 3042 | "Symfony\\Component\\Finder\\": "" 3043 | }, 3044 | "exclude-from-classmap": [ 3045 | "/Tests/" 3046 | ] 3047 | }, 3048 | "notification-url": "https://packagist.org/downloads/", 3049 | "license": [ 3050 | "MIT" 3051 | ], 3052 | "authors": [ 3053 | { 3054 | "name": "Fabien Potencier", 3055 | "email": "fabien@symfony.com" 3056 | }, 3057 | { 3058 | "name": "Symfony Community", 3059 | "homepage": "https://symfony.com/contributors" 3060 | } 3061 | ], 3062 | "description": "Symfony Finder Component", 3063 | "homepage": "https://symfony.com", 3064 | "time": "2019-02-23T15:42:05+00:00" 3065 | }, 3066 | { 3067 | "name": "symfony/http-foundation", 3068 | "version": "v4.4.2", 3069 | "source": { 3070 | "type": "git", 3071 | "url": "https://github.com/symfony/http-foundation.git", 3072 | "reference": "fcae1cff5b57b2a9c3aabefeb1527678705ddb62" 3073 | }, 3074 | "dist": { 3075 | "type": "zip", 3076 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/fcae1cff5b57b2a9c3aabefeb1527678705ddb62", 3077 | "reference": "fcae1cff5b57b2a9c3aabefeb1527678705ddb62", 3078 | "shasum": "" 3079 | }, 3080 | "require": { 3081 | "php": "^7.1.3", 3082 | "symfony/mime": "^4.3|^5.0", 3083 | "symfony/polyfill-mbstring": "~1.1" 3084 | }, 3085 | "require-dev": { 3086 | "predis/predis": "~1.0", 3087 | "symfony/expression-language": "^3.4|^4.0|^5.0" 3088 | }, 3089 | "type": "library", 3090 | "extra": { 3091 | "branch-alias": { 3092 | "dev-master": "4.4-dev" 3093 | } 3094 | }, 3095 | "autoload": { 3096 | "psr-4": { 3097 | "Symfony\\Component\\HttpFoundation\\": "" 3098 | }, 3099 | "exclude-from-classmap": [ 3100 | "/Tests/" 3101 | ] 3102 | }, 3103 | "notification-url": "https://packagist.org/downloads/", 3104 | "license": [ 3105 | "MIT" 3106 | ], 3107 | "authors": [ 3108 | { 3109 | "name": "Fabien Potencier", 3110 | "email": "fabien@symfony.com" 3111 | }, 3112 | { 3113 | "name": "Symfony Community", 3114 | "homepage": "https://symfony.com/contributors" 3115 | } 3116 | ], 3117 | "description": "Symfony HttpFoundation Component", 3118 | "homepage": "https://symfony.com", 3119 | "time": "2019-12-19T15:57:49+00:00" 3120 | }, 3121 | { 3122 | "name": "symfony/http-kernel", 3123 | "version": "v4.2.5", 3124 | "source": { 3125 | "type": "git", 3126 | "url": "https://github.com/symfony/http-kernel.git", 3127 | "reference": "e8b940bbeebf0f96789b5d17d9d77f8b2613960b" 3128 | }, 3129 | "dist": { 3130 | "type": "zip", 3131 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/e8b940bbeebf0f96789b5d17d9d77f8b2613960b", 3132 | "reference": "e8b940bbeebf0f96789b5d17d9d77f8b2613960b", 3133 | "shasum": "" 3134 | }, 3135 | "require": { 3136 | "php": "^7.1.3", 3137 | "psr/log": "~1.0", 3138 | "symfony/contracts": "^1.0.2", 3139 | "symfony/debug": "~3.4|~4.0", 3140 | "symfony/event-dispatcher": "~4.1", 3141 | "symfony/http-foundation": "^4.1.1", 3142 | "symfony/polyfill-ctype": "~1.8" 3143 | }, 3144 | "conflict": { 3145 | "symfony/config": "<3.4", 3146 | "symfony/dependency-injection": "<4.2", 3147 | "symfony/translation": "<4.2", 3148 | "symfony/var-dumper": "<4.1.1", 3149 | "twig/twig": "<1.34|<2.4,>=2" 3150 | }, 3151 | "provide": { 3152 | "psr/log-implementation": "1.0" 3153 | }, 3154 | "require-dev": { 3155 | "psr/cache": "~1.0", 3156 | "symfony/browser-kit": "~3.4|~4.0", 3157 | "symfony/config": "~3.4|~4.0", 3158 | "symfony/console": "~3.4|~4.0", 3159 | "symfony/css-selector": "~3.4|~4.0", 3160 | "symfony/dependency-injection": "^4.2", 3161 | "symfony/dom-crawler": "~3.4|~4.0", 3162 | "symfony/expression-language": "~3.4|~4.0", 3163 | "symfony/finder": "~3.4|~4.0", 3164 | "symfony/process": "~3.4|~4.0", 3165 | "symfony/routing": "~3.4|~4.0", 3166 | "symfony/stopwatch": "~3.4|~4.0", 3167 | "symfony/templating": "~3.4|~4.0", 3168 | "symfony/translation": "~4.2", 3169 | "symfony/var-dumper": "^4.1.1" 3170 | }, 3171 | "suggest": { 3172 | "symfony/browser-kit": "", 3173 | "symfony/config": "", 3174 | "symfony/console": "", 3175 | "symfony/dependency-injection": "", 3176 | "symfony/var-dumper": "" 3177 | }, 3178 | "type": "library", 3179 | "extra": { 3180 | "branch-alias": { 3181 | "dev-master": "4.2-dev" 3182 | } 3183 | }, 3184 | "autoload": { 3185 | "psr-4": { 3186 | "Symfony\\Component\\HttpKernel\\": "" 3187 | }, 3188 | "exclude-from-classmap": [ 3189 | "/Tests/" 3190 | ] 3191 | }, 3192 | "notification-url": "https://packagist.org/downloads/", 3193 | "license": [ 3194 | "MIT" 3195 | ], 3196 | "authors": [ 3197 | { 3198 | "name": "Fabien Potencier", 3199 | "email": "fabien@symfony.com" 3200 | }, 3201 | { 3202 | "name": "Symfony Community", 3203 | "homepage": "https://symfony.com/contributors" 3204 | } 3205 | ], 3206 | "description": "Symfony HttpKernel Component", 3207 | "homepage": "https://symfony.com", 3208 | "time": "2019-04-02T19:03:51+00:00" 3209 | }, 3210 | { 3211 | "name": "symfony/mime", 3212 | "version": "v5.0.2", 3213 | "source": { 3214 | "type": "git", 3215 | "url": "https://github.com/symfony/mime.git", 3216 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79" 3217 | }, 3218 | "dist": { 3219 | "type": "zip", 3220 | "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79", 3221 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79", 3222 | "shasum": "" 3223 | }, 3224 | "require": { 3225 | "php": "^7.2.5", 3226 | "symfony/polyfill-intl-idn": "^1.10", 3227 | "symfony/polyfill-mbstring": "^1.0" 3228 | }, 3229 | "conflict": { 3230 | "symfony/mailer": "<4.4" 3231 | }, 3232 | "require-dev": { 3233 | "egulias/email-validator": "^2.1.10", 3234 | "symfony/dependency-injection": "^4.4|^5.0" 3235 | }, 3236 | "type": "library", 3237 | "extra": { 3238 | "branch-alias": { 3239 | "dev-master": "5.0-dev" 3240 | } 3241 | }, 3242 | "autoload": { 3243 | "psr-4": { 3244 | "Symfony\\Component\\Mime\\": "" 3245 | }, 3246 | "exclude-from-classmap": [ 3247 | "/Tests/" 3248 | ] 3249 | }, 3250 | "notification-url": "https://packagist.org/downloads/", 3251 | "license": [ 3252 | "MIT" 3253 | ], 3254 | "authors": [ 3255 | { 3256 | "name": "Fabien Potencier", 3257 | "email": "fabien@symfony.com" 3258 | }, 3259 | { 3260 | "name": "Symfony Community", 3261 | "homepage": "https://symfony.com/contributors" 3262 | } 3263 | ], 3264 | "description": "A library to manipulate MIME messages", 3265 | "homepage": "https://symfony.com", 3266 | "keywords": [ 3267 | "mime", 3268 | "mime-type" 3269 | ], 3270 | "time": "2019-11-30T14:12:50+00:00" 3271 | }, 3272 | { 3273 | "name": "symfony/polyfill-ctype", 3274 | "version": "v1.11.0", 3275 | "source": { 3276 | "type": "git", 3277 | "url": "https://github.com/symfony/polyfill-ctype.git", 3278 | "reference": "82ebae02209c21113908c229e9883c419720738a" 3279 | }, 3280 | "dist": { 3281 | "type": "zip", 3282 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", 3283 | "reference": "82ebae02209c21113908c229e9883c419720738a", 3284 | "shasum": "" 3285 | }, 3286 | "require": { 3287 | "php": ">=5.3.3" 3288 | }, 3289 | "suggest": { 3290 | "ext-ctype": "For best performance" 3291 | }, 3292 | "type": "library", 3293 | "extra": { 3294 | "branch-alias": { 3295 | "dev-master": "1.11-dev" 3296 | } 3297 | }, 3298 | "autoload": { 3299 | "psr-4": { 3300 | "Symfony\\Polyfill\\Ctype\\": "" 3301 | }, 3302 | "files": [ 3303 | "bootstrap.php" 3304 | ] 3305 | }, 3306 | "notification-url": "https://packagist.org/downloads/", 3307 | "license": [ 3308 | "MIT" 3309 | ], 3310 | "authors": [ 3311 | { 3312 | "name": "Symfony Community", 3313 | "homepage": "https://symfony.com/contributors" 3314 | }, 3315 | { 3316 | "name": "Gert de Pagter", 3317 | "email": "BackEndTea@gmail.com" 3318 | } 3319 | ], 3320 | "description": "Symfony polyfill for ctype functions", 3321 | "homepage": "https://symfony.com", 3322 | "keywords": [ 3323 | "compatibility", 3324 | "ctype", 3325 | "polyfill", 3326 | "portable" 3327 | ], 3328 | "time": "2019-02-06T07:57:58+00:00" 3329 | }, 3330 | { 3331 | "name": "symfony/polyfill-iconv", 3332 | "version": "v1.11.0", 3333 | "source": { 3334 | "type": "git", 3335 | "url": "https://github.com/symfony/polyfill-iconv.git", 3336 | "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7" 3337 | }, 3338 | "dist": { 3339 | "type": "zip", 3340 | "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", 3341 | "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", 3342 | "shasum": "" 3343 | }, 3344 | "require": { 3345 | "php": ">=5.3.3" 3346 | }, 3347 | "suggest": { 3348 | "ext-iconv": "For best performance" 3349 | }, 3350 | "type": "library", 3351 | "extra": { 3352 | "branch-alias": { 3353 | "dev-master": "1.11-dev" 3354 | } 3355 | }, 3356 | "autoload": { 3357 | "psr-4": { 3358 | "Symfony\\Polyfill\\Iconv\\": "" 3359 | }, 3360 | "files": [ 3361 | "bootstrap.php" 3362 | ] 3363 | }, 3364 | "notification-url": "https://packagist.org/downloads/", 3365 | "license": [ 3366 | "MIT" 3367 | ], 3368 | "authors": [ 3369 | { 3370 | "name": "Nicolas Grekas", 3371 | "email": "p@tchwork.com" 3372 | }, 3373 | { 3374 | "name": "Symfony Community", 3375 | "homepage": "https://symfony.com/contributors" 3376 | } 3377 | ], 3378 | "description": "Symfony polyfill for the Iconv extension", 3379 | "homepage": "https://symfony.com", 3380 | "keywords": [ 3381 | "compatibility", 3382 | "iconv", 3383 | "polyfill", 3384 | "portable", 3385 | "shim" 3386 | ], 3387 | "time": "2019-02-06T07:57:58+00:00" 3388 | }, 3389 | { 3390 | "name": "symfony/polyfill-intl-idn", 3391 | "version": "v1.11.0", 3392 | "source": { 3393 | "type": "git", 3394 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 3395 | "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af" 3396 | }, 3397 | "dist": { 3398 | "type": "zip", 3399 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/c766e95bec706cdd89903b1eda8afab7d7a6b7af", 3400 | "reference": "c766e95bec706cdd89903b1eda8afab7d7a6b7af", 3401 | "shasum": "" 3402 | }, 3403 | "require": { 3404 | "php": ">=5.3.3", 3405 | "symfony/polyfill-mbstring": "^1.3", 3406 | "symfony/polyfill-php72": "^1.9" 3407 | }, 3408 | "suggest": { 3409 | "ext-intl": "For best performance" 3410 | }, 3411 | "type": "library", 3412 | "extra": { 3413 | "branch-alias": { 3414 | "dev-master": "1.9-dev" 3415 | } 3416 | }, 3417 | "autoload": { 3418 | "psr-4": { 3419 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 3420 | }, 3421 | "files": [ 3422 | "bootstrap.php" 3423 | ] 3424 | }, 3425 | "notification-url": "https://packagist.org/downloads/", 3426 | "license": [ 3427 | "MIT" 3428 | ], 3429 | "authors": [ 3430 | { 3431 | "name": "Symfony Community", 3432 | "homepage": "https://symfony.com/contributors" 3433 | }, 3434 | { 3435 | "name": "Laurent Bassin", 3436 | "email": "laurent@bassin.info" 3437 | } 3438 | ], 3439 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 3440 | "homepage": "https://symfony.com", 3441 | "keywords": [ 3442 | "compatibility", 3443 | "idn", 3444 | "intl", 3445 | "polyfill", 3446 | "portable", 3447 | "shim" 3448 | ], 3449 | "time": "2019-03-04T13:44:35+00:00" 3450 | }, 3451 | { 3452 | "name": "symfony/polyfill-mbstring", 3453 | "version": "v1.13.1", 3454 | "source": { 3455 | "type": "git", 3456 | "url": "https://github.com/symfony/polyfill-mbstring.git", 3457 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" 3458 | }, 3459 | "dist": { 3460 | "type": "zip", 3461 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", 3462 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", 3463 | "shasum": "" 3464 | }, 3465 | "require": { 3466 | "php": ">=5.3.3" 3467 | }, 3468 | "suggest": { 3469 | "ext-mbstring": "For best performance" 3470 | }, 3471 | "type": "library", 3472 | "extra": { 3473 | "branch-alias": { 3474 | "dev-master": "1.13-dev" 3475 | } 3476 | }, 3477 | "autoload": { 3478 | "psr-4": { 3479 | "Symfony\\Polyfill\\Mbstring\\": "" 3480 | }, 3481 | "files": [ 3482 | "bootstrap.php" 3483 | ] 3484 | }, 3485 | "notification-url": "https://packagist.org/downloads/", 3486 | "license": [ 3487 | "MIT" 3488 | ], 3489 | "authors": [ 3490 | { 3491 | "name": "Nicolas Grekas", 3492 | "email": "p@tchwork.com" 3493 | }, 3494 | { 3495 | "name": "Symfony Community", 3496 | "homepage": "https://symfony.com/contributors" 3497 | } 3498 | ], 3499 | "description": "Symfony polyfill for the Mbstring extension", 3500 | "homepage": "https://symfony.com", 3501 | "keywords": [ 3502 | "compatibility", 3503 | "mbstring", 3504 | "polyfill", 3505 | "portable", 3506 | "shim" 3507 | ], 3508 | "time": "2019-11-27T14:18:11+00:00" 3509 | }, 3510 | { 3511 | "name": "symfony/polyfill-php72", 3512 | "version": "v1.11.0", 3513 | "source": { 3514 | "type": "git", 3515 | "url": "https://github.com/symfony/polyfill-php72.git", 3516 | "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c" 3517 | }, 3518 | "dist": { 3519 | "type": "zip", 3520 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/ab50dcf166d5f577978419edd37aa2bb8eabce0c", 3521 | "reference": "ab50dcf166d5f577978419edd37aa2bb8eabce0c", 3522 | "shasum": "" 3523 | }, 3524 | "require": { 3525 | "php": ">=5.3.3" 3526 | }, 3527 | "type": "library", 3528 | "extra": { 3529 | "branch-alias": { 3530 | "dev-master": "1.11-dev" 3531 | } 3532 | }, 3533 | "autoload": { 3534 | "psr-4": { 3535 | "Symfony\\Polyfill\\Php72\\": "" 3536 | }, 3537 | "files": [ 3538 | "bootstrap.php" 3539 | ] 3540 | }, 3541 | "notification-url": "https://packagist.org/downloads/", 3542 | "license": [ 3543 | "MIT" 3544 | ], 3545 | "authors": [ 3546 | { 3547 | "name": "Nicolas Grekas", 3548 | "email": "p@tchwork.com" 3549 | }, 3550 | { 3551 | "name": "Symfony Community", 3552 | "homepage": "https://symfony.com/contributors" 3553 | } 3554 | ], 3555 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 3556 | "homepage": "https://symfony.com", 3557 | "keywords": [ 3558 | "compatibility", 3559 | "polyfill", 3560 | "portable", 3561 | "shim" 3562 | ], 3563 | "time": "2019-02-06T07:57:58+00:00" 3564 | }, 3565 | { 3566 | "name": "symfony/process", 3567 | "version": "v4.2.5", 3568 | "source": { 3569 | "type": "git", 3570 | "url": "https://github.com/symfony/process.git", 3571 | "reference": "1e6cbb41dadcaf29e0db034d6ad0d039a9df06e6" 3572 | }, 3573 | "dist": { 3574 | "type": "zip", 3575 | "url": "https://api.github.com/repos/symfony/process/zipball/1e6cbb41dadcaf29e0db034d6ad0d039a9df06e6", 3576 | "reference": "1e6cbb41dadcaf29e0db034d6ad0d039a9df06e6", 3577 | "shasum": "" 3578 | }, 3579 | "require": { 3580 | "php": "^7.1.3" 3581 | }, 3582 | "type": "library", 3583 | "extra": { 3584 | "branch-alias": { 3585 | "dev-master": "4.2-dev" 3586 | } 3587 | }, 3588 | "autoload": { 3589 | "psr-4": { 3590 | "Symfony\\Component\\Process\\": "" 3591 | }, 3592 | "exclude-from-classmap": [ 3593 | "/Tests/" 3594 | ] 3595 | }, 3596 | "notification-url": "https://packagist.org/downloads/", 3597 | "license": [ 3598 | "MIT" 3599 | ], 3600 | "authors": [ 3601 | { 3602 | "name": "Fabien Potencier", 3603 | "email": "fabien@symfony.com" 3604 | }, 3605 | { 3606 | "name": "Symfony Community", 3607 | "homepage": "https://symfony.com/contributors" 3608 | } 3609 | ], 3610 | "description": "Symfony Process Component", 3611 | "homepage": "https://symfony.com", 3612 | "time": "2019-03-10T20:07:02+00:00" 3613 | }, 3614 | { 3615 | "name": "symfony/routing", 3616 | "version": "v4.2.5", 3617 | "source": { 3618 | "type": "git", 3619 | "url": "https://github.com/symfony/routing.git", 3620 | "reference": "319f600c1ea0f981f6bdc2f042cfc1690957c0e0" 3621 | }, 3622 | "dist": { 3623 | "type": "zip", 3624 | "url": "https://api.github.com/repos/symfony/routing/zipball/319f600c1ea0f981f6bdc2f042cfc1690957c0e0", 3625 | "reference": "319f600c1ea0f981f6bdc2f042cfc1690957c0e0", 3626 | "shasum": "" 3627 | }, 3628 | "require": { 3629 | "php": "^7.1.3" 3630 | }, 3631 | "conflict": { 3632 | "symfony/config": "<4.2", 3633 | "symfony/dependency-injection": "<3.4", 3634 | "symfony/yaml": "<3.4" 3635 | }, 3636 | "require-dev": { 3637 | "doctrine/annotations": "~1.0", 3638 | "psr/log": "~1.0", 3639 | "symfony/config": "~4.2", 3640 | "symfony/dependency-injection": "~3.4|~4.0", 3641 | "symfony/expression-language": "~3.4|~4.0", 3642 | "symfony/http-foundation": "~3.4|~4.0", 3643 | "symfony/yaml": "~3.4|~4.0" 3644 | }, 3645 | "suggest": { 3646 | "doctrine/annotations": "For using the annotation loader", 3647 | "symfony/config": "For using the all-in-one router or any loader", 3648 | "symfony/expression-language": "For using expression matching", 3649 | "symfony/http-foundation": "For using a Symfony Request object", 3650 | "symfony/yaml": "For using the YAML loader" 3651 | }, 3652 | "type": "library", 3653 | "extra": { 3654 | "branch-alias": { 3655 | "dev-master": "4.2-dev" 3656 | } 3657 | }, 3658 | "autoload": { 3659 | "psr-4": { 3660 | "Symfony\\Component\\Routing\\": "" 3661 | }, 3662 | "exclude-from-classmap": [ 3663 | "/Tests/" 3664 | ] 3665 | }, 3666 | "notification-url": "https://packagist.org/downloads/", 3667 | "license": [ 3668 | "MIT" 3669 | ], 3670 | "authors": [ 3671 | { 3672 | "name": "Fabien Potencier", 3673 | "email": "fabien@symfony.com" 3674 | }, 3675 | { 3676 | "name": "Symfony Community", 3677 | "homepage": "https://symfony.com/contributors" 3678 | } 3679 | ], 3680 | "description": "Symfony Routing Component", 3681 | "homepage": "https://symfony.com", 3682 | "keywords": [ 3683 | "router", 3684 | "routing", 3685 | "uri", 3686 | "url" 3687 | ], 3688 | "time": "2019-03-30T15:58:42+00:00" 3689 | }, 3690 | { 3691 | "name": "symfony/translation", 3692 | "version": "v4.2.5", 3693 | "source": { 3694 | "type": "git", 3695 | "url": "https://github.com/symfony/translation.git", 3696 | "reference": "e46933cc31b68f51f7fc5470fb55550407520f56" 3697 | }, 3698 | "dist": { 3699 | "type": "zip", 3700 | "url": "https://api.github.com/repos/symfony/translation/zipball/e46933cc31b68f51f7fc5470fb55550407520f56", 3701 | "reference": "e46933cc31b68f51f7fc5470fb55550407520f56", 3702 | "shasum": "" 3703 | }, 3704 | "require": { 3705 | "php": "^7.1.3", 3706 | "symfony/contracts": "^1.0.2", 3707 | "symfony/polyfill-mbstring": "~1.0" 3708 | }, 3709 | "conflict": { 3710 | "symfony/config": "<3.4", 3711 | "symfony/dependency-injection": "<3.4", 3712 | "symfony/yaml": "<3.4" 3713 | }, 3714 | "provide": { 3715 | "symfony/translation-contracts-implementation": "1.0" 3716 | }, 3717 | "require-dev": { 3718 | "psr/log": "~1.0", 3719 | "symfony/config": "~3.4|~4.0", 3720 | "symfony/console": "~3.4|~4.0", 3721 | "symfony/dependency-injection": "~3.4|~4.0", 3722 | "symfony/finder": "~2.8|~3.0|~4.0", 3723 | "symfony/intl": "~3.4|~4.0", 3724 | "symfony/yaml": "~3.4|~4.0" 3725 | }, 3726 | "suggest": { 3727 | "psr/log-implementation": "To use logging capability in translator", 3728 | "symfony/config": "", 3729 | "symfony/yaml": "" 3730 | }, 3731 | "type": "library", 3732 | "extra": { 3733 | "branch-alias": { 3734 | "dev-master": "4.2-dev" 3735 | } 3736 | }, 3737 | "autoload": { 3738 | "psr-4": { 3739 | "Symfony\\Component\\Translation\\": "" 3740 | }, 3741 | "exclude-from-classmap": [ 3742 | "/Tests/" 3743 | ] 3744 | }, 3745 | "notification-url": "https://packagist.org/downloads/", 3746 | "license": [ 3747 | "MIT" 3748 | ], 3749 | "authors": [ 3750 | { 3751 | "name": "Fabien Potencier", 3752 | "email": "fabien@symfony.com" 3753 | }, 3754 | { 3755 | "name": "Symfony Community", 3756 | "homepage": "https://symfony.com/contributors" 3757 | } 3758 | ], 3759 | "description": "Symfony Translation Component", 3760 | "homepage": "https://symfony.com", 3761 | "time": "2019-04-01T14:13:08+00:00" 3762 | }, 3763 | { 3764 | "name": "symfony/var-dumper", 3765 | "version": "v4.2.5", 3766 | "source": { 3767 | "type": "git", 3768 | "url": "https://github.com/symfony/var-dumper.git", 3769 | "reference": "9f87189ac10b42edf7fb8edc846f1937c6d157cf" 3770 | }, 3771 | "dist": { 3772 | "type": "zip", 3773 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/9f87189ac10b42edf7fb8edc846f1937c6d157cf", 3774 | "reference": "9f87189ac10b42edf7fb8edc846f1937c6d157cf", 3775 | "shasum": "" 3776 | }, 3777 | "require": { 3778 | "php": "^7.1.3", 3779 | "symfony/polyfill-mbstring": "~1.0", 3780 | "symfony/polyfill-php72": "~1.5" 3781 | }, 3782 | "conflict": { 3783 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", 3784 | "symfony/console": "<3.4" 3785 | }, 3786 | "require-dev": { 3787 | "ext-iconv": "*", 3788 | "symfony/console": "~3.4|~4.0", 3789 | "symfony/process": "~3.4|~4.0", 3790 | "twig/twig": "~1.34|~2.4" 3791 | }, 3792 | "suggest": { 3793 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 3794 | "ext-intl": "To show region name in time zone dump", 3795 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 3796 | }, 3797 | "bin": [ 3798 | "Resources/bin/var-dump-server" 3799 | ], 3800 | "type": "library", 3801 | "extra": { 3802 | "branch-alias": { 3803 | "dev-master": "4.2-dev" 3804 | } 3805 | }, 3806 | "autoload": { 3807 | "files": [ 3808 | "Resources/functions/dump.php" 3809 | ], 3810 | "psr-4": { 3811 | "Symfony\\Component\\VarDumper\\": "" 3812 | }, 3813 | "exclude-from-classmap": [ 3814 | "/Tests/" 3815 | ] 3816 | }, 3817 | "notification-url": "https://packagist.org/downloads/", 3818 | "license": [ 3819 | "MIT" 3820 | ], 3821 | "authors": [ 3822 | { 3823 | "name": "Nicolas Grekas", 3824 | "email": "p@tchwork.com" 3825 | }, 3826 | { 3827 | "name": "Symfony Community", 3828 | "homepage": "https://symfony.com/contributors" 3829 | } 3830 | ], 3831 | "description": "Symfony mechanism for exploring and dumping PHP variables", 3832 | "homepage": "https://symfony.com", 3833 | "keywords": [ 3834 | "debug", 3835 | "dump" 3836 | ], 3837 | "time": "2019-02-23T15:17:42+00:00" 3838 | }, 3839 | { 3840 | "name": "theseer/tokenizer", 3841 | "version": "1.1.2", 3842 | "source": { 3843 | "type": "git", 3844 | "url": "https://github.com/theseer/tokenizer.git", 3845 | "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" 3846 | }, 3847 | "dist": { 3848 | "type": "zip", 3849 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", 3850 | "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", 3851 | "shasum": "" 3852 | }, 3853 | "require": { 3854 | "ext-dom": "*", 3855 | "ext-tokenizer": "*", 3856 | "ext-xmlwriter": "*", 3857 | "php": "^7.0" 3858 | }, 3859 | "type": "library", 3860 | "autoload": { 3861 | "classmap": [ 3862 | "src/" 3863 | ] 3864 | }, 3865 | "notification-url": "https://packagist.org/downloads/", 3866 | "license": [ 3867 | "BSD-3-Clause" 3868 | ], 3869 | "authors": [ 3870 | { 3871 | "name": "Arne Blankerts", 3872 | "email": "arne@blankerts.de", 3873 | "role": "Developer" 3874 | } 3875 | ], 3876 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 3877 | "time": "2019-04-04T09:56:43+00:00" 3878 | }, 3879 | { 3880 | "name": "tijsverkoyen/css-to-inline-styles", 3881 | "version": "2.2.1", 3882 | "source": { 3883 | "type": "git", 3884 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", 3885 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" 3886 | }, 3887 | "dist": { 3888 | "type": "zip", 3889 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 3890 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 3891 | "shasum": "" 3892 | }, 3893 | "require": { 3894 | "php": "^5.5 || ^7.0", 3895 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" 3896 | }, 3897 | "require-dev": { 3898 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 3899 | }, 3900 | "type": "library", 3901 | "extra": { 3902 | "branch-alias": { 3903 | "dev-master": "2.2.x-dev" 3904 | } 3905 | }, 3906 | "autoload": { 3907 | "psr-4": { 3908 | "TijsVerkoyen\\CssToInlineStyles\\": "src" 3909 | } 3910 | }, 3911 | "notification-url": "https://packagist.org/downloads/", 3912 | "license": [ 3913 | "BSD-3-Clause" 3914 | ], 3915 | "authors": [ 3916 | { 3917 | "name": "Tijs Verkoyen", 3918 | "email": "css_to_inline_styles@verkoyen.eu", 3919 | "role": "Developer" 3920 | } 3921 | ], 3922 | "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", 3923 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", 3924 | "time": "2017-11-27T11:13:29+00:00" 3925 | }, 3926 | { 3927 | "name": "vlucas/phpdotenv", 3928 | "version": "v3.3.3", 3929 | "source": { 3930 | "type": "git", 3931 | "url": "https://github.com/vlucas/phpdotenv.git", 3932 | "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde" 3933 | }, 3934 | "dist": { 3935 | "type": "zip", 3936 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/dbcc609971dd9b55f48b8008b553d79fd372ddde", 3937 | "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde", 3938 | "shasum": "" 3939 | }, 3940 | "require": { 3941 | "php": "^5.4 || ^7.0", 3942 | "phpoption/phpoption": "^1.5", 3943 | "symfony/polyfill-ctype": "^1.9" 3944 | }, 3945 | "require-dev": { 3946 | "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0" 3947 | }, 3948 | "type": "library", 3949 | "extra": { 3950 | "branch-alias": { 3951 | "dev-master": "3.3-dev" 3952 | } 3953 | }, 3954 | "autoload": { 3955 | "psr-4": { 3956 | "Dotenv\\": "src/" 3957 | } 3958 | }, 3959 | "notification-url": "https://packagist.org/downloads/", 3960 | "license": [ 3961 | "BSD-3-Clause" 3962 | ], 3963 | "authors": [ 3964 | { 3965 | "name": "Vance Lucas", 3966 | "email": "vance@vancelucas.com", 3967 | "homepage": "http://www.vancelucas.com" 3968 | } 3969 | ], 3970 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 3971 | "keywords": [ 3972 | "dotenv", 3973 | "env", 3974 | "environment" 3975 | ], 3976 | "time": "2019-03-06T09:39:45+00:00" 3977 | }, 3978 | { 3979 | "name": "webmozart/assert", 3980 | "version": "1.4.0", 3981 | "source": { 3982 | "type": "git", 3983 | "url": "https://github.com/webmozart/assert.git", 3984 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" 3985 | }, 3986 | "dist": { 3987 | "type": "zip", 3988 | "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", 3989 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", 3990 | "shasum": "" 3991 | }, 3992 | "require": { 3993 | "php": "^5.3.3 || ^7.0", 3994 | "symfony/polyfill-ctype": "^1.8" 3995 | }, 3996 | "require-dev": { 3997 | "phpunit/phpunit": "^4.6", 3998 | "sebastian/version": "^1.0.1" 3999 | }, 4000 | "type": "library", 4001 | "extra": { 4002 | "branch-alias": { 4003 | "dev-master": "1.3-dev" 4004 | } 4005 | }, 4006 | "autoload": { 4007 | "psr-4": { 4008 | "Webmozart\\Assert\\": "src/" 4009 | } 4010 | }, 4011 | "notification-url": "https://packagist.org/downloads/", 4012 | "license": [ 4013 | "MIT" 4014 | ], 4015 | "authors": [ 4016 | { 4017 | "name": "Bernhard Schussek", 4018 | "email": "bschussek@gmail.com" 4019 | } 4020 | ], 4021 | "description": "Assertions to validate method input/output with nice error messages.", 4022 | "keywords": [ 4023 | "assert", 4024 | "check", 4025 | "validate" 4026 | ], 4027 | "time": "2018-12-25T11:19:39+00:00" 4028 | } 4029 | ], 4030 | "aliases": [], 4031 | "minimum-stability": "stable", 4032 | "stability-flags": [], 4033 | "prefer-stable": false, 4034 | "prefer-lowest": false, 4035 | "platform": [], 4036 | "platform-dev": [] 4037 | } 4038 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Laravel Eloquent Orderable 2 | 3 | Laravel Eloquent Orderable is a package that helps you make your eloquent models orderable, either within a group our within all other models of the same class. 4 | 5 | ## Installation 6 | 7 | Install via composer 8 | 9 | ```bash 10 | composer require flyhjaelp/laravel-eloquent-orderable 11 | ``` 12 | 13 | ## Database setup 14 | If you want to use the orderable functionality on a model it has to have a database column it can be ordered by. By default the package will look for a column named "order", but this can be overwritten. The order column should be an unsigned integer that's nullable. Example: 15 | 16 | ```php 17 | Schema::create('orderable_test_models', function (Blueprint $table) { 18 | $table->unsignedInteger('order')->nullable(); 19 | }); 20 | ``` 21 | 22 | ## Default Usage 23 | 24 | ```php 25 | save(); 43 | $foobarB = (new Foobar())->save(); 44 | $foobarC = (new Foobar())->save(); 45 | Foobar::all()->pluck('order','id'); 46 | // will output [1 => 1, 2 => 2, 3 => 3] 47 | ``` 48 | #### Creating a new model with a specified order 49 | If an order is specified when being created that order will update already existing orders accordingly. 50 | ```php 51 | $foobarD = new Foobar(); 52 | $foobarD->order = 2; 53 | $foobarD->save(); 54 | Foobar::all()->pluck('order','id'); 55 | // will output [1 => 1, 4 => 2, 2 => 3, 3 => 4] 56 | ``` 57 | 58 | #### Updating the order of a model 59 | When updating a models order the other models automatically update their orders accordingly. 60 | ```php 61 | $foobarC->order = 2;` 62 | $foobarC->save(); 63 | Foobar::all()->pluck('order','id'); // will output [1 => 1, 3 => 2, 4 => 3, 2 => 3] 64 | ``` 65 | 66 | #### Deleting a model 67 | When deleting a model, the order of all other models with a higher order will have their order decreased by one. 68 | ```php 69 | $foobarA->delete(); 70 | Foobar::all()->pluck('order','id'); // will output [3 => 1, 4 => 2, 2 => 3] 71 | ``` 72 | 73 | ## Grouping usage 74 | You can make a group within your model, and the order only applies within the group. Example you might have a model called MenuItem which should be grouped by menu_id, and the order should only apply within it's group. To add a group to model you have to include the orderableWithinGroup trait and implement the following functions: 75 | - scopeOrdered(Builder $query) 76 | - scopeWithinOrderGroup(Builder $query, OrderableInterface $orderableModel) 77 | - columnsAffectingOrderGroup() 78 | 79 | ```php 80 | orderBy('menu_id')->orderBy('order'); 94 | } 95 | 96 | public function scopeWithinOrderGroup(Builder $query, OrderableInterface $orderableModel): void{ 97 | $query->where('menu_id',$orderableModel->menu_id); 98 | } 99 | 100 | public function columnsAffectingOrderGroup(): Collection{ 101 | return collect(['menu_id']); 102 | } 103 | 104 | } 105 | ``` 106 | 107 | #### Models are now ordered within their group 108 | New instances will have an order added to them, by default they are added as last in order within their group 109 | 110 | ```php 111 | menu_id = 1; 115 | $foobarA->save(); 116 | $foobarB= new Foobar(); 117 | $foobarB->menu_id = 1; 118 | $foobarB->save(); 119 | $foobarC = new Foobar(); 120 | $foobarC->menu_id = 2; 121 | $foobarC->save(); 122 | Foobar::all()->pluck('order','id'); 123 | // will output [1 => 1, 2 => 2, 3 => 1] 124 | ``` 125 | 126 | ## Usage within pivot models 127 | You can make pivot models orderable if you wish to be able order a many to many relationship whenever it's retrieved. The order only works one way, meaning if you for example have a journey that has mutiple checkpoints you can make the checkpoints come in the correct order when you retrieve them from the journey, but not the other way around. 128 | 129 | ### Setup pivot model ordering 130 | For a pivot model to be orderable you have to use the `PivotOrderable` trait on the model. It's also required to have an autoincrementing primary key(usually an "id") in the pivot relationship table. Besides that you have to implement the methods mentioned under `OrderableWithinGroup` 131 | ```php 132 | where('journey_id', $orderableModel->journey_id); 148 | } 149 | 150 | public function scopeOrdered(Builder $query): void 151 | { 152 | $query->orderBy('journey_id')->orderBy($this->getOrderableColumn()); 153 | } 154 | 155 | public function columnsAffectingOrderGroup(): Collection 156 | { 157 | return collect(['journey_id']); 158 | } 159 | 160 | } 161 | ``` 162 | When calling the relationship from a model, you have to chain on the `using` method on the `belongsToMany` call when defining the relationship on the model. Also you have to add `orderBy` method call if you want the relationship ordered when retrieved. 163 | 164 | ```php 165 | belongsToMany(Checkpoint::class) 174 | ->using(JourneyCheckpointsRelationship::class) 175 | ->withPivot('order') 176 | ->orderBy('pivot_order'); 177 | } 178 | 179 | } 180 | 181 | ``` 182 | ## Overwriting default values 183 | You have to change the default column used for storing the order in, as well as the default ordering scope. 184 | #### Overwriting default ordering column 185 | ```php 186 | public function getOrderableColumn(): string { 187 | return 'non_default_order_column'; 188 | } 189 | ``` 190 | 191 | #### Overwriting global ordering scope 192 | ```php 193 | public function scopeOrdered(Builder $query): void{ 194 | $query->orderBy('menu_id')->orderBy('order'); 195 | } 196 | ``` 197 | 198 | ## Contributing 199 | Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change. 200 | 201 | Please make sure to update tests as appropriate. 202 | 203 | ## License 204 | [MIT](./LICENSE.md) -------------------------------------------------------------------------------- /src/EloquentOrderableServiceProvider.php: -------------------------------------------------------------------------------- 1 | orderableModel = $orderableModel; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Events/OrderableModelDeleted.php: -------------------------------------------------------------------------------- 1 | orderableModel = $orderableModel; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Events/OrderableModelUpdated.php: -------------------------------------------------------------------------------- 1 | orderableModel = $orderableModel; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Events/OrderableModelUpdating.php: -------------------------------------------------------------------------------- 1 | orderableModel = $orderableModel; 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/Interfaces/OrderableInterface.php: -------------------------------------------------------------------------------- 1 | originalOrderValue = $event->orderableModel->getOriginalOrderValue(); 22 | $this->newOrderValue = $event->orderableModel->getCurrentOrderValue(); 23 | $this->orderableModel = $event->orderableModel; 24 | 25 | if ($this->orderableModel->hasChangedOrderGroup()) { 26 | $this->updateOrderInNewGroup(); 27 | } else { 28 | $this->updateOrderWithinGroup(); 29 | } 30 | } 31 | 32 | protected function updateOrderInNewGroup() 33 | { 34 | $this->orderableModel->getAllHigherOrEqualOrdered()->each->increaseOrder(); 35 | } 36 | 37 | protected function updateOrderWithinGroup() 38 | { 39 | if ($this->originalOrderValue > $this->newOrderValue) { 40 | $this->orderableModel->getAllOrderedBetweenWithoutSelf($this->newOrderValue, $this->originalOrderValue)->each->increaseOrder(); 41 | } 42 | 43 | if ($this->originalOrderValue < $this->newOrderValue) { 44 | $this->orderableModel->getAllOrderedBetweenWithoutSelf($this->originalOrderValue, $this->newOrderValue)->each->decreaseOrder(); 45 | } 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /src/Listeners/UpdateOrderToFitUpdatingOrderableModel.php: -------------------------------------------------------------------------------- 1 | orderableModel = $event->orderableModel; 18 | 19 | if ($event->orderableModel->hasChangedOrderGroup()) { 20 | $this->getAllFromOldGroupEqualOrHigherOrdered()->each->decreaseOrder(); 21 | } 22 | } 23 | 24 | protected function getAllFromOldGroupEqualOrHigherOrdered() 25 | { 26 | $orderableReflection = new \ReflectionClass(get_class($this->orderableModel)); 27 | $orderableCopyOfOriginalAttributes = $orderableReflection->newInstance(); 28 | collect($this->orderableModel->getOriginal())->each(function ($value, $key) use ($orderableCopyOfOriginalAttributes) { 29 | $orderableCopyOfOriginalAttributes->$key = $value; 30 | }); 31 | 32 | return $orderableCopyOfOriginalAttributes->getAllHigherOrEqualOrdered(); 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /src/Listeners/UpdateOrdersToFitDeletedModel.php: -------------------------------------------------------------------------------- 1 | orderableModel->getAllHigherOrEqualOrdered()->each->decreaseOrder(); 12 | } 13 | } 14 | -------------------------------------------------------------------------------- /src/Listeners/UpdateOrdersToFitNewOrderableModel.php: -------------------------------------------------------------------------------- 1 | orderableModel->getCurrentOrderValue() === null) { 12 | $event->orderableModel->setOrderValue($event->orderableModel->getLastOrder() + 1); 13 | } else { 14 | $event->orderableModel->getAllHigherOrEqualOrdered()->each->increaseOrder(); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /src/Traits/Orderable.php: -------------------------------------------------------------------------------- 1 | getOrderableColumn(); 27 | $query->orderBy($orderColumn); 28 | } 29 | 30 | /** 31 | * Methods to get order information. 32 | */ 33 | public function getLastOrder(): int 34 | { 35 | $orderColumn = $this->getOrderableColumn(); 36 | 37 | return optional(static::all()->last())->$orderColumn ?? 0; 38 | } 39 | 40 | /** 41 | * Methods to return collections within certains order. 42 | */ 43 | public function getAllHigherOrEqualOrdered(): Collection 44 | { 45 | $orderColumn = $this->getOrderableColumn(); 46 | 47 | return static::where($orderColumn, '>=', $this->$orderColumn)->where('id', '!=', $this->id)->get(); 48 | } 49 | 50 | public function getAllOrderedBetweenWithoutSelf(int $minOrder, int $maxOrder): Collection 51 | { 52 | $orderColumn = $this->getOrderableColumn(); 53 | 54 | return static::whereBetween($orderColumn, [$minOrder, $maxOrder])->where('id', '!=', $this->id)->get(); 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/Traits/OrderableWithinGroup.php: -------------------------------------------------------------------------------- 1 | getOrderableColumn(); 32 | 33 | return optional(static::withinOrderGroup($this)->get()->last())->$orderColumn ?? 0; 34 | } 35 | 36 | public function scopeNotSelf(Builder $query, OrderableInterface $orderableModel): void 37 | { 38 | $query->where('id', '!=', $orderableModel->id); 39 | } 40 | 41 | /** 42 | * Methods to return collections within certains order. 43 | */ 44 | public function getAllHigherOrEqualOrdered(): Collection 45 | { 46 | $orderColumn = $this->getOrderableColumn(); 47 | 48 | return static::withinOrderGroup($this)->where($orderColumn, '>=', $this->$orderColumn)->notSelf($this)->get(); 49 | } 50 | 51 | public function getAllOrderedBetweenWithoutSelf(int $minOrder, int $maxOrder): Collection 52 | { 53 | $orderColumn = $this->getOrderableColumn(); 54 | 55 | return static::withinOrderGroup($this)->whereBetween($orderColumn, [$minOrder, $maxOrder])->notSelf($this)->get(); 56 | } 57 | } 58 | -------------------------------------------------------------------------------- /src/Traits/PivotOrderable.php: -------------------------------------------------------------------------------- 1 | fillWithDataFromDb(); 33 | static::fireEventIfNotUpdatingOrderAlready(OrderableModelUpdating::class, $orderableModel); 34 | }); 35 | 36 | static::updated(function (OrderableInterface $orderableModel) { 37 | $orderableModel->fillWithDataFromDb(); 38 | static::fireEventIfNotUpdatingOrderAlready(OrderableModelUpdated::class, $orderableModel); 39 | }); 40 | 41 | static::deleting(function (OrderableInterface $orderableModel) { 42 | $orderableModel->fillWithDataFromDb(); 43 | }); 44 | 45 | static::deleted(function (OrderableInterface $orderableModel) { 46 | static::fireEventIfNotUpdatingOrderAlready(OrderableModelDeleted::class, $orderableModel); 47 | }); 48 | 49 | static::addGlobalOrderingScope(); 50 | } 51 | 52 | protected static function setOriginalOrderValues() 53 | { 54 | if (static::$originalOrderValues === null) { 55 | static::$originalOrderValues = collect(); 56 | } 57 | } 58 | 59 | public function getOriginalOrderValue(): ?int 60 | { 61 | if (static::$originalOrderValues->has($this->getOriginalOrderValueKey())) { 62 | return static::$originalOrderValues[$this->getOriginalOrderValueKey()]; 63 | } 64 | 65 | return null; 66 | } 67 | 68 | protected function getOriginalOrderValueKey(): string 69 | { 70 | $keyName = $this->getKeyName(); 71 | if ($this->canBeFoundViaPrimaryKey()) { 72 | return 'I'.$this->$keyName; 73 | } 74 | 75 | throw new Exception('Can\'t get original order value key as both the "Foreign key" and "Primary key" aren\'t set'); 76 | } 77 | 78 | protected function canBeFoundViaForeignKeys(): bool 79 | { 80 | $foreignKey = $this->getForeignKey(); 81 | $relatedKey = $this->getRelatedKey(); 82 | 83 | return $foreignKey !== null && $relatedKey !== null; 84 | } 85 | 86 | protected function canBeFoundViaPrimaryKey(): bool 87 | { 88 | $keyName = $this->getKeyName(); 89 | 90 | return $this->$keyName !== null; 91 | } 92 | 93 | protected function fillWithDataFromDb(): void 94 | { 95 | $newData = $this->toArray(); 96 | 97 | if ($this->canBeFoundViaForeignKeys()) { 98 | $oldData = $this->findModelViaForeignKeys()->toArray(); 99 | } elseif ($this->canBeFoundViaPrimaryKey()) { 100 | $oldData = $this->findModelViaPrimaryKey()->toArray(); 101 | } else { 102 | throw new Exception('Can\'t fill model as both the "Foreign key" and "Primary key" aren\'t set'); 103 | } 104 | 105 | $this->fill($oldData); 106 | if (! static::$originalOrderValues->has($this->getOriginalOrderValueKey())) { 107 | static::$originalOrderValues[$this->getOriginalOrderValueKey()] = $oldData[$this->getOrderableColumn()]; 108 | } 109 | $this->fill($newData); 110 | } 111 | 112 | protected function findModelViaForeignKeys(): Pivot 113 | { 114 | $relatedKey = $this->getRelatedKey(); 115 | $foreignKey = $this->getForeignKey(); 116 | 117 | return $this 118 | ->where($relatedKey, $this->$relatedKey) 119 | ->where($foreignKey, $this->$foreignKey) 120 | ->firstOrFail(); 121 | } 122 | 123 | protected function findModelViaPrimaryKey(): Pivot 124 | { 125 | $primaryKey = $this->getKeyName(); 126 | 127 | return $this 128 | ->where($primaryKey, $this->$primaryKey) 129 | ->firstOrFail(); 130 | } 131 | } 132 | -------------------------------------------------------------------------------- /src/Traits/SharedOrderableMethods.php: -------------------------------------------------------------------------------- 1 | ordered(); 34 | }); 35 | } 36 | 37 | public static function fireEventIfNotUpdatingOrderAlready(string $eventClassName, OrderableInterface $orderableModel): void 38 | { 39 | if (! $orderableModel->isUpdatingOrder()) { 40 | $orderableModel->setIsUpdatingOrderToTrue(); 41 | event(new $eventClassName($orderableModel)); 42 | $orderableModel->setIsUpdatingOrderToFalse(); 43 | } 44 | } 45 | 46 | /** 47 | * methods related to isUpdatingOrder. 48 | */ 49 | public function setIsUpdatingOrderToTrue(): void 50 | { 51 | static::$isUpdatingOrder = true; 52 | } 53 | 54 | public function setIsUpdatingOrderToFalse(): void 55 | { 56 | static::$isUpdatingOrder = false; 57 | } 58 | 59 | public function isUpdatingOrder(): bool 60 | { 61 | return static::$isUpdatingOrder; 62 | } 63 | 64 | /** 65 | * Methods Default value Getters. 66 | */ 67 | public function getOrderableColumn(): string 68 | { 69 | return 'order'; 70 | } 71 | 72 | public function getCurrentOrderValue(): ?int 73 | { 74 | $orderColumn = $this->getOrderableColumn(); 75 | 76 | return $this->$orderColumn; 77 | } 78 | 79 | public function getOriginalOrderValue(): ?int 80 | { 81 | $orderColumn = $this->getOrderableColumn(); 82 | 83 | return $this->getOriginal()[$orderColumn]; 84 | } 85 | 86 | public function setOrderValue(int $value): void 87 | { 88 | $orderColumn = $this->getOrderableColumn(); 89 | $this->$orderColumn = $value; 90 | } 91 | 92 | public function hasOrderGroup(): bool 93 | { 94 | return method_exists($this, 'scopeWithinOrderGroup'); 95 | } 96 | 97 | public function hasChangedOrderGroup(): bool 98 | { 99 | if (! $this->hasOrderGroup()) { 100 | return false; 101 | } 102 | 103 | foreach ($this->columnsAffectingOrderGroup() as $column) { 104 | if ($this->$column != $this->getOriginal()[$column]) { 105 | return true; 106 | } 107 | } 108 | 109 | return false; 110 | } 111 | 112 | /** 113 | * Methods to update orders. 114 | */ 115 | public function increaseOrder(): void 116 | { 117 | $orderColumn = $this->getOrderableColumn(); 118 | $this->$orderColumn += 1; 119 | $this->save(); 120 | } 121 | 122 | public function decreaseOrder(): void 123 | { 124 | $orderColumn = $this->getOrderableColumn(); 125 | $this->$orderColumn -= 1; 126 | $this->save(); 127 | } 128 | } 129 | --------------------------------------------------------------------------------