├── .gitignore ├── License.md ├── composer.json ├── composer.lock ├── phpunit.xml ├── readme.md ├── src ├── DynamicRelationsIncludeRequest.php └── IncludeRelations.php └── tests ├── DynamicRelationsIncludeRequestTest.php ├── IncludeRelationsCountTest.php ├── IncludeRelationsTest.php ├── TestCase.php └── classes ├── RelatedModel.php ├── SubRelatedModel.php └── TestModel.php /.gitignore: -------------------------------------------------------------------------------- 1 | vendor 2 | .phpunit.result.cache -------------------------------------------------------------------------------- /License.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | Copyright © 2019 Remy Sharp, https://remysharp.com 3 | 4 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 5 | 6 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 7 | 8 | THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "kalshah/dynamic-relations-includes", 3 | "description": "Dynamically include resources relations for API Requests", 4 | "type": "library", 5 | "keywords": [ 6 | "laravel relationships", 7 | "include relations", 8 | "dynamically include relations" 9 | ], 10 | "license": "MIT", 11 | "authors": [ 12 | { 13 | "name": "Khawlah Alshah", 14 | "email": "khawlahelshah@gmail.com" 15 | } 16 | ], 17 | "minimum-stability": "dev", 18 | "require": { 19 | "illuminate/http": "~5.6.34|~5.7.0|~5.8.0|^6.0|^7.0", 20 | "illuminate/support": "~5.6.34|~5.7.0|~5.8.0|^6.0|^7.0" 21 | }, 22 | "require-dev": { 23 | "illuminate/database": "~5.6.34|~5.7.0|~5.8.0|^6.0|^7.0", 24 | "phpunit/phpunit": "^7.0|^8.0|^9.0", 25 | "orchestra/testbench": "~3.6.0|~3.7.0|~3.8.0|^4.0|^5.0" 26 | }, 27 | "autoload": { 28 | "psr-4": { 29 | "Kalshah\\DynamicRelationsInclude\\": "src/" 30 | } 31 | }, 32 | "autoload-dev": { 33 | "psr-4": { 34 | "Kalshah\\DynamicRelationsInclude\\Tests\\": "tests" 35 | } 36 | } 37 | } -------------------------------------------------------------------------------- /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": "c0e621a7753573a2c37ec4b9e6b38e3a", 8 | "packages": [ 9 | { 10 | "name": "brick/math", 11 | "version": "0.8.14", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/brick/math.git", 15 | "reference": "6f7a46b5c3d487b277f38fbd17df57d348cace8a" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/brick/math/zipball/6f7a46b5c3d487b277f38fbd17df57d348cace8a", 20 | "reference": "6f7a46b5c3d487b277f38fbd17df57d348cace8a", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=7.1" 25 | }, 26 | "require-dev": { 27 | "php-coveralls/php-coveralls": "2.*", 28 | "phpunit/phpunit": "7.*", 29 | "vimeo/psalm": "3.*" 30 | }, 31 | "type": "library", 32 | "autoload": { 33 | "psr-4": { 34 | "Brick\\Math\\": "src/" 35 | } 36 | }, 37 | "notification-url": "https://packagist.org/downloads/", 38 | "license": [ 39 | "MIT" 40 | ], 41 | "description": "Arbitrary-precision arithmetic library", 42 | "keywords": [ 43 | "Arbitrary-precision", 44 | "BigInteger", 45 | "BigRational", 46 | "arithmetic", 47 | "bigdecimal", 48 | "bignum", 49 | "brick", 50 | "math" 51 | ], 52 | "time": "2020-02-17T13:57:43+00:00" 53 | }, 54 | { 55 | "name": "doctrine/inflector", 56 | "version": "1.3.x-dev", 57 | "source": { 58 | "type": "git", 59 | "url": "https://github.com/doctrine/inflector.git", 60 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" 61 | }, 62 | "dist": { 63 | "type": "zip", 64 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 65 | "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", 66 | "shasum": "" 67 | }, 68 | "require": { 69 | "php": "^7.1" 70 | }, 71 | "require-dev": { 72 | "phpunit/phpunit": "^6.2" 73 | }, 74 | "type": "library", 75 | "extra": { 76 | "branch-alias": { 77 | "dev-master": "1.3.x-dev" 78 | } 79 | }, 80 | "autoload": { 81 | "psr-4": { 82 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 83 | } 84 | }, 85 | "notification-url": "https://packagist.org/downloads/", 86 | "license": [ 87 | "MIT" 88 | ], 89 | "authors": [ 90 | { 91 | "name": "Guilherme Blanco", 92 | "email": "guilhermeblanco@gmail.com" 93 | }, 94 | { 95 | "name": "Roman Borschel", 96 | "email": "roman@code-factory.org" 97 | }, 98 | { 99 | "name": "Benjamin Eberlei", 100 | "email": "kontakt@beberlei.de" 101 | }, 102 | { 103 | "name": "Jonathan Wage", 104 | "email": "jonwage@gmail.com" 105 | }, 106 | { 107 | "name": "Johannes Schmitt", 108 | "email": "schmittjoh@gmail.com" 109 | } 110 | ], 111 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 112 | "homepage": "http://www.doctrine-project.org", 113 | "keywords": [ 114 | "inflection", 115 | "pluralize", 116 | "singularize", 117 | "string" 118 | ], 119 | "time": "2019-10-30T19:59:35+00:00" 120 | }, 121 | { 122 | "name": "doctrine/lexer", 123 | "version": "dev-master", 124 | "source": { 125 | "type": "git", 126 | "url": "https://github.com/doctrine/lexer.git", 127 | "reference": "ec953a1b157db060fc9576a6f6b6b1865a09aac9" 128 | }, 129 | "dist": { 130 | "type": "zip", 131 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/ec953a1b157db060fc9576a6f6b6b1865a09aac9", 132 | "reference": "ec953a1b157db060fc9576a6f6b6b1865a09aac9", 133 | "shasum": "" 134 | }, 135 | "require": { 136 | "php": "^7.2" 137 | }, 138 | "require-dev": { 139 | "doctrine/coding-standard": "^7.0.2", 140 | "phpstan/phpstan": "^0.11.8", 141 | "phpunit/phpunit": "^8.2" 142 | }, 143 | "type": "library", 144 | "extra": { 145 | "branch-alias": { 146 | "dev-master": "1.3.x-dev" 147 | } 148 | }, 149 | "autoload": { 150 | "psr-4": { 151 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 152 | } 153 | }, 154 | "notification-url": "https://packagist.org/downloads/", 155 | "license": [ 156 | "MIT" 157 | ], 158 | "authors": [ 159 | { 160 | "name": "Guilherme Blanco", 161 | "email": "guilhermeblanco@gmail.com" 162 | }, 163 | { 164 | "name": "Roman Borschel", 165 | "email": "roman@code-factory.org" 166 | }, 167 | { 168 | "name": "Johannes Schmitt", 169 | "email": "schmittjoh@gmail.com" 170 | } 171 | ], 172 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 173 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 174 | "keywords": [ 175 | "annotations", 176 | "docblock", 177 | "lexer", 178 | "parser", 179 | "php" 180 | ], 181 | "time": "2020-02-06T21:05:57+00:00" 182 | }, 183 | { 184 | "name": "dragonmantank/cron-expression", 185 | "version": "v2.3.0", 186 | "source": { 187 | "type": "git", 188 | "url": "https://github.com/dragonmantank/cron-expression.git", 189 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" 190 | }, 191 | "dist": { 192 | "type": "zip", 193 | "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", 194 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", 195 | "shasum": "" 196 | }, 197 | "require": { 198 | "php": "^7.0" 199 | }, 200 | "require-dev": { 201 | "phpunit/phpunit": "^6.4|^7.0" 202 | }, 203 | "type": "library", 204 | "extra": { 205 | "branch-alias": { 206 | "dev-master": "2.3-dev" 207 | } 208 | }, 209 | "autoload": { 210 | "psr-4": { 211 | "Cron\\": "src/Cron/" 212 | } 213 | }, 214 | "notification-url": "https://packagist.org/downloads/", 215 | "license": [ 216 | "MIT" 217 | ], 218 | "authors": [ 219 | { 220 | "name": "Michael Dowling", 221 | "email": "mtdowling@gmail.com", 222 | "homepage": "https://github.com/mtdowling" 223 | }, 224 | { 225 | "name": "Chris Tankersley", 226 | "email": "chris@ctankersley.com", 227 | "homepage": "https://github.com/dragonmantank" 228 | } 229 | ], 230 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", 231 | "keywords": [ 232 | "cron", 233 | "schedule" 234 | ], 235 | "time": "2019-03-31T00:38:28+00:00" 236 | }, 237 | { 238 | "name": "egulias/email-validator", 239 | "version": "dev-master", 240 | "source": { 241 | "type": "git", 242 | "url": "https://github.com/egulias/EmailValidator.git", 243 | "reference": "2f38a470f9f179d8d8835256de58c300916e47ae" 244 | }, 245 | "dist": { 246 | "type": "zip", 247 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/2f38a470f9f179d8d8835256de58c300916e47ae", 248 | "reference": "2f38a470f9f179d8d8835256de58c300916e47ae", 249 | "shasum": "" 250 | }, 251 | "require": { 252 | "doctrine/lexer": "^1.0.1", 253 | "php": ">=5.5", 254 | "symfony/polyfill-intl-idn": "^1.10" 255 | }, 256 | "require-dev": { 257 | "dominicsayers/isemail": "^3.0.7", 258 | "phpunit/phpunit": "^4.8.36|^7.5.15", 259 | "satooshi/php-coveralls": "^1.0.1" 260 | }, 261 | "suggest": { 262 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 263 | }, 264 | "type": "library", 265 | "extra": { 266 | "branch-alias": { 267 | "dev-master": "2.1.x-dev" 268 | } 269 | }, 270 | "autoload": { 271 | "psr-4": { 272 | "Egulias\\EmailValidator\\": "EmailValidator" 273 | } 274 | }, 275 | "notification-url": "https://packagist.org/downloads/", 276 | "license": [ 277 | "MIT" 278 | ], 279 | "authors": [ 280 | { 281 | "name": "Eduardo Gulias Davis" 282 | } 283 | ], 284 | "description": "A library for validating emails against several RFCs", 285 | "homepage": "https://github.com/egulias/EmailValidator", 286 | "keywords": [ 287 | "email", 288 | "emailvalidation", 289 | "emailvalidator", 290 | "validation", 291 | "validator" 292 | ], 293 | "time": "2020-03-02T21:43:01+00:00" 294 | }, 295 | { 296 | "name": "laravel/framework", 297 | "version": "7.x-dev", 298 | "source": { 299 | "type": "git", 300 | "url": "https://github.com/laravel/framework.git", 301 | "reference": "115441e5e23623ead99fe334ed48285570d5bfff" 302 | }, 303 | "dist": { 304 | "type": "zip", 305 | "url": "https://api.github.com/repos/laravel/framework/zipball/115441e5e23623ead99fe334ed48285570d5bfff", 306 | "reference": "115441e5e23623ead99fe334ed48285570d5bfff", 307 | "shasum": "" 308 | }, 309 | "require": { 310 | "doctrine/inflector": "^1.1", 311 | "dragonmantank/cron-expression": "^2.0", 312 | "egulias/email-validator": "^2.1.10", 313 | "ext-json": "*", 314 | "ext-mbstring": "*", 315 | "ext-openssl": "*", 316 | "league/commonmark": "^1.3", 317 | "league/flysystem": "^1.0.8", 318 | "monolog/monolog": "^2.0", 319 | "nesbot/carbon": "^2.17", 320 | "opis/closure": "^3.1", 321 | "php": "^7.2.5", 322 | "psr/container": "^1.0", 323 | "psr/simple-cache": "^1.0", 324 | "ramsey/uuid": "^3.7|^4.0", 325 | "swiftmailer/swiftmailer": "^6.0", 326 | "symfony/console": "^5.0", 327 | "symfony/error-handler": "^5.0", 328 | "symfony/finder": "^5.0", 329 | "symfony/http-foundation": "^5.0", 330 | "symfony/http-kernel": "^5.0", 331 | "symfony/mime": "^5.0", 332 | "symfony/process": "^5.0", 333 | "symfony/routing": "^5.0", 334 | "symfony/var-dumper": "^5.0", 335 | "tijsverkoyen/css-to-inline-styles": "^2.2.2", 336 | "vlucas/phpdotenv": "^4.0", 337 | "voku/portable-ascii": "^1.4.8" 338 | }, 339 | "conflict": { 340 | "tightenco/collect": "<5.5.33" 341 | }, 342 | "replace": { 343 | "illuminate/auth": "self.version", 344 | "illuminate/broadcasting": "self.version", 345 | "illuminate/bus": "self.version", 346 | "illuminate/cache": "self.version", 347 | "illuminate/config": "self.version", 348 | "illuminate/console": "self.version", 349 | "illuminate/container": "self.version", 350 | "illuminate/contracts": "self.version", 351 | "illuminate/cookie": "self.version", 352 | "illuminate/database": "self.version", 353 | "illuminate/encryption": "self.version", 354 | "illuminate/events": "self.version", 355 | "illuminate/filesystem": "self.version", 356 | "illuminate/hashing": "self.version", 357 | "illuminate/http": "self.version", 358 | "illuminate/log": "self.version", 359 | "illuminate/mail": "self.version", 360 | "illuminate/notifications": "self.version", 361 | "illuminate/pagination": "self.version", 362 | "illuminate/pipeline": "self.version", 363 | "illuminate/queue": "self.version", 364 | "illuminate/redis": "self.version", 365 | "illuminate/routing": "self.version", 366 | "illuminate/session": "self.version", 367 | "illuminate/support": "self.version", 368 | "illuminate/testing": "self.version", 369 | "illuminate/translation": "self.version", 370 | "illuminate/validation": "self.version", 371 | "illuminate/view": "self.version" 372 | }, 373 | "require-dev": { 374 | "aws/aws-sdk-php": "^3.0", 375 | "doctrine/dbal": "^2.6", 376 | "filp/whoops": "^2.4", 377 | "guzzlehttp/guzzle": "^6.3.1|^7.0", 378 | "league/flysystem-cached-adapter": "^1.0", 379 | "mockery/mockery": "^1.3.1", 380 | "moontoast/math": "^1.1", 381 | "orchestra/testbench-core": "^5.0", 382 | "pda/pheanstalk": "^4.0", 383 | "phpunit/phpunit": "^8.4|^9.0", 384 | "predis/predis": "^1.1.1", 385 | "symfony/cache": "^5.0" 386 | }, 387 | "suggest": { 388 | "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", 389 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", 390 | "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", 391 | "ext-memcached": "Required to use the memcache cache driver.", 392 | "ext-pcntl": "Required to use all features of the queue worker.", 393 | "ext-posix": "Required to use all features of the queue worker.", 394 | "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", 395 | "filp/whoops": "Required for friendly error pages in development (^2.4).", 396 | "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", 397 | "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0).", 398 | "laravel/tinker": "Required to use the tinker console command (^2.0).", 399 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", 400 | "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", 401 | "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", 402 | "mockery/mockery": "Required to use mocking (^1.3.1).", 403 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 404 | "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", 405 | "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", 406 | "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.0).", 407 | "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", 408 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", 409 | "symfony/cache": "Required to PSR-6 cache bridge (^5.0).", 410 | "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", 411 | "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." 412 | }, 413 | "type": "library", 414 | "extra": { 415 | "branch-alias": { 416 | "dev-master": "7.x-dev" 417 | } 418 | }, 419 | "autoload": { 420 | "files": [ 421 | "src/Illuminate/Foundation/helpers.php", 422 | "src/Illuminate/Support/helpers.php" 423 | ], 424 | "psr-4": { 425 | "Illuminate\\": "src/Illuminate/" 426 | } 427 | }, 428 | "notification-url": "https://packagist.org/downloads/", 429 | "license": [ 430 | "MIT" 431 | ], 432 | "authors": [ 433 | { 434 | "name": "Taylor Otwell", 435 | "email": "taylor@laravel.com" 436 | } 437 | ], 438 | "description": "The Laravel Framework.", 439 | "homepage": "https://laravel.com", 440 | "keywords": [ 441 | "framework", 442 | "laravel" 443 | ], 444 | "time": "2020-03-25T18:59:17+00:00" 445 | }, 446 | { 447 | "name": "league/commonmark", 448 | "version": "dev-master", 449 | "source": { 450 | "type": "git", 451 | "url": "https://github.com/thephpleague/commonmark.git", 452 | "reference": "30d82e49e4079a60b40898102028476f5e4648f4" 453 | }, 454 | "dist": { 455 | "type": "zip", 456 | "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/30d82e49e4079a60b40898102028476f5e4648f4", 457 | "reference": "30d82e49e4079a60b40898102028476f5e4648f4", 458 | "shasum": "" 459 | }, 460 | "require": { 461 | "ext-mbstring": "*", 462 | "php": "^7.1" 463 | }, 464 | "conflict": { 465 | "scrutinizer/ocular": "1.7.*" 466 | }, 467 | "require-dev": { 468 | "cebe/markdown": "~1.0", 469 | "commonmark/commonmark.js": "0.29.1", 470 | "erusev/parsedown": "~1.0", 471 | "ext-json": "*", 472 | "github/gfm": "0.29.0", 473 | "michelf/php-markdown": "~1.4", 474 | "mikehaertl/php-shellcommand": "^1.4", 475 | "phpstan/phpstan-shim": "^0.11.5", 476 | "phpunit/phpunit": "^7.5", 477 | "scrutinizer/ocular": "^1.5", 478 | "symfony/finder": "^4.2" 479 | }, 480 | "bin": [ 481 | "bin/commonmark" 482 | ], 483 | "type": "library", 484 | "extra": { 485 | "branch-alias": { 486 | "dev-master": "1.4-dev" 487 | } 488 | }, 489 | "autoload": { 490 | "psr-4": { 491 | "League\\CommonMark\\": "src" 492 | } 493 | }, 494 | "notification-url": "https://packagist.org/downloads/", 495 | "license": [ 496 | "BSD-3-Clause" 497 | ], 498 | "authors": [ 499 | { 500 | "name": "Colin O'Dell", 501 | "email": "colinodell@gmail.com", 502 | "homepage": "https://www.colinodell.com", 503 | "role": "Lead Developer" 504 | } 505 | ], 506 | "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", 507 | "homepage": "https://commonmark.thephpleague.com", 508 | "keywords": [ 509 | "commonmark", 510 | "flavored", 511 | "gfm", 512 | "github", 513 | "github-flavored", 514 | "markdown", 515 | "md", 516 | "parser" 517 | ], 518 | "time": "2020-03-25T19:53:45+00:00" 519 | }, 520 | { 521 | "name": "league/flysystem", 522 | "version": "1.x-dev", 523 | "source": { 524 | "type": "git", 525 | "url": "https://github.com/thephpleague/flysystem.git", 526 | "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21" 527 | }, 528 | "dist": { 529 | "type": "zip", 530 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/021569195e15f8209b1c4bebb78bd66aa4f08c21", 531 | "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21", 532 | "shasum": "" 533 | }, 534 | "require": { 535 | "ext-fileinfo": "*", 536 | "php": ">=5.5.9" 537 | }, 538 | "conflict": { 539 | "league/flysystem-sftp": "<1.0.6" 540 | }, 541 | "require-dev": { 542 | "phpspec/phpspec": "^3.4", 543 | "phpunit/phpunit": "^5.7.26" 544 | }, 545 | "suggest": { 546 | "ext-fileinfo": "Required for MimeType", 547 | "ext-ftp": "Allows you to use FTP server storage", 548 | "ext-openssl": "Allows you to use FTPS server storage", 549 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 550 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 551 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 552 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 553 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 554 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 555 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 556 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 557 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 558 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 559 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 560 | }, 561 | "type": "library", 562 | "extra": { 563 | "branch-alias": { 564 | "dev-master": "1.1-dev" 565 | } 566 | }, 567 | "autoload": { 568 | "psr-4": { 569 | "League\\Flysystem\\": "src/" 570 | } 571 | }, 572 | "notification-url": "https://packagist.org/downloads/", 573 | "license": [ 574 | "MIT" 575 | ], 576 | "authors": [ 577 | { 578 | "name": "Frank de Jonge", 579 | "email": "info@frenky.net" 580 | } 581 | ], 582 | "description": "Filesystem abstraction: Many filesystems, one API.", 583 | "keywords": [ 584 | "Cloud Files", 585 | "WebDAV", 586 | "abstraction", 587 | "aws", 588 | "cloud", 589 | "copy.com", 590 | "dropbox", 591 | "file systems", 592 | "files", 593 | "filesystem", 594 | "filesystems", 595 | "ftp", 596 | "rackspace", 597 | "remote", 598 | "s3", 599 | "sftp", 600 | "storage" 601 | ], 602 | "time": "2020-03-17T18:58:12+00:00" 603 | }, 604 | { 605 | "name": "monolog/monolog", 606 | "version": "dev-master", 607 | "source": { 608 | "type": "git", 609 | "url": "https://github.com/Seldaek/monolog.git", 610 | "reference": "bec314a9c14ce8a40650cf13923f5941ef1bfe0a" 611 | }, 612 | "dist": { 613 | "type": "zip", 614 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bec314a9c14ce8a40650cf13923f5941ef1bfe0a", 615 | "reference": "bec314a9c14ce8a40650cf13923f5941ef1bfe0a", 616 | "shasum": "" 617 | }, 618 | "require": { 619 | "php": "^7.2", 620 | "psr/log": "^1.0.1" 621 | }, 622 | "provide": { 623 | "psr/log-implementation": "1.0.0" 624 | }, 625 | "require-dev": { 626 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 627 | "doctrine/couchdb": "~1.0@dev", 628 | "elasticsearch/elasticsearch": "^6.0", 629 | "graylog2/gelf-php": "^1.4.2", 630 | "jakub-onderka/php-parallel-lint": "^0.9", 631 | "php-amqplib/php-amqplib": "~2.4", 632 | "php-console/php-console": "^3.1.3", 633 | "phpspec/prophecy": "^1.6.1", 634 | "phpunit/phpunit": "^8.3", 635 | "predis/predis": "^1.1", 636 | "rollbar/rollbar": "^1.3", 637 | "ruflin/elastica": ">=0.90 <3.0", 638 | "swiftmailer/swiftmailer": "^5.3|^6.0" 639 | }, 640 | "suggest": { 641 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 642 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 643 | "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", 644 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 645 | "ext-mbstring": "Allow to work properly with unicode symbols", 646 | "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", 647 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 648 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", 649 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 650 | "php-console/php-console": "Allow sending log messages to Google Chrome", 651 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 652 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server" 653 | }, 654 | "type": "library", 655 | "extra": { 656 | "branch-alias": { 657 | "dev-master": "2.x-dev" 658 | } 659 | }, 660 | "autoload": { 661 | "psr-4": { 662 | "Monolog\\": "src/Monolog" 663 | } 664 | }, 665 | "notification-url": "https://packagist.org/downloads/", 666 | "license": [ 667 | "MIT" 668 | ], 669 | "authors": [ 670 | { 671 | "name": "Jordi Boggiano", 672 | "email": "j.boggiano@seld.be", 673 | "homepage": "http://seld.be" 674 | } 675 | ], 676 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 677 | "homepage": "http://github.com/Seldaek/monolog", 678 | "keywords": [ 679 | "log", 680 | "logging", 681 | "psr-3" 682 | ], 683 | "time": "2020-02-19T14:44:17+00:00" 684 | }, 685 | { 686 | "name": "nesbot/carbon", 687 | "version": "dev-master", 688 | "source": { 689 | "type": "git", 690 | "url": "https://github.com/briannesbitt/Carbon.git", 691 | "reference": "7410a349613bf32d02d8aaed1c669698ddd2b718" 692 | }, 693 | "dist": { 694 | "type": "zip", 695 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7410a349613bf32d02d8aaed1c669698ddd2b718", 696 | "reference": "7410a349613bf32d02d8aaed1c669698ddd2b718", 697 | "shasum": "" 698 | }, 699 | "require": { 700 | "ext-json": "*", 701 | "php": "^7.1.8 || ^8.0", 702 | "symfony/translation": "^3.4 || ^4.0 || ^5.0" 703 | }, 704 | "require-dev": { 705 | "doctrine/orm": "^2.7", 706 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", 707 | "kylekatarnls/multi-tester": "^1.1", 708 | "phpmd/phpmd": "^2.8", 709 | "phpstan/phpstan": "^0.11", 710 | "phpunit/phpunit": "^7.5 || ^8.0", 711 | "squizlabs/php_codesniffer": "^3.4" 712 | }, 713 | "bin": [ 714 | "bin/carbon" 715 | ], 716 | "type": "library", 717 | "extra": { 718 | "branch-alias": { 719 | "dev-master": "2.x-dev" 720 | }, 721 | "laravel": { 722 | "providers": [ 723 | "Carbon\\Laravel\\ServiceProvider" 724 | ] 725 | } 726 | }, 727 | "autoload": { 728 | "psr-4": { 729 | "Carbon\\": "src/Carbon/" 730 | } 731 | }, 732 | "notification-url": "https://packagist.org/downloads/", 733 | "license": [ 734 | "MIT" 735 | ], 736 | "authors": [ 737 | { 738 | "name": "Brian Nesbitt", 739 | "email": "brian@nesbot.com", 740 | "homepage": "http://nesbot.com" 741 | }, 742 | { 743 | "name": "kylekatarnls", 744 | "homepage": "http://github.com/kylekatarnls" 745 | } 746 | ], 747 | "description": "An API extension for DateTime that supports 281 different languages.", 748 | "homepage": "http://carbon.nesbot.com", 749 | "keywords": [ 750 | "date", 751 | "datetime", 752 | "time" 753 | ], 754 | "time": "2020-03-24T16:01:47+00:00" 755 | }, 756 | { 757 | "name": "opis/closure", 758 | "version": "dev-master", 759 | "source": { 760 | "type": "git", 761 | "url": "https://github.com/opis/closure.git", 762 | "reference": "c37b40d59d9afffc2e5e958e2e5ccdb08634f81d" 763 | }, 764 | "dist": { 765 | "type": "zip", 766 | "url": "https://api.github.com/repos/opis/closure/zipball/c37b40d59d9afffc2e5e958e2e5ccdb08634f81d", 767 | "reference": "c37b40d59d9afffc2e5e958e2e5ccdb08634f81d", 768 | "shasum": "" 769 | }, 770 | "require": { 771 | "php": "^5.4 || ^7.0" 772 | }, 773 | "require-dev": { 774 | "jeremeamia/superclosure": "^2.0", 775 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 776 | }, 777 | "type": "library", 778 | "extra": { 779 | "branch-alias": { 780 | "dev-master": "3.5.x-dev" 781 | } 782 | }, 783 | "autoload": { 784 | "psr-4": { 785 | "Opis\\Closure\\": "src/" 786 | }, 787 | "files": [ 788 | "functions.php" 789 | ] 790 | }, 791 | "notification-url": "https://packagist.org/downloads/", 792 | "license": [ 793 | "MIT" 794 | ], 795 | "authors": [ 796 | { 797 | "name": "Marius Sarca", 798 | "email": "marius.sarca@gmail.com" 799 | }, 800 | { 801 | "name": "Sorin Sarca", 802 | "email": "sarca_sorin@hotmail.com" 803 | } 804 | ], 805 | "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", 806 | "homepage": "https://opis.io/closure", 807 | "keywords": [ 808 | "anonymous functions", 809 | "closure", 810 | "function", 811 | "serializable", 812 | "serialization", 813 | "serialize" 814 | ], 815 | "time": "2019-12-21T12:58:57+00:00" 816 | }, 817 | { 818 | "name": "phpoption/phpoption", 819 | "version": "dev-master", 820 | "source": { 821 | "type": "git", 822 | "url": "https://github.com/schmittjoh/php-option.git", 823 | "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" 824 | }, 825 | "dist": { 826 | "type": "zip", 827 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", 828 | "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", 829 | "shasum": "" 830 | }, 831 | "require": { 832 | "php": "^5.5.9 || ^7.0 || ^8.0" 833 | }, 834 | "require-dev": { 835 | "bamarni/composer-bin-plugin": "^1.3", 836 | "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" 837 | }, 838 | "type": "library", 839 | "extra": { 840 | "branch-alias": { 841 | "dev-master": "1.7-dev" 842 | } 843 | }, 844 | "autoload": { 845 | "psr-4": { 846 | "PhpOption\\": "src/PhpOption/" 847 | } 848 | }, 849 | "notification-url": "https://packagist.org/downloads/", 850 | "license": [ 851 | "Apache-2.0" 852 | ], 853 | "authors": [ 854 | { 855 | "name": "Johannes M. Schmitt", 856 | "email": "schmittjoh@gmail.com" 857 | }, 858 | { 859 | "name": "Graham Campbell", 860 | "email": "graham@alt-three.com" 861 | } 862 | ], 863 | "description": "Option Type for PHP", 864 | "keywords": [ 865 | "language", 866 | "option", 867 | "php", 868 | "type" 869 | ], 870 | "time": "2020-03-21T18:07:53+00:00" 871 | }, 872 | { 873 | "name": "psr/container", 874 | "version": "dev-master", 875 | "source": { 876 | "type": "git", 877 | "url": "https://github.com/php-fig/container.git", 878 | "reference": "fc1bc363ecf887921e3897c7b1dad3587ae154eb" 879 | }, 880 | "dist": { 881 | "type": "zip", 882 | "url": "https://api.github.com/repos/php-fig/container/zipball/fc1bc363ecf887921e3897c7b1dad3587ae154eb", 883 | "reference": "fc1bc363ecf887921e3897c7b1dad3587ae154eb", 884 | "shasum": "" 885 | }, 886 | "require": { 887 | "php": ">=5.3.0" 888 | }, 889 | "type": "library", 890 | "extra": { 891 | "branch-alias": { 892 | "dev-master": "1.0.x-dev" 893 | } 894 | }, 895 | "autoload": { 896 | "psr-4": { 897 | "Psr\\Container\\": "src/" 898 | } 899 | }, 900 | "notification-url": "https://packagist.org/downloads/", 901 | "license": [ 902 | "MIT" 903 | ], 904 | "authors": [ 905 | { 906 | "name": "PHP-FIG", 907 | "homepage": "http://www.php-fig.org/" 908 | } 909 | ], 910 | "description": "Common Container Interface (PHP FIG PSR-11)", 911 | "homepage": "https://github.com/php-fig/container", 912 | "keywords": [ 913 | "PSR-11", 914 | "container", 915 | "container-interface", 916 | "container-interop", 917 | "psr" 918 | ], 919 | "time": "2019-10-04T14:07:35+00:00" 920 | }, 921 | { 922 | "name": "psr/event-dispatcher", 923 | "version": "dev-master", 924 | "source": { 925 | "type": "git", 926 | "url": "https://github.com/php-fig/event-dispatcher.git", 927 | "reference": "cfea31e2e2abbe98159e825ce7d5040a39fba5f0" 928 | }, 929 | "dist": { 930 | "type": "zip", 931 | "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/cfea31e2e2abbe98159e825ce7d5040a39fba5f0", 932 | "reference": "cfea31e2e2abbe98159e825ce7d5040a39fba5f0", 933 | "shasum": "" 934 | }, 935 | "require": { 936 | "php": ">=7.2.0" 937 | }, 938 | "type": "library", 939 | "extra": { 940 | "branch-alias": { 941 | "dev-master": "1.0.x-dev" 942 | } 943 | }, 944 | "autoload": { 945 | "psr-4": { 946 | "Psr\\EventDispatcher\\": "src/" 947 | } 948 | }, 949 | "notification-url": "https://packagist.org/downloads/", 950 | "license": [ 951 | "MIT" 952 | ], 953 | "authors": [ 954 | { 955 | "name": "PHP-FIG", 956 | "homepage": "http://www.php-fig.org/" 957 | } 958 | ], 959 | "description": "Standard interfaces for event handling.", 960 | "keywords": [ 961 | "events", 962 | "psr", 963 | "psr-14" 964 | ], 965 | "time": "2019-05-22T19:30:22+00:00" 966 | }, 967 | { 968 | "name": "psr/log", 969 | "version": "dev-master", 970 | "source": { 971 | "type": "git", 972 | "url": "https://github.com/php-fig/log.git", 973 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" 974 | }, 975 | "dist": { 976 | "type": "zip", 977 | "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", 978 | "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", 979 | "shasum": "" 980 | }, 981 | "require": { 982 | "php": ">=5.3.0" 983 | }, 984 | "type": "library", 985 | "extra": { 986 | "branch-alias": { 987 | "dev-master": "1.1.x-dev" 988 | } 989 | }, 990 | "autoload": { 991 | "psr-4": { 992 | "Psr\\Log\\": "Psr/Log/" 993 | } 994 | }, 995 | "notification-url": "https://packagist.org/downloads/", 996 | "license": [ 997 | "MIT" 998 | ], 999 | "authors": [ 1000 | { 1001 | "name": "PHP-FIG", 1002 | "homepage": "http://www.php-fig.org/" 1003 | } 1004 | ], 1005 | "description": "Common interface for logging libraries", 1006 | "homepage": "https://github.com/php-fig/log", 1007 | "keywords": [ 1008 | "log", 1009 | "psr", 1010 | "psr-3" 1011 | ], 1012 | "time": "2020-03-23T09:12:05+00:00" 1013 | }, 1014 | { 1015 | "name": "psr/simple-cache", 1016 | "version": "dev-master", 1017 | "source": { 1018 | "type": "git", 1019 | "url": "https://github.com/php-fig/simple-cache.git", 1020 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 1021 | }, 1022 | "dist": { 1023 | "type": "zip", 1024 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1025 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 1026 | "shasum": "" 1027 | }, 1028 | "require": { 1029 | "php": ">=5.3.0" 1030 | }, 1031 | "type": "library", 1032 | "extra": { 1033 | "branch-alias": { 1034 | "dev-master": "1.0.x-dev" 1035 | } 1036 | }, 1037 | "autoload": { 1038 | "psr-4": { 1039 | "Psr\\SimpleCache\\": "src/" 1040 | } 1041 | }, 1042 | "notification-url": "https://packagist.org/downloads/", 1043 | "license": [ 1044 | "MIT" 1045 | ], 1046 | "authors": [ 1047 | { 1048 | "name": "PHP-FIG", 1049 | "homepage": "http://www.php-fig.org/" 1050 | } 1051 | ], 1052 | "description": "Common interfaces for simple caching", 1053 | "keywords": [ 1054 | "cache", 1055 | "caching", 1056 | "psr", 1057 | "psr-16", 1058 | "simple-cache" 1059 | ], 1060 | "time": "2017-10-23T01:57:42+00:00" 1061 | }, 1062 | { 1063 | "name": "ramsey/collection", 1064 | "version": "1.0.1", 1065 | "source": { 1066 | "type": "git", 1067 | "url": "https://github.com/ramsey/collection.git", 1068 | "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca" 1069 | }, 1070 | "dist": { 1071 | "type": "zip", 1072 | "url": "https://api.github.com/repos/ramsey/collection/zipball/925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", 1073 | "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", 1074 | "shasum": "" 1075 | }, 1076 | "require": { 1077 | "php": "^7.2" 1078 | }, 1079 | "require-dev": { 1080 | "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", 1081 | "fzaninotto/faker": "^1.5", 1082 | "jakub-onderka/php-parallel-lint": "^1", 1083 | "jangregor/phpstan-prophecy": "^0.6", 1084 | "mockery/mockery": "^1.3", 1085 | "phpstan/extension-installer": "^1", 1086 | "phpstan/phpdoc-parser": "0.4.1", 1087 | "phpstan/phpstan": "^0.12", 1088 | "phpstan/phpstan-mockery": "^0.12", 1089 | "phpstan/phpstan-phpunit": "^0.12", 1090 | "phpunit/phpunit": "^8.5", 1091 | "slevomat/coding-standard": "^6.0", 1092 | "squizlabs/php_codesniffer": "^3.5" 1093 | }, 1094 | "type": "library", 1095 | "autoload": { 1096 | "psr-4": { 1097 | "Ramsey\\Collection\\": "src/" 1098 | } 1099 | }, 1100 | "notification-url": "https://packagist.org/downloads/", 1101 | "license": [ 1102 | "MIT" 1103 | ], 1104 | "authors": [ 1105 | { 1106 | "name": "Ben Ramsey", 1107 | "email": "ben@benramsey.com", 1108 | "homepage": "https://benramsey.com" 1109 | } 1110 | ], 1111 | "description": "A PHP 7.2+ library for representing and manipulating collections.", 1112 | "homepage": "https://github.com/ramsey/collection", 1113 | "keywords": [ 1114 | "array", 1115 | "collection", 1116 | "hash", 1117 | "map", 1118 | "queue", 1119 | "set" 1120 | ], 1121 | "time": "2020-01-05T00:22:59+00:00" 1122 | }, 1123 | { 1124 | "name": "ramsey/uuid", 1125 | "version": "dev-master", 1126 | "source": { 1127 | "type": "git", 1128 | "url": "https://github.com/ramsey/uuid.git", 1129 | "reference": "2c9644b1d0c2bc58732413252bcbb6dce2eb0e0e" 1130 | }, 1131 | "dist": { 1132 | "type": "zip", 1133 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/2c9644b1d0c2bc58732413252bcbb6dce2eb0e0e", 1134 | "reference": "2c9644b1d0c2bc58732413252bcbb6dce2eb0e0e", 1135 | "shasum": "" 1136 | }, 1137 | "require": { 1138 | "brick/math": "^0.8", 1139 | "ext-json": "*", 1140 | "php": "^7.2 || ^8", 1141 | "ramsey/collection": "^1.0", 1142 | "symfony/polyfill-ctype": "^1.8" 1143 | }, 1144 | "replace": { 1145 | "rhumsaa/uuid": "self.version" 1146 | }, 1147 | "require-dev": { 1148 | "codeception/aspect-mock": "^3", 1149 | "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2", 1150 | "doctrine/annotations": "^1.8", 1151 | "goaop/framework": "^2", 1152 | "jakub-onderka/php-parallel-lint": "^1", 1153 | "mockery/mockery": "^1.3", 1154 | "moontoast/math": "^1.1", 1155 | "paragonie/random-lib": "^2", 1156 | "php-mock/php-mock-mockery": "^1.3", 1157 | "php-mock/php-mock-phpunit": "^2.5", 1158 | "phpstan/extension-installer": "^1.0", 1159 | "phpstan/phpdoc-parser": "0.4.3", 1160 | "phpstan/phpstan": "^0.12", 1161 | "phpstan/phpstan-mockery": "^0.12", 1162 | "phpstan/phpstan-phpunit": "^0.12", 1163 | "phpunit/phpunit": "^8.5", 1164 | "psy/psysh": "^0.10.0", 1165 | "slevomat/coding-standard": "^6.0", 1166 | "squizlabs/php_codesniffer": "^3.5", 1167 | "vimeo/psalm": "3.9.4" 1168 | }, 1169 | "suggest": { 1170 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", 1171 | "ext-ctype": "Enables faster processing of character classification using ctype functions.", 1172 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", 1173 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", 1174 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1175 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1176 | }, 1177 | "type": "library", 1178 | "extra": { 1179 | "branch-alias": { 1180 | "dev-master": "4.x-dev" 1181 | } 1182 | }, 1183 | "autoload": { 1184 | "psr-4": { 1185 | "Ramsey\\Uuid\\": "src/" 1186 | }, 1187 | "files": [ 1188 | "src/functions.php" 1189 | ] 1190 | }, 1191 | "notification-url": "https://packagist.org/downloads/", 1192 | "license": [ 1193 | "MIT" 1194 | ], 1195 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", 1196 | "homepage": "https://github.com/ramsey/uuid", 1197 | "keywords": [ 1198 | "guid", 1199 | "identifier", 1200 | "uuid" 1201 | ], 1202 | "time": "2020-03-22T02:34:13+00:00" 1203 | }, 1204 | { 1205 | "name": "swiftmailer/swiftmailer", 1206 | "version": "dev-master", 1207 | "source": { 1208 | "type": "git", 1209 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1210 | "reference": "4633950338d22b4406e5c77f6e25c658435d5db4" 1211 | }, 1212 | "dist": { 1213 | "type": "zip", 1214 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4633950338d22b4406e5c77f6e25c658435d5db4", 1215 | "reference": "4633950338d22b4406e5c77f6e25c658435d5db4", 1216 | "shasum": "" 1217 | }, 1218 | "require": { 1219 | "egulias/email-validator": "^2.0", 1220 | "php": "^7.2.5", 1221 | "symfony/polyfill-iconv": "^1.0", 1222 | "symfony/polyfill-intl-idn": "^1.10", 1223 | "symfony/polyfill-mbstring": "^1.0" 1224 | }, 1225 | "require-dev": { 1226 | "mockery/mockery": "^1.0", 1227 | "symfony/phpunit-bridge": "^4.4|^5.0" 1228 | }, 1229 | "suggest": { 1230 | "ext-intl": "Needed to support internationalized email addresses" 1231 | }, 1232 | "type": "library", 1233 | "extra": { 1234 | "branch-alias": { 1235 | "dev-master": "6.3-dev" 1236 | } 1237 | }, 1238 | "autoload": { 1239 | "files": [ 1240 | "lib/swift_required.php" 1241 | ] 1242 | }, 1243 | "notification-url": "https://packagist.org/downloads/", 1244 | "license": [ 1245 | "MIT" 1246 | ], 1247 | "authors": [ 1248 | { 1249 | "name": "Chris Corbyn" 1250 | }, 1251 | { 1252 | "name": "Fabien Potencier", 1253 | "email": "fabien@symfony.com" 1254 | } 1255 | ], 1256 | "description": "Swiftmailer, free feature-rich PHP mailer", 1257 | "homepage": "https://swiftmailer.symfony.com", 1258 | "keywords": [ 1259 | "email", 1260 | "mail", 1261 | "mailer" 1262 | ], 1263 | "time": "2020-03-03T08:49:48+00:00" 1264 | }, 1265 | { 1266 | "name": "symfony/console", 1267 | "version": "dev-master", 1268 | "source": { 1269 | "type": "git", 1270 | "url": "https://github.com/symfony/console.git", 1271 | "reference": "29da0e05888db75798e5fb65eef1d6dea8213f4c" 1272 | }, 1273 | "dist": { 1274 | "type": "zip", 1275 | "url": "https://api.github.com/repos/symfony/console/zipball/29da0e05888db75798e5fb65eef1d6dea8213f4c", 1276 | "reference": "29da0e05888db75798e5fb65eef1d6dea8213f4c", 1277 | "shasum": "" 1278 | }, 1279 | "require": { 1280 | "php": "^7.2.5", 1281 | "symfony/polyfill-mbstring": "~1.0", 1282 | "symfony/polyfill-php73": "^1.8", 1283 | "symfony/polyfill-php80": "^1.15", 1284 | "symfony/service-contracts": "^1.1|^2", 1285 | "symfony/string": "^5.1" 1286 | }, 1287 | "conflict": { 1288 | "symfony/dependency-injection": "<4.4", 1289 | "symfony/dotenv": "<5.1", 1290 | "symfony/event-dispatcher": "<4.4", 1291 | "symfony/lock": "<4.4", 1292 | "symfony/process": "<4.4" 1293 | }, 1294 | "provide": { 1295 | "psr/log-implementation": "1.0" 1296 | }, 1297 | "require-dev": { 1298 | "psr/log": "~1.0", 1299 | "symfony/config": "^4.4|^5.0", 1300 | "symfony/dependency-injection": "^4.4|^5.0", 1301 | "symfony/event-dispatcher": "^4.4|^5.0", 1302 | "symfony/lock": "^4.4|^5.0", 1303 | "symfony/process": "^4.4|^5.0", 1304 | "symfony/var-dumper": "^4.4|^5.0" 1305 | }, 1306 | "suggest": { 1307 | "psr/log": "For using the console logger", 1308 | "symfony/event-dispatcher": "", 1309 | "symfony/lock": "", 1310 | "symfony/process": "" 1311 | }, 1312 | "type": "library", 1313 | "extra": { 1314 | "branch-alias": { 1315 | "dev-master": "5.1-dev" 1316 | } 1317 | }, 1318 | "autoload": { 1319 | "psr-4": { 1320 | "Symfony\\Component\\Console\\": "" 1321 | }, 1322 | "exclude-from-classmap": [ 1323 | "/Tests/" 1324 | ] 1325 | }, 1326 | "notification-url": "https://packagist.org/downloads/", 1327 | "license": [ 1328 | "MIT" 1329 | ], 1330 | "authors": [ 1331 | { 1332 | "name": "Fabien Potencier", 1333 | "email": "fabien@symfony.com" 1334 | }, 1335 | { 1336 | "name": "Symfony Community", 1337 | "homepage": "https://symfony.com/contributors" 1338 | } 1339 | ], 1340 | "description": "Symfony Console Component", 1341 | "homepage": "https://symfony.com", 1342 | "time": "2020-03-16T16:46:21+00:00" 1343 | }, 1344 | { 1345 | "name": "symfony/css-selector", 1346 | "version": "dev-master", 1347 | "source": { 1348 | "type": "git", 1349 | "url": "https://github.com/symfony/css-selector.git", 1350 | "reference": "7882d17f2c56414ff25cb064ad657c7924d65e06" 1351 | }, 1352 | "dist": { 1353 | "type": "zip", 1354 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/7882d17f2c56414ff25cb064ad657c7924d65e06", 1355 | "reference": "7882d17f2c56414ff25cb064ad657c7924d65e06", 1356 | "shasum": "" 1357 | }, 1358 | "require": { 1359 | "php": "^7.2.5" 1360 | }, 1361 | "type": "library", 1362 | "extra": { 1363 | "branch-alias": { 1364 | "dev-master": "5.1-dev" 1365 | } 1366 | }, 1367 | "autoload": { 1368 | "psr-4": { 1369 | "Symfony\\Component\\CssSelector\\": "" 1370 | }, 1371 | "exclude-from-classmap": [ 1372 | "/Tests/" 1373 | ] 1374 | }, 1375 | "notification-url": "https://packagist.org/downloads/", 1376 | "license": [ 1377 | "MIT" 1378 | ], 1379 | "authors": [ 1380 | { 1381 | "name": "Fabien Potencier", 1382 | "email": "fabien@symfony.com" 1383 | }, 1384 | { 1385 | "name": "Jean-François Simon", 1386 | "email": "jeanfrancois.simon@sensiolabs.com" 1387 | }, 1388 | { 1389 | "name": "Symfony Community", 1390 | "homepage": "https://symfony.com/contributors" 1391 | } 1392 | ], 1393 | "description": "Symfony CssSelector Component", 1394 | "homepage": "https://symfony.com", 1395 | "time": "2020-03-16T13:12:54+00:00" 1396 | }, 1397 | { 1398 | "name": "symfony/deprecation-contracts", 1399 | "version": "dev-master", 1400 | "source": { 1401 | "type": "git", 1402 | "url": "https://github.com/symfony/deprecation-contracts.git", 1403 | "reference": "ede224dcbc36138943a296107db2b8b2a690ac1c" 1404 | }, 1405 | "dist": { 1406 | "type": "zip", 1407 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/ede224dcbc36138943a296107db2b8b2a690ac1c", 1408 | "reference": "ede224dcbc36138943a296107db2b8b2a690ac1c", 1409 | "shasum": "" 1410 | }, 1411 | "require": { 1412 | "php": "^7.1" 1413 | }, 1414 | "type": "library", 1415 | "extra": { 1416 | "branch-alias": { 1417 | "dev-master": "2.1-dev" 1418 | } 1419 | }, 1420 | "autoload": { 1421 | "files": [ 1422 | "function.php" 1423 | ] 1424 | }, 1425 | "notification-url": "https://packagist.org/downloads/", 1426 | "license": [ 1427 | "MIT" 1428 | ], 1429 | "authors": [ 1430 | { 1431 | "name": "Nicolas Grekas", 1432 | "email": "p@tchwork.com" 1433 | }, 1434 | { 1435 | "name": "Symfony Community", 1436 | "homepage": "https://symfony.com/contributors" 1437 | } 1438 | ], 1439 | "description": "A generic function and convention to trigger deprecation notices", 1440 | "homepage": "https://symfony.com", 1441 | "time": "2020-02-14T07:31:56+00:00" 1442 | }, 1443 | { 1444 | "name": "symfony/error-handler", 1445 | "version": "dev-master", 1446 | "source": { 1447 | "type": "git", 1448 | "url": "https://github.com/symfony/error-handler.git", 1449 | "reference": "62ad718d0bc10b390fe08758e04b0bcb724c7bb6" 1450 | }, 1451 | "dist": { 1452 | "type": "zip", 1453 | "url": "https://api.github.com/repos/symfony/error-handler/zipball/62ad718d0bc10b390fe08758e04b0bcb724c7bb6", 1454 | "reference": "62ad718d0bc10b390fe08758e04b0bcb724c7bb6", 1455 | "shasum": "" 1456 | }, 1457 | "require": { 1458 | "php": "^7.2.5", 1459 | "psr/log": "^1.0", 1460 | "symfony/polyfill-php80": "^1.15", 1461 | "symfony/var-dumper": "^4.4|^5.0" 1462 | }, 1463 | "require-dev": { 1464 | "symfony/http-kernel": "^4.4|^5.0", 1465 | "symfony/serializer": "^4.4|^5.0" 1466 | }, 1467 | "type": "library", 1468 | "extra": { 1469 | "branch-alias": { 1470 | "dev-master": "5.1-dev" 1471 | } 1472 | }, 1473 | "autoload": { 1474 | "psr-4": { 1475 | "Symfony\\Component\\ErrorHandler\\": "" 1476 | }, 1477 | "exclude-from-classmap": [ 1478 | "/Tests/" 1479 | ] 1480 | }, 1481 | "notification-url": "https://packagist.org/downloads/", 1482 | "license": [ 1483 | "MIT" 1484 | ], 1485 | "authors": [ 1486 | { 1487 | "name": "Fabien Potencier", 1488 | "email": "fabien@symfony.com" 1489 | }, 1490 | { 1491 | "name": "Symfony Community", 1492 | "homepage": "https://symfony.com/contributors" 1493 | } 1494 | ], 1495 | "description": "Symfony ErrorHandler Component", 1496 | "homepage": "https://symfony.com", 1497 | "time": "2020-03-23T12:45:08+00:00" 1498 | }, 1499 | { 1500 | "name": "symfony/event-dispatcher", 1501 | "version": "dev-master", 1502 | "source": { 1503 | "type": "git", 1504 | "url": "https://github.com/symfony/event-dispatcher.git", 1505 | "reference": "d9727118a6f8a93c79845c4179ef98974021f142" 1506 | }, 1507 | "dist": { 1508 | "type": "zip", 1509 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/d9727118a6f8a93c79845c4179ef98974021f142", 1510 | "reference": "d9727118a6f8a93c79845c4179ef98974021f142", 1511 | "shasum": "" 1512 | }, 1513 | "require": { 1514 | "php": "^7.2.5", 1515 | "symfony/deprecation-contracts": "^2.1", 1516 | "symfony/event-dispatcher-contracts": "^2", 1517 | "symfony/polyfill-php80": "^1.15" 1518 | }, 1519 | "conflict": { 1520 | "symfony/dependency-injection": "<4.4" 1521 | }, 1522 | "provide": { 1523 | "psr/event-dispatcher-implementation": "1.0", 1524 | "symfony/event-dispatcher-implementation": "2.0" 1525 | }, 1526 | "require-dev": { 1527 | "psr/log": "~1.0", 1528 | "symfony/config": "^4.4|^5.0", 1529 | "symfony/dependency-injection": "^4.4|^5.0", 1530 | "symfony/expression-language": "^4.4|^5.0", 1531 | "symfony/http-foundation": "^4.4|^5.0", 1532 | "symfony/service-contracts": "^1.1|^2", 1533 | "symfony/stopwatch": "^4.4|^5.0" 1534 | }, 1535 | "suggest": { 1536 | "symfony/dependency-injection": "", 1537 | "symfony/http-kernel": "" 1538 | }, 1539 | "type": "library", 1540 | "extra": { 1541 | "branch-alias": { 1542 | "dev-master": "5.1-dev" 1543 | } 1544 | }, 1545 | "autoload": { 1546 | "psr-4": { 1547 | "Symfony\\Component\\EventDispatcher\\": "" 1548 | }, 1549 | "exclude-from-classmap": [ 1550 | "/Tests/" 1551 | ] 1552 | }, 1553 | "notification-url": "https://packagist.org/downloads/", 1554 | "license": [ 1555 | "MIT" 1556 | ], 1557 | "authors": [ 1558 | { 1559 | "name": "Fabien Potencier", 1560 | "email": "fabien@symfony.com" 1561 | }, 1562 | { 1563 | "name": "Symfony Community", 1564 | "homepage": "https://symfony.com/contributors" 1565 | } 1566 | ], 1567 | "description": "Symfony EventDispatcher Component", 1568 | "homepage": "https://symfony.com", 1569 | "time": "2020-03-16T16:46:21+00:00" 1570 | }, 1571 | { 1572 | "name": "symfony/event-dispatcher-contracts", 1573 | "version": "dev-master", 1574 | "source": { 1575 | "type": "git", 1576 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 1577 | "reference": "5a749bda3958260864228e520465150cfd954c8e" 1578 | }, 1579 | "dist": { 1580 | "type": "zip", 1581 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/5a749bda3958260864228e520465150cfd954c8e", 1582 | "reference": "5a749bda3958260864228e520465150cfd954c8e", 1583 | "shasum": "" 1584 | }, 1585 | "require": { 1586 | "php": "^7.2.5", 1587 | "psr/event-dispatcher": "^1" 1588 | }, 1589 | "suggest": { 1590 | "symfony/event-dispatcher-implementation": "" 1591 | }, 1592 | "type": "library", 1593 | "extra": { 1594 | "branch-alias": { 1595 | "dev-master": "2.0-dev" 1596 | } 1597 | }, 1598 | "autoload": { 1599 | "psr-4": { 1600 | "Symfony\\Contracts\\EventDispatcher\\": "" 1601 | } 1602 | }, 1603 | "notification-url": "https://packagist.org/downloads/", 1604 | "license": [ 1605 | "MIT" 1606 | ], 1607 | "authors": [ 1608 | { 1609 | "name": "Nicolas Grekas", 1610 | "email": "p@tchwork.com" 1611 | }, 1612 | { 1613 | "name": "Symfony Community", 1614 | "homepage": "https://symfony.com/contributors" 1615 | } 1616 | ], 1617 | "description": "Generic abstractions related to dispatching event", 1618 | "homepage": "https://symfony.com", 1619 | "keywords": [ 1620 | "abstractions", 1621 | "contracts", 1622 | "decoupling", 1623 | "interfaces", 1624 | "interoperability", 1625 | "standards" 1626 | ], 1627 | "time": "2020-02-14T07:31:56+00:00" 1628 | }, 1629 | { 1630 | "name": "symfony/finder", 1631 | "version": "dev-master", 1632 | "source": { 1633 | "type": "git", 1634 | "url": "https://github.com/symfony/finder.git", 1635 | "reference": "008b6cc6da7141baf1766d72d2731b0e6f78b45b" 1636 | }, 1637 | "dist": { 1638 | "type": "zip", 1639 | "url": "https://api.github.com/repos/symfony/finder/zipball/008b6cc6da7141baf1766d72d2731b0e6f78b45b", 1640 | "reference": "008b6cc6da7141baf1766d72d2731b0e6f78b45b", 1641 | "shasum": "" 1642 | }, 1643 | "require": { 1644 | "php": "^7.2.5" 1645 | }, 1646 | "type": "library", 1647 | "extra": { 1648 | "branch-alias": { 1649 | "dev-master": "5.1-dev" 1650 | } 1651 | }, 1652 | "autoload": { 1653 | "psr-4": { 1654 | "Symfony\\Component\\Finder\\": "" 1655 | }, 1656 | "exclude-from-classmap": [ 1657 | "/Tests/" 1658 | ] 1659 | }, 1660 | "notification-url": "https://packagist.org/downloads/", 1661 | "license": [ 1662 | "MIT" 1663 | ], 1664 | "authors": [ 1665 | { 1666 | "name": "Fabien Potencier", 1667 | "email": "fabien@symfony.com" 1668 | }, 1669 | { 1670 | "name": "Symfony Community", 1671 | "homepage": "https://symfony.com/contributors" 1672 | } 1673 | ], 1674 | "description": "Symfony Finder Component", 1675 | "homepage": "https://symfony.com", 1676 | "time": "2020-02-14T07:43:15+00:00" 1677 | }, 1678 | { 1679 | "name": "symfony/http-foundation", 1680 | "version": "dev-master", 1681 | "source": { 1682 | "type": "git", 1683 | "url": "https://github.com/symfony/http-foundation.git", 1684 | "reference": "251145038037cb57794127ade9b035c8dd0dd3fb" 1685 | }, 1686 | "dist": { 1687 | "type": "zip", 1688 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/251145038037cb57794127ade9b035c8dd0dd3fb", 1689 | "reference": "251145038037cb57794127ade9b035c8dd0dd3fb", 1690 | "shasum": "" 1691 | }, 1692 | "require": { 1693 | "php": "^7.2.5", 1694 | "symfony/deprecation-contracts": "^2.1", 1695 | "symfony/polyfill-mbstring": "~1.1", 1696 | "symfony/polyfill-php80": "^1.15" 1697 | }, 1698 | "require-dev": { 1699 | "predis/predis": "~1.0", 1700 | "symfony/cache": "^4.4|^5.0", 1701 | "symfony/expression-language": "^4.4|^5.0", 1702 | "symfony/mime": "^4.4|^5.0" 1703 | }, 1704 | "suggest": { 1705 | "symfony/mime": "To use the file extension guesser" 1706 | }, 1707 | "type": "library", 1708 | "extra": { 1709 | "branch-alias": { 1710 | "dev-master": "5.1-dev" 1711 | } 1712 | }, 1713 | "autoload": { 1714 | "psr-4": { 1715 | "Symfony\\Component\\HttpFoundation\\": "" 1716 | }, 1717 | "exclude-from-classmap": [ 1718 | "/Tests/" 1719 | ] 1720 | }, 1721 | "notification-url": "https://packagist.org/downloads/", 1722 | "license": [ 1723 | "MIT" 1724 | ], 1725 | "authors": [ 1726 | { 1727 | "name": "Fabien Potencier", 1728 | "email": "fabien@symfony.com" 1729 | }, 1730 | { 1731 | "name": "Symfony Community", 1732 | "homepage": "https://symfony.com/contributors" 1733 | } 1734 | ], 1735 | "description": "Symfony HttpFoundation Component", 1736 | "homepage": "https://symfony.com", 1737 | "time": "2020-03-23T12:45:08+00:00" 1738 | }, 1739 | { 1740 | "name": "symfony/http-kernel", 1741 | "version": "dev-master", 1742 | "source": { 1743 | "type": "git", 1744 | "url": "https://github.com/symfony/http-kernel.git", 1745 | "reference": "14eab6b9fc402eef010f8f2df4f82b6f5f412e88" 1746 | }, 1747 | "dist": { 1748 | "type": "zip", 1749 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/14eab6b9fc402eef010f8f2df4f82b6f5f412e88", 1750 | "reference": "14eab6b9fc402eef010f8f2df4f82b6f5f412e88", 1751 | "shasum": "" 1752 | }, 1753 | "require": { 1754 | "php": "^7.2.5", 1755 | "psr/log": "~1.0", 1756 | "symfony/error-handler": "^4.4|^5.0", 1757 | "symfony/event-dispatcher": "^5.0", 1758 | "symfony/http-foundation": "^4.4|^5.0", 1759 | "symfony/polyfill-ctype": "^1.8", 1760 | "symfony/polyfill-php73": "^1.9", 1761 | "symfony/polyfill-php80": "^1.15" 1762 | }, 1763 | "conflict": { 1764 | "symfony/browser-kit": "<4.4", 1765 | "symfony/cache": "<5.0", 1766 | "symfony/config": "<5.0", 1767 | "symfony/dependency-injection": "<4.4", 1768 | "symfony/doctrine-bridge": "<5.0", 1769 | "symfony/form": "<5.0", 1770 | "symfony/http-client": "<5.0", 1771 | "symfony/mailer": "<5.0", 1772 | "symfony/messenger": "<5.0", 1773 | "symfony/translation": "<5.0", 1774 | "symfony/twig-bridge": "<5.0", 1775 | "symfony/validator": "<5.0", 1776 | "twig/twig": "<2.4" 1777 | }, 1778 | "provide": { 1779 | "psr/log-implementation": "1.0" 1780 | }, 1781 | "require-dev": { 1782 | "psr/cache": "~1.0", 1783 | "symfony/browser-kit": "^4.4|^5.0", 1784 | "symfony/config": "^5.0", 1785 | "symfony/console": "^4.4|^5.0", 1786 | "symfony/css-selector": "^4.4|^5.0", 1787 | "symfony/dependency-injection": "^4.4|^5.0", 1788 | "symfony/dom-crawler": "^4.4|^5.0", 1789 | "symfony/expression-language": "^4.4|^5.0", 1790 | "symfony/finder": "^4.4|^5.0", 1791 | "symfony/process": "^4.4|^5.0", 1792 | "symfony/routing": "^4.4|^5.0", 1793 | "symfony/stopwatch": "^4.4|^5.0", 1794 | "symfony/translation": "^4.4|^5.0", 1795 | "symfony/translation-contracts": "^1.1|^2", 1796 | "twig/twig": "^2.4|^3.0" 1797 | }, 1798 | "suggest": { 1799 | "symfony/browser-kit": "", 1800 | "symfony/config": "", 1801 | "symfony/console": "", 1802 | "symfony/dependency-injection": "" 1803 | }, 1804 | "type": "library", 1805 | "extra": { 1806 | "branch-alias": { 1807 | "dev-master": "5.1-dev" 1808 | } 1809 | }, 1810 | "autoload": { 1811 | "psr-4": { 1812 | "Symfony\\Component\\HttpKernel\\": "" 1813 | }, 1814 | "exclude-from-classmap": [ 1815 | "/Tests/" 1816 | ] 1817 | }, 1818 | "notification-url": "https://packagist.org/downloads/", 1819 | "license": [ 1820 | "MIT" 1821 | ], 1822 | "authors": [ 1823 | { 1824 | "name": "Fabien Potencier", 1825 | "email": "fabien@symfony.com" 1826 | }, 1827 | { 1828 | "name": "Symfony Community", 1829 | "homepage": "https://symfony.com/contributors" 1830 | } 1831 | ], 1832 | "description": "Symfony HttpKernel Component", 1833 | "homepage": "https://symfony.com", 1834 | "time": "2020-03-23T12:45:08+00:00" 1835 | }, 1836 | { 1837 | "name": "symfony/mime", 1838 | "version": "dev-master", 1839 | "source": { 1840 | "type": "git", 1841 | "url": "https://github.com/symfony/mime.git", 1842 | "reference": "611f285c5ff1002be05089d34267aecf1a51da3d" 1843 | }, 1844 | "dist": { 1845 | "type": "zip", 1846 | "url": "https://api.github.com/repos/symfony/mime/zipball/611f285c5ff1002be05089d34267aecf1a51da3d", 1847 | "reference": "611f285c5ff1002be05089d34267aecf1a51da3d", 1848 | "shasum": "" 1849 | }, 1850 | "require": { 1851 | "php": "^7.2.5", 1852 | "symfony/polyfill-intl-idn": "^1.10", 1853 | "symfony/polyfill-mbstring": "^1.0", 1854 | "symfony/polyfill-php80": "^1.15" 1855 | }, 1856 | "conflict": { 1857 | "symfony/mailer": "<4.4" 1858 | }, 1859 | "require-dev": { 1860 | "egulias/email-validator": "^2.1.10", 1861 | "symfony/dependency-injection": "^4.4|^5.0" 1862 | }, 1863 | "type": "library", 1864 | "extra": { 1865 | "branch-alias": { 1866 | "dev-master": "5.1-dev" 1867 | } 1868 | }, 1869 | "autoload": { 1870 | "psr-4": { 1871 | "Symfony\\Component\\Mime\\": "" 1872 | }, 1873 | "exclude-from-classmap": [ 1874 | "/Tests/" 1875 | ] 1876 | }, 1877 | "notification-url": "https://packagist.org/downloads/", 1878 | "license": [ 1879 | "MIT" 1880 | ], 1881 | "authors": [ 1882 | { 1883 | "name": "Fabien Potencier", 1884 | "email": "fabien@symfony.com" 1885 | }, 1886 | { 1887 | "name": "Symfony Community", 1888 | "homepage": "https://symfony.com/contributors" 1889 | } 1890 | ], 1891 | "description": "A library to manipulate MIME messages", 1892 | "homepage": "https://symfony.com", 1893 | "keywords": [ 1894 | "mime", 1895 | "mime-type" 1896 | ], 1897 | "time": "2020-03-16T16:46:21+00:00" 1898 | }, 1899 | { 1900 | "name": "symfony/polyfill-ctype", 1901 | "version": "dev-master", 1902 | "source": { 1903 | "type": "git", 1904 | "url": "https://github.com/symfony/polyfill-ctype.git", 1905 | "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14" 1906 | }, 1907 | "dist": { 1908 | "type": "zip", 1909 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/4719fa9c18b0464d399f1a63bf624b42b6fa8d14", 1910 | "reference": "4719fa9c18b0464d399f1a63bf624b42b6fa8d14", 1911 | "shasum": "" 1912 | }, 1913 | "require": { 1914 | "php": ">=5.3.3" 1915 | }, 1916 | "suggest": { 1917 | "ext-ctype": "For best performance" 1918 | }, 1919 | "type": "library", 1920 | "extra": { 1921 | "branch-alias": { 1922 | "dev-master": "1.15-dev" 1923 | } 1924 | }, 1925 | "autoload": { 1926 | "psr-4": { 1927 | "Symfony\\Polyfill\\Ctype\\": "" 1928 | }, 1929 | "files": [ 1930 | "bootstrap.php" 1931 | ] 1932 | }, 1933 | "notification-url": "https://packagist.org/downloads/", 1934 | "license": [ 1935 | "MIT" 1936 | ], 1937 | "authors": [ 1938 | { 1939 | "name": "Gert de Pagter", 1940 | "email": "BackEndTea@gmail.com" 1941 | }, 1942 | { 1943 | "name": "Symfony Community", 1944 | "homepage": "https://symfony.com/contributors" 1945 | } 1946 | ], 1947 | "description": "Symfony polyfill for ctype functions", 1948 | "homepage": "https://symfony.com", 1949 | "keywords": [ 1950 | "compatibility", 1951 | "ctype", 1952 | "polyfill", 1953 | "portable" 1954 | ], 1955 | "time": "2020-02-27T09:26:54+00:00" 1956 | }, 1957 | { 1958 | "name": "symfony/polyfill-iconv", 1959 | "version": "dev-master", 1960 | "source": { 1961 | "type": "git", 1962 | "url": "https://github.com/symfony/polyfill-iconv.git", 1963 | "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8" 1964 | }, 1965 | "dist": { 1966 | "type": "zip", 1967 | "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", 1968 | "reference": "ad6d62792bfbcfc385dd34b424d4fcf9712a32c8", 1969 | "shasum": "" 1970 | }, 1971 | "require": { 1972 | "php": ">=5.3.3" 1973 | }, 1974 | "suggest": { 1975 | "ext-iconv": "For best performance" 1976 | }, 1977 | "type": "library", 1978 | "extra": { 1979 | "branch-alias": { 1980 | "dev-master": "1.15-dev" 1981 | } 1982 | }, 1983 | "autoload": { 1984 | "psr-4": { 1985 | "Symfony\\Polyfill\\Iconv\\": "" 1986 | }, 1987 | "files": [ 1988 | "bootstrap.php" 1989 | ] 1990 | }, 1991 | "notification-url": "https://packagist.org/downloads/", 1992 | "license": [ 1993 | "MIT" 1994 | ], 1995 | "authors": [ 1996 | { 1997 | "name": "Nicolas Grekas", 1998 | "email": "p@tchwork.com" 1999 | }, 2000 | { 2001 | "name": "Symfony Community", 2002 | "homepage": "https://symfony.com/contributors" 2003 | } 2004 | ], 2005 | "description": "Symfony polyfill for the Iconv extension", 2006 | "homepage": "https://symfony.com", 2007 | "keywords": [ 2008 | "compatibility", 2009 | "iconv", 2010 | "polyfill", 2011 | "portable", 2012 | "shim" 2013 | ], 2014 | "time": "2020-03-09T19:04:49+00:00" 2015 | }, 2016 | { 2017 | "name": "symfony/polyfill-intl-grapheme", 2018 | "version": "dev-master", 2019 | "source": { 2020 | "type": "git", 2021 | "url": "https://github.com/symfony/polyfill-intl-grapheme.git", 2022 | "reference": "b6786f69dd7b062390582f20520ab4918283217e" 2023 | }, 2024 | "dist": { 2025 | "type": "zip", 2026 | "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b6786f69dd7b062390582f20520ab4918283217e", 2027 | "reference": "b6786f69dd7b062390582f20520ab4918283217e", 2028 | "shasum": "" 2029 | }, 2030 | "require": { 2031 | "php": ">=5.3.3" 2032 | }, 2033 | "suggest": { 2034 | "ext-intl": "For best performance" 2035 | }, 2036 | "type": "library", 2037 | "extra": { 2038 | "branch-alias": { 2039 | "dev-master": "1.15-dev" 2040 | } 2041 | }, 2042 | "autoload": { 2043 | "psr-4": { 2044 | "Symfony\\Polyfill\\Intl\\Grapheme\\": "" 2045 | }, 2046 | "files": [ 2047 | "bootstrap.php" 2048 | ] 2049 | }, 2050 | "notification-url": "https://packagist.org/downloads/", 2051 | "license": [ 2052 | "MIT" 2053 | ], 2054 | "authors": [ 2055 | { 2056 | "name": "Nicolas Grekas", 2057 | "email": "p@tchwork.com" 2058 | }, 2059 | { 2060 | "name": "Symfony Community", 2061 | "homepage": "https://symfony.com/contributors" 2062 | } 2063 | ], 2064 | "description": "Symfony polyfill for intl's grapheme_* functions", 2065 | "homepage": "https://symfony.com", 2066 | "keywords": [ 2067 | "compatibility", 2068 | "grapheme", 2069 | "intl", 2070 | "polyfill", 2071 | "portable", 2072 | "shim" 2073 | ], 2074 | "time": "2020-03-09T19:04:49+00:00" 2075 | }, 2076 | { 2077 | "name": "symfony/polyfill-intl-idn", 2078 | "version": "dev-master", 2079 | "source": { 2080 | "type": "git", 2081 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 2082 | "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf" 2083 | }, 2084 | "dist": { 2085 | "type": "zip", 2086 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", 2087 | "reference": "47bd6aa45beb1cd7c6a16b7d1810133b728bdfcf", 2088 | "shasum": "" 2089 | }, 2090 | "require": { 2091 | "php": ">=5.3.3", 2092 | "symfony/polyfill-mbstring": "^1.3", 2093 | "symfony/polyfill-php72": "^1.10" 2094 | }, 2095 | "suggest": { 2096 | "ext-intl": "For best performance" 2097 | }, 2098 | "type": "library", 2099 | "extra": { 2100 | "branch-alias": { 2101 | "dev-master": "1.15-dev" 2102 | } 2103 | }, 2104 | "autoload": { 2105 | "psr-4": { 2106 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 2107 | }, 2108 | "files": [ 2109 | "bootstrap.php" 2110 | ] 2111 | }, 2112 | "notification-url": "https://packagist.org/downloads/", 2113 | "license": [ 2114 | "MIT" 2115 | ], 2116 | "authors": [ 2117 | { 2118 | "name": "Laurent Bassin", 2119 | "email": "laurent@bassin.info" 2120 | }, 2121 | { 2122 | "name": "Symfony Community", 2123 | "homepage": "https://symfony.com/contributors" 2124 | } 2125 | ], 2126 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 2127 | "homepage": "https://symfony.com", 2128 | "keywords": [ 2129 | "compatibility", 2130 | "idn", 2131 | "intl", 2132 | "polyfill", 2133 | "portable", 2134 | "shim" 2135 | ], 2136 | "time": "2020-03-09T19:04:49+00:00" 2137 | }, 2138 | { 2139 | "name": "symfony/polyfill-intl-normalizer", 2140 | "version": "dev-master", 2141 | "source": { 2142 | "type": "git", 2143 | "url": "https://github.com/symfony/polyfill-intl-normalizer.git", 2144 | "reference": "e62715f03f90dd8d2f3eb5daa21b4d19d71aebde" 2145 | }, 2146 | "dist": { 2147 | "type": "zip", 2148 | "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/e62715f03f90dd8d2f3eb5daa21b4d19d71aebde", 2149 | "reference": "e62715f03f90dd8d2f3eb5daa21b4d19d71aebde", 2150 | "shasum": "" 2151 | }, 2152 | "require": { 2153 | "php": ">=5.3.3" 2154 | }, 2155 | "suggest": { 2156 | "ext-intl": "For best performance" 2157 | }, 2158 | "type": "library", 2159 | "extra": { 2160 | "branch-alias": { 2161 | "dev-master": "1.15-dev" 2162 | } 2163 | }, 2164 | "autoload": { 2165 | "psr-4": { 2166 | "Symfony\\Polyfill\\Intl\\Normalizer\\": "" 2167 | }, 2168 | "files": [ 2169 | "bootstrap.php" 2170 | ], 2171 | "classmap": [ 2172 | "Resources/stubs" 2173 | ] 2174 | }, 2175 | "notification-url": "https://packagist.org/downloads/", 2176 | "license": [ 2177 | "MIT" 2178 | ], 2179 | "authors": [ 2180 | { 2181 | "name": "Nicolas Grekas", 2182 | "email": "p@tchwork.com" 2183 | }, 2184 | { 2185 | "name": "Symfony Community", 2186 | "homepage": "https://symfony.com/contributors" 2187 | } 2188 | ], 2189 | "description": "Symfony polyfill for intl's Normalizer class and related functions", 2190 | "homepage": "https://symfony.com", 2191 | "keywords": [ 2192 | "compatibility", 2193 | "intl", 2194 | "normalizer", 2195 | "polyfill", 2196 | "portable", 2197 | "shim" 2198 | ], 2199 | "time": "2020-02-27T09:26:54+00:00" 2200 | }, 2201 | { 2202 | "name": "symfony/polyfill-mbstring", 2203 | "version": "dev-master", 2204 | "source": { 2205 | "type": "git", 2206 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2207 | "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac" 2208 | }, 2209 | "dist": { 2210 | "type": "zip", 2211 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/81ffd3a9c6d707be22e3012b827de1c9775fc5ac", 2212 | "reference": "81ffd3a9c6d707be22e3012b827de1c9775fc5ac", 2213 | "shasum": "" 2214 | }, 2215 | "require": { 2216 | "php": ">=5.3.3" 2217 | }, 2218 | "suggest": { 2219 | "ext-mbstring": "For best performance" 2220 | }, 2221 | "type": "library", 2222 | "extra": { 2223 | "branch-alias": { 2224 | "dev-master": "1.15-dev" 2225 | } 2226 | }, 2227 | "autoload": { 2228 | "psr-4": { 2229 | "Symfony\\Polyfill\\Mbstring\\": "" 2230 | }, 2231 | "files": [ 2232 | "bootstrap.php" 2233 | ] 2234 | }, 2235 | "notification-url": "https://packagist.org/downloads/", 2236 | "license": [ 2237 | "MIT" 2238 | ], 2239 | "authors": [ 2240 | { 2241 | "name": "Nicolas Grekas", 2242 | "email": "p@tchwork.com" 2243 | }, 2244 | { 2245 | "name": "Symfony Community", 2246 | "homepage": "https://symfony.com/contributors" 2247 | } 2248 | ], 2249 | "description": "Symfony polyfill for the Mbstring extension", 2250 | "homepage": "https://symfony.com", 2251 | "keywords": [ 2252 | "compatibility", 2253 | "mbstring", 2254 | "polyfill", 2255 | "portable", 2256 | "shim" 2257 | ], 2258 | "time": "2020-03-09T19:04:49+00:00" 2259 | }, 2260 | { 2261 | "name": "symfony/polyfill-php72", 2262 | "version": "dev-master", 2263 | "source": { 2264 | "type": "git", 2265 | "url": "https://github.com/symfony/polyfill-php72.git", 2266 | "reference": "37b0976c78b94856543260ce09b460a7bc852747" 2267 | }, 2268 | "dist": { 2269 | "type": "zip", 2270 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/37b0976c78b94856543260ce09b460a7bc852747", 2271 | "reference": "37b0976c78b94856543260ce09b460a7bc852747", 2272 | "shasum": "" 2273 | }, 2274 | "require": { 2275 | "php": ">=5.3.3" 2276 | }, 2277 | "type": "library", 2278 | "extra": { 2279 | "branch-alias": { 2280 | "dev-master": "1.15-dev" 2281 | } 2282 | }, 2283 | "autoload": { 2284 | "psr-4": { 2285 | "Symfony\\Polyfill\\Php72\\": "" 2286 | }, 2287 | "files": [ 2288 | "bootstrap.php" 2289 | ] 2290 | }, 2291 | "notification-url": "https://packagist.org/downloads/", 2292 | "license": [ 2293 | "MIT" 2294 | ], 2295 | "authors": [ 2296 | { 2297 | "name": "Nicolas Grekas", 2298 | "email": "p@tchwork.com" 2299 | }, 2300 | { 2301 | "name": "Symfony Community", 2302 | "homepage": "https://symfony.com/contributors" 2303 | } 2304 | ], 2305 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 2306 | "homepage": "https://symfony.com", 2307 | "keywords": [ 2308 | "compatibility", 2309 | "polyfill", 2310 | "portable", 2311 | "shim" 2312 | ], 2313 | "time": "2020-02-27T09:26:54+00:00" 2314 | }, 2315 | { 2316 | "name": "symfony/polyfill-php73", 2317 | "version": "dev-master", 2318 | "source": { 2319 | "type": "git", 2320 | "url": "https://github.com/symfony/polyfill-php73.git", 2321 | "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7" 2322 | }, 2323 | "dist": { 2324 | "type": "zip", 2325 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", 2326 | "reference": "0f27e9f464ea3da33cbe7ca3bdf4eb66def9d0f7", 2327 | "shasum": "" 2328 | }, 2329 | "require": { 2330 | "php": ">=5.3.3" 2331 | }, 2332 | "type": "library", 2333 | "extra": { 2334 | "branch-alias": { 2335 | "dev-master": "1.15-dev" 2336 | } 2337 | }, 2338 | "autoload": { 2339 | "psr-4": { 2340 | "Symfony\\Polyfill\\Php73\\": "" 2341 | }, 2342 | "files": [ 2343 | "bootstrap.php" 2344 | ], 2345 | "classmap": [ 2346 | "Resources/stubs" 2347 | ] 2348 | }, 2349 | "notification-url": "https://packagist.org/downloads/", 2350 | "license": [ 2351 | "MIT" 2352 | ], 2353 | "authors": [ 2354 | { 2355 | "name": "Nicolas Grekas", 2356 | "email": "p@tchwork.com" 2357 | }, 2358 | { 2359 | "name": "Symfony Community", 2360 | "homepage": "https://symfony.com/contributors" 2361 | } 2362 | ], 2363 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2364 | "homepage": "https://symfony.com", 2365 | "keywords": [ 2366 | "compatibility", 2367 | "polyfill", 2368 | "portable", 2369 | "shim" 2370 | ], 2371 | "time": "2020-02-27T09:26:54+00:00" 2372 | }, 2373 | { 2374 | "name": "symfony/polyfill-php80", 2375 | "version": "dev-master", 2376 | "source": { 2377 | "type": "git", 2378 | "url": "https://github.com/symfony/polyfill-php80.git", 2379 | "reference": "8854dc880784d2ae32908b75824754339b5c0555" 2380 | }, 2381 | "dist": { 2382 | "type": "zip", 2383 | "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/8854dc880784d2ae32908b75824754339b5c0555", 2384 | "reference": "8854dc880784d2ae32908b75824754339b5c0555", 2385 | "shasum": "" 2386 | }, 2387 | "require": { 2388 | "php": ">=7.0.8" 2389 | }, 2390 | "type": "library", 2391 | "extra": { 2392 | "branch-alias": { 2393 | "dev-master": "1.15-dev" 2394 | } 2395 | }, 2396 | "autoload": { 2397 | "psr-4": { 2398 | "Symfony\\Polyfill\\Php80\\": "" 2399 | }, 2400 | "files": [ 2401 | "bootstrap.php" 2402 | ], 2403 | "classmap": [ 2404 | "Resources/stubs" 2405 | ] 2406 | }, 2407 | "notification-url": "https://packagist.org/downloads/", 2408 | "license": [ 2409 | "MIT" 2410 | ], 2411 | "authors": [ 2412 | { 2413 | "name": "Ion Bazan", 2414 | "email": "ion.bazan@gmail.com" 2415 | }, 2416 | { 2417 | "name": "Nicolas Grekas", 2418 | "email": "p@tchwork.com" 2419 | }, 2420 | { 2421 | "name": "Symfony Community", 2422 | "homepage": "https://symfony.com/contributors" 2423 | } 2424 | ], 2425 | "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", 2426 | "homepage": "https://symfony.com", 2427 | "keywords": [ 2428 | "compatibility", 2429 | "polyfill", 2430 | "portable", 2431 | "shim" 2432 | ], 2433 | "time": "2020-03-03T16:59:03+00:00" 2434 | }, 2435 | { 2436 | "name": "symfony/process", 2437 | "version": "dev-master", 2438 | "source": { 2439 | "type": "git", 2440 | "url": "https://github.com/symfony/process.git", 2441 | "reference": "c94f40c6b7b51a4f88534b01160797eed2280a36" 2442 | }, 2443 | "dist": { 2444 | "type": "zip", 2445 | "url": "https://api.github.com/repos/symfony/process/zipball/c94f40c6b7b51a4f88534b01160797eed2280a36", 2446 | "reference": "c94f40c6b7b51a4f88534b01160797eed2280a36", 2447 | "shasum": "" 2448 | }, 2449 | "require": { 2450 | "php": "^7.2.5", 2451 | "symfony/polyfill-php80": "^1.15" 2452 | }, 2453 | "type": "library", 2454 | "extra": { 2455 | "branch-alias": { 2456 | "dev-master": "5.1-dev" 2457 | } 2458 | }, 2459 | "autoload": { 2460 | "psr-4": { 2461 | "Symfony\\Component\\Process\\": "" 2462 | }, 2463 | "exclude-from-classmap": [ 2464 | "/Tests/" 2465 | ] 2466 | }, 2467 | "notification-url": "https://packagist.org/downloads/", 2468 | "license": [ 2469 | "MIT" 2470 | ], 2471 | "authors": [ 2472 | { 2473 | "name": "Fabien Potencier", 2474 | "email": "fabien@symfony.com" 2475 | }, 2476 | { 2477 | "name": "Symfony Community", 2478 | "homepage": "https://symfony.com/contributors" 2479 | } 2480 | ], 2481 | "description": "Symfony Process Component", 2482 | "homepage": "https://symfony.com", 2483 | "time": "2020-03-23T12:45:08+00:00" 2484 | }, 2485 | { 2486 | "name": "symfony/routing", 2487 | "version": "dev-master", 2488 | "source": { 2489 | "type": "git", 2490 | "url": "https://github.com/symfony/routing.git", 2491 | "reference": "116d1440c44e537fb03cb7f0cdb1e24bbd346efd" 2492 | }, 2493 | "dist": { 2494 | "type": "zip", 2495 | "url": "https://api.github.com/repos/symfony/routing/zipball/116d1440c44e537fb03cb7f0cdb1e24bbd346efd", 2496 | "reference": "116d1440c44e537fb03cb7f0cdb1e24bbd346efd", 2497 | "shasum": "" 2498 | }, 2499 | "require": { 2500 | "php": "^7.2.5", 2501 | "symfony/deprecation-contracts": "^2.1", 2502 | "symfony/polyfill-php80": "^1.15" 2503 | }, 2504 | "conflict": { 2505 | "symfony/config": "<5.0", 2506 | "symfony/dependency-injection": "<4.4", 2507 | "symfony/yaml": "<4.4" 2508 | }, 2509 | "require-dev": { 2510 | "doctrine/annotations": "~1.2", 2511 | "psr/log": "~1.0", 2512 | "symfony/config": "^5.0", 2513 | "symfony/dependency-injection": "^4.4|^5.0", 2514 | "symfony/expression-language": "^4.4|^5.0", 2515 | "symfony/http-foundation": "^4.4|^5.0", 2516 | "symfony/yaml": "^4.4|^5.0" 2517 | }, 2518 | "suggest": { 2519 | "doctrine/annotations": "For using the annotation loader", 2520 | "symfony/config": "For using the all-in-one router or any loader", 2521 | "symfony/expression-language": "For using expression matching", 2522 | "symfony/http-foundation": "For using a Symfony Request object", 2523 | "symfony/yaml": "For using the YAML loader" 2524 | }, 2525 | "type": "library", 2526 | "extra": { 2527 | "branch-alias": { 2528 | "dev-master": "5.1-dev" 2529 | } 2530 | }, 2531 | "autoload": { 2532 | "psr-4": { 2533 | "Symfony\\Component\\Routing\\": "" 2534 | }, 2535 | "exclude-from-classmap": [ 2536 | "/Tests/" 2537 | ] 2538 | }, 2539 | "notification-url": "https://packagist.org/downloads/", 2540 | "license": [ 2541 | "MIT" 2542 | ], 2543 | "authors": [ 2544 | { 2545 | "name": "Fabien Potencier", 2546 | "email": "fabien@symfony.com" 2547 | }, 2548 | { 2549 | "name": "Symfony Community", 2550 | "homepage": "https://symfony.com/contributors" 2551 | } 2552 | ], 2553 | "description": "Symfony Routing Component", 2554 | "homepage": "https://symfony.com", 2555 | "keywords": [ 2556 | "router", 2557 | "routing", 2558 | "uri", 2559 | "url" 2560 | ], 2561 | "time": "2020-03-16T16:46:21+00:00" 2562 | }, 2563 | { 2564 | "name": "symfony/service-contracts", 2565 | "version": "dev-master", 2566 | "source": { 2567 | "type": "git", 2568 | "url": "https://github.com/symfony/service-contracts.git", 2569 | "reference": "13111afaf14f1597a4d97a36a36cbd7a4fd95166" 2570 | }, 2571 | "dist": { 2572 | "type": "zip", 2573 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/13111afaf14f1597a4d97a36a36cbd7a4fd95166", 2574 | "reference": "13111afaf14f1597a4d97a36a36cbd7a4fd95166", 2575 | "shasum": "" 2576 | }, 2577 | "require": { 2578 | "php": "^7.2.5", 2579 | "psr/container": "^1.0" 2580 | }, 2581 | "suggest": { 2582 | "symfony/service-implementation": "" 2583 | }, 2584 | "type": "library", 2585 | "extra": { 2586 | "branch-alias": { 2587 | "dev-master": "2.0-dev" 2588 | } 2589 | }, 2590 | "autoload": { 2591 | "psr-4": { 2592 | "Symfony\\Contracts\\Service\\": "" 2593 | } 2594 | }, 2595 | "notification-url": "https://packagist.org/downloads/", 2596 | "license": [ 2597 | "MIT" 2598 | ], 2599 | "authors": [ 2600 | { 2601 | "name": "Nicolas Grekas", 2602 | "email": "p@tchwork.com" 2603 | }, 2604 | { 2605 | "name": "Symfony Community", 2606 | "homepage": "https://symfony.com/contributors" 2607 | } 2608 | ], 2609 | "description": "Generic abstractions related to writing services", 2610 | "homepage": "https://symfony.com", 2611 | "keywords": [ 2612 | "abstractions", 2613 | "contracts", 2614 | "decoupling", 2615 | "interfaces", 2616 | "interoperability", 2617 | "standards" 2618 | ], 2619 | "time": "2020-03-18T08:01:26+00:00" 2620 | }, 2621 | { 2622 | "name": "symfony/string", 2623 | "version": "dev-master", 2624 | "source": { 2625 | "type": "git", 2626 | "url": "https://github.com/symfony/string.git", 2627 | "reference": "3ef9c6c53b02306046a3b34199da30fc3e4a10f3" 2628 | }, 2629 | "dist": { 2630 | "type": "zip", 2631 | "url": "https://api.github.com/repos/symfony/string/zipball/3ef9c6c53b02306046a3b34199da30fc3e4a10f3", 2632 | "reference": "3ef9c6c53b02306046a3b34199da30fc3e4a10f3", 2633 | "shasum": "" 2634 | }, 2635 | "require": { 2636 | "php": "^7.2.5", 2637 | "symfony/polyfill-intl-grapheme": "~1.0", 2638 | "symfony/polyfill-intl-normalizer": "~1.0", 2639 | "symfony/polyfill-mbstring": "~1.0", 2640 | "symfony/polyfill-php80": "~1.15" 2641 | }, 2642 | "require-dev": { 2643 | "symfony/error-handler": "^4.4|^5.0", 2644 | "symfony/http-client": "^4.4|^5.0", 2645 | "symfony/translation-contracts": "^1.1|^2", 2646 | "symfony/var-exporter": "^4.4|^5.0" 2647 | }, 2648 | "type": "library", 2649 | "extra": { 2650 | "branch-alias": { 2651 | "dev-master": "5.1-dev" 2652 | } 2653 | }, 2654 | "autoload": { 2655 | "psr-4": { 2656 | "Symfony\\Component\\String\\": "" 2657 | }, 2658 | "files": [ 2659 | "Resources/functions.php" 2660 | ], 2661 | "exclude-from-classmap": [ 2662 | "/Tests/" 2663 | ] 2664 | }, 2665 | "notification-url": "https://packagist.org/downloads/", 2666 | "license": [ 2667 | "MIT" 2668 | ], 2669 | "authors": [ 2670 | { 2671 | "name": "Nicolas Grekas", 2672 | "email": "p@tchwork.com" 2673 | }, 2674 | { 2675 | "name": "Symfony Community", 2676 | "homepage": "https://symfony.com/contributors" 2677 | } 2678 | ], 2679 | "description": "Symfony String component", 2680 | "homepage": "https://symfony.com", 2681 | "keywords": [ 2682 | "grapheme", 2683 | "i18n", 2684 | "string", 2685 | "unicode", 2686 | "utf-8", 2687 | "utf8" 2688 | ], 2689 | "time": "2020-03-16T17:33:00+00:00" 2690 | }, 2691 | { 2692 | "name": "symfony/translation", 2693 | "version": "dev-master", 2694 | "source": { 2695 | "type": "git", 2696 | "url": "https://github.com/symfony/translation.git", 2697 | "reference": "6dd2b976d67d18f06e036743fe0609fecc0bff3c" 2698 | }, 2699 | "dist": { 2700 | "type": "zip", 2701 | "url": "https://api.github.com/repos/symfony/translation/zipball/6dd2b976d67d18f06e036743fe0609fecc0bff3c", 2702 | "reference": "6dd2b976d67d18f06e036743fe0609fecc0bff3c", 2703 | "shasum": "" 2704 | }, 2705 | "require": { 2706 | "php": "^7.2.5", 2707 | "symfony/polyfill-mbstring": "~1.0", 2708 | "symfony/polyfill-php80": "^1.15", 2709 | "symfony/translation-contracts": "^2" 2710 | }, 2711 | "conflict": { 2712 | "symfony/config": "<4.4", 2713 | "symfony/dependency-injection": "<5.0", 2714 | "symfony/http-kernel": "<5.0", 2715 | "symfony/twig-bundle": "<5.0", 2716 | "symfony/yaml": "<4.4" 2717 | }, 2718 | "provide": { 2719 | "symfony/translation-implementation": "2.0" 2720 | }, 2721 | "require-dev": { 2722 | "psr/log": "~1.0", 2723 | "symfony/config": "^4.4|^5.0", 2724 | "symfony/console": "^4.4|^5.0", 2725 | "symfony/dependency-injection": "^5.0", 2726 | "symfony/finder": "^4.4|^5.0", 2727 | "symfony/http-kernel": "^5.0", 2728 | "symfony/intl": "^4.4|^5.0", 2729 | "symfony/service-contracts": "^1.1.2|^2", 2730 | "symfony/yaml": "^4.4|^5.0" 2731 | }, 2732 | "suggest": { 2733 | "psr/log-implementation": "To use logging capability in translator", 2734 | "symfony/config": "", 2735 | "symfony/yaml": "" 2736 | }, 2737 | "type": "library", 2738 | "extra": { 2739 | "branch-alias": { 2740 | "dev-master": "5.1-dev" 2741 | } 2742 | }, 2743 | "autoload": { 2744 | "psr-4": { 2745 | "Symfony\\Component\\Translation\\": "" 2746 | }, 2747 | "exclude-from-classmap": [ 2748 | "/Tests/" 2749 | ] 2750 | }, 2751 | "notification-url": "https://packagist.org/downloads/", 2752 | "license": [ 2753 | "MIT" 2754 | ], 2755 | "authors": [ 2756 | { 2757 | "name": "Fabien Potencier", 2758 | "email": "fabien@symfony.com" 2759 | }, 2760 | { 2761 | "name": "Symfony Community", 2762 | "homepage": "https://symfony.com/contributors" 2763 | } 2764 | ], 2765 | "description": "Symfony Translation Component", 2766 | "homepage": "https://symfony.com", 2767 | "time": "2020-03-18T08:01:26+00:00" 2768 | }, 2769 | { 2770 | "name": "symfony/translation-contracts", 2771 | "version": "dev-master", 2772 | "source": { 2773 | "type": "git", 2774 | "url": "https://github.com/symfony/translation-contracts.git", 2775 | "reference": "fa3238c55d9d4d8f78b4bc5f17374b017e07dea7" 2776 | }, 2777 | "dist": { 2778 | "type": "zip", 2779 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/fa3238c55d9d4d8f78b4bc5f17374b017e07dea7", 2780 | "reference": "fa3238c55d9d4d8f78b4bc5f17374b017e07dea7", 2781 | "shasum": "" 2782 | }, 2783 | "require": { 2784 | "php": "^7.2.5" 2785 | }, 2786 | "suggest": { 2787 | "symfony/translation-implementation": "" 2788 | }, 2789 | "type": "library", 2790 | "extra": { 2791 | "branch-alias": { 2792 | "dev-master": "2.0-dev" 2793 | } 2794 | }, 2795 | "autoload": { 2796 | "psr-4": { 2797 | "Symfony\\Contracts\\Translation\\": "" 2798 | } 2799 | }, 2800 | "notification-url": "https://packagist.org/downloads/", 2801 | "license": [ 2802 | "MIT" 2803 | ], 2804 | "authors": [ 2805 | { 2806 | "name": "Nicolas Grekas", 2807 | "email": "p@tchwork.com" 2808 | }, 2809 | { 2810 | "name": "Symfony Community", 2811 | "homepage": "https://symfony.com/contributors" 2812 | } 2813 | ], 2814 | "description": "Generic abstractions related to translation", 2815 | "homepage": "https://symfony.com", 2816 | "keywords": [ 2817 | "abstractions", 2818 | "contracts", 2819 | "decoupling", 2820 | "interfaces", 2821 | "interoperability", 2822 | "standards" 2823 | ], 2824 | "time": "2020-02-14T07:31:56+00:00" 2825 | }, 2826 | { 2827 | "name": "symfony/var-dumper", 2828 | "version": "dev-master", 2829 | "source": { 2830 | "type": "git", 2831 | "url": "https://github.com/symfony/var-dumper.git", 2832 | "reference": "71a7a1d633d78897718b333c4ddfb548705d02c1" 2833 | }, 2834 | "dist": { 2835 | "type": "zip", 2836 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/71a7a1d633d78897718b333c4ddfb548705d02c1", 2837 | "reference": "71a7a1d633d78897718b333c4ddfb548705d02c1", 2838 | "shasum": "" 2839 | }, 2840 | "require": { 2841 | "php": "^7.2.5", 2842 | "symfony/polyfill-mbstring": "~1.0", 2843 | "symfony/polyfill-php80": "^1.15" 2844 | }, 2845 | "conflict": { 2846 | "phpunit/phpunit": "<5.4.3", 2847 | "symfony/console": "<4.4" 2848 | }, 2849 | "require-dev": { 2850 | "ext-iconv": "*", 2851 | "symfony/console": "^4.4|^5.0", 2852 | "symfony/process": "^4.4|^5.0", 2853 | "twig/twig": "^2.4|^3.0" 2854 | }, 2855 | "suggest": { 2856 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 2857 | "ext-intl": "To show region name in time zone dump", 2858 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 2859 | }, 2860 | "bin": [ 2861 | "Resources/bin/var-dump-server" 2862 | ], 2863 | "type": "library", 2864 | "extra": { 2865 | "branch-alias": { 2866 | "dev-master": "5.1-dev" 2867 | } 2868 | }, 2869 | "autoload": { 2870 | "files": [ 2871 | "Resources/functions/dump.php" 2872 | ], 2873 | "psr-4": { 2874 | "Symfony\\Component\\VarDumper\\": "" 2875 | }, 2876 | "exclude-from-classmap": [ 2877 | "/Tests/" 2878 | ] 2879 | }, 2880 | "notification-url": "https://packagist.org/downloads/", 2881 | "license": [ 2882 | "MIT" 2883 | ], 2884 | "authors": [ 2885 | { 2886 | "name": "Nicolas Grekas", 2887 | "email": "p@tchwork.com" 2888 | }, 2889 | { 2890 | "name": "Symfony Community", 2891 | "homepage": "https://symfony.com/contributors" 2892 | } 2893 | ], 2894 | "description": "Symfony mechanism for exploring and dumping PHP variables", 2895 | "homepage": "https://symfony.com", 2896 | "keywords": [ 2897 | "debug", 2898 | "dump" 2899 | ], 2900 | "time": "2020-03-18T07:17:09+00:00" 2901 | }, 2902 | { 2903 | "name": "tijsverkoyen/css-to-inline-styles", 2904 | "version": "dev-master", 2905 | "source": { 2906 | "type": "git", 2907 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", 2908 | "reference": "b9c2ce7668d0438f54f19d4b3f6f17c29dc49873" 2909 | }, 2910 | "dist": { 2911 | "type": "zip", 2912 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/b9c2ce7668d0438f54f19d4b3f6f17c29dc49873", 2913 | "reference": "b9c2ce7668d0438f54f19d4b3f6f17c29dc49873", 2914 | "shasum": "" 2915 | }, 2916 | "require": { 2917 | "ext-dom": "*", 2918 | "ext-libxml": "*", 2919 | "php": "^5.5 || ^7.0", 2920 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" 2921 | }, 2922 | "require-dev": { 2923 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2924 | }, 2925 | "type": "library", 2926 | "extra": { 2927 | "branch-alias": { 2928 | "dev-master": "2.2.x-dev" 2929 | } 2930 | }, 2931 | "autoload": { 2932 | "psr-4": { 2933 | "TijsVerkoyen\\CssToInlineStyles\\": "src" 2934 | } 2935 | }, 2936 | "notification-url": "https://packagist.org/downloads/", 2937 | "license": [ 2938 | "BSD-3-Clause" 2939 | ], 2940 | "authors": [ 2941 | { 2942 | "name": "Tijs Verkoyen", 2943 | "email": "css_to_inline_styles@verkoyen.eu", 2944 | "role": "Developer" 2945 | } 2946 | ], 2947 | "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.", 2948 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", 2949 | "time": "2019-12-27T10:46:17+00:00" 2950 | }, 2951 | { 2952 | "name": "vlucas/phpdotenv", 2953 | "version": "dev-master", 2954 | "source": { 2955 | "type": "git", 2956 | "url": "https://github.com/vlucas/phpdotenv.git", 2957 | "reference": "939dfda2d7267ac8fc53ac3d642b5de357554c39" 2958 | }, 2959 | "dist": { 2960 | "type": "zip", 2961 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/939dfda2d7267ac8fc53ac3d642b5de357554c39", 2962 | "reference": "939dfda2d7267ac8fc53ac3d642b5de357554c39", 2963 | "shasum": "" 2964 | }, 2965 | "require": { 2966 | "php": "^5.5.9 || ^7.0", 2967 | "phpoption/phpoption": "^1.7.2", 2968 | "symfony/polyfill-ctype": "^1.9" 2969 | }, 2970 | "require-dev": { 2971 | "bamarni/composer-bin-plugin": "^1.3", 2972 | "ext-filter": "*", 2973 | "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" 2974 | }, 2975 | "suggest": { 2976 | "ext-filter": "Required to use the boolean validator." 2977 | }, 2978 | "type": "library", 2979 | "extra": { 2980 | "branch-alias": { 2981 | "dev-master": "4.1-dev" 2982 | } 2983 | }, 2984 | "autoload": { 2985 | "psr-4": { 2986 | "Dotenv\\": "src/" 2987 | } 2988 | }, 2989 | "notification-url": "https://packagist.org/downloads/", 2990 | "license": [ 2991 | "BSD-3-Clause" 2992 | ], 2993 | "authors": [ 2994 | { 2995 | "name": "Graham Campbell", 2996 | "email": "graham@alt-three.com", 2997 | "homepage": "https://gjcampbell.co.uk/" 2998 | }, 2999 | { 3000 | "name": "Vance Lucas", 3001 | "email": "vance@vancelucas.com", 3002 | "homepage": "https://vancelucas.com/" 3003 | } 3004 | ], 3005 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 3006 | "keywords": [ 3007 | "dotenv", 3008 | "env", 3009 | "environment" 3010 | ], 3011 | "time": "2020-03-12T13:44:15+00:00" 3012 | }, 3013 | { 3014 | "name": "voku/portable-ascii", 3015 | "version": "1.4.10", 3016 | "source": { 3017 | "type": "git", 3018 | "url": "https://github.com/voku/portable-ascii.git", 3019 | "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334" 3020 | }, 3021 | "dist": { 3022 | "type": "zip", 3023 | "url": "https://api.github.com/repos/voku/portable-ascii/zipball/240e93829a5f985fab0984a6e55ae5e26b78a334", 3024 | "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334", 3025 | "shasum": "" 3026 | }, 3027 | "require": { 3028 | "php": ">=7.0.0" 3029 | }, 3030 | "require-dev": { 3031 | "phpunit/phpunit": "~6.0 || ~7.0" 3032 | }, 3033 | "suggest": { 3034 | "ext-intl": "Use Intl for transliterator_transliterate() support" 3035 | }, 3036 | "type": "library", 3037 | "autoload": { 3038 | "psr-4": { 3039 | "voku\\": "src/voku/", 3040 | "voku\\tests\\": "tests/" 3041 | } 3042 | }, 3043 | "notification-url": "https://packagist.org/downloads/", 3044 | "license": [ 3045 | "MIT" 3046 | ], 3047 | "authors": [ 3048 | { 3049 | "name": "Lars Moelleken", 3050 | "homepage": "http://www.moelleken.org/" 3051 | } 3052 | ], 3053 | "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", 3054 | "homepage": "https://github.com/voku/portable-ascii", 3055 | "keywords": [ 3056 | "ascii", 3057 | "clean", 3058 | "php" 3059 | ], 3060 | "time": "2020-03-13T01:23:26+00:00" 3061 | } 3062 | ], 3063 | "packages-dev": [ 3064 | { 3065 | "name": "doctrine/instantiator", 3066 | "version": "dev-master", 3067 | "source": { 3068 | "type": "git", 3069 | "url": "https://github.com/doctrine/instantiator.git", 3070 | "reference": "6a1471ddbf2f448b35f3a8e390c903435e6dd5de" 3071 | }, 3072 | "dist": { 3073 | "type": "zip", 3074 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/6a1471ddbf2f448b35f3a8e390c903435e6dd5de", 3075 | "reference": "6a1471ddbf2f448b35f3a8e390c903435e6dd5de", 3076 | "shasum": "" 3077 | }, 3078 | "require": { 3079 | "php": "^7.1" 3080 | }, 3081 | "require-dev": { 3082 | "doctrine/coding-standard": "^6.0", 3083 | "ext-pdo": "*", 3084 | "ext-phar": "*", 3085 | "phpbench/phpbench": "^0.13", 3086 | "phpstan/phpstan-phpunit": "^0.11", 3087 | "phpstan/phpstan-shim": "^0.11", 3088 | "phpunit/phpunit": "^7.0" 3089 | }, 3090 | "type": "library", 3091 | "extra": { 3092 | "branch-alias": { 3093 | "dev-master": "1.4.x-dev" 3094 | } 3095 | }, 3096 | "autoload": { 3097 | "psr-4": { 3098 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 3099 | } 3100 | }, 3101 | "notification-url": "https://packagist.org/downloads/", 3102 | "license": [ 3103 | "MIT" 3104 | ], 3105 | "authors": [ 3106 | { 3107 | "name": "Marco Pivetta", 3108 | "email": "ocramius@gmail.com", 3109 | "homepage": "http://ocramius.github.com/" 3110 | } 3111 | ], 3112 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 3113 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 3114 | "keywords": [ 3115 | "constructor", 3116 | "instantiate" 3117 | ], 3118 | "time": "2019-12-23T19:18:31+00:00" 3119 | }, 3120 | { 3121 | "name": "fzaninotto/faker", 3122 | "version": "dev-master", 3123 | "source": { 3124 | "type": "git", 3125 | "url": "https://github.com/fzaninotto/Faker.git", 3126 | "reference": "1fcc3430e86c62e0215a3d29410a45dba9d5a22c" 3127 | }, 3128 | "dist": { 3129 | "type": "zip", 3130 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/1fcc3430e86c62e0215a3d29410a45dba9d5a22c", 3131 | "reference": "1fcc3430e86c62e0215a3d29410a45dba9d5a22c", 3132 | "shasum": "" 3133 | }, 3134 | "require": { 3135 | "php": "^5.3.3 || ^7.0" 3136 | }, 3137 | "require-dev": { 3138 | "ext-intl": "*", 3139 | "phpunit/phpunit": "^4.8.35 || ^5.7", 3140 | "squizlabs/php_codesniffer": "^2.9.2" 3141 | }, 3142 | "type": "library", 3143 | "extra": { 3144 | "branch-alias": { 3145 | "dev-master": "1.9-dev" 3146 | } 3147 | }, 3148 | "autoload": { 3149 | "psr-4": { 3150 | "Faker\\": "src/Faker/" 3151 | } 3152 | }, 3153 | "notification-url": "https://packagist.org/downloads/", 3154 | "license": [ 3155 | "MIT" 3156 | ], 3157 | "authors": [ 3158 | { 3159 | "name": "François Zaninotto" 3160 | } 3161 | ], 3162 | "description": "Faker is a PHP library that generates fake data for you.", 3163 | "keywords": [ 3164 | "data", 3165 | "faker", 3166 | "fixtures" 3167 | ], 3168 | "time": "2020-03-12T16:44:45+00:00" 3169 | }, 3170 | { 3171 | "name": "hamcrest/hamcrest-php", 3172 | "version": "dev-master", 3173 | "source": { 3174 | "type": "git", 3175 | "url": "https://github.com/hamcrest/hamcrest-php.git", 3176 | "reference": "c4312ef926bd2ac2392f2a78c95d7e20ab439027" 3177 | }, 3178 | "dist": { 3179 | "type": "zip", 3180 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/c4312ef926bd2ac2392f2a78c95d7e20ab439027", 3181 | "reference": "c4312ef926bd2ac2392f2a78c95d7e20ab439027", 3182 | "shasum": "" 3183 | }, 3184 | "require": { 3185 | "php": "^5.3|^7.0" 3186 | }, 3187 | "replace": { 3188 | "cordoval/hamcrest-php": "*", 3189 | "davedevelopment/hamcrest-php": "*", 3190 | "kodova/hamcrest-php": "*" 3191 | }, 3192 | "require-dev": { 3193 | "phpunit/php-file-iterator": "^1.4", 3194 | "phpunit/phpunit": "^4.8.36 || ^5.7 || ^6.5 || ^7.0", 3195 | "satooshi/php-coveralls": "^1.0" 3196 | }, 3197 | "type": "library", 3198 | "extra": { 3199 | "branch-alias": { 3200 | "dev-master": "2.1-dev" 3201 | } 3202 | }, 3203 | "autoload": { 3204 | "classmap": [ 3205 | "hamcrest" 3206 | ] 3207 | }, 3208 | "notification-url": "https://packagist.org/downloads/", 3209 | "license": [ 3210 | "BSD-3-Clause" 3211 | ], 3212 | "description": "This is the PHP port of Hamcrest Matchers", 3213 | "keywords": [ 3214 | "test" 3215 | ], 3216 | "time": "2019-12-27T10:18:06+00:00" 3217 | }, 3218 | { 3219 | "name": "mockery/mockery", 3220 | "version": "dev-master", 3221 | "source": { 3222 | "type": "git", 3223 | "url": "https://github.com/mockery/mockery.git", 3224 | "reference": "45c36a9c4f7dcab527d572a40705ede2b9793aaa" 3225 | }, 3226 | "dist": { 3227 | "type": "zip", 3228 | "url": "https://api.github.com/repos/mockery/mockery/zipball/45c36a9c4f7dcab527d572a40705ede2b9793aaa", 3229 | "reference": "45c36a9c4f7dcab527d572a40705ede2b9793aaa", 3230 | "shasum": "" 3231 | }, 3232 | "require": { 3233 | "hamcrest/hamcrest-php": "~2.0", 3234 | "lib-pcre": ">=7.0", 3235 | "php": ">=5.6.0" 3236 | }, 3237 | "require-dev": { 3238 | "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" 3239 | }, 3240 | "type": "library", 3241 | "extra": { 3242 | "branch-alias": { 3243 | "dev-master": "1.3.x-dev" 3244 | } 3245 | }, 3246 | "autoload": { 3247 | "psr-0": { 3248 | "Mockery": "library/" 3249 | } 3250 | }, 3251 | "notification-url": "https://packagist.org/downloads/", 3252 | "license": [ 3253 | "BSD-3-Clause" 3254 | ], 3255 | "authors": [ 3256 | { 3257 | "name": "Pádraic Brady", 3258 | "email": "padraic.brady@gmail.com", 3259 | "homepage": "http://blog.astrumfutura.com" 3260 | }, 3261 | { 3262 | "name": "Dave Marshall", 3263 | "email": "dave.marshall@atstsolutions.co.uk", 3264 | "homepage": "http://davedevelopment.co.uk" 3265 | } 3266 | ], 3267 | "description": "Mockery is a simple yet flexible PHP mock object framework", 3268 | "homepage": "https://github.com/mockery/mockery", 3269 | "keywords": [ 3270 | "BDD", 3271 | "TDD", 3272 | "library", 3273 | "mock", 3274 | "mock objects", 3275 | "mockery", 3276 | "stub", 3277 | "test", 3278 | "test double", 3279 | "testing" 3280 | ], 3281 | "time": "2020-03-12T18:23:52+00:00" 3282 | }, 3283 | { 3284 | "name": "myclabs/deep-copy", 3285 | "version": "1.x-dev", 3286 | "source": { 3287 | "type": "git", 3288 | "url": "https://github.com/myclabs/DeepCopy.git", 3289 | "reference": "a491d65139e2411c75704e871dd02bdddf5a4bdc" 3290 | }, 3291 | "dist": { 3292 | "type": "zip", 3293 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/a491d65139e2411c75704e871dd02bdddf5a4bdc", 3294 | "reference": "a491d65139e2411c75704e871dd02bdddf5a4bdc", 3295 | "shasum": "" 3296 | }, 3297 | "require": { 3298 | "php": "^7.1" 3299 | }, 3300 | "replace": { 3301 | "myclabs/deep-copy": "self.version" 3302 | }, 3303 | "require-dev": { 3304 | "doctrine/collections": "^1.0", 3305 | "doctrine/common": "^2.6", 3306 | "phpunit/phpunit": "^7.1" 3307 | }, 3308 | "type": "library", 3309 | "autoload": { 3310 | "psr-4": { 3311 | "DeepCopy\\": "src/DeepCopy/" 3312 | }, 3313 | "files": [ 3314 | "src/DeepCopy/deep_copy.php" 3315 | ] 3316 | }, 3317 | "notification-url": "https://packagist.org/downloads/", 3318 | "license": [ 3319 | "MIT" 3320 | ], 3321 | "description": "Create deep copies (clones) of your objects", 3322 | "keywords": [ 3323 | "clone", 3324 | "copy", 3325 | "duplicate", 3326 | "object", 3327 | "object graph" 3328 | ], 3329 | "time": "2020-03-12T21:49:07+00:00" 3330 | }, 3331 | { 3332 | "name": "orchestra/testbench", 3333 | "version": "5.x-dev", 3334 | "source": { 3335 | "type": "git", 3336 | "url": "https://github.com/orchestral/testbench.git", 3337 | "reference": "e36bdb5fc599495f46a8b2fd3a5e6ffed044e095" 3338 | }, 3339 | "dist": { 3340 | "type": "zip", 3341 | "url": "https://api.github.com/repos/orchestral/testbench/zipball/e36bdb5fc599495f46a8b2fd3a5e6ffed044e095", 3342 | "reference": "e36bdb5fc599495f46a8b2fd3a5e6ffed044e095", 3343 | "shasum": "" 3344 | }, 3345 | "require": { 3346 | "laravel/framework": "^7.1", 3347 | "mockery/mockery": "^1.3.1", 3348 | "orchestra/testbench-core": "^5.1", 3349 | "php": ">=7.2.5", 3350 | "phpunit/phpunit": "^8.4 || ^9.0" 3351 | }, 3352 | "type": "library", 3353 | "extra": { 3354 | "branch-alias": { 3355 | "dev-master": "6.0-dev" 3356 | } 3357 | }, 3358 | "notification-url": "https://packagist.org/downloads/", 3359 | "license": [ 3360 | "MIT" 3361 | ], 3362 | "authors": [ 3363 | { 3364 | "name": "Mior Muhammad Zaki", 3365 | "email": "crynobone@gmail.com", 3366 | "homepage": "https://github.com/crynobone" 3367 | } 3368 | ], 3369 | "description": "Laravel Testing Helper for Packages Development", 3370 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 3371 | "keywords": [ 3372 | "BDD", 3373 | "TDD", 3374 | "laravel", 3375 | "orchestra-platform", 3376 | "orchestral", 3377 | "testing" 3378 | ], 3379 | "time": "2020-03-10T17:14:11+00:00" 3380 | }, 3381 | { 3382 | "name": "orchestra/testbench-core", 3383 | "version": "5.x-dev", 3384 | "source": { 3385 | "type": "git", 3386 | "url": "https://github.com/orchestral/testbench-core.git", 3387 | "reference": "380897a90b6c375981164e0894f224e403ff2878" 3388 | }, 3389 | "dist": { 3390 | "type": "zip", 3391 | "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/380897a90b6c375981164e0894f224e403ff2878", 3392 | "reference": "380897a90b6c375981164e0894f224e403ff2878", 3393 | "shasum": "" 3394 | }, 3395 | "require": { 3396 | "fzaninotto/faker": "^1.9.1", 3397 | "php": ">=7.2.5" 3398 | }, 3399 | "require-dev": { 3400 | "laravel/framework": "^7.1", 3401 | "laravel/laravel": "dev-master", 3402 | "mockery/mockery": "^1.3.1", 3403 | "orchestra/canvas": "^5.0", 3404 | "phpunit/phpunit": "^8.4 || ^9.0" 3405 | }, 3406 | "suggest": { 3407 | "laravel/framework": "Required for testing (^7.1).", 3408 | "mockery/mockery": "Allow using Mockery for testing (^1.3.1).", 3409 | "orchestra/testbench-browser-kit": "Allow using legacy Laravel BrowserKit for testing (^5.0).", 3410 | "orchestra/testbench-dusk": "Allow using Laravel Dusk for testing (^5.0).", 3411 | "phpunit/phpunit": "Allow using PHPUnit for testing (^8.4 || ^9.0)." 3412 | }, 3413 | "type": "library", 3414 | "extra": { 3415 | "branch-alias": { 3416 | "dev-master": "5.0-dev" 3417 | } 3418 | }, 3419 | "autoload": { 3420 | "psr-4": { 3421 | "Orchestra\\Testbench\\": "src/" 3422 | } 3423 | }, 3424 | "notification-url": "https://packagist.org/downloads/", 3425 | "license": [ 3426 | "MIT" 3427 | ], 3428 | "authors": [ 3429 | { 3430 | "name": "Mior Muhammad Zaki", 3431 | "email": "crynobone@gmail.com", 3432 | "homepage": "https://github.com/crynobone" 3433 | } 3434 | ], 3435 | "description": "Testing Helper for Laravel Development", 3436 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 3437 | "keywords": [ 3438 | "BDD", 3439 | "TDD", 3440 | "laravel", 3441 | "orchestra-platform", 3442 | "orchestral", 3443 | "testing" 3444 | ], 3445 | "time": "2020-03-26T01:59:31+00:00" 3446 | }, 3447 | { 3448 | "name": "phar-io/manifest", 3449 | "version": "dev-master", 3450 | "source": { 3451 | "type": "git", 3452 | "url": "https://github.com/phar-io/manifest.git", 3453 | "reference": "3d94e3b6eb309e921a100a4992f72314299bb03f" 3454 | }, 3455 | "dist": { 3456 | "type": "zip", 3457 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/3d94e3b6eb309e921a100a4992f72314299bb03f", 3458 | "reference": "3d94e3b6eb309e921a100a4992f72314299bb03f", 3459 | "shasum": "" 3460 | }, 3461 | "require": { 3462 | "ext-dom": "*", 3463 | "ext-phar": "*", 3464 | "ext-xmlwriter": "*", 3465 | "phar-io/version": "^2.0", 3466 | "php": "^7.2" 3467 | }, 3468 | "require-dev": { 3469 | "phpunit/phpunit": "^8.2" 3470 | }, 3471 | "type": "library", 3472 | "extra": { 3473 | "branch-alias": { 3474 | "dev-master": "1.0.x-dev" 3475 | } 3476 | }, 3477 | "autoload": { 3478 | "classmap": [ 3479 | "src/" 3480 | ] 3481 | }, 3482 | "notification-url": "https://packagist.org/downloads/", 3483 | "license": [ 3484 | "BSD-3-Clause" 3485 | ], 3486 | "authors": [ 3487 | { 3488 | "name": "Arne Blankerts", 3489 | "email": "arne@blankerts.de", 3490 | "role": "Developer" 3491 | }, 3492 | { 3493 | "name": "Sebastian Heuer", 3494 | "email": "sebastian@phpeople.de", 3495 | "role": "Developer" 3496 | }, 3497 | { 3498 | "name": "Sebastian Bergmann", 3499 | "email": "sebastian@phpunit.de", 3500 | "role": "Developer" 3501 | } 3502 | ], 3503 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 3504 | "time": "2019-12-29T10:29:09+00:00" 3505 | }, 3506 | { 3507 | "name": "phar-io/version", 3508 | "version": "2.0.1", 3509 | "source": { 3510 | "type": "git", 3511 | "url": "https://github.com/phar-io/version.git", 3512 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 3513 | }, 3514 | "dist": { 3515 | "type": "zip", 3516 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 3517 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 3518 | "shasum": "" 3519 | }, 3520 | "require": { 3521 | "php": "^5.6 || ^7.0" 3522 | }, 3523 | "type": "library", 3524 | "autoload": { 3525 | "classmap": [ 3526 | "src/" 3527 | ] 3528 | }, 3529 | "notification-url": "https://packagist.org/downloads/", 3530 | "license": [ 3531 | "BSD-3-Clause" 3532 | ], 3533 | "authors": [ 3534 | { 3535 | "name": "Arne Blankerts", 3536 | "email": "arne@blankerts.de", 3537 | "role": "Developer" 3538 | }, 3539 | { 3540 | "name": "Sebastian Heuer", 3541 | "email": "sebastian@phpeople.de", 3542 | "role": "Developer" 3543 | }, 3544 | { 3545 | "name": "Sebastian Bergmann", 3546 | "email": "sebastian@phpunit.de", 3547 | "role": "Developer" 3548 | } 3549 | ], 3550 | "description": "Library for handling version information and constraints", 3551 | "time": "2018-07-08T19:19:57+00:00" 3552 | }, 3553 | { 3554 | "name": "phpdocumentor/reflection-common", 3555 | "version": "dev-master", 3556 | "source": { 3557 | "type": "git", 3558 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 3559 | "reference": "b0843c8cbcc2dc5eda5158e583c7199a5e44c86d" 3560 | }, 3561 | "dist": { 3562 | "type": "zip", 3563 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/b0843c8cbcc2dc5eda5158e583c7199a5e44c86d", 3564 | "reference": "b0843c8cbcc2dc5eda5158e583c7199a5e44c86d", 3565 | "shasum": "" 3566 | }, 3567 | "require": { 3568 | "php": ">=7.1" 3569 | }, 3570 | "require-dev": { 3571 | "phpunit/phpunit": "~6" 3572 | }, 3573 | "type": "library", 3574 | "extra": { 3575 | "branch-alias": { 3576 | "dev-master": "2.x-dev" 3577 | } 3578 | }, 3579 | "autoload": { 3580 | "psr-4": { 3581 | "phpDocumentor\\Reflection\\": "src/" 3582 | } 3583 | }, 3584 | "notification-url": "https://packagist.org/downloads/", 3585 | "license": [ 3586 | "MIT" 3587 | ], 3588 | "authors": [ 3589 | { 3590 | "name": "Jaap van Otterdijk", 3591 | "email": "opensource@ijaap.nl" 3592 | } 3593 | ], 3594 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 3595 | "homepage": "http://www.phpdoc.org", 3596 | "keywords": [ 3597 | "FQSEN", 3598 | "phpDocumentor", 3599 | "phpdoc", 3600 | "reflection", 3601 | "static analysis" 3602 | ], 3603 | "time": "2019-12-20T12:45:35+00:00" 3604 | }, 3605 | { 3606 | "name": "phpdocumentor/reflection-docblock", 3607 | "version": "dev-master", 3608 | "source": { 3609 | "type": "git", 3610 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 3611 | "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" 3612 | }, 3613 | "dist": { 3614 | "type": "zip", 3615 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", 3616 | "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", 3617 | "shasum": "" 3618 | }, 3619 | "require": { 3620 | "ext-filter": "^7.1", 3621 | "php": "^7.2", 3622 | "phpdocumentor/reflection-common": "^2.0", 3623 | "phpdocumentor/type-resolver": "^1.0", 3624 | "webmozart/assert": "^1" 3625 | }, 3626 | "require-dev": { 3627 | "doctrine/instantiator": "^1", 3628 | "mockery/mockery": "^1" 3629 | }, 3630 | "type": "library", 3631 | "extra": { 3632 | "branch-alias": { 3633 | "dev-master": "5.x-dev" 3634 | } 3635 | }, 3636 | "autoload": { 3637 | "psr-4": { 3638 | "phpDocumentor\\Reflection\\": "src" 3639 | } 3640 | }, 3641 | "notification-url": "https://packagist.org/downloads/", 3642 | "license": [ 3643 | "MIT" 3644 | ], 3645 | "authors": [ 3646 | { 3647 | "name": "Mike van Riel", 3648 | "email": "me@mikevanriel.com" 3649 | }, 3650 | { 3651 | "name": "Jaap van Otterdijk", 3652 | "email": "account@ijaap.nl" 3653 | } 3654 | ], 3655 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 3656 | "time": "2020-02-22T12:28:44+00:00" 3657 | }, 3658 | { 3659 | "name": "phpdocumentor/type-resolver", 3660 | "version": "dev-master", 3661 | "source": { 3662 | "type": "git", 3663 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 3664 | "reference": "d6b5291650d058fe1162a54fee9d923de19bcda2" 3665 | }, 3666 | "dist": { 3667 | "type": "zip", 3668 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/d6b5291650d058fe1162a54fee9d923de19bcda2", 3669 | "reference": "d6b5291650d058fe1162a54fee9d923de19bcda2", 3670 | "shasum": "" 3671 | }, 3672 | "require": { 3673 | "php": "^7.2", 3674 | "phpdocumentor/reflection-common": "^2.0" 3675 | }, 3676 | "require-dev": { 3677 | "ext-tokenizer": "^7.2", 3678 | "mockery/mockery": "~1" 3679 | }, 3680 | "type": "library", 3681 | "extra": { 3682 | "branch-alias": { 3683 | "dev-master": "1.x-dev" 3684 | } 3685 | }, 3686 | "autoload": { 3687 | "psr-4": { 3688 | "phpDocumentor\\Reflection\\": "src" 3689 | } 3690 | }, 3691 | "notification-url": "https://packagist.org/downloads/", 3692 | "license": [ 3693 | "MIT" 3694 | ], 3695 | "authors": [ 3696 | { 3697 | "name": "Mike van Riel", 3698 | "email": "me@mikevanriel.com" 3699 | } 3700 | ], 3701 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 3702 | "time": "2020-03-06T17:11:40+00:00" 3703 | }, 3704 | { 3705 | "name": "phpspec/prophecy", 3706 | "version": "dev-master", 3707 | "source": { 3708 | "type": "git", 3709 | "url": "https://github.com/phpspec/prophecy.git", 3710 | "reference": "451c3cd1418cf640de218914901e51b064abb093" 3711 | }, 3712 | "dist": { 3713 | "type": "zip", 3714 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", 3715 | "reference": "451c3cd1418cf640de218914901e51b064abb093", 3716 | "shasum": "" 3717 | }, 3718 | "require": { 3719 | "doctrine/instantiator": "^1.0.2", 3720 | "php": "^5.3|^7.0", 3721 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", 3722 | "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", 3723 | "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" 3724 | }, 3725 | "require-dev": { 3726 | "phpspec/phpspec": "^2.5 || ^3.2", 3727 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 3728 | }, 3729 | "type": "library", 3730 | "extra": { 3731 | "branch-alias": { 3732 | "dev-master": "1.10.x-dev" 3733 | } 3734 | }, 3735 | "autoload": { 3736 | "psr-4": { 3737 | "Prophecy\\": "src/Prophecy" 3738 | } 3739 | }, 3740 | "notification-url": "https://packagist.org/downloads/", 3741 | "license": [ 3742 | "MIT" 3743 | ], 3744 | "authors": [ 3745 | { 3746 | "name": "Konstantin Kudryashov", 3747 | "email": "ever.zet@gmail.com", 3748 | "homepage": "http://everzet.com" 3749 | }, 3750 | { 3751 | "name": "Marcello Duarte", 3752 | "email": "marcello.duarte@gmail.com" 3753 | } 3754 | ], 3755 | "description": "Highly opinionated mocking framework for PHP 5.3+", 3756 | "homepage": "https://github.com/phpspec/prophecy", 3757 | "keywords": [ 3758 | "Double", 3759 | "Dummy", 3760 | "fake", 3761 | "mock", 3762 | "spy", 3763 | "stub" 3764 | ], 3765 | "time": "2020-03-05T15:02:03+00:00" 3766 | }, 3767 | { 3768 | "name": "phpunit/php-code-coverage", 3769 | "version": "7.0.10", 3770 | "source": { 3771 | "type": "git", 3772 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 3773 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" 3774 | }, 3775 | "dist": { 3776 | "type": "zip", 3777 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", 3778 | "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", 3779 | "shasum": "" 3780 | }, 3781 | "require": { 3782 | "ext-dom": "*", 3783 | "ext-xmlwriter": "*", 3784 | "php": "^7.2", 3785 | "phpunit/php-file-iterator": "^2.0.2", 3786 | "phpunit/php-text-template": "^1.2.1", 3787 | "phpunit/php-token-stream": "^3.1.1", 3788 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 3789 | "sebastian/environment": "^4.2.2", 3790 | "sebastian/version": "^2.0.1", 3791 | "theseer/tokenizer": "^1.1.3" 3792 | }, 3793 | "require-dev": { 3794 | "phpunit/phpunit": "^8.2.2" 3795 | }, 3796 | "suggest": { 3797 | "ext-xdebug": "^2.7.2" 3798 | }, 3799 | "type": "library", 3800 | "extra": { 3801 | "branch-alias": { 3802 | "dev-master": "7.0-dev" 3803 | } 3804 | }, 3805 | "autoload": { 3806 | "classmap": [ 3807 | "src/" 3808 | ] 3809 | }, 3810 | "notification-url": "https://packagist.org/downloads/", 3811 | "license": [ 3812 | "BSD-3-Clause" 3813 | ], 3814 | "authors": [ 3815 | { 3816 | "name": "Sebastian Bergmann", 3817 | "email": "sebastian@phpunit.de", 3818 | "role": "lead" 3819 | } 3820 | ], 3821 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 3822 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 3823 | "keywords": [ 3824 | "coverage", 3825 | "testing", 3826 | "xunit" 3827 | ], 3828 | "time": "2019-11-20T13:55:58+00:00" 3829 | }, 3830 | { 3831 | "name": "phpunit/php-file-iterator", 3832 | "version": "2.0.2", 3833 | "source": { 3834 | "type": "git", 3835 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 3836 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 3837 | }, 3838 | "dist": { 3839 | "type": "zip", 3840 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 3841 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 3842 | "shasum": "" 3843 | }, 3844 | "require": { 3845 | "php": "^7.1" 3846 | }, 3847 | "require-dev": { 3848 | "phpunit/phpunit": "^7.1" 3849 | }, 3850 | "type": "library", 3851 | "extra": { 3852 | "branch-alias": { 3853 | "dev-master": "2.0.x-dev" 3854 | } 3855 | }, 3856 | "autoload": { 3857 | "classmap": [ 3858 | "src/" 3859 | ] 3860 | }, 3861 | "notification-url": "https://packagist.org/downloads/", 3862 | "license": [ 3863 | "BSD-3-Clause" 3864 | ], 3865 | "authors": [ 3866 | { 3867 | "name": "Sebastian Bergmann", 3868 | "email": "sebastian@phpunit.de", 3869 | "role": "lead" 3870 | } 3871 | ], 3872 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 3873 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 3874 | "keywords": [ 3875 | "filesystem", 3876 | "iterator" 3877 | ], 3878 | "time": "2018-09-13T20:33:42+00:00" 3879 | }, 3880 | { 3881 | "name": "phpunit/php-text-template", 3882 | "version": "1.2.1", 3883 | "source": { 3884 | "type": "git", 3885 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 3886 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 3887 | }, 3888 | "dist": { 3889 | "type": "zip", 3890 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 3891 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 3892 | "shasum": "" 3893 | }, 3894 | "require": { 3895 | "php": ">=5.3.3" 3896 | }, 3897 | "type": "library", 3898 | "autoload": { 3899 | "classmap": [ 3900 | "src/" 3901 | ] 3902 | }, 3903 | "notification-url": "https://packagist.org/downloads/", 3904 | "license": [ 3905 | "BSD-3-Clause" 3906 | ], 3907 | "authors": [ 3908 | { 3909 | "name": "Sebastian Bergmann", 3910 | "email": "sebastian@phpunit.de", 3911 | "role": "lead" 3912 | } 3913 | ], 3914 | "description": "Simple template engine.", 3915 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 3916 | "keywords": [ 3917 | "template" 3918 | ], 3919 | "time": "2015-06-21T13:50:34+00:00" 3920 | }, 3921 | { 3922 | "name": "phpunit/php-timer", 3923 | "version": "2.1.2", 3924 | "source": { 3925 | "type": "git", 3926 | "url": "https://github.com/sebastianbergmann/php-timer.git", 3927 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 3928 | }, 3929 | "dist": { 3930 | "type": "zip", 3931 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 3932 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 3933 | "shasum": "" 3934 | }, 3935 | "require": { 3936 | "php": "^7.1" 3937 | }, 3938 | "require-dev": { 3939 | "phpunit/phpunit": "^7.0" 3940 | }, 3941 | "type": "library", 3942 | "extra": { 3943 | "branch-alias": { 3944 | "dev-master": "2.1-dev" 3945 | } 3946 | }, 3947 | "autoload": { 3948 | "classmap": [ 3949 | "src/" 3950 | ] 3951 | }, 3952 | "notification-url": "https://packagist.org/downloads/", 3953 | "license": [ 3954 | "BSD-3-Clause" 3955 | ], 3956 | "authors": [ 3957 | { 3958 | "name": "Sebastian Bergmann", 3959 | "email": "sebastian@phpunit.de", 3960 | "role": "lead" 3961 | } 3962 | ], 3963 | "description": "Utility class for timing", 3964 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 3965 | "keywords": [ 3966 | "timer" 3967 | ], 3968 | "time": "2019-06-07T04:22:29+00:00" 3969 | }, 3970 | { 3971 | "name": "phpunit/php-token-stream", 3972 | "version": "3.1.1", 3973 | "source": { 3974 | "type": "git", 3975 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 3976 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" 3977 | }, 3978 | "dist": { 3979 | "type": "zip", 3980 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", 3981 | "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", 3982 | "shasum": "" 3983 | }, 3984 | "require": { 3985 | "ext-tokenizer": "*", 3986 | "php": "^7.1" 3987 | }, 3988 | "require-dev": { 3989 | "phpunit/phpunit": "^7.0" 3990 | }, 3991 | "type": "library", 3992 | "extra": { 3993 | "branch-alias": { 3994 | "dev-master": "3.1-dev" 3995 | } 3996 | }, 3997 | "autoload": { 3998 | "classmap": [ 3999 | "src/" 4000 | ] 4001 | }, 4002 | "notification-url": "https://packagist.org/downloads/", 4003 | "license": [ 4004 | "BSD-3-Clause" 4005 | ], 4006 | "authors": [ 4007 | { 4008 | "name": "Sebastian Bergmann", 4009 | "email": "sebastian@phpunit.de" 4010 | } 4011 | ], 4012 | "description": "Wrapper around PHP's tokenizer extension.", 4013 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 4014 | "keywords": [ 4015 | "tokenizer" 4016 | ], 4017 | "time": "2019-09-17T06:23:10+00:00" 4018 | }, 4019 | { 4020 | "name": "phpunit/phpunit", 4021 | "version": "8.5.x-dev", 4022 | "source": { 4023 | "type": "git", 4024 | "url": "https://github.com/sebastianbergmann/phpunit.git", 4025 | "reference": "fb668be523b1975b0fb9ee22afbfa8f5acdb840e" 4026 | }, 4027 | "dist": { 4028 | "type": "zip", 4029 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/fb668be523b1975b0fb9ee22afbfa8f5acdb840e", 4030 | "reference": "fb668be523b1975b0fb9ee22afbfa8f5acdb840e", 4031 | "shasum": "" 4032 | }, 4033 | "require": { 4034 | "doctrine/instantiator": "^1.2.0", 4035 | "ext-dom": "*", 4036 | "ext-json": "*", 4037 | "ext-libxml": "*", 4038 | "ext-mbstring": "*", 4039 | "ext-xml": "*", 4040 | "ext-xmlwriter": "*", 4041 | "myclabs/deep-copy": "^1.9.1", 4042 | "phar-io/manifest": "^1.0.3", 4043 | "phar-io/version": "^2.0.1", 4044 | "php": "^7.2", 4045 | "phpspec/prophecy": "^1.8.1", 4046 | "phpunit/php-code-coverage": "^7.0.7", 4047 | "phpunit/php-file-iterator": "^2.0.2", 4048 | "phpunit/php-text-template": "^1.2.1", 4049 | "phpunit/php-timer": "^2.1.2", 4050 | "sebastian/comparator": "^3.0.2", 4051 | "sebastian/diff": "^3.0.2", 4052 | "sebastian/environment": "^4.2.2", 4053 | "sebastian/exporter": "^3.1.1", 4054 | "sebastian/global-state": "^3.0.0", 4055 | "sebastian/object-enumerator": "^3.0.3", 4056 | "sebastian/resource-operations": "^2.0.1", 4057 | "sebastian/type": "^1.1.3", 4058 | "sebastian/version": "^2.0.1" 4059 | }, 4060 | "require-dev": { 4061 | "ext-pdo": "*" 4062 | }, 4063 | "suggest": { 4064 | "ext-soap": "*", 4065 | "ext-xdebug": "*", 4066 | "phpunit/php-invoker": "^2.0.0" 4067 | }, 4068 | "bin": [ 4069 | "phpunit" 4070 | ], 4071 | "type": "library", 4072 | "extra": { 4073 | "branch-alias": { 4074 | "dev-master": "8.5-dev" 4075 | } 4076 | }, 4077 | "autoload": { 4078 | "classmap": [ 4079 | "src/" 4080 | ] 4081 | }, 4082 | "notification-url": "https://packagist.org/downloads/", 4083 | "license": [ 4084 | "BSD-3-Clause" 4085 | ], 4086 | "authors": [ 4087 | { 4088 | "name": "Sebastian Bergmann", 4089 | "email": "sebastian@phpunit.de", 4090 | "role": "lead" 4091 | } 4092 | ], 4093 | "description": "The PHP Unit Testing framework.", 4094 | "homepage": "https://phpunit.de/", 4095 | "keywords": [ 4096 | "phpunit", 4097 | "testing", 4098 | "xunit" 4099 | ], 4100 | "time": "2020-03-25T06:16:24+00:00" 4101 | }, 4102 | { 4103 | "name": "sebastian/code-unit-reverse-lookup", 4104 | "version": "1.0.1", 4105 | "source": { 4106 | "type": "git", 4107 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 4108 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 4109 | }, 4110 | "dist": { 4111 | "type": "zip", 4112 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 4113 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 4114 | "shasum": "" 4115 | }, 4116 | "require": { 4117 | "php": "^5.6 || ^7.0" 4118 | }, 4119 | "require-dev": { 4120 | "phpunit/phpunit": "^5.7 || ^6.0" 4121 | }, 4122 | "type": "library", 4123 | "extra": { 4124 | "branch-alias": { 4125 | "dev-master": "1.0.x-dev" 4126 | } 4127 | }, 4128 | "autoload": { 4129 | "classmap": [ 4130 | "src/" 4131 | ] 4132 | }, 4133 | "notification-url": "https://packagist.org/downloads/", 4134 | "license": [ 4135 | "BSD-3-Clause" 4136 | ], 4137 | "authors": [ 4138 | { 4139 | "name": "Sebastian Bergmann", 4140 | "email": "sebastian@phpunit.de" 4141 | } 4142 | ], 4143 | "description": "Looks up which function or method a line of code belongs to", 4144 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 4145 | "time": "2017-03-04T06:30:41+00:00" 4146 | }, 4147 | { 4148 | "name": "sebastian/comparator", 4149 | "version": "3.0.2", 4150 | "source": { 4151 | "type": "git", 4152 | "url": "https://github.com/sebastianbergmann/comparator.git", 4153 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 4154 | }, 4155 | "dist": { 4156 | "type": "zip", 4157 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 4158 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 4159 | "shasum": "" 4160 | }, 4161 | "require": { 4162 | "php": "^7.1", 4163 | "sebastian/diff": "^3.0", 4164 | "sebastian/exporter": "^3.1" 4165 | }, 4166 | "require-dev": { 4167 | "phpunit/phpunit": "^7.1" 4168 | }, 4169 | "type": "library", 4170 | "extra": { 4171 | "branch-alias": { 4172 | "dev-master": "3.0-dev" 4173 | } 4174 | }, 4175 | "autoload": { 4176 | "classmap": [ 4177 | "src/" 4178 | ] 4179 | }, 4180 | "notification-url": "https://packagist.org/downloads/", 4181 | "license": [ 4182 | "BSD-3-Clause" 4183 | ], 4184 | "authors": [ 4185 | { 4186 | "name": "Jeff Welch", 4187 | "email": "whatthejeff@gmail.com" 4188 | }, 4189 | { 4190 | "name": "Volker Dusch", 4191 | "email": "github@wallbash.com" 4192 | }, 4193 | { 4194 | "name": "Bernhard Schussek", 4195 | "email": "bschussek@2bepublished.at" 4196 | }, 4197 | { 4198 | "name": "Sebastian Bergmann", 4199 | "email": "sebastian@phpunit.de" 4200 | } 4201 | ], 4202 | "description": "Provides the functionality to compare PHP values for equality", 4203 | "homepage": "https://github.com/sebastianbergmann/comparator", 4204 | "keywords": [ 4205 | "comparator", 4206 | "compare", 4207 | "equality" 4208 | ], 4209 | "time": "2018-07-12T15:12:46+00:00" 4210 | }, 4211 | { 4212 | "name": "sebastian/diff", 4213 | "version": "3.0.2", 4214 | "source": { 4215 | "type": "git", 4216 | "url": "https://github.com/sebastianbergmann/diff.git", 4217 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 4218 | }, 4219 | "dist": { 4220 | "type": "zip", 4221 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 4222 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 4223 | "shasum": "" 4224 | }, 4225 | "require": { 4226 | "php": "^7.1" 4227 | }, 4228 | "require-dev": { 4229 | "phpunit/phpunit": "^7.5 || ^8.0", 4230 | "symfony/process": "^2 || ^3.3 || ^4" 4231 | }, 4232 | "type": "library", 4233 | "extra": { 4234 | "branch-alias": { 4235 | "dev-master": "3.0-dev" 4236 | } 4237 | }, 4238 | "autoload": { 4239 | "classmap": [ 4240 | "src/" 4241 | ] 4242 | }, 4243 | "notification-url": "https://packagist.org/downloads/", 4244 | "license": [ 4245 | "BSD-3-Clause" 4246 | ], 4247 | "authors": [ 4248 | { 4249 | "name": "Kore Nordmann", 4250 | "email": "mail@kore-nordmann.de" 4251 | }, 4252 | { 4253 | "name": "Sebastian Bergmann", 4254 | "email": "sebastian@phpunit.de" 4255 | } 4256 | ], 4257 | "description": "Diff implementation", 4258 | "homepage": "https://github.com/sebastianbergmann/diff", 4259 | "keywords": [ 4260 | "diff", 4261 | "udiff", 4262 | "unidiff", 4263 | "unified diff" 4264 | ], 4265 | "time": "2019-02-04T06:01:07+00:00" 4266 | }, 4267 | { 4268 | "name": "sebastian/environment", 4269 | "version": "4.2.3", 4270 | "source": { 4271 | "type": "git", 4272 | "url": "https://github.com/sebastianbergmann/environment.git", 4273 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" 4274 | }, 4275 | "dist": { 4276 | "type": "zip", 4277 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 4278 | "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", 4279 | "shasum": "" 4280 | }, 4281 | "require": { 4282 | "php": "^7.1" 4283 | }, 4284 | "require-dev": { 4285 | "phpunit/phpunit": "^7.5" 4286 | }, 4287 | "suggest": { 4288 | "ext-posix": "*" 4289 | }, 4290 | "type": "library", 4291 | "extra": { 4292 | "branch-alias": { 4293 | "dev-master": "4.2-dev" 4294 | } 4295 | }, 4296 | "autoload": { 4297 | "classmap": [ 4298 | "src/" 4299 | ] 4300 | }, 4301 | "notification-url": "https://packagist.org/downloads/", 4302 | "license": [ 4303 | "BSD-3-Clause" 4304 | ], 4305 | "authors": [ 4306 | { 4307 | "name": "Sebastian Bergmann", 4308 | "email": "sebastian@phpunit.de" 4309 | } 4310 | ], 4311 | "description": "Provides functionality to handle HHVM/PHP environments", 4312 | "homepage": "http://www.github.com/sebastianbergmann/environment", 4313 | "keywords": [ 4314 | "Xdebug", 4315 | "environment", 4316 | "hhvm" 4317 | ], 4318 | "time": "2019-11-20T08:46:58+00:00" 4319 | }, 4320 | { 4321 | "name": "sebastian/exporter", 4322 | "version": "3.1.2", 4323 | "source": { 4324 | "type": "git", 4325 | "url": "https://github.com/sebastianbergmann/exporter.git", 4326 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" 4327 | }, 4328 | "dist": { 4329 | "type": "zip", 4330 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", 4331 | "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", 4332 | "shasum": "" 4333 | }, 4334 | "require": { 4335 | "php": "^7.0", 4336 | "sebastian/recursion-context": "^3.0" 4337 | }, 4338 | "require-dev": { 4339 | "ext-mbstring": "*", 4340 | "phpunit/phpunit": "^6.0" 4341 | }, 4342 | "type": "library", 4343 | "extra": { 4344 | "branch-alias": { 4345 | "dev-master": "3.1.x-dev" 4346 | } 4347 | }, 4348 | "autoload": { 4349 | "classmap": [ 4350 | "src/" 4351 | ] 4352 | }, 4353 | "notification-url": "https://packagist.org/downloads/", 4354 | "license": [ 4355 | "BSD-3-Clause" 4356 | ], 4357 | "authors": [ 4358 | { 4359 | "name": "Sebastian Bergmann", 4360 | "email": "sebastian@phpunit.de" 4361 | }, 4362 | { 4363 | "name": "Jeff Welch", 4364 | "email": "whatthejeff@gmail.com" 4365 | }, 4366 | { 4367 | "name": "Volker Dusch", 4368 | "email": "github@wallbash.com" 4369 | }, 4370 | { 4371 | "name": "Adam Harvey", 4372 | "email": "aharvey@php.net" 4373 | }, 4374 | { 4375 | "name": "Bernhard Schussek", 4376 | "email": "bschussek@gmail.com" 4377 | } 4378 | ], 4379 | "description": "Provides the functionality to export PHP variables for visualization", 4380 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 4381 | "keywords": [ 4382 | "export", 4383 | "exporter" 4384 | ], 4385 | "time": "2019-09-14T09:02:43+00:00" 4386 | }, 4387 | { 4388 | "name": "sebastian/global-state", 4389 | "version": "3.0.0", 4390 | "source": { 4391 | "type": "git", 4392 | "url": "https://github.com/sebastianbergmann/global-state.git", 4393 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" 4394 | }, 4395 | "dist": { 4396 | "type": "zip", 4397 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 4398 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 4399 | "shasum": "" 4400 | }, 4401 | "require": { 4402 | "php": "^7.2", 4403 | "sebastian/object-reflector": "^1.1.1", 4404 | "sebastian/recursion-context": "^3.0" 4405 | }, 4406 | "require-dev": { 4407 | "ext-dom": "*", 4408 | "phpunit/phpunit": "^8.0" 4409 | }, 4410 | "suggest": { 4411 | "ext-uopz": "*" 4412 | }, 4413 | "type": "library", 4414 | "extra": { 4415 | "branch-alias": { 4416 | "dev-master": "3.0-dev" 4417 | } 4418 | }, 4419 | "autoload": { 4420 | "classmap": [ 4421 | "src/" 4422 | ] 4423 | }, 4424 | "notification-url": "https://packagist.org/downloads/", 4425 | "license": [ 4426 | "BSD-3-Clause" 4427 | ], 4428 | "authors": [ 4429 | { 4430 | "name": "Sebastian Bergmann", 4431 | "email": "sebastian@phpunit.de" 4432 | } 4433 | ], 4434 | "description": "Snapshotting of global state", 4435 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 4436 | "keywords": [ 4437 | "global state" 4438 | ], 4439 | "time": "2019-02-01T05:30:01+00:00" 4440 | }, 4441 | { 4442 | "name": "sebastian/object-enumerator", 4443 | "version": "3.0.3", 4444 | "source": { 4445 | "type": "git", 4446 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 4447 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 4448 | }, 4449 | "dist": { 4450 | "type": "zip", 4451 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 4452 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 4453 | "shasum": "" 4454 | }, 4455 | "require": { 4456 | "php": "^7.0", 4457 | "sebastian/object-reflector": "^1.1.1", 4458 | "sebastian/recursion-context": "^3.0" 4459 | }, 4460 | "require-dev": { 4461 | "phpunit/phpunit": "^6.0" 4462 | }, 4463 | "type": "library", 4464 | "extra": { 4465 | "branch-alias": { 4466 | "dev-master": "3.0.x-dev" 4467 | } 4468 | }, 4469 | "autoload": { 4470 | "classmap": [ 4471 | "src/" 4472 | ] 4473 | }, 4474 | "notification-url": "https://packagist.org/downloads/", 4475 | "license": [ 4476 | "BSD-3-Clause" 4477 | ], 4478 | "authors": [ 4479 | { 4480 | "name": "Sebastian Bergmann", 4481 | "email": "sebastian@phpunit.de" 4482 | } 4483 | ], 4484 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 4485 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 4486 | "time": "2017-08-03T12:35:26+00:00" 4487 | }, 4488 | { 4489 | "name": "sebastian/object-reflector", 4490 | "version": "1.1.1", 4491 | "source": { 4492 | "type": "git", 4493 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 4494 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 4495 | }, 4496 | "dist": { 4497 | "type": "zip", 4498 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 4499 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 4500 | "shasum": "" 4501 | }, 4502 | "require": { 4503 | "php": "^7.0" 4504 | }, 4505 | "require-dev": { 4506 | "phpunit/phpunit": "^6.0" 4507 | }, 4508 | "type": "library", 4509 | "extra": { 4510 | "branch-alias": { 4511 | "dev-master": "1.1-dev" 4512 | } 4513 | }, 4514 | "autoload": { 4515 | "classmap": [ 4516 | "src/" 4517 | ] 4518 | }, 4519 | "notification-url": "https://packagist.org/downloads/", 4520 | "license": [ 4521 | "BSD-3-Clause" 4522 | ], 4523 | "authors": [ 4524 | { 4525 | "name": "Sebastian Bergmann", 4526 | "email": "sebastian@phpunit.de" 4527 | } 4528 | ], 4529 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 4530 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 4531 | "time": "2017-03-29T09:07:27+00:00" 4532 | }, 4533 | { 4534 | "name": "sebastian/recursion-context", 4535 | "version": "3.0.0", 4536 | "source": { 4537 | "type": "git", 4538 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 4539 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 4540 | }, 4541 | "dist": { 4542 | "type": "zip", 4543 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 4544 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 4545 | "shasum": "" 4546 | }, 4547 | "require": { 4548 | "php": "^7.0" 4549 | }, 4550 | "require-dev": { 4551 | "phpunit/phpunit": "^6.0" 4552 | }, 4553 | "type": "library", 4554 | "extra": { 4555 | "branch-alias": { 4556 | "dev-master": "3.0.x-dev" 4557 | } 4558 | }, 4559 | "autoload": { 4560 | "classmap": [ 4561 | "src/" 4562 | ] 4563 | }, 4564 | "notification-url": "https://packagist.org/downloads/", 4565 | "license": [ 4566 | "BSD-3-Clause" 4567 | ], 4568 | "authors": [ 4569 | { 4570 | "name": "Jeff Welch", 4571 | "email": "whatthejeff@gmail.com" 4572 | }, 4573 | { 4574 | "name": "Sebastian Bergmann", 4575 | "email": "sebastian@phpunit.de" 4576 | }, 4577 | { 4578 | "name": "Adam Harvey", 4579 | "email": "aharvey@php.net" 4580 | } 4581 | ], 4582 | "description": "Provides functionality to recursively process PHP variables", 4583 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 4584 | "time": "2017-03-03T06:23:57+00:00" 4585 | }, 4586 | { 4587 | "name": "sebastian/resource-operations", 4588 | "version": "2.0.1", 4589 | "source": { 4590 | "type": "git", 4591 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 4592 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 4593 | }, 4594 | "dist": { 4595 | "type": "zip", 4596 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 4597 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 4598 | "shasum": "" 4599 | }, 4600 | "require": { 4601 | "php": "^7.1" 4602 | }, 4603 | "type": "library", 4604 | "extra": { 4605 | "branch-alias": { 4606 | "dev-master": "2.0-dev" 4607 | } 4608 | }, 4609 | "autoload": { 4610 | "classmap": [ 4611 | "src/" 4612 | ] 4613 | }, 4614 | "notification-url": "https://packagist.org/downloads/", 4615 | "license": [ 4616 | "BSD-3-Clause" 4617 | ], 4618 | "authors": [ 4619 | { 4620 | "name": "Sebastian Bergmann", 4621 | "email": "sebastian@phpunit.de" 4622 | } 4623 | ], 4624 | "description": "Provides a list of PHP built-in functions that operate on resources", 4625 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 4626 | "time": "2018-10-04T04:07:39+00:00" 4627 | }, 4628 | { 4629 | "name": "sebastian/type", 4630 | "version": "1.1.3", 4631 | "source": { 4632 | "type": "git", 4633 | "url": "https://github.com/sebastianbergmann/type.git", 4634 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" 4635 | }, 4636 | "dist": { 4637 | "type": "zip", 4638 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", 4639 | "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", 4640 | "shasum": "" 4641 | }, 4642 | "require": { 4643 | "php": "^7.2" 4644 | }, 4645 | "require-dev": { 4646 | "phpunit/phpunit": "^8.2" 4647 | }, 4648 | "type": "library", 4649 | "extra": { 4650 | "branch-alias": { 4651 | "dev-master": "1.1-dev" 4652 | } 4653 | }, 4654 | "autoload": { 4655 | "classmap": [ 4656 | "src/" 4657 | ] 4658 | }, 4659 | "notification-url": "https://packagist.org/downloads/", 4660 | "license": [ 4661 | "BSD-3-Clause" 4662 | ], 4663 | "authors": [ 4664 | { 4665 | "name": "Sebastian Bergmann", 4666 | "email": "sebastian@phpunit.de", 4667 | "role": "lead" 4668 | } 4669 | ], 4670 | "description": "Collection of value objects that represent the types of the PHP type system", 4671 | "homepage": "https://github.com/sebastianbergmann/type", 4672 | "time": "2019-07-02T08:10:15+00:00" 4673 | }, 4674 | { 4675 | "name": "sebastian/version", 4676 | "version": "2.0.1", 4677 | "source": { 4678 | "type": "git", 4679 | "url": "https://github.com/sebastianbergmann/version.git", 4680 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 4681 | }, 4682 | "dist": { 4683 | "type": "zip", 4684 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 4685 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 4686 | "shasum": "" 4687 | }, 4688 | "require": { 4689 | "php": ">=5.6" 4690 | }, 4691 | "type": "library", 4692 | "extra": { 4693 | "branch-alias": { 4694 | "dev-master": "2.0.x-dev" 4695 | } 4696 | }, 4697 | "autoload": { 4698 | "classmap": [ 4699 | "src/" 4700 | ] 4701 | }, 4702 | "notification-url": "https://packagist.org/downloads/", 4703 | "license": [ 4704 | "BSD-3-Clause" 4705 | ], 4706 | "authors": [ 4707 | { 4708 | "name": "Sebastian Bergmann", 4709 | "email": "sebastian@phpunit.de", 4710 | "role": "lead" 4711 | } 4712 | ], 4713 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 4714 | "homepage": "https://github.com/sebastianbergmann/version", 4715 | "time": "2016-10-03T07:35:21+00:00" 4716 | }, 4717 | { 4718 | "name": "theseer/tokenizer", 4719 | "version": "1.1.3", 4720 | "source": { 4721 | "type": "git", 4722 | "url": "https://github.com/theseer/tokenizer.git", 4723 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" 4724 | }, 4725 | "dist": { 4726 | "type": "zip", 4727 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 4728 | "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", 4729 | "shasum": "" 4730 | }, 4731 | "require": { 4732 | "ext-dom": "*", 4733 | "ext-tokenizer": "*", 4734 | "ext-xmlwriter": "*", 4735 | "php": "^7.0" 4736 | }, 4737 | "type": "library", 4738 | "autoload": { 4739 | "classmap": [ 4740 | "src/" 4741 | ] 4742 | }, 4743 | "notification-url": "https://packagist.org/downloads/", 4744 | "license": [ 4745 | "BSD-3-Clause" 4746 | ], 4747 | "authors": [ 4748 | { 4749 | "name": "Arne Blankerts", 4750 | "email": "arne@blankerts.de", 4751 | "role": "Developer" 4752 | } 4753 | ], 4754 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4755 | "time": "2019-06-13T22:48:21+00:00" 4756 | }, 4757 | { 4758 | "name": "webmozart/assert", 4759 | "version": "1.7.0", 4760 | "source": { 4761 | "type": "git", 4762 | "url": "https://github.com/webmozart/assert.git", 4763 | "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" 4764 | }, 4765 | "dist": { 4766 | "type": "zip", 4767 | "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", 4768 | "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", 4769 | "shasum": "" 4770 | }, 4771 | "require": { 4772 | "php": "^5.3.3 || ^7.0", 4773 | "symfony/polyfill-ctype": "^1.8" 4774 | }, 4775 | "conflict": { 4776 | "vimeo/psalm": "<3.6.0" 4777 | }, 4778 | "require-dev": { 4779 | "phpunit/phpunit": "^4.8.36 || ^7.5.13" 4780 | }, 4781 | "type": "library", 4782 | "autoload": { 4783 | "psr-4": { 4784 | "Webmozart\\Assert\\": "src/" 4785 | } 4786 | }, 4787 | "notification-url": "https://packagist.org/downloads/", 4788 | "license": [ 4789 | "MIT" 4790 | ], 4791 | "authors": [ 4792 | { 4793 | "name": "Bernhard Schussek", 4794 | "email": "bschussek@gmail.com" 4795 | } 4796 | ], 4797 | "description": "Assertions to validate method input/output with nice error messages.", 4798 | "keywords": [ 4799 | "assert", 4800 | "check", 4801 | "validate" 4802 | ], 4803 | "time": "2020-02-14T12:15:55+00:00" 4804 | } 4805 | ], 4806 | "aliases": [], 4807 | "minimum-stability": "dev", 4808 | "stability-flags": [], 4809 | "prefer-stable": false, 4810 | "prefer-lowest": false, 4811 | "platform": [], 4812 | "platform-dev": [] 4813 | } 4814 | -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 13 | 14 | 15 | ./tests 16 | 17 | 18 | 19 | 20 | ./app 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Dynamic Relations Includes 2 | 3 | This package allows you to include resources relationships and relationships count dynamically based on requests sent by sending query parameters with the request. This enables you to load relations only when you need them, which will boost your APIs performance. 4 | 5 | ---------- 6 | 7 | 8 | ## Installation 9 | 10 | This Package can be installed vie Composer 11 | 12 | ```bash 13 | composer require kalshah/dynamic-relations-includes 14 | ``` 15 | 16 | For **Lumen** is same procedure but you need to add helper **request()**. Here is code: https://github.com/albertcht/lumen-helpers/blob/master/src/helpers.php#L417. 17 | 18 | 19 | ## Usage 20 | 21 | ### Include relations based on request 22 | 23 | For Example we have an API request which returns a list of posts and we want to include the comments of each post within the response. 24 | 25 | To do this you first need to use the `IncludeRelations` trait on you `Post` model, and also you need to to add the `comments` relation on the `loadableRelations` array, so that the trait can load it for you. 26 | 27 | ```php 28 | namespace App; 29 | 30 | use Illuminate\Database\Eloquent\Model; 31 | use Kalshah\DynamicRelationsInclude\IncludeRelations; 32 | 33 | class Post extends Model 34 | { 35 | use IncludeRelations; 36 | 37 | protected $loadableRelations = ['comments']; 38 | 39 | public function comments() 40 | { 41 | return $this->hasMany(Comment::class); 42 | } 43 | } 44 | ``` 45 | 46 | and now you can send your requests where you need the comments, by adding the `include` array parameter like so `www.example.com/posts?include=comments` 47 | 48 | ### Include relations count based on request 49 | 50 | For Example we have an API with requests which returns a list of posts and we want to include the comments count of each post within the response. 51 | 52 | To do this you first need to use the `IncludeRelations` trait on you `Post` model, and also you need to to add the `comments` relation on the `loadableRelationsCount` array, so that the trait can load it for you. 53 | 54 | ```php 55 | namespace App; 56 | 57 | use Illuminate\Database\Eloquent\Model; 58 | use Kalshah\DynamicRelationsInclude\IncludeRelations; 59 | 60 | class Post extends Model 61 | { 62 | use IncludeRelations; 63 | 64 | protected $loadableRelationsCount = ['comments']; 65 | 66 | public function comments() 67 | { 68 | return $this->hasMany(Comment::class); 69 | } 70 | } 71 | ``` 72 | 73 | and now you can send your requests where you need the comments count, by adding the `include_count` array parameter like so `www.example.com/posts?include_count=comments` 74 | 75 |   76 | 77 | You can use both `include` and `include_count` parameters as string or as an array 78 | 79 | - using it as a string with multiply includes `www.example.com/posts?include=comments,tags` 80 | 81 | - using it as an array with multiply includes `www.example.com/posts?include[]=comments&include[]=tags` 82 | 83 | ### Using different relationships types and conventions 84 | - you can include nested relationships, for example loading the comments and each comment creator 85 | ```php 86 | protected $loadableRelations = ['comments', 'comments.creator']; 87 | ``` 88 | and requesting it using `www.example.com/posts?include=comments.creator` 89 | 90 |   91 | 92 | - you can include and use camel cased relationships by adding it to the array like with its exact name 93 | 94 | ```php 95 | namespace App; 96 | 97 | use Illuminate\Database\Eloquent\Model; 98 | use Kalshah\DynamicRelationsInclude\IncludeRelations; 99 | 100 | class Profile extends Model 101 | { 102 | use IncludeRelations; 103 | 104 | protected $loadableRelationsCount = ['socialMediaAccounts']; 105 | 106 | public function socialMediaAccounts() 107 | { 108 | return $this->hasMany(socialMediaAccount::class); 109 | } 110 | } 111 | ``` 112 | and then including it using either `www.example.com/profiles?include=social_media_accounts` or `www.example.com/profiles?include=socialMediaAccounts` 113 | 114 | 115 | ### Futher Explanations 116 | 117 | - Both `loadableRelations` and `loadableRelationsCount` arrays must be set on models which you want to to load their relations. 118 | - Both these array has been made to constrain which relations should be loaded, this to prevent dynamic loading of all relations which might hold sensitive data. 119 | 120 | # Testing 121 | 122 | You can run the tests using 123 | 124 | ```bash 125 | ./vendor/bin/phpunit 126 | ``` 127 | -------------------------------------------------------------------------------- /src/DynamicRelationsIncludeRequest.php: -------------------------------------------------------------------------------- 1 | has('include'); 12 | } 13 | 14 | public static function requestHasIncludeCountParameter() 15 | { 16 | return request()->has('include_count'); 17 | } 18 | 19 | public static function getRequestIncludeParameter() 20 | { 21 | $relations = request('include'); 22 | 23 | if (is_string($relations)) { 24 | $includedRelations = explode(",", $relations); 25 | return $includedRelations; 26 | } 27 | 28 | return $relations; 29 | } 30 | 31 | public static function getRequestIncludeCountParameter() 32 | { 33 | $relations = request('include_count'); 34 | 35 | if (is_string($relations)) { 36 | $includedRelations = explode(",", $relations); 37 | return $includedRelations; 38 | } 39 | 40 | return $relations; 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /src/IncludeRelations.php: -------------------------------------------------------------------------------- 1 | checkLoadableRelationsArrayIsDefined(); 14 | 15 | $this->loadIncludedRelations(); 16 | } 17 | 18 | if (DynamicRelationsIncludeRequest::requestHasIncludeCountParameter()) { 19 | 20 | $this->checkLoadableRelationsCountArrayIsDefined(); 21 | 22 | $this->loadIncludedRelationsCount(); 23 | } 24 | } 25 | 26 | public function checkLoadableRelationsArrayIsDefined() 27 | { 28 | if (!$this->loadableRelations) { 29 | $this->loadableRelations = []; 30 | } 31 | } 32 | 33 | public function checkLoadableRelationsCountArrayIsDefined() 34 | { 35 | if (!$this->loadableRelationsCount) { 36 | $this->loadableRelationsCount = []; 37 | } 38 | } 39 | 40 | public function loadIncludedRelations() 41 | { 42 | $includedRelations = DynamicRelationsIncludeRequest::getRequestIncludeParameter(); 43 | 44 | if (is_array($includedRelations)) { 45 | array_map(function ($relation) { 46 | if ($this->loadIfLoadableRelation($relation)) { 47 | return; 48 | } 49 | 50 | if ($this->loadIfLoadableRelation(Str::camel($relation))) { 51 | return; 52 | } 53 | }, $includedRelations); 54 | } 55 | } 56 | 57 | public function loadIncludedRelationsCount() 58 | { 59 | $includedRelationsCount = DynamicRelationsIncludeRequest::getRequestIncludeCountParameter(); 60 | 61 | if (is_array($includedRelationsCount)) { 62 | array_map(function ($relation) { 63 | if ($this->loadIfLoadableRelationCount($relation)) { 64 | return; 65 | } 66 | 67 | if ($this->loadIfLoadableRelationCount(Str::camel($relation))) { 68 | return; 69 | } 70 | }, $includedRelationsCount); 71 | } 72 | } 73 | 74 | public function loadIfLoadableRelation($relation) 75 | { 76 | if (in_array($relation, $this->loadableRelations)) { 77 | $this->with[] = $relation; 78 | return true; 79 | } 80 | 81 | return false; 82 | } 83 | 84 | public function loadIfLoadableRelationCount($relationCount) 85 | { 86 | if (in_array($relationCount, $this->loadableRelationsCount)) { 87 | $this->withCount[] = $relationCount; 88 | return true; 89 | } 90 | return false; 91 | } 92 | } 93 | -------------------------------------------------------------------------------- /tests/DynamicRelationsIncludeRequestTest.php: -------------------------------------------------------------------------------- 1 | call('get', '/example', [ 15 | 'include' => ['related_model'] 16 | ]); 17 | 18 | $this->assertTrue(DynamicRelationsIncludeRequest::requestHasIncludeParameter()); 19 | } 20 | 21 | /** 22 | *@test 23 | */ 24 | function it_knows_if_it_has_include_count_parameter() 25 | { 26 | $this->call('get', '/example', [ 27 | 'include_count' => ['related_model'] 28 | ]); 29 | 30 | $this->assertTrue(DynamicRelationsIncludeRequest::requestHasIncludeCountParameter()); 31 | } 32 | 33 | /** 34 | *@test 35 | */ 36 | function it_returns_relations_array_properly_when_sending_include_parameter() 37 | { 38 | $this->call('get', '/example', [ 39 | 'include' => ['related_model', 'another_related_model'] 40 | ]); 41 | 42 | $this->assertIsArray(DynamicRelationsIncludeRequest::getRequestIncludeParameter()); 43 | $this->assertCount(2, DynamicRelationsIncludeRequest::getRequestIncludeParameter()); 44 | } 45 | 46 | /** 47 | *@test 48 | */ 49 | function it_returns_relations_array_properly_when_sending_include_count_parameter() 50 | { 51 | $this->call('get', '/example', [ 52 | 'include_count' => ['related_model', 'another_related_model'] 53 | ]); 54 | 55 | $this->assertIsArray(DynamicRelationsIncludeRequest::getRequestIncludeCountParameter()); 56 | $this->assertCount(2, DynamicRelationsIncludeRequest::getRequestIncludeCountParameter()); 57 | } 58 | 59 | /** 60 | *@test 61 | */ 62 | function it_returns_relations_as_array_if_include_parameter_was_string() 63 | { 64 | $this->call('get', '/example', [ 65 | 'include' => 'related_model,another_related_model' 66 | ]); 67 | 68 | $this->assertIsArray(DynamicRelationsIncludeRequest::getRequestIncludeParameter()); 69 | $this->assertCount(2, DynamicRelationsIncludeRequest::getRequestIncludeParameter()); 70 | } 71 | 72 | /** 73 | *@test 74 | */ 75 | function it_returns_relations_as_array_if_include_count_parameter_was_string() 76 | { 77 | $this->call('get', '/example', [ 78 | 'include_count' => 'related_model,another_related_model' 79 | ]); 80 | 81 | $this->assertIsArray(DynamicRelationsIncludeRequest::getRequestIncludeCountParameter()); 82 | $this->assertCount(2, DynamicRelationsIncludeRequest::getRequestIncludeCountParameter()); 83 | } 84 | } 85 | -------------------------------------------------------------------------------- /tests/IncludeRelationsCountTest.php: -------------------------------------------------------------------------------- 1 | setLoadableRelationsCount(['relatedModel']); 17 | 18 | $model->loadIfLoadableRelationCount('relatedModel'); 19 | 20 | $this->assertEquals(['relatedModel'], $model->getWithCountArray()); 21 | } 22 | 23 | /** 24 | *@test 25 | */ 26 | public function it_will_not_load_the_relation_count_if_it_is_not_loadable_count() 27 | { 28 | $model = new TestModel; 29 | $model->setLoadableRelationsCount(['relatedModel']); 30 | 31 | $model->loadIfLoadableRelationCount('anotheRelatedModel'); 32 | 33 | $this->assertEquals([], $model->getWithArray()); 34 | } 35 | } -------------------------------------------------------------------------------- /tests/IncludeRelationsTest.php: -------------------------------------------------------------------------------- 1 | setLoadableRelations(['relatedModel']); 16 | 17 | $this->assertTrue($model->loadIfLoadableRelation('relatedModel')); 18 | $this->assertFalse($model->loadIfLoadableRelation('anotherRelatedModel')); 19 | $this->assertEquals(['relatedModel'], $model->getWithArray()); 20 | } 21 | 22 | /** 23 | *@test 24 | */ 25 | function it_converts_relation_to_camel_case_and_check_if_it_exsits() 26 | { 27 | $model = new TestModel; 28 | $model->setLoadableRelations(['related_model']); 29 | 30 | $this->assertTrue($model->loadIfLoadableRelation('related_model')); 31 | $this->assertFalse($model->loadIfLoadableRelation('another_related_model')); 32 | $this->assertEquals(['related_model'], $model->getWithArray()); 33 | } 34 | 35 | /** 36 | *@test 37 | @TODO:: enable this 38 | */ 39 | public function it_checks_for_sub_relations() 40 | { 41 | $model = new TestModel; 42 | $model->setLoadableRelations(['relatedModel.subRelatedModel']); 43 | 44 | $this->assertTrue($model->loadIfLoadableRelation('relatedModel.subRelatedModel')); 45 | $this->assertFalse($model->loadIfLoadableRelation('relatedModel.anotherSubRelatedModel')); 46 | $this->assertEquals(['relatedModel.subRelatedModel'], $model->getWithArray()); 47 | } 48 | 49 | /** 50 | *@test 51 | */ 52 | public function it_will_load_the_relation_if_it_is_loadable() 53 | { 54 | $model = new TestModel; 55 | $model->setLoadableRelations(['relatedModel']); 56 | 57 | $model->loadIfLoadableRelation('relatedModel'); 58 | 59 | $this->assertEquals(['relatedModel'], $model->getWithArray()); 60 | } 61 | 62 | /** 63 | *@test 64 | */ 65 | public function it_will_not_load_the_relation_if_it_is_not_loadable() 66 | { 67 | $model = new TestModel; 68 | $model->setLoadableRelations(['relatedModel']); 69 | 70 | $model->loadIfLoadableRelation('anotheRelatedModel'); 71 | 72 | $this->assertEquals([], $model->getWithArray()); 73 | } 74 | } 75 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | setUpDatabase($this->app); 19 | } 20 | 21 | protected function setUpDatabase(Application $app) 22 | { 23 | $app['db']->connection()->getSchemaBuilder()->create('test_models', function (Blueprint $table) { 24 | $table->increments('id'); 25 | $table->timestamps(); 26 | $table->string('name'); 27 | $table->boolean('is_visible')->default(true); 28 | }); 29 | 30 | $app['db']->connection()->getSchemaBuilder()->create('related_models', function (Blueprint $table) { 31 | $table->increments('id'); 32 | $table->integer('test_model_id'); 33 | $table->string('name'); 34 | }); 35 | } 36 | } -------------------------------------------------------------------------------- /tests/classes/RelatedModel.php: -------------------------------------------------------------------------------- 1 | belongsTo(TestModel::class); 23 | } 24 | 25 | public function subRelatedModel(): HasMany 26 | { 27 | return $this->hasMany(SubRelatedModel::class); 28 | } 29 | } -------------------------------------------------------------------------------- /tests/classes/SubRelatedModel.php: -------------------------------------------------------------------------------- 1 | hasMany(RelatedModel::class); 23 | } 24 | 25 | public function relatedModel(): BelongsTo 26 | { 27 | return $this->belongsTo(RelatedModel::class); 28 | } 29 | 30 | public function setLoadableRelations($relations) 31 | { 32 | $this->loadableRelations = $relations; 33 | } 34 | 35 | public function getWithArray() 36 | { 37 | return $this->with; 38 | } 39 | 40 | public function setLoadableRelationsCount($relations) 41 | { 42 | $this->loadableRelationsCount = $relations; 43 | } 44 | 45 | public function getWithCountArray() 46 | { 47 | return $this->withCount; 48 | } 49 | } 50 | --------------------------------------------------------------------------------