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