├── .docker ├── Dockerfile └── xdebug.ini ├── .felicio.example ├── .gitignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── composer.json ├── composer.lock ├── docker-compose.yml ├── phpcs.xml ├── phpunit.xml.dist ├── src ├── Contracts │ └── FelicioContract.php └── Felicio.php └── tests └── FelicioTest.php /.docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM php:8.2 2 | 3 | LABEL maintainer="geekcom" 4 | 5 | RUN apt-get update && apt-get install -y \ 6 | curl \ 7 | libzip-dev \ 8 | git 9 | 10 | # Build and install PHP extensions # 11 | RUN docker-php-ext-install zip 12 | 13 | # install and configure xdebug 14 | RUN pecl install xdebug-3.2.0 \ 15 | && docker-php-ext-enable xdebug 16 | 17 | # install composer 18 | RUN apt-get update && \ 19 | apt-get -y install curl && \ 20 | curl -sS https://getcomposer.org/installer | \ 21 | php -- --install-dir=/usr/bin/ --filename=composer 22 | 23 | # install PHPCS 24 | RUN cd /opt && \ 25 | curl -LO https://squizlabs.github.io/PHP_CodeSniffer/phpcs.phar && \ 26 | cp phpcs.phar /usr/local/bin/phpcs && \ 27 | chmod +x /usr/local/bin/phpcs 28 | 29 | WORKDIR "/var/www/app" 30 | -------------------------------------------------------------------------------- /.docker/xdebug.ini: -------------------------------------------------------------------------------- 1 | [xdebug] 2 | zend_extension=/usr/local/lib/php/extensions/no-debug-non-zts-20220829/xdebug.so 3 | xdebug.mode=debug,coverage 4 | xdebug.client_host=172.17.0.1 5 | xdebug.client_port=9000 6 | xdebug.idekey=felicio 7 | -------------------------------------------------------------------------------- /.felicio.example: -------------------------------------------------------------------------------- 1 | AWS_SQS_ACCESS_KEY= 2 | AWS_SQS_SECRET_KEY= 3 | AWS_SQS_REGION=us-east-2 4 | AWS_SQS_API_VERSION=latest 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .idea 2 | /vendor 3 | .felicio 4 | /tests/logs 5 | .phpunit.cache 6 | .phpcs-cache 7 | phpunit.xml 8 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ## [2.5.2] 6 | 7 | - [#16] Melhorias gerais, Thanks to [@geekcom] 8 | 9 | 10 | 11 | 12 | 13 | ## [2.5.1] 14 | 15 | - [#15] aditional tpe check, suport to scrutinizer CI, Thanks to [@geekcom] 16 | - [#14] update CHANGELOG.md, Thanks to [@geekcom] 17 | - [#13] docker support for Xdebug, Thanks to [@geekcom] 18 | 19 | 20 | 21 | 22 | 23 | ## [2.5.0] 24 | 25 | - [#12] Develop, Thanks to [@geekcom] 26 | - [#11] Develop, Thanks to [@geekcom] 27 | 28 | 29 | 30 | 31 | 32 | ## Unreleased 33 | 34 | - [#10] update CHANGELOG.md, Thanks to [@geekcom] 35 | 36 | 37 | 38 | 39 | 40 | ## Unreleased 41 | 42 | - [#9] strict_types, new tests, Thanks to [@geekcom] 43 | 44 | 45 | 46 | 47 | 48 | ## Unreleased 49 | 50 | - [#8] update CHANGELOG.md, Thanks to [@geekcom] 51 | 52 | 53 | 54 | 55 | 56 | ## Unreleased 57 | 58 | - [#7] update tests, add minor corrections, general improvements, Thanks to [@geekcom] 59 | 60 | 61 | 62 | 63 | 64 | ## Unreleased 65 | 66 | - [#6] countMessages method added, new tests, update docs, Thanks to [@geekcom] 67 | - [#5] add: deleteMessage(), Thanks to [@geekcom] 68 | - [#4] add: receiveMessage method + test, Thanks to [@geekcom] 69 | - [#1] update doc, fix dotFileConfigs, Thanks to [@geekcom] 70 | - [#3] update doc, Thanks to [@geekcom] 71 | - [#2] update sendMessage method, update tests, Thanks to [@geekcom] 72 | 73 | 74 | [#6]: https://github.com/geekcom/felicio/pull/6 75 | [#5]: https://github.com/geekcom/felicio/pull/5 76 | [#4]: https://github.com/geekcom/felicio/pull/4 77 | [#3]: https://github.com/geekcom/felicio/pull/3 78 | [#2]: https://github.com/geekcom/felicio/pull/2 79 | [#1]: https://github.com/geekcom/felicio/pull/1 80 | [@geekcom]: https://github.com/geekcom 81 | [#7]: https://github.com/geekcom/felicio/pull/7 82 | [#8]: https://github.com/geekcom/felicio/pull/8 83 | [#9]: https://github.com/geekcom/felicio/pull/9 84 | [#10]: https://github.com/geekcom/felicio/pull/10 85 | [#12]: https://github.com/geekcom/felicio/pull/12 86 | [#11]: https://github.com/geekcom/felicio/pull/11 87 | [#13]: https://github.com/geekcom/felicio/pull/13 88 | [#16]: https://github.com/geekcom/felicio/pull/16 89 | [#15]: https://github.com/geekcom/felicio/pull/15 90 | [#14]: https://github.com/geekcom/felicio/pull/14 -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2019 Daniel Rodrigues Lima (geekcom) 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy of 6 | this software and associated documentation files (the "Software"), to deal in 7 | the Software without restriction, including without limitation the rights to 8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of 9 | the Software, and to permit persons to whom the Software is furnished to do so, 10 | subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS 17 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR 18 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER 19 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 20 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Felicio 2 | _A simple AWS SQS Messages with PHP_ 3 | 4 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/geekcom/felicio/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/geekcom/felicio/?branch=master) 5 | [![Latest Stable Version](https://poser.pugx.org/geekcom/felicio/v/stable)](https://packagist.org/packages/geekcom/felicio) 6 | [![Minimum PHP Version](https://img.shields.io/badge/php-%3E%3D%207.4-blue.svg?style=flat-square)](https://php.net/) 7 | [![License](https://poser.pugx.org/geekcom/felicio/license)](https://packagist.org/packages/geekcom/felicio) 8 | 9 | ### About Felicio and SQS 10 | 11 | Felicio is a simple library to manipulate [AWS SQS Messages](https://aws.amazon.com/pt/sqs/). 12 | 13 | - Simple; 14 | - Configurable; 15 | - Testable; 16 | - Open source. 17 | 18 | [Amazon Simple Queue Service (SQS)](https://aws.amazon.com/pt/sqs/) is a fully managed message queuing service 19 | that enables you to decouple and scale microservices, distributed systems, and serverless applications. 20 | 21 | ### Installation 22 | 23 | Install [Composer](http://getcomposer.org) if you don't have it. 24 | ``` 25 | composer require geekcom/felicio 26 | ``` 27 | Or in your file'composer.json' add: 28 | 29 | ```json 30 | { 31 | "require": { 32 | "geekcom/felicio": "^2.5.0" 33 | } 34 | } 35 | ``` 36 | 37 | And the just run: 38 | 39 | composer install 40 | 41 | and thats it. 42 | 43 | ---------------------------------------------------------------------------------------------------------------------------- 44 | 45 | 46 | ### Configure 47 | 48 | Rename `.felicio.example` to `.felicio` and fill in the correct information about your AWS SQS account. 49 | ``` 50 | AWS_SQS_ACCESS_KEY= 51 | AWS_SQS_SECRET_KEY= 52 | AWS_SQS_REGION= 53 | AWS_SQS_API_VERSION=latest 54 | ``` 55 | 56 | ### Send a message 57 | ```php 58 | require __DIR__ . '/vendor/autoload.php'; 59 | 60 | use Felicio\Felicio; 61 | 62 | $felicioDotFile = __DIR__ . '/.felicio'; 63 | 64 | $felicio = new Felicio($felicioDotFile); 65 | 66 | $params = [ 67 | 'QueueUrl' => 'https://sqs.us-west-2.amazonaws.com/999999999/my_queue', 68 | 'MessageBody' => 'test message' 69 | ]; 70 | 71 | $felicio->sendMessage($params); 72 | ``` 73 | 74 | ### Receive a message 75 | ```php 76 | require __DIR__ . '/vendor/autoload.php'; 77 | 78 | use Felicio\Felicio; 79 | 80 | $felicioDotFile = __DIR__ . '/.felicio'; 81 | 82 | $felicio = new Felicio($felicioDotFile); 83 | 84 | $params = [ 85 | 'AttributeNames' => ['SentTimestamp'], 86 | 'MaxNumberOfMessages' => 1, 87 | 'MessageAttributeNames' => ['All'], 88 | 'QueueUrl' => 'https://sqs.us-west-2.amazonaws.com/999999999/my_queue', 89 | 'WaitTimeSeconds' => 0, 90 | ]; 91 | 92 | $message = $felicio->receiveMessage($params); 93 | 94 | var_dump($message); 95 | ``` 96 | 97 | ### Delete a message 98 | ```php 99 | require __DIR__ . '/vendor/autoload.php'; 100 | 101 | use Felicio\Felicio; 102 | 103 | $felicioDotFile = __DIR__ . '/.felicio'; 104 | 105 | $felicio = new Felicio($felicioDotFile); 106 | 107 | $params = [ 108 | 'QueueUrl' => 'https://sqs.us-west-2.amazonaws.com/999999999/my_queue', 109 | 'ReceiptHandle' => '', // required 110 | ]; 111 | 112 | $felicio->deleteMessage($params); 113 | ``` 114 | 115 | ### Count messages 116 | ```php 117 | require __DIR__ . '/vendor/autoload.php'; 118 | 119 | use Felicio\Felicio; 120 | 121 | $felicioDotFile = __DIR__ . '/.felicio'; 122 | 123 | $felicio = new Felicio($felicioDotFile); 124 | 125 | $queueUrl = 'https://sqs.us-west-2.amazonaws.com/999999999/my_queue'; 126 | 127 | $messages = $felicio->countMessages($queueUrl); 128 | 129 | var_dump($messages); 130 | ``` 131 | 132 | ### Contributing 133 | 134 | Feel free to contribute, make a fork! 135 | 136 | ### License 137 | 138 | The Felicio library is open-source software licensed under the [MIT license](https://opensource.org/licenses/MIT). 139 | 140 | ### [Questions?](https://github.com/felicio/issues) 141 | 142 | Open a new [Issue](https://github.com/felicio/issues) or look for a closed issue 143 | 144 | ### Author 145 | 146 | - Daniel Rodrigues ([@geekcom](http://github.com/geekcom)) -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "geekcom/felicio", 3 | "description": "A simple lib to connect PHP with AWS SQS", 4 | "homepage": "https://github.com/geekcom/felicio", 5 | "license": "MIT", 6 | "keywords": [ 7 | "sqs", 8 | "queues", 9 | "aws" 10 | ], 11 | "authors": [ 12 | { 13 | "name": "Daniel Rodrigues Lima", 14 | "email": "danielrodrigues-ti@hotmail.com" 15 | } 16 | ], 17 | "require": { 18 | "php": "^7.4|^8.0", 19 | "aws/aws-sdk-php": "^3.110", 20 | "symfony/dotenv": "^4.3" 21 | }, 22 | "require-dev": { 23 | "phpunit/phpunit": "^10", 24 | "squizlabs/php_codesniffer": "*" 25 | }, 26 | "autoload": { 27 | "psr-4": { 28 | "Felicio\\": "src/" 29 | } 30 | }, 31 | "autoload-dev": { 32 | "psr-4": { 33 | "Felicio\\Test\\": "tests/" 34 | } 35 | }, 36 | "scripts": { 37 | "post-root-package-install": [ 38 | "@php -r \"file_exists('.felicio') || copy('.felicio.example', '.felicio');\"" 39 | ], 40 | "tests": [ 41 | "vendor/bin/phpcs", 42 | "phpunit --testdox" 43 | ] 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /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": "c7010741742c365e07383ff4202f2a6c", 8 | "packages": [ 9 | { 10 | "name": "aws/aws-crt-php", 11 | "version": "v1.2.1", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/awslabs/aws-crt-php.git", 15 | "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/awslabs/aws-crt-php/zipball/1926277fc71d253dfa820271ac5987bdb193ccf5", 20 | "reference": "1926277fc71d253dfa820271ac5987bdb193ccf5", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": ">=5.5" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^4.8.35||^5.6.3||^9.5", 28 | "yoast/phpunit-polyfills": "^1.0" 29 | }, 30 | "suggest": { 31 | "ext-awscrt": "Make sure you install awscrt native extension to use any of the functionality." 32 | }, 33 | "type": "library", 34 | "autoload": { 35 | "classmap": [ 36 | "src/" 37 | ] 38 | }, 39 | "notification-url": "https://packagist.org/downloads/", 40 | "license": [ 41 | "Apache-2.0" 42 | ], 43 | "authors": [ 44 | { 45 | "name": "AWS SDK Common Runtime Team", 46 | "email": "aws-sdk-common-runtime@amazon.com" 47 | } 48 | ], 49 | "description": "AWS Common Runtime for PHP", 50 | "homepage": "https://github.com/awslabs/aws-crt-php", 51 | "keywords": [ 52 | "amazon", 53 | "aws", 54 | "crt", 55 | "sdk" 56 | ], 57 | "support": { 58 | "issues": "https://github.com/awslabs/aws-crt-php/issues", 59 | "source": "https://github.com/awslabs/aws-crt-php/tree/v1.2.1" 60 | }, 61 | "time": "2023-03-24T20:22:19+00:00" 62 | }, 63 | { 64 | "name": "aws/aws-sdk-php", 65 | "version": "3.273.0", 66 | "source": { 67 | "type": "git", 68 | "url": "https://github.com/aws/aws-sdk-php.git", 69 | "reference": "86078abfba43fce3f71a2714bb10a6b1baec1b78" 70 | }, 71 | "dist": { 72 | "type": "zip", 73 | "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/86078abfba43fce3f71a2714bb10a6b1baec1b78", 74 | "reference": "86078abfba43fce3f71a2714bb10a6b1baec1b78", 75 | "shasum": "" 76 | }, 77 | "require": { 78 | "aws/aws-crt-php": "^1.0.4", 79 | "ext-json": "*", 80 | "ext-pcre": "*", 81 | "ext-simplexml": "*", 82 | "guzzlehttp/guzzle": "^6.5.8 || ^7.4.5", 83 | "guzzlehttp/promises": "^1.4.0", 84 | "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", 85 | "mtdowling/jmespath.php": "^2.6", 86 | "php": ">=5.5", 87 | "psr/http-message": "^1.0" 88 | }, 89 | "require-dev": { 90 | "andrewsville/php-token-reflection": "^1.4", 91 | "aws/aws-php-sns-message-validator": "~1.0", 92 | "behat/behat": "~3.0", 93 | "composer/composer": "^1.10.22", 94 | "dms/phpunit-arraysubset-asserts": "^0.4.0", 95 | "doctrine/cache": "~1.4", 96 | "ext-dom": "*", 97 | "ext-openssl": "*", 98 | "ext-pcntl": "*", 99 | "ext-sockets": "*", 100 | "nette/neon": "^2.3", 101 | "paragonie/random_compat": ">= 2", 102 | "phpunit/phpunit": "^4.8.35 || ^5.6.3 || ^9.5", 103 | "psr/cache": "^1.0", 104 | "psr/simple-cache": "^1.0", 105 | "sebastian/comparator": "^1.2.3 || ^4.0", 106 | "yoast/phpunit-polyfills": "^1.0" 107 | }, 108 | "suggest": { 109 | "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", 110 | "doctrine/cache": "To use the DoctrineCacheAdapter", 111 | "ext-curl": "To send requests using cURL", 112 | "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", 113 | "ext-sockets": "To use client-side monitoring" 114 | }, 115 | "type": "library", 116 | "extra": { 117 | "branch-alias": { 118 | "dev-master": "3.0-dev" 119 | } 120 | }, 121 | "autoload": { 122 | "files": [ 123 | "src/functions.php" 124 | ], 125 | "psr-4": { 126 | "Aws\\": "src/" 127 | } 128 | }, 129 | "notification-url": "https://packagist.org/downloads/", 130 | "license": [ 131 | "Apache-2.0" 132 | ], 133 | "authors": [ 134 | { 135 | "name": "Amazon Web Services", 136 | "homepage": "http://aws.amazon.com" 137 | } 138 | ], 139 | "description": "AWS SDK for PHP - Use Amazon Web Services in your PHP project", 140 | "homepage": "http://aws.amazon.com/sdkforphp", 141 | "keywords": [ 142 | "amazon", 143 | "aws", 144 | "cloud", 145 | "dynamodb", 146 | "ec2", 147 | "glacier", 148 | "s3", 149 | "sdk" 150 | ], 151 | "support": { 152 | "forum": "https://forums.aws.amazon.com/forum.jspa?forumID=80", 153 | "issues": "https://github.com/aws/aws-sdk-php/issues", 154 | "source": "https://github.com/aws/aws-sdk-php/tree/3.273.0" 155 | }, 156 | "time": "2023-06-13T18:22:02+00:00" 157 | }, 158 | { 159 | "name": "guzzlehttp/guzzle", 160 | "version": "7.7.0", 161 | "source": { 162 | "type": "git", 163 | "url": "https://github.com/guzzle/guzzle.git", 164 | "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5" 165 | }, 166 | "dist": { 167 | "type": "zip", 168 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/fb7566caccf22d74d1ab270de3551f72a58399f5", 169 | "reference": "fb7566caccf22d74d1ab270de3551f72a58399f5", 170 | "shasum": "" 171 | }, 172 | "require": { 173 | "ext-json": "*", 174 | "guzzlehttp/promises": "^1.5.3 || ^2.0", 175 | "guzzlehttp/psr7": "^1.9.1 || ^2.4.5", 176 | "php": "^7.2.5 || ^8.0", 177 | "psr/http-client": "^1.0", 178 | "symfony/deprecation-contracts": "^2.2 || ^3.0" 179 | }, 180 | "provide": { 181 | "psr/http-client-implementation": "1.0" 182 | }, 183 | "require-dev": { 184 | "bamarni/composer-bin-plugin": "^1.8.1", 185 | "ext-curl": "*", 186 | "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", 187 | "php-http/message-factory": "^1.1", 188 | "phpunit/phpunit": "^8.5.29 || ^9.5.23", 189 | "psr/log": "^1.1 || ^2.0 || ^3.0" 190 | }, 191 | "suggest": { 192 | "ext-curl": "Required for CURL handler support", 193 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 194 | "psr/log": "Required for using the Log middleware" 195 | }, 196 | "type": "library", 197 | "extra": { 198 | "bamarni-bin": { 199 | "bin-links": true, 200 | "forward-command": false 201 | } 202 | }, 203 | "autoload": { 204 | "files": [ 205 | "src/functions_include.php" 206 | ], 207 | "psr-4": { 208 | "GuzzleHttp\\": "src/" 209 | } 210 | }, 211 | "notification-url": "https://packagist.org/downloads/", 212 | "license": [ 213 | "MIT" 214 | ], 215 | "authors": [ 216 | { 217 | "name": "Graham Campbell", 218 | "email": "hello@gjcampbell.co.uk", 219 | "homepage": "https://github.com/GrahamCampbell" 220 | }, 221 | { 222 | "name": "Michael Dowling", 223 | "email": "mtdowling@gmail.com", 224 | "homepage": "https://github.com/mtdowling" 225 | }, 226 | { 227 | "name": "Jeremy Lindblom", 228 | "email": "jeremeamia@gmail.com", 229 | "homepage": "https://github.com/jeremeamia" 230 | }, 231 | { 232 | "name": "George Mponos", 233 | "email": "gmponos@gmail.com", 234 | "homepage": "https://github.com/gmponos" 235 | }, 236 | { 237 | "name": "Tobias Nyholm", 238 | "email": "tobias.nyholm@gmail.com", 239 | "homepage": "https://github.com/Nyholm" 240 | }, 241 | { 242 | "name": "Márk Sági-Kazár", 243 | "email": "mark.sagikazar@gmail.com", 244 | "homepage": "https://github.com/sagikazarmark" 245 | }, 246 | { 247 | "name": "Tobias Schultze", 248 | "email": "webmaster@tubo-world.de", 249 | "homepage": "https://github.com/Tobion" 250 | } 251 | ], 252 | "description": "Guzzle is a PHP HTTP client library", 253 | "keywords": [ 254 | "client", 255 | "curl", 256 | "framework", 257 | "http", 258 | "http client", 259 | "psr-18", 260 | "psr-7", 261 | "rest", 262 | "web service" 263 | ], 264 | "support": { 265 | "issues": "https://github.com/guzzle/guzzle/issues", 266 | "source": "https://github.com/guzzle/guzzle/tree/7.7.0" 267 | }, 268 | "funding": [ 269 | { 270 | "url": "https://github.com/GrahamCampbell", 271 | "type": "github" 272 | }, 273 | { 274 | "url": "https://github.com/Nyholm", 275 | "type": "github" 276 | }, 277 | { 278 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", 279 | "type": "tidelift" 280 | } 281 | ], 282 | "time": "2023-05-21T14:04:53+00:00" 283 | }, 284 | { 285 | "name": "guzzlehttp/promises", 286 | "version": "1.5.3", 287 | "source": { 288 | "type": "git", 289 | "url": "https://github.com/guzzle/promises.git", 290 | "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" 291 | }, 292 | "dist": { 293 | "type": "zip", 294 | "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", 295 | "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", 296 | "shasum": "" 297 | }, 298 | "require": { 299 | "php": ">=5.5" 300 | }, 301 | "require-dev": { 302 | "symfony/phpunit-bridge": "^4.4 || ^5.1" 303 | }, 304 | "type": "library", 305 | "autoload": { 306 | "files": [ 307 | "src/functions_include.php" 308 | ], 309 | "psr-4": { 310 | "GuzzleHttp\\Promise\\": "src/" 311 | } 312 | }, 313 | "notification-url": "https://packagist.org/downloads/", 314 | "license": [ 315 | "MIT" 316 | ], 317 | "authors": [ 318 | { 319 | "name": "Graham Campbell", 320 | "email": "hello@gjcampbell.co.uk", 321 | "homepage": "https://github.com/GrahamCampbell" 322 | }, 323 | { 324 | "name": "Michael Dowling", 325 | "email": "mtdowling@gmail.com", 326 | "homepage": "https://github.com/mtdowling" 327 | }, 328 | { 329 | "name": "Tobias Nyholm", 330 | "email": "tobias.nyholm@gmail.com", 331 | "homepage": "https://github.com/Nyholm" 332 | }, 333 | { 334 | "name": "Tobias Schultze", 335 | "email": "webmaster@tubo-world.de", 336 | "homepage": "https://github.com/Tobion" 337 | } 338 | ], 339 | "description": "Guzzle promises library", 340 | "keywords": [ 341 | "promise" 342 | ], 343 | "support": { 344 | "issues": "https://github.com/guzzle/promises/issues", 345 | "source": "https://github.com/guzzle/promises/tree/1.5.3" 346 | }, 347 | "funding": [ 348 | { 349 | "url": "https://github.com/GrahamCampbell", 350 | "type": "github" 351 | }, 352 | { 353 | "url": "https://github.com/Nyholm", 354 | "type": "github" 355 | }, 356 | { 357 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", 358 | "type": "tidelift" 359 | } 360 | ], 361 | "time": "2023-05-21T12:31:43+00:00" 362 | }, 363 | { 364 | "name": "guzzlehttp/psr7", 365 | "version": "2.5.0", 366 | "source": { 367 | "type": "git", 368 | "url": "https://github.com/guzzle/psr7.git", 369 | "reference": "b635f279edd83fc275f822a1188157ffea568ff6" 370 | }, 371 | "dist": { 372 | "type": "zip", 373 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/b635f279edd83fc275f822a1188157ffea568ff6", 374 | "reference": "b635f279edd83fc275f822a1188157ffea568ff6", 375 | "shasum": "" 376 | }, 377 | "require": { 378 | "php": "^7.2.5 || ^8.0", 379 | "psr/http-factory": "^1.0", 380 | "psr/http-message": "^1.1 || ^2.0", 381 | "ralouphie/getallheaders": "^3.0" 382 | }, 383 | "provide": { 384 | "psr/http-factory-implementation": "1.0", 385 | "psr/http-message-implementation": "1.0" 386 | }, 387 | "require-dev": { 388 | "bamarni/composer-bin-plugin": "^1.8.1", 389 | "http-interop/http-factory-tests": "^0.9", 390 | "phpunit/phpunit": "^8.5.29 || ^9.5.23" 391 | }, 392 | "suggest": { 393 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 394 | }, 395 | "type": "library", 396 | "extra": { 397 | "bamarni-bin": { 398 | "bin-links": true, 399 | "forward-command": false 400 | } 401 | }, 402 | "autoload": { 403 | "psr-4": { 404 | "GuzzleHttp\\Psr7\\": "src/" 405 | } 406 | }, 407 | "notification-url": "https://packagist.org/downloads/", 408 | "license": [ 409 | "MIT" 410 | ], 411 | "authors": [ 412 | { 413 | "name": "Graham Campbell", 414 | "email": "hello@gjcampbell.co.uk", 415 | "homepage": "https://github.com/GrahamCampbell" 416 | }, 417 | { 418 | "name": "Michael Dowling", 419 | "email": "mtdowling@gmail.com", 420 | "homepage": "https://github.com/mtdowling" 421 | }, 422 | { 423 | "name": "George Mponos", 424 | "email": "gmponos@gmail.com", 425 | "homepage": "https://github.com/gmponos" 426 | }, 427 | { 428 | "name": "Tobias Nyholm", 429 | "email": "tobias.nyholm@gmail.com", 430 | "homepage": "https://github.com/Nyholm" 431 | }, 432 | { 433 | "name": "Márk Sági-Kazár", 434 | "email": "mark.sagikazar@gmail.com", 435 | "homepage": "https://github.com/sagikazarmark" 436 | }, 437 | { 438 | "name": "Tobias Schultze", 439 | "email": "webmaster@tubo-world.de", 440 | "homepage": "https://github.com/Tobion" 441 | }, 442 | { 443 | "name": "Márk Sági-Kazár", 444 | "email": "mark.sagikazar@gmail.com", 445 | "homepage": "https://sagikazarmark.hu" 446 | } 447 | ], 448 | "description": "PSR-7 message implementation that also provides common utility methods", 449 | "keywords": [ 450 | "http", 451 | "message", 452 | "psr-7", 453 | "request", 454 | "response", 455 | "stream", 456 | "uri", 457 | "url" 458 | ], 459 | "support": { 460 | "issues": "https://github.com/guzzle/psr7/issues", 461 | "source": "https://github.com/guzzle/psr7/tree/2.5.0" 462 | }, 463 | "funding": [ 464 | { 465 | "url": "https://github.com/GrahamCampbell", 466 | "type": "github" 467 | }, 468 | { 469 | "url": "https://github.com/Nyholm", 470 | "type": "github" 471 | }, 472 | { 473 | "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", 474 | "type": "tidelift" 475 | } 476 | ], 477 | "time": "2023-04-17T16:11:26+00:00" 478 | }, 479 | { 480 | "name": "mtdowling/jmespath.php", 481 | "version": "2.6.1", 482 | "source": { 483 | "type": "git", 484 | "url": "https://github.com/jmespath/jmespath.php.git", 485 | "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb" 486 | }, 487 | "dist": { 488 | "type": "zip", 489 | "url": "https://api.github.com/repos/jmespath/jmespath.php/zipball/9b87907a81b87bc76d19a7fb2d61e61486ee9edb", 490 | "reference": "9b87907a81b87bc76d19a7fb2d61e61486ee9edb", 491 | "shasum": "" 492 | }, 493 | "require": { 494 | "php": "^5.4 || ^7.0 || ^8.0", 495 | "symfony/polyfill-mbstring": "^1.17" 496 | }, 497 | "require-dev": { 498 | "composer/xdebug-handler": "^1.4 || ^2.0", 499 | "phpunit/phpunit": "^4.8.36 || ^7.5.15" 500 | }, 501 | "bin": [ 502 | "bin/jp.php" 503 | ], 504 | "type": "library", 505 | "extra": { 506 | "branch-alias": { 507 | "dev-master": "2.6-dev" 508 | } 509 | }, 510 | "autoload": { 511 | "files": [ 512 | "src/JmesPath.php" 513 | ], 514 | "psr-4": { 515 | "JmesPath\\": "src/" 516 | } 517 | }, 518 | "notification-url": "https://packagist.org/downloads/", 519 | "license": [ 520 | "MIT" 521 | ], 522 | "authors": [ 523 | { 524 | "name": "Michael Dowling", 525 | "email": "mtdowling@gmail.com", 526 | "homepage": "https://github.com/mtdowling" 527 | } 528 | ], 529 | "description": "Declaratively specify how to extract elements from a JSON document", 530 | "keywords": [ 531 | "json", 532 | "jsonpath" 533 | ], 534 | "support": { 535 | "issues": "https://github.com/jmespath/jmespath.php/issues", 536 | "source": "https://github.com/jmespath/jmespath.php/tree/2.6.1" 537 | }, 538 | "time": "2021-06-14T00:11:39+00:00" 539 | }, 540 | { 541 | "name": "psr/http-client", 542 | "version": "1.0.2", 543 | "source": { 544 | "type": "git", 545 | "url": "https://github.com/php-fig/http-client.git", 546 | "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31" 547 | }, 548 | "dist": { 549 | "type": "zip", 550 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/0955afe48220520692d2d09f7ab7e0f93ffd6a31", 551 | "reference": "0955afe48220520692d2d09f7ab7e0f93ffd6a31", 552 | "shasum": "" 553 | }, 554 | "require": { 555 | "php": "^7.0 || ^8.0", 556 | "psr/http-message": "^1.0 || ^2.0" 557 | }, 558 | "type": "library", 559 | "extra": { 560 | "branch-alias": { 561 | "dev-master": "1.0.x-dev" 562 | } 563 | }, 564 | "autoload": { 565 | "psr-4": { 566 | "Psr\\Http\\Client\\": "src/" 567 | } 568 | }, 569 | "notification-url": "https://packagist.org/downloads/", 570 | "license": [ 571 | "MIT" 572 | ], 573 | "authors": [ 574 | { 575 | "name": "PHP-FIG", 576 | "homepage": "https://www.php-fig.org/" 577 | } 578 | ], 579 | "description": "Common interface for HTTP clients", 580 | "homepage": "https://github.com/php-fig/http-client", 581 | "keywords": [ 582 | "http", 583 | "http-client", 584 | "psr", 585 | "psr-18" 586 | ], 587 | "support": { 588 | "source": "https://github.com/php-fig/http-client/tree/1.0.2" 589 | }, 590 | "time": "2023-04-10T20:12:12+00:00" 591 | }, 592 | { 593 | "name": "psr/http-factory", 594 | "version": "1.0.2", 595 | "source": { 596 | "type": "git", 597 | "url": "https://github.com/php-fig/http-factory.git", 598 | "reference": "e616d01114759c4c489f93b099585439f795fe35" 599 | }, 600 | "dist": { 601 | "type": "zip", 602 | "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", 603 | "reference": "e616d01114759c4c489f93b099585439f795fe35", 604 | "shasum": "" 605 | }, 606 | "require": { 607 | "php": ">=7.0.0", 608 | "psr/http-message": "^1.0 || ^2.0" 609 | }, 610 | "type": "library", 611 | "extra": { 612 | "branch-alias": { 613 | "dev-master": "1.0.x-dev" 614 | } 615 | }, 616 | "autoload": { 617 | "psr-4": { 618 | "Psr\\Http\\Message\\": "src/" 619 | } 620 | }, 621 | "notification-url": "https://packagist.org/downloads/", 622 | "license": [ 623 | "MIT" 624 | ], 625 | "authors": [ 626 | { 627 | "name": "PHP-FIG", 628 | "homepage": "https://www.php-fig.org/" 629 | } 630 | ], 631 | "description": "Common interfaces for PSR-7 HTTP message factories", 632 | "keywords": [ 633 | "factory", 634 | "http", 635 | "message", 636 | "psr", 637 | "psr-17", 638 | "psr-7", 639 | "request", 640 | "response" 641 | ], 642 | "support": { 643 | "source": "https://github.com/php-fig/http-factory/tree/1.0.2" 644 | }, 645 | "time": "2023-04-10T20:10:41+00:00" 646 | }, 647 | { 648 | "name": "psr/http-message", 649 | "version": "1.1", 650 | "source": { 651 | "type": "git", 652 | "url": "https://github.com/php-fig/http-message.git", 653 | "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" 654 | }, 655 | "dist": { 656 | "type": "zip", 657 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", 658 | "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", 659 | "shasum": "" 660 | }, 661 | "require": { 662 | "php": "^7.2 || ^8.0" 663 | }, 664 | "type": "library", 665 | "extra": { 666 | "branch-alias": { 667 | "dev-master": "1.1.x-dev" 668 | } 669 | }, 670 | "autoload": { 671 | "psr-4": { 672 | "Psr\\Http\\Message\\": "src/" 673 | } 674 | }, 675 | "notification-url": "https://packagist.org/downloads/", 676 | "license": [ 677 | "MIT" 678 | ], 679 | "authors": [ 680 | { 681 | "name": "PHP-FIG", 682 | "homepage": "http://www.php-fig.org/" 683 | } 684 | ], 685 | "description": "Common interface for HTTP messages", 686 | "homepage": "https://github.com/php-fig/http-message", 687 | "keywords": [ 688 | "http", 689 | "http-message", 690 | "psr", 691 | "psr-7", 692 | "request", 693 | "response" 694 | ], 695 | "support": { 696 | "source": "https://github.com/php-fig/http-message/tree/1.1" 697 | }, 698 | "time": "2023-04-04T09:50:52+00:00" 699 | }, 700 | { 701 | "name": "ralouphie/getallheaders", 702 | "version": "3.0.3", 703 | "source": { 704 | "type": "git", 705 | "url": "https://github.com/ralouphie/getallheaders.git", 706 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 707 | }, 708 | "dist": { 709 | "type": "zip", 710 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 711 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 712 | "shasum": "" 713 | }, 714 | "require": { 715 | "php": ">=5.6" 716 | }, 717 | "require-dev": { 718 | "php-coveralls/php-coveralls": "^2.1", 719 | "phpunit/phpunit": "^5 || ^6.5" 720 | }, 721 | "type": "library", 722 | "autoload": { 723 | "files": [ 724 | "src/getallheaders.php" 725 | ] 726 | }, 727 | "notification-url": "https://packagist.org/downloads/", 728 | "license": [ 729 | "MIT" 730 | ], 731 | "authors": [ 732 | { 733 | "name": "Ralph Khattar", 734 | "email": "ralph.khattar@gmail.com" 735 | } 736 | ], 737 | "description": "A polyfill for getallheaders.", 738 | "support": { 739 | "issues": "https://github.com/ralouphie/getallheaders/issues", 740 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 741 | }, 742 | "time": "2019-03-08T08:55:37+00:00" 743 | }, 744 | { 745 | "name": "symfony/deprecation-contracts", 746 | "version": "v3.3.0", 747 | "source": { 748 | "type": "git", 749 | "url": "https://github.com/symfony/deprecation-contracts.git", 750 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" 751 | }, 752 | "dist": { 753 | "type": "zip", 754 | "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", 755 | "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", 756 | "shasum": "" 757 | }, 758 | "require": { 759 | "php": ">=8.1" 760 | }, 761 | "type": "library", 762 | "extra": { 763 | "branch-alias": { 764 | "dev-main": "3.4-dev" 765 | }, 766 | "thanks": { 767 | "name": "symfony/contracts", 768 | "url": "https://github.com/symfony/contracts" 769 | } 770 | }, 771 | "autoload": { 772 | "files": [ 773 | "function.php" 774 | ] 775 | }, 776 | "notification-url": "https://packagist.org/downloads/", 777 | "license": [ 778 | "MIT" 779 | ], 780 | "authors": [ 781 | { 782 | "name": "Nicolas Grekas", 783 | "email": "p@tchwork.com" 784 | }, 785 | { 786 | "name": "Symfony Community", 787 | "homepage": "https://symfony.com/contributors" 788 | } 789 | ], 790 | "description": "A generic function and convention to trigger deprecation notices", 791 | "homepage": "https://symfony.com", 792 | "support": { 793 | "source": "https://github.com/symfony/deprecation-contracts/tree/v3.3.0" 794 | }, 795 | "funding": [ 796 | { 797 | "url": "https://symfony.com/sponsor", 798 | "type": "custom" 799 | }, 800 | { 801 | "url": "https://github.com/fabpot", 802 | "type": "github" 803 | }, 804 | { 805 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 806 | "type": "tidelift" 807 | } 808 | ], 809 | "time": "2023-05-23T14:45:45+00:00" 810 | }, 811 | { 812 | "name": "symfony/dotenv", 813 | "version": "v4.4.37", 814 | "source": { 815 | "type": "git", 816 | "url": "https://github.com/symfony/dotenv.git", 817 | "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf" 818 | }, 819 | "dist": { 820 | "type": "zip", 821 | "url": "https://api.github.com/repos/symfony/dotenv/zipball/fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", 822 | "reference": "fcedd6d382b3afc3e1e786aa4e4fc4cf06f564cf", 823 | "shasum": "" 824 | }, 825 | "require": { 826 | "php": ">=7.1.3" 827 | }, 828 | "require-dev": { 829 | "symfony/process": "^3.4.2|^4.0|^5.0" 830 | }, 831 | "type": "library", 832 | "autoload": { 833 | "psr-4": { 834 | "Symfony\\Component\\Dotenv\\": "" 835 | }, 836 | "exclude-from-classmap": [ 837 | "/Tests/" 838 | ] 839 | }, 840 | "notification-url": "https://packagist.org/downloads/", 841 | "license": [ 842 | "MIT" 843 | ], 844 | "authors": [ 845 | { 846 | "name": "Fabien Potencier", 847 | "email": "fabien@symfony.com" 848 | }, 849 | { 850 | "name": "Symfony Community", 851 | "homepage": "https://symfony.com/contributors" 852 | } 853 | ], 854 | "description": "Registers environment variables from a .env file", 855 | "homepage": "https://symfony.com", 856 | "keywords": [ 857 | "dotenv", 858 | "env", 859 | "environment" 860 | ], 861 | "support": { 862 | "source": "https://github.com/symfony/dotenv/tree/v4.4.37" 863 | }, 864 | "funding": [ 865 | { 866 | "url": "https://symfony.com/sponsor", 867 | "type": "custom" 868 | }, 869 | { 870 | "url": "https://github.com/fabpot", 871 | "type": "github" 872 | }, 873 | { 874 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 875 | "type": "tidelift" 876 | } 877 | ], 878 | "time": "2022-01-02T09:41:36+00:00" 879 | }, 880 | { 881 | "name": "symfony/polyfill-mbstring", 882 | "version": "v1.27.0", 883 | "source": { 884 | "type": "git", 885 | "url": "https://github.com/symfony/polyfill-mbstring.git", 886 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" 887 | }, 888 | "dist": { 889 | "type": "zip", 890 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 891 | "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", 892 | "shasum": "" 893 | }, 894 | "require": { 895 | "php": ">=7.1" 896 | }, 897 | "provide": { 898 | "ext-mbstring": "*" 899 | }, 900 | "suggest": { 901 | "ext-mbstring": "For best performance" 902 | }, 903 | "type": "library", 904 | "extra": { 905 | "branch-alias": { 906 | "dev-main": "1.27-dev" 907 | }, 908 | "thanks": { 909 | "name": "symfony/polyfill", 910 | "url": "https://github.com/symfony/polyfill" 911 | } 912 | }, 913 | "autoload": { 914 | "files": [ 915 | "bootstrap.php" 916 | ], 917 | "psr-4": { 918 | "Symfony\\Polyfill\\Mbstring\\": "" 919 | } 920 | }, 921 | "notification-url": "https://packagist.org/downloads/", 922 | "license": [ 923 | "MIT" 924 | ], 925 | "authors": [ 926 | { 927 | "name": "Nicolas Grekas", 928 | "email": "p@tchwork.com" 929 | }, 930 | { 931 | "name": "Symfony Community", 932 | "homepage": "https://symfony.com/contributors" 933 | } 934 | ], 935 | "description": "Symfony polyfill for the Mbstring extension", 936 | "homepage": "https://symfony.com", 937 | "keywords": [ 938 | "compatibility", 939 | "mbstring", 940 | "polyfill", 941 | "portable", 942 | "shim" 943 | ], 944 | "support": { 945 | "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" 946 | }, 947 | "funding": [ 948 | { 949 | "url": "https://symfony.com/sponsor", 950 | "type": "custom" 951 | }, 952 | { 953 | "url": "https://github.com/fabpot", 954 | "type": "github" 955 | }, 956 | { 957 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 958 | "type": "tidelift" 959 | } 960 | ], 961 | "time": "2022-11-03T14:55:06+00:00" 962 | } 963 | ], 964 | "packages-dev": [ 965 | { 966 | "name": "myclabs/deep-copy", 967 | "version": "1.11.1", 968 | "source": { 969 | "type": "git", 970 | "url": "https://github.com/myclabs/DeepCopy.git", 971 | "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" 972 | }, 973 | "dist": { 974 | "type": "zip", 975 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", 976 | "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", 977 | "shasum": "" 978 | }, 979 | "require": { 980 | "php": "^7.1 || ^8.0" 981 | }, 982 | "conflict": { 983 | "doctrine/collections": "<1.6.8", 984 | "doctrine/common": "<2.13.3 || >=3,<3.2.2" 985 | }, 986 | "require-dev": { 987 | "doctrine/collections": "^1.6.8", 988 | "doctrine/common": "^2.13.3 || ^3.2.2", 989 | "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" 990 | }, 991 | "type": "library", 992 | "autoload": { 993 | "files": [ 994 | "src/DeepCopy/deep_copy.php" 995 | ], 996 | "psr-4": { 997 | "DeepCopy\\": "src/DeepCopy/" 998 | } 999 | }, 1000 | "notification-url": "https://packagist.org/downloads/", 1001 | "license": [ 1002 | "MIT" 1003 | ], 1004 | "description": "Create deep copies (clones) of your objects", 1005 | "keywords": [ 1006 | "clone", 1007 | "copy", 1008 | "duplicate", 1009 | "object", 1010 | "object graph" 1011 | ], 1012 | "support": { 1013 | "issues": "https://github.com/myclabs/DeepCopy/issues", 1014 | "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" 1015 | }, 1016 | "funding": [ 1017 | { 1018 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 1019 | "type": "tidelift" 1020 | } 1021 | ], 1022 | "time": "2023-03-08T13:26:56+00:00" 1023 | }, 1024 | { 1025 | "name": "nikic/php-parser", 1026 | "version": "v4.15.5", 1027 | "source": { 1028 | "type": "git", 1029 | "url": "https://github.com/nikic/PHP-Parser.git", 1030 | "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e" 1031 | }, 1032 | "dist": { 1033 | "type": "zip", 1034 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/11e2663a5bc9db5d714eedb4277ee300403b4a9e", 1035 | "reference": "11e2663a5bc9db5d714eedb4277ee300403b4a9e", 1036 | "shasum": "" 1037 | }, 1038 | "require": { 1039 | "ext-tokenizer": "*", 1040 | "php": ">=7.0" 1041 | }, 1042 | "require-dev": { 1043 | "ircmaxell/php-yacc": "^0.0.7", 1044 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 1045 | }, 1046 | "bin": [ 1047 | "bin/php-parse" 1048 | ], 1049 | "type": "library", 1050 | "extra": { 1051 | "branch-alias": { 1052 | "dev-master": "4.9-dev" 1053 | } 1054 | }, 1055 | "autoload": { 1056 | "psr-4": { 1057 | "PhpParser\\": "lib/PhpParser" 1058 | } 1059 | }, 1060 | "notification-url": "https://packagist.org/downloads/", 1061 | "license": [ 1062 | "BSD-3-Clause" 1063 | ], 1064 | "authors": [ 1065 | { 1066 | "name": "Nikita Popov" 1067 | } 1068 | ], 1069 | "description": "A PHP parser written in PHP", 1070 | "keywords": [ 1071 | "parser", 1072 | "php" 1073 | ], 1074 | "support": { 1075 | "issues": "https://github.com/nikic/PHP-Parser/issues", 1076 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.5" 1077 | }, 1078 | "time": "2023-05-19T20:20:00+00:00" 1079 | }, 1080 | { 1081 | "name": "phar-io/manifest", 1082 | "version": "2.0.3", 1083 | "source": { 1084 | "type": "git", 1085 | "url": "https://github.com/phar-io/manifest.git", 1086 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53" 1087 | }, 1088 | "dist": { 1089 | "type": "zip", 1090 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", 1091 | "reference": "97803eca37d319dfa7826cc2437fc020857acb53", 1092 | "shasum": "" 1093 | }, 1094 | "require": { 1095 | "ext-dom": "*", 1096 | "ext-phar": "*", 1097 | "ext-xmlwriter": "*", 1098 | "phar-io/version": "^3.0.1", 1099 | "php": "^7.2 || ^8.0" 1100 | }, 1101 | "type": "library", 1102 | "extra": { 1103 | "branch-alias": { 1104 | "dev-master": "2.0.x-dev" 1105 | } 1106 | }, 1107 | "autoload": { 1108 | "classmap": [ 1109 | "src/" 1110 | ] 1111 | }, 1112 | "notification-url": "https://packagist.org/downloads/", 1113 | "license": [ 1114 | "BSD-3-Clause" 1115 | ], 1116 | "authors": [ 1117 | { 1118 | "name": "Arne Blankerts", 1119 | "email": "arne@blankerts.de", 1120 | "role": "Developer" 1121 | }, 1122 | { 1123 | "name": "Sebastian Heuer", 1124 | "email": "sebastian@phpeople.de", 1125 | "role": "Developer" 1126 | }, 1127 | { 1128 | "name": "Sebastian Bergmann", 1129 | "email": "sebastian@phpunit.de", 1130 | "role": "Developer" 1131 | } 1132 | ], 1133 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 1134 | "support": { 1135 | "issues": "https://github.com/phar-io/manifest/issues", 1136 | "source": "https://github.com/phar-io/manifest/tree/2.0.3" 1137 | }, 1138 | "time": "2021-07-20T11:28:43+00:00" 1139 | }, 1140 | { 1141 | "name": "phar-io/version", 1142 | "version": "3.2.1", 1143 | "source": { 1144 | "type": "git", 1145 | "url": "https://github.com/phar-io/version.git", 1146 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" 1147 | }, 1148 | "dist": { 1149 | "type": "zip", 1150 | "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1151 | "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", 1152 | "shasum": "" 1153 | }, 1154 | "require": { 1155 | "php": "^7.2 || ^8.0" 1156 | }, 1157 | "type": "library", 1158 | "autoload": { 1159 | "classmap": [ 1160 | "src/" 1161 | ] 1162 | }, 1163 | "notification-url": "https://packagist.org/downloads/", 1164 | "license": [ 1165 | "BSD-3-Clause" 1166 | ], 1167 | "authors": [ 1168 | { 1169 | "name": "Arne Blankerts", 1170 | "email": "arne@blankerts.de", 1171 | "role": "Developer" 1172 | }, 1173 | { 1174 | "name": "Sebastian Heuer", 1175 | "email": "sebastian@phpeople.de", 1176 | "role": "Developer" 1177 | }, 1178 | { 1179 | "name": "Sebastian Bergmann", 1180 | "email": "sebastian@phpunit.de", 1181 | "role": "Developer" 1182 | } 1183 | ], 1184 | "description": "Library for handling version information and constraints", 1185 | "support": { 1186 | "issues": "https://github.com/phar-io/version/issues", 1187 | "source": "https://github.com/phar-io/version/tree/3.2.1" 1188 | }, 1189 | "time": "2022-02-21T01:04:05+00:00" 1190 | }, 1191 | { 1192 | "name": "phpunit/php-code-coverage", 1193 | "version": "10.1.2", 1194 | "source": { 1195 | "type": "git", 1196 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1197 | "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e" 1198 | }, 1199 | "dist": { 1200 | "type": "zip", 1201 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/db1497ec8dd382e82c962f7abbe0320e4882ee4e", 1202 | "reference": "db1497ec8dd382e82c962f7abbe0320e4882ee4e", 1203 | "shasum": "" 1204 | }, 1205 | "require": { 1206 | "ext-dom": "*", 1207 | "ext-libxml": "*", 1208 | "ext-xmlwriter": "*", 1209 | "nikic/php-parser": "^4.15", 1210 | "php": ">=8.1", 1211 | "phpunit/php-file-iterator": "^4.0", 1212 | "phpunit/php-text-template": "^3.0", 1213 | "sebastian/code-unit-reverse-lookup": "^3.0", 1214 | "sebastian/complexity": "^3.0", 1215 | "sebastian/environment": "^6.0", 1216 | "sebastian/lines-of-code": "^2.0", 1217 | "sebastian/version": "^4.0", 1218 | "theseer/tokenizer": "^1.2.0" 1219 | }, 1220 | "require-dev": { 1221 | "phpunit/phpunit": "^10.1" 1222 | }, 1223 | "suggest": { 1224 | "ext-pcov": "PHP extension that provides line coverage", 1225 | "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" 1226 | }, 1227 | "type": "library", 1228 | "extra": { 1229 | "branch-alias": { 1230 | "dev-main": "10.1-dev" 1231 | } 1232 | }, 1233 | "autoload": { 1234 | "classmap": [ 1235 | "src/" 1236 | ] 1237 | }, 1238 | "notification-url": "https://packagist.org/downloads/", 1239 | "license": [ 1240 | "BSD-3-Clause" 1241 | ], 1242 | "authors": [ 1243 | { 1244 | "name": "Sebastian Bergmann", 1245 | "email": "sebastian@phpunit.de", 1246 | "role": "lead" 1247 | } 1248 | ], 1249 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1250 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1251 | "keywords": [ 1252 | "coverage", 1253 | "testing", 1254 | "xunit" 1255 | ], 1256 | "support": { 1257 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 1258 | "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", 1259 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.2" 1260 | }, 1261 | "funding": [ 1262 | { 1263 | "url": "https://github.com/sebastianbergmann", 1264 | "type": "github" 1265 | } 1266 | ], 1267 | "time": "2023-05-22T09:04:27+00:00" 1268 | }, 1269 | { 1270 | "name": "phpunit/php-file-iterator", 1271 | "version": "4.0.2", 1272 | "source": { 1273 | "type": "git", 1274 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1275 | "reference": "5647d65443818959172645e7ed999217360654b6" 1276 | }, 1277 | "dist": { 1278 | "type": "zip", 1279 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/5647d65443818959172645e7ed999217360654b6", 1280 | "reference": "5647d65443818959172645e7ed999217360654b6", 1281 | "shasum": "" 1282 | }, 1283 | "require": { 1284 | "php": ">=8.1" 1285 | }, 1286 | "require-dev": { 1287 | "phpunit/phpunit": "^10.0" 1288 | }, 1289 | "type": "library", 1290 | "extra": { 1291 | "branch-alias": { 1292 | "dev-main": "4.0-dev" 1293 | } 1294 | }, 1295 | "autoload": { 1296 | "classmap": [ 1297 | "src/" 1298 | ] 1299 | }, 1300 | "notification-url": "https://packagist.org/downloads/", 1301 | "license": [ 1302 | "BSD-3-Clause" 1303 | ], 1304 | "authors": [ 1305 | { 1306 | "name": "Sebastian Bergmann", 1307 | "email": "sebastian@phpunit.de", 1308 | "role": "lead" 1309 | } 1310 | ], 1311 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1312 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1313 | "keywords": [ 1314 | "filesystem", 1315 | "iterator" 1316 | ], 1317 | "support": { 1318 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 1319 | "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", 1320 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.0.2" 1321 | }, 1322 | "funding": [ 1323 | { 1324 | "url": "https://github.com/sebastianbergmann", 1325 | "type": "github" 1326 | } 1327 | ], 1328 | "time": "2023-05-07T09:13:23+00:00" 1329 | }, 1330 | { 1331 | "name": "phpunit/php-invoker", 1332 | "version": "4.0.0", 1333 | "source": { 1334 | "type": "git", 1335 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 1336 | "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" 1337 | }, 1338 | "dist": { 1339 | "type": "zip", 1340 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", 1341 | "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", 1342 | "shasum": "" 1343 | }, 1344 | "require": { 1345 | "php": ">=8.1" 1346 | }, 1347 | "require-dev": { 1348 | "ext-pcntl": "*", 1349 | "phpunit/phpunit": "^10.0" 1350 | }, 1351 | "suggest": { 1352 | "ext-pcntl": "*" 1353 | }, 1354 | "type": "library", 1355 | "extra": { 1356 | "branch-alias": { 1357 | "dev-main": "4.0-dev" 1358 | } 1359 | }, 1360 | "autoload": { 1361 | "classmap": [ 1362 | "src/" 1363 | ] 1364 | }, 1365 | "notification-url": "https://packagist.org/downloads/", 1366 | "license": [ 1367 | "BSD-3-Clause" 1368 | ], 1369 | "authors": [ 1370 | { 1371 | "name": "Sebastian Bergmann", 1372 | "email": "sebastian@phpunit.de", 1373 | "role": "lead" 1374 | } 1375 | ], 1376 | "description": "Invoke callables with a timeout", 1377 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1378 | "keywords": [ 1379 | "process" 1380 | ], 1381 | "support": { 1382 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1383 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" 1384 | }, 1385 | "funding": [ 1386 | { 1387 | "url": "https://github.com/sebastianbergmann", 1388 | "type": "github" 1389 | } 1390 | ], 1391 | "time": "2023-02-03T06:56:09+00:00" 1392 | }, 1393 | { 1394 | "name": "phpunit/php-text-template", 1395 | "version": "3.0.0", 1396 | "source": { 1397 | "type": "git", 1398 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1399 | "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d" 1400 | }, 1401 | "dist": { 1402 | "type": "zip", 1403 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/9f3d3709577a527025f55bcf0f7ab8052c8bb37d", 1404 | "reference": "9f3d3709577a527025f55bcf0f7ab8052c8bb37d", 1405 | "shasum": "" 1406 | }, 1407 | "require": { 1408 | "php": ">=8.1" 1409 | }, 1410 | "require-dev": { 1411 | "phpunit/phpunit": "^10.0" 1412 | }, 1413 | "type": "library", 1414 | "extra": { 1415 | "branch-alias": { 1416 | "dev-main": "3.0-dev" 1417 | } 1418 | }, 1419 | "autoload": { 1420 | "classmap": [ 1421 | "src/" 1422 | ] 1423 | }, 1424 | "notification-url": "https://packagist.org/downloads/", 1425 | "license": [ 1426 | "BSD-3-Clause" 1427 | ], 1428 | "authors": [ 1429 | { 1430 | "name": "Sebastian Bergmann", 1431 | "email": "sebastian@phpunit.de", 1432 | "role": "lead" 1433 | } 1434 | ], 1435 | "description": "Simple template engine.", 1436 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1437 | "keywords": [ 1438 | "template" 1439 | ], 1440 | "support": { 1441 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1442 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.0" 1443 | }, 1444 | "funding": [ 1445 | { 1446 | "url": "https://github.com/sebastianbergmann", 1447 | "type": "github" 1448 | } 1449 | ], 1450 | "time": "2023-02-03T06:56:46+00:00" 1451 | }, 1452 | { 1453 | "name": "phpunit/php-timer", 1454 | "version": "6.0.0", 1455 | "source": { 1456 | "type": "git", 1457 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1458 | "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" 1459 | }, 1460 | "dist": { 1461 | "type": "zip", 1462 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", 1463 | "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", 1464 | "shasum": "" 1465 | }, 1466 | "require": { 1467 | "php": ">=8.1" 1468 | }, 1469 | "require-dev": { 1470 | "phpunit/phpunit": "^10.0" 1471 | }, 1472 | "type": "library", 1473 | "extra": { 1474 | "branch-alias": { 1475 | "dev-main": "6.0-dev" 1476 | } 1477 | }, 1478 | "autoload": { 1479 | "classmap": [ 1480 | "src/" 1481 | ] 1482 | }, 1483 | "notification-url": "https://packagist.org/downloads/", 1484 | "license": [ 1485 | "BSD-3-Clause" 1486 | ], 1487 | "authors": [ 1488 | { 1489 | "name": "Sebastian Bergmann", 1490 | "email": "sebastian@phpunit.de", 1491 | "role": "lead" 1492 | } 1493 | ], 1494 | "description": "Utility class for timing", 1495 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1496 | "keywords": [ 1497 | "timer" 1498 | ], 1499 | "support": { 1500 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1501 | "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" 1502 | }, 1503 | "funding": [ 1504 | { 1505 | "url": "https://github.com/sebastianbergmann", 1506 | "type": "github" 1507 | } 1508 | ], 1509 | "time": "2023-02-03T06:57:52+00:00" 1510 | }, 1511 | { 1512 | "name": "phpunit/phpunit", 1513 | "version": "10.2.2", 1514 | "source": { 1515 | "type": "git", 1516 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1517 | "reference": "1ab521b24b88b88310c40c26c0cc4a94ba40ff95" 1518 | }, 1519 | "dist": { 1520 | "type": "zip", 1521 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1ab521b24b88b88310c40c26c0cc4a94ba40ff95", 1522 | "reference": "1ab521b24b88b88310c40c26c0cc4a94ba40ff95", 1523 | "shasum": "" 1524 | }, 1525 | "require": { 1526 | "ext-dom": "*", 1527 | "ext-json": "*", 1528 | "ext-libxml": "*", 1529 | "ext-mbstring": "*", 1530 | "ext-xml": "*", 1531 | "ext-xmlwriter": "*", 1532 | "myclabs/deep-copy": "^1.10.1", 1533 | "phar-io/manifest": "^2.0.3", 1534 | "phar-io/version": "^3.0.2", 1535 | "php": ">=8.1", 1536 | "phpunit/php-code-coverage": "^10.1.1", 1537 | "phpunit/php-file-iterator": "^4.0", 1538 | "phpunit/php-invoker": "^4.0", 1539 | "phpunit/php-text-template": "^3.0", 1540 | "phpunit/php-timer": "^6.0", 1541 | "sebastian/cli-parser": "^2.0", 1542 | "sebastian/code-unit": "^2.0", 1543 | "sebastian/comparator": "^5.0", 1544 | "sebastian/diff": "^5.0", 1545 | "sebastian/environment": "^6.0", 1546 | "sebastian/exporter": "^5.0", 1547 | "sebastian/global-state": "^6.0", 1548 | "sebastian/object-enumerator": "^5.0", 1549 | "sebastian/recursion-context": "^5.0", 1550 | "sebastian/type": "^4.0", 1551 | "sebastian/version": "^4.0" 1552 | }, 1553 | "suggest": { 1554 | "ext-soap": "To be able to generate mocks based on WSDL files" 1555 | }, 1556 | "bin": [ 1557 | "phpunit" 1558 | ], 1559 | "type": "library", 1560 | "extra": { 1561 | "branch-alias": { 1562 | "dev-main": "10.2-dev" 1563 | } 1564 | }, 1565 | "autoload": { 1566 | "files": [ 1567 | "src/Framework/Assert/Functions.php" 1568 | ], 1569 | "classmap": [ 1570 | "src/" 1571 | ] 1572 | }, 1573 | "notification-url": "https://packagist.org/downloads/", 1574 | "license": [ 1575 | "BSD-3-Clause" 1576 | ], 1577 | "authors": [ 1578 | { 1579 | "name": "Sebastian Bergmann", 1580 | "email": "sebastian@phpunit.de", 1581 | "role": "lead" 1582 | } 1583 | ], 1584 | "description": "The PHP Unit Testing framework.", 1585 | "homepage": "https://phpunit.de/", 1586 | "keywords": [ 1587 | "phpunit", 1588 | "testing", 1589 | "xunit" 1590 | ], 1591 | "support": { 1592 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1593 | "security": "https://github.com/sebastianbergmann/phpunit/security/policy", 1594 | "source": "https://github.com/sebastianbergmann/phpunit/tree/10.2.2" 1595 | }, 1596 | "funding": [ 1597 | { 1598 | "url": "https://phpunit.de/sponsors.html", 1599 | "type": "custom" 1600 | }, 1601 | { 1602 | "url": "https://github.com/sebastianbergmann", 1603 | "type": "github" 1604 | }, 1605 | { 1606 | "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", 1607 | "type": "tidelift" 1608 | } 1609 | ], 1610 | "time": "2023-06-11T06:15:20+00:00" 1611 | }, 1612 | { 1613 | "name": "sebastian/cli-parser", 1614 | "version": "2.0.0", 1615 | "source": { 1616 | "type": "git", 1617 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 1618 | "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" 1619 | }, 1620 | "dist": { 1621 | "type": "zip", 1622 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", 1623 | "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", 1624 | "shasum": "" 1625 | }, 1626 | "require": { 1627 | "php": ">=8.1" 1628 | }, 1629 | "require-dev": { 1630 | "phpunit/phpunit": "^10.0" 1631 | }, 1632 | "type": "library", 1633 | "extra": { 1634 | "branch-alias": { 1635 | "dev-main": "2.0-dev" 1636 | } 1637 | }, 1638 | "autoload": { 1639 | "classmap": [ 1640 | "src/" 1641 | ] 1642 | }, 1643 | "notification-url": "https://packagist.org/downloads/", 1644 | "license": [ 1645 | "BSD-3-Clause" 1646 | ], 1647 | "authors": [ 1648 | { 1649 | "name": "Sebastian Bergmann", 1650 | "email": "sebastian@phpunit.de", 1651 | "role": "lead" 1652 | } 1653 | ], 1654 | "description": "Library for parsing CLI options", 1655 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 1656 | "support": { 1657 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 1658 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" 1659 | }, 1660 | "funding": [ 1661 | { 1662 | "url": "https://github.com/sebastianbergmann", 1663 | "type": "github" 1664 | } 1665 | ], 1666 | "time": "2023-02-03T06:58:15+00:00" 1667 | }, 1668 | { 1669 | "name": "sebastian/code-unit", 1670 | "version": "2.0.0", 1671 | "source": { 1672 | "type": "git", 1673 | "url": "https://github.com/sebastianbergmann/code-unit.git", 1674 | "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" 1675 | }, 1676 | "dist": { 1677 | "type": "zip", 1678 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", 1679 | "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", 1680 | "shasum": "" 1681 | }, 1682 | "require": { 1683 | "php": ">=8.1" 1684 | }, 1685 | "require-dev": { 1686 | "phpunit/phpunit": "^10.0" 1687 | }, 1688 | "type": "library", 1689 | "extra": { 1690 | "branch-alias": { 1691 | "dev-main": "2.0-dev" 1692 | } 1693 | }, 1694 | "autoload": { 1695 | "classmap": [ 1696 | "src/" 1697 | ] 1698 | }, 1699 | "notification-url": "https://packagist.org/downloads/", 1700 | "license": [ 1701 | "BSD-3-Clause" 1702 | ], 1703 | "authors": [ 1704 | { 1705 | "name": "Sebastian Bergmann", 1706 | "email": "sebastian@phpunit.de", 1707 | "role": "lead" 1708 | } 1709 | ], 1710 | "description": "Collection of value objects that represent the PHP code units", 1711 | "homepage": "https://github.com/sebastianbergmann/code-unit", 1712 | "support": { 1713 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 1714 | "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" 1715 | }, 1716 | "funding": [ 1717 | { 1718 | "url": "https://github.com/sebastianbergmann", 1719 | "type": "github" 1720 | } 1721 | ], 1722 | "time": "2023-02-03T06:58:43+00:00" 1723 | }, 1724 | { 1725 | "name": "sebastian/code-unit-reverse-lookup", 1726 | "version": "3.0.0", 1727 | "source": { 1728 | "type": "git", 1729 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1730 | "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" 1731 | }, 1732 | "dist": { 1733 | "type": "zip", 1734 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", 1735 | "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", 1736 | "shasum": "" 1737 | }, 1738 | "require": { 1739 | "php": ">=8.1" 1740 | }, 1741 | "require-dev": { 1742 | "phpunit/phpunit": "^10.0" 1743 | }, 1744 | "type": "library", 1745 | "extra": { 1746 | "branch-alias": { 1747 | "dev-main": "3.0-dev" 1748 | } 1749 | }, 1750 | "autoload": { 1751 | "classmap": [ 1752 | "src/" 1753 | ] 1754 | }, 1755 | "notification-url": "https://packagist.org/downloads/", 1756 | "license": [ 1757 | "BSD-3-Clause" 1758 | ], 1759 | "authors": [ 1760 | { 1761 | "name": "Sebastian Bergmann", 1762 | "email": "sebastian@phpunit.de" 1763 | } 1764 | ], 1765 | "description": "Looks up which function or method a line of code belongs to", 1766 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1767 | "support": { 1768 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 1769 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" 1770 | }, 1771 | "funding": [ 1772 | { 1773 | "url": "https://github.com/sebastianbergmann", 1774 | "type": "github" 1775 | } 1776 | ], 1777 | "time": "2023-02-03T06:59:15+00:00" 1778 | }, 1779 | { 1780 | "name": "sebastian/comparator", 1781 | "version": "5.0.0", 1782 | "source": { 1783 | "type": "git", 1784 | "url": "https://github.com/sebastianbergmann/comparator.git", 1785 | "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c" 1786 | }, 1787 | "dist": { 1788 | "type": "zip", 1789 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/72f01e6586e0caf6af81297897bd112eb7e9627c", 1790 | "reference": "72f01e6586e0caf6af81297897bd112eb7e9627c", 1791 | "shasum": "" 1792 | }, 1793 | "require": { 1794 | "ext-dom": "*", 1795 | "ext-mbstring": "*", 1796 | "php": ">=8.1", 1797 | "sebastian/diff": "^5.0", 1798 | "sebastian/exporter": "^5.0" 1799 | }, 1800 | "require-dev": { 1801 | "phpunit/phpunit": "^10.0" 1802 | }, 1803 | "type": "library", 1804 | "extra": { 1805 | "branch-alias": { 1806 | "dev-main": "5.0-dev" 1807 | } 1808 | }, 1809 | "autoload": { 1810 | "classmap": [ 1811 | "src/" 1812 | ] 1813 | }, 1814 | "notification-url": "https://packagist.org/downloads/", 1815 | "license": [ 1816 | "BSD-3-Clause" 1817 | ], 1818 | "authors": [ 1819 | { 1820 | "name": "Sebastian Bergmann", 1821 | "email": "sebastian@phpunit.de" 1822 | }, 1823 | { 1824 | "name": "Jeff Welch", 1825 | "email": "whatthejeff@gmail.com" 1826 | }, 1827 | { 1828 | "name": "Volker Dusch", 1829 | "email": "github@wallbash.com" 1830 | }, 1831 | { 1832 | "name": "Bernhard Schussek", 1833 | "email": "bschussek@2bepublished.at" 1834 | } 1835 | ], 1836 | "description": "Provides the functionality to compare PHP values for equality", 1837 | "homepage": "https://github.com/sebastianbergmann/comparator", 1838 | "keywords": [ 1839 | "comparator", 1840 | "compare", 1841 | "equality" 1842 | ], 1843 | "support": { 1844 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 1845 | "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.0" 1846 | }, 1847 | "funding": [ 1848 | { 1849 | "url": "https://github.com/sebastianbergmann", 1850 | "type": "github" 1851 | } 1852 | ], 1853 | "time": "2023-02-03T07:07:16+00:00" 1854 | }, 1855 | { 1856 | "name": "sebastian/complexity", 1857 | "version": "3.0.0", 1858 | "source": { 1859 | "type": "git", 1860 | "url": "https://github.com/sebastianbergmann/complexity.git", 1861 | "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6" 1862 | }, 1863 | "dist": { 1864 | "type": "zip", 1865 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/e67d240970c9dc7ea7b2123a6d520e334dd61dc6", 1866 | "reference": "e67d240970c9dc7ea7b2123a6d520e334dd61dc6", 1867 | "shasum": "" 1868 | }, 1869 | "require": { 1870 | "nikic/php-parser": "^4.10", 1871 | "php": ">=8.1" 1872 | }, 1873 | "require-dev": { 1874 | "phpunit/phpunit": "^10.0" 1875 | }, 1876 | "type": "library", 1877 | "extra": { 1878 | "branch-alias": { 1879 | "dev-main": "3.0-dev" 1880 | } 1881 | }, 1882 | "autoload": { 1883 | "classmap": [ 1884 | "src/" 1885 | ] 1886 | }, 1887 | "notification-url": "https://packagist.org/downloads/", 1888 | "license": [ 1889 | "BSD-3-Clause" 1890 | ], 1891 | "authors": [ 1892 | { 1893 | "name": "Sebastian Bergmann", 1894 | "email": "sebastian@phpunit.de", 1895 | "role": "lead" 1896 | } 1897 | ], 1898 | "description": "Library for calculating the complexity of PHP code units", 1899 | "homepage": "https://github.com/sebastianbergmann/complexity", 1900 | "support": { 1901 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 1902 | "source": "https://github.com/sebastianbergmann/complexity/tree/3.0.0" 1903 | }, 1904 | "funding": [ 1905 | { 1906 | "url": "https://github.com/sebastianbergmann", 1907 | "type": "github" 1908 | } 1909 | ], 1910 | "time": "2023-02-03T06:59:47+00:00" 1911 | }, 1912 | { 1913 | "name": "sebastian/diff", 1914 | "version": "5.0.3", 1915 | "source": { 1916 | "type": "git", 1917 | "url": "https://github.com/sebastianbergmann/diff.git", 1918 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" 1919 | }, 1920 | "dist": { 1921 | "type": "zip", 1922 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 1923 | "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", 1924 | "shasum": "" 1925 | }, 1926 | "require": { 1927 | "php": ">=8.1" 1928 | }, 1929 | "require-dev": { 1930 | "phpunit/phpunit": "^10.0", 1931 | "symfony/process": "^4.2 || ^5" 1932 | }, 1933 | "type": "library", 1934 | "extra": { 1935 | "branch-alias": { 1936 | "dev-main": "5.0-dev" 1937 | } 1938 | }, 1939 | "autoload": { 1940 | "classmap": [ 1941 | "src/" 1942 | ] 1943 | }, 1944 | "notification-url": "https://packagist.org/downloads/", 1945 | "license": [ 1946 | "BSD-3-Clause" 1947 | ], 1948 | "authors": [ 1949 | { 1950 | "name": "Sebastian Bergmann", 1951 | "email": "sebastian@phpunit.de" 1952 | }, 1953 | { 1954 | "name": "Kore Nordmann", 1955 | "email": "mail@kore-nordmann.de" 1956 | } 1957 | ], 1958 | "description": "Diff implementation", 1959 | "homepage": "https://github.com/sebastianbergmann/diff", 1960 | "keywords": [ 1961 | "diff", 1962 | "udiff", 1963 | "unidiff", 1964 | "unified diff" 1965 | ], 1966 | "support": { 1967 | "issues": "https://github.com/sebastianbergmann/diff/issues", 1968 | "security": "https://github.com/sebastianbergmann/diff/security/policy", 1969 | "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" 1970 | }, 1971 | "funding": [ 1972 | { 1973 | "url": "https://github.com/sebastianbergmann", 1974 | "type": "github" 1975 | } 1976 | ], 1977 | "time": "2023-05-01T07:48:21+00:00" 1978 | }, 1979 | { 1980 | "name": "sebastian/environment", 1981 | "version": "6.0.1", 1982 | "source": { 1983 | "type": "git", 1984 | "url": "https://github.com/sebastianbergmann/environment.git", 1985 | "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" 1986 | }, 1987 | "dist": { 1988 | "type": "zip", 1989 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", 1990 | "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", 1991 | "shasum": "" 1992 | }, 1993 | "require": { 1994 | "php": ">=8.1" 1995 | }, 1996 | "require-dev": { 1997 | "phpunit/phpunit": "^10.0" 1998 | }, 1999 | "suggest": { 2000 | "ext-posix": "*" 2001 | }, 2002 | "type": "library", 2003 | "extra": { 2004 | "branch-alias": { 2005 | "dev-main": "6.0-dev" 2006 | } 2007 | }, 2008 | "autoload": { 2009 | "classmap": [ 2010 | "src/" 2011 | ] 2012 | }, 2013 | "notification-url": "https://packagist.org/downloads/", 2014 | "license": [ 2015 | "BSD-3-Clause" 2016 | ], 2017 | "authors": [ 2018 | { 2019 | "name": "Sebastian Bergmann", 2020 | "email": "sebastian@phpunit.de" 2021 | } 2022 | ], 2023 | "description": "Provides functionality to handle HHVM/PHP environments", 2024 | "homepage": "https://github.com/sebastianbergmann/environment", 2025 | "keywords": [ 2026 | "Xdebug", 2027 | "environment", 2028 | "hhvm" 2029 | ], 2030 | "support": { 2031 | "issues": "https://github.com/sebastianbergmann/environment/issues", 2032 | "security": "https://github.com/sebastianbergmann/environment/security/policy", 2033 | "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" 2034 | }, 2035 | "funding": [ 2036 | { 2037 | "url": "https://github.com/sebastianbergmann", 2038 | "type": "github" 2039 | } 2040 | ], 2041 | "time": "2023-04-11T05:39:26+00:00" 2042 | }, 2043 | { 2044 | "name": "sebastian/exporter", 2045 | "version": "5.0.0", 2046 | "source": { 2047 | "type": "git", 2048 | "url": "https://github.com/sebastianbergmann/exporter.git", 2049 | "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0" 2050 | }, 2051 | "dist": { 2052 | "type": "zip", 2053 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", 2054 | "reference": "f3ec4bf931c0b31e5b413f5b4fc970a7d03338c0", 2055 | "shasum": "" 2056 | }, 2057 | "require": { 2058 | "ext-mbstring": "*", 2059 | "php": ">=8.1", 2060 | "sebastian/recursion-context": "^5.0" 2061 | }, 2062 | "require-dev": { 2063 | "phpunit/phpunit": "^10.0" 2064 | }, 2065 | "type": "library", 2066 | "extra": { 2067 | "branch-alias": { 2068 | "dev-main": "5.0-dev" 2069 | } 2070 | }, 2071 | "autoload": { 2072 | "classmap": [ 2073 | "src/" 2074 | ] 2075 | }, 2076 | "notification-url": "https://packagist.org/downloads/", 2077 | "license": [ 2078 | "BSD-3-Clause" 2079 | ], 2080 | "authors": [ 2081 | { 2082 | "name": "Sebastian Bergmann", 2083 | "email": "sebastian@phpunit.de" 2084 | }, 2085 | { 2086 | "name": "Jeff Welch", 2087 | "email": "whatthejeff@gmail.com" 2088 | }, 2089 | { 2090 | "name": "Volker Dusch", 2091 | "email": "github@wallbash.com" 2092 | }, 2093 | { 2094 | "name": "Adam Harvey", 2095 | "email": "aharvey@php.net" 2096 | }, 2097 | { 2098 | "name": "Bernhard Schussek", 2099 | "email": "bschussek@gmail.com" 2100 | } 2101 | ], 2102 | "description": "Provides the functionality to export PHP variables for visualization", 2103 | "homepage": "https://www.github.com/sebastianbergmann/exporter", 2104 | "keywords": [ 2105 | "export", 2106 | "exporter" 2107 | ], 2108 | "support": { 2109 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 2110 | "source": "https://github.com/sebastianbergmann/exporter/tree/5.0.0" 2111 | }, 2112 | "funding": [ 2113 | { 2114 | "url": "https://github.com/sebastianbergmann", 2115 | "type": "github" 2116 | } 2117 | ], 2118 | "time": "2023-02-03T07:06:49+00:00" 2119 | }, 2120 | { 2121 | "name": "sebastian/global-state", 2122 | "version": "6.0.0", 2123 | "source": { 2124 | "type": "git", 2125 | "url": "https://github.com/sebastianbergmann/global-state.git", 2126 | "reference": "aab257c712de87b90194febd52e4d184551c2d44" 2127 | }, 2128 | "dist": { 2129 | "type": "zip", 2130 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/aab257c712de87b90194febd52e4d184551c2d44", 2131 | "reference": "aab257c712de87b90194febd52e4d184551c2d44", 2132 | "shasum": "" 2133 | }, 2134 | "require": { 2135 | "php": ">=8.1", 2136 | "sebastian/object-reflector": "^3.0", 2137 | "sebastian/recursion-context": "^5.0" 2138 | }, 2139 | "require-dev": { 2140 | "ext-dom": "*", 2141 | "phpunit/phpunit": "^10.0" 2142 | }, 2143 | "type": "library", 2144 | "extra": { 2145 | "branch-alias": { 2146 | "dev-main": "6.0-dev" 2147 | } 2148 | }, 2149 | "autoload": { 2150 | "classmap": [ 2151 | "src/" 2152 | ] 2153 | }, 2154 | "notification-url": "https://packagist.org/downloads/", 2155 | "license": [ 2156 | "BSD-3-Clause" 2157 | ], 2158 | "authors": [ 2159 | { 2160 | "name": "Sebastian Bergmann", 2161 | "email": "sebastian@phpunit.de" 2162 | } 2163 | ], 2164 | "description": "Snapshotting of global state", 2165 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2166 | "keywords": [ 2167 | "global state" 2168 | ], 2169 | "support": { 2170 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 2171 | "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.0" 2172 | }, 2173 | "funding": [ 2174 | { 2175 | "url": "https://github.com/sebastianbergmann", 2176 | "type": "github" 2177 | } 2178 | ], 2179 | "time": "2023-02-03T07:07:38+00:00" 2180 | }, 2181 | { 2182 | "name": "sebastian/lines-of-code", 2183 | "version": "2.0.0", 2184 | "source": { 2185 | "type": "git", 2186 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2187 | "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130" 2188 | }, 2189 | "dist": { 2190 | "type": "zip", 2191 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/17c4d940ecafb3d15d2cf916f4108f664e28b130", 2192 | "reference": "17c4d940ecafb3d15d2cf916f4108f664e28b130", 2193 | "shasum": "" 2194 | }, 2195 | "require": { 2196 | "nikic/php-parser": "^4.10", 2197 | "php": ">=8.1" 2198 | }, 2199 | "require-dev": { 2200 | "phpunit/phpunit": "^10.0" 2201 | }, 2202 | "type": "library", 2203 | "extra": { 2204 | "branch-alias": { 2205 | "dev-main": "2.0-dev" 2206 | } 2207 | }, 2208 | "autoload": { 2209 | "classmap": [ 2210 | "src/" 2211 | ] 2212 | }, 2213 | "notification-url": "https://packagist.org/downloads/", 2214 | "license": [ 2215 | "BSD-3-Clause" 2216 | ], 2217 | "authors": [ 2218 | { 2219 | "name": "Sebastian Bergmann", 2220 | "email": "sebastian@phpunit.de", 2221 | "role": "lead" 2222 | } 2223 | ], 2224 | "description": "Library for counting the lines of code in PHP source code", 2225 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2226 | "support": { 2227 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2228 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.0" 2229 | }, 2230 | "funding": [ 2231 | { 2232 | "url": "https://github.com/sebastianbergmann", 2233 | "type": "github" 2234 | } 2235 | ], 2236 | "time": "2023-02-03T07:08:02+00:00" 2237 | }, 2238 | { 2239 | "name": "sebastian/object-enumerator", 2240 | "version": "5.0.0", 2241 | "source": { 2242 | "type": "git", 2243 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2244 | "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" 2245 | }, 2246 | "dist": { 2247 | "type": "zip", 2248 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", 2249 | "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", 2250 | "shasum": "" 2251 | }, 2252 | "require": { 2253 | "php": ">=8.1", 2254 | "sebastian/object-reflector": "^3.0", 2255 | "sebastian/recursion-context": "^5.0" 2256 | }, 2257 | "require-dev": { 2258 | "phpunit/phpunit": "^10.0" 2259 | }, 2260 | "type": "library", 2261 | "extra": { 2262 | "branch-alias": { 2263 | "dev-main": "5.0-dev" 2264 | } 2265 | }, 2266 | "autoload": { 2267 | "classmap": [ 2268 | "src/" 2269 | ] 2270 | }, 2271 | "notification-url": "https://packagist.org/downloads/", 2272 | "license": [ 2273 | "BSD-3-Clause" 2274 | ], 2275 | "authors": [ 2276 | { 2277 | "name": "Sebastian Bergmann", 2278 | "email": "sebastian@phpunit.de" 2279 | } 2280 | ], 2281 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2282 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2283 | "support": { 2284 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2285 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" 2286 | }, 2287 | "funding": [ 2288 | { 2289 | "url": "https://github.com/sebastianbergmann", 2290 | "type": "github" 2291 | } 2292 | ], 2293 | "time": "2023-02-03T07:08:32+00:00" 2294 | }, 2295 | { 2296 | "name": "sebastian/object-reflector", 2297 | "version": "3.0.0", 2298 | "source": { 2299 | "type": "git", 2300 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2301 | "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" 2302 | }, 2303 | "dist": { 2304 | "type": "zip", 2305 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", 2306 | "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", 2307 | "shasum": "" 2308 | }, 2309 | "require": { 2310 | "php": ">=8.1" 2311 | }, 2312 | "require-dev": { 2313 | "phpunit/phpunit": "^10.0" 2314 | }, 2315 | "type": "library", 2316 | "extra": { 2317 | "branch-alias": { 2318 | "dev-main": "3.0-dev" 2319 | } 2320 | }, 2321 | "autoload": { 2322 | "classmap": [ 2323 | "src/" 2324 | ] 2325 | }, 2326 | "notification-url": "https://packagist.org/downloads/", 2327 | "license": [ 2328 | "BSD-3-Clause" 2329 | ], 2330 | "authors": [ 2331 | { 2332 | "name": "Sebastian Bergmann", 2333 | "email": "sebastian@phpunit.de" 2334 | } 2335 | ], 2336 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2337 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2338 | "support": { 2339 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2340 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" 2341 | }, 2342 | "funding": [ 2343 | { 2344 | "url": "https://github.com/sebastianbergmann", 2345 | "type": "github" 2346 | } 2347 | ], 2348 | "time": "2023-02-03T07:06:18+00:00" 2349 | }, 2350 | { 2351 | "name": "sebastian/recursion-context", 2352 | "version": "5.0.0", 2353 | "source": { 2354 | "type": "git", 2355 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2356 | "reference": "05909fb5bc7df4c52992396d0116aed689f93712" 2357 | }, 2358 | "dist": { 2359 | "type": "zip", 2360 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", 2361 | "reference": "05909fb5bc7df4c52992396d0116aed689f93712", 2362 | "shasum": "" 2363 | }, 2364 | "require": { 2365 | "php": ">=8.1" 2366 | }, 2367 | "require-dev": { 2368 | "phpunit/phpunit": "^10.0" 2369 | }, 2370 | "type": "library", 2371 | "extra": { 2372 | "branch-alias": { 2373 | "dev-main": "5.0-dev" 2374 | } 2375 | }, 2376 | "autoload": { 2377 | "classmap": [ 2378 | "src/" 2379 | ] 2380 | }, 2381 | "notification-url": "https://packagist.org/downloads/", 2382 | "license": [ 2383 | "BSD-3-Clause" 2384 | ], 2385 | "authors": [ 2386 | { 2387 | "name": "Sebastian Bergmann", 2388 | "email": "sebastian@phpunit.de" 2389 | }, 2390 | { 2391 | "name": "Jeff Welch", 2392 | "email": "whatthejeff@gmail.com" 2393 | }, 2394 | { 2395 | "name": "Adam Harvey", 2396 | "email": "aharvey@php.net" 2397 | } 2398 | ], 2399 | "description": "Provides functionality to recursively process PHP variables", 2400 | "homepage": "https://github.com/sebastianbergmann/recursion-context", 2401 | "support": { 2402 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2403 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" 2404 | }, 2405 | "funding": [ 2406 | { 2407 | "url": "https://github.com/sebastianbergmann", 2408 | "type": "github" 2409 | } 2410 | ], 2411 | "time": "2023-02-03T07:05:40+00:00" 2412 | }, 2413 | { 2414 | "name": "sebastian/type", 2415 | "version": "4.0.0", 2416 | "source": { 2417 | "type": "git", 2418 | "url": "https://github.com/sebastianbergmann/type.git", 2419 | "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" 2420 | }, 2421 | "dist": { 2422 | "type": "zip", 2423 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", 2424 | "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", 2425 | "shasum": "" 2426 | }, 2427 | "require": { 2428 | "php": ">=8.1" 2429 | }, 2430 | "require-dev": { 2431 | "phpunit/phpunit": "^10.0" 2432 | }, 2433 | "type": "library", 2434 | "extra": { 2435 | "branch-alias": { 2436 | "dev-main": "4.0-dev" 2437 | } 2438 | }, 2439 | "autoload": { 2440 | "classmap": [ 2441 | "src/" 2442 | ] 2443 | }, 2444 | "notification-url": "https://packagist.org/downloads/", 2445 | "license": [ 2446 | "BSD-3-Clause" 2447 | ], 2448 | "authors": [ 2449 | { 2450 | "name": "Sebastian Bergmann", 2451 | "email": "sebastian@phpunit.de", 2452 | "role": "lead" 2453 | } 2454 | ], 2455 | "description": "Collection of value objects that represent the types of the PHP type system", 2456 | "homepage": "https://github.com/sebastianbergmann/type", 2457 | "support": { 2458 | "issues": "https://github.com/sebastianbergmann/type/issues", 2459 | "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" 2460 | }, 2461 | "funding": [ 2462 | { 2463 | "url": "https://github.com/sebastianbergmann", 2464 | "type": "github" 2465 | } 2466 | ], 2467 | "time": "2023-02-03T07:10:45+00:00" 2468 | }, 2469 | { 2470 | "name": "sebastian/version", 2471 | "version": "4.0.1", 2472 | "source": { 2473 | "type": "git", 2474 | "url": "https://github.com/sebastianbergmann/version.git", 2475 | "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" 2476 | }, 2477 | "dist": { 2478 | "type": "zip", 2479 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", 2480 | "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", 2481 | "shasum": "" 2482 | }, 2483 | "require": { 2484 | "php": ">=8.1" 2485 | }, 2486 | "type": "library", 2487 | "extra": { 2488 | "branch-alias": { 2489 | "dev-main": "4.0-dev" 2490 | } 2491 | }, 2492 | "autoload": { 2493 | "classmap": [ 2494 | "src/" 2495 | ] 2496 | }, 2497 | "notification-url": "https://packagist.org/downloads/", 2498 | "license": [ 2499 | "BSD-3-Clause" 2500 | ], 2501 | "authors": [ 2502 | { 2503 | "name": "Sebastian Bergmann", 2504 | "email": "sebastian@phpunit.de", 2505 | "role": "lead" 2506 | } 2507 | ], 2508 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2509 | "homepage": "https://github.com/sebastianbergmann/version", 2510 | "support": { 2511 | "issues": "https://github.com/sebastianbergmann/version/issues", 2512 | "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" 2513 | }, 2514 | "funding": [ 2515 | { 2516 | "url": "https://github.com/sebastianbergmann", 2517 | "type": "github" 2518 | } 2519 | ], 2520 | "time": "2023-02-07T11:34:05+00:00" 2521 | }, 2522 | { 2523 | "name": "squizlabs/php_codesniffer", 2524 | "version": "3.7.2", 2525 | "source": { 2526 | "type": "git", 2527 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 2528 | "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879" 2529 | }, 2530 | "dist": { 2531 | "type": "zip", 2532 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/ed8e00df0a83aa96acf703f8c2979ff33341f879", 2533 | "reference": "ed8e00df0a83aa96acf703f8c2979ff33341f879", 2534 | "shasum": "" 2535 | }, 2536 | "require": { 2537 | "ext-simplexml": "*", 2538 | "ext-tokenizer": "*", 2539 | "ext-xmlwriter": "*", 2540 | "php": ">=5.4.0" 2541 | }, 2542 | "require-dev": { 2543 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 2544 | }, 2545 | "bin": [ 2546 | "bin/phpcs", 2547 | "bin/phpcbf" 2548 | ], 2549 | "type": "library", 2550 | "extra": { 2551 | "branch-alias": { 2552 | "dev-master": "3.x-dev" 2553 | } 2554 | }, 2555 | "notification-url": "https://packagist.org/downloads/", 2556 | "license": [ 2557 | "BSD-3-Clause" 2558 | ], 2559 | "authors": [ 2560 | { 2561 | "name": "Greg Sherwood", 2562 | "role": "lead" 2563 | } 2564 | ], 2565 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 2566 | "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", 2567 | "keywords": [ 2568 | "phpcs", 2569 | "standards", 2570 | "static analysis" 2571 | ], 2572 | "support": { 2573 | "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", 2574 | "source": "https://github.com/squizlabs/PHP_CodeSniffer", 2575 | "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" 2576 | }, 2577 | "time": "2023-02-22T23:07:41+00:00" 2578 | }, 2579 | { 2580 | "name": "theseer/tokenizer", 2581 | "version": "1.2.1", 2582 | "source": { 2583 | "type": "git", 2584 | "url": "https://github.com/theseer/tokenizer.git", 2585 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" 2586 | }, 2587 | "dist": { 2588 | "type": "zip", 2589 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", 2590 | "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", 2591 | "shasum": "" 2592 | }, 2593 | "require": { 2594 | "ext-dom": "*", 2595 | "ext-tokenizer": "*", 2596 | "ext-xmlwriter": "*", 2597 | "php": "^7.2 || ^8.0" 2598 | }, 2599 | "type": "library", 2600 | "autoload": { 2601 | "classmap": [ 2602 | "src/" 2603 | ] 2604 | }, 2605 | "notification-url": "https://packagist.org/downloads/", 2606 | "license": [ 2607 | "BSD-3-Clause" 2608 | ], 2609 | "authors": [ 2610 | { 2611 | "name": "Arne Blankerts", 2612 | "email": "arne@blankerts.de", 2613 | "role": "Developer" 2614 | } 2615 | ], 2616 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2617 | "support": { 2618 | "issues": "https://github.com/theseer/tokenizer/issues", 2619 | "source": "https://github.com/theseer/tokenizer/tree/1.2.1" 2620 | }, 2621 | "funding": [ 2622 | { 2623 | "url": "https://github.com/theseer", 2624 | "type": "github" 2625 | } 2626 | ], 2627 | "time": "2021-07-28T10:34:58+00:00" 2628 | } 2629 | ], 2630 | "aliases": [], 2631 | "minimum-stability": "stable", 2632 | "stability-flags": [], 2633 | "prefer-stable": false, 2634 | "prefer-lowest": false, 2635 | "platform": { 2636 | "php": ">=8.2" 2637 | }, 2638 | "platform-dev": [], 2639 | "plugin-api-version": "2.3.0" 2640 | } 2641 | -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: '3' 2 | services: 3 | app: 4 | build: .docker 5 | container_name: felicio 6 | volumes: 7 | - .:/var/www/app 8 | - ".docker/xdebug.ini:/usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini" 9 | tty: true 10 | -------------------------------------------------------------------------------- /phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ^/tests/* 12 | 13 | src 14 | 15 | 16 | -------------------------------------------------------------------------------- /phpunit.xml.dist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | ./tests/ 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | ./src/ 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /src/Contracts/FelicioContract.php: -------------------------------------------------------------------------------- 1 | load($felicioDotFile); 23 | 24 | $credentials = new Credentials( 25 | $_ENV['AWS_SQS_ACCESS_KEY'], 26 | $_ENV['AWS_SQS_SECRET_KEY'] 27 | ); 28 | 29 | $configs = [ 30 | 'credentials' => $credentials, 31 | 'region' => $_ENV['AWS_SQS_REGION'], 32 | 'version' => $_ENV['AWS_SQS_API_VERSION'], 33 | ]; 34 | 35 | $sdk = new Sdk($configs); 36 | 37 | $this->felicioClient = $sdk->createSqs(); 38 | } 39 | 40 | public function sendMessage(array $params): string 41 | { 42 | try { 43 | return (string)$this->felicioClient->sendMessage($params)->get('MessageId'); 44 | } catch (AwsException $e) { 45 | throw new AwsException(); 46 | } 47 | } 48 | 49 | public function receiveMessage(array $params): ?array 50 | { 51 | try { 52 | return $this->felicioClient->receiveMessage($params)->get('Messages'); 53 | } catch (AwsException $e) { 54 | throw new AwsException(); 55 | } 56 | } 57 | 58 | public function deleteMessage(array $params): Result 59 | { 60 | try { 61 | return $this->felicioClient->deleteMessage($params); 62 | } catch (AwsException $e) { 63 | throw new AwsException(); 64 | } 65 | } 66 | 67 | public function countMessages($queue): int 68 | { 69 | $response = $this->felicioClient->getQueueAttributes( 70 | [ 71 | 'QueueUrl' => $queue, 72 | 'AttributeNames' => ['ApproximateNumberOfMessages'], 73 | ] 74 | ); 75 | 76 | $attributes = $response->get('Attributes'); 77 | 78 | return (int)$attributes['ApproximateNumberOfMessages']; 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /tests/FelicioTest.php: -------------------------------------------------------------------------------- 1 | instance = new Felicio(__DIR__ . '/../.felicio'); 18 | } 19 | 20 | /** @test */ 21 | public function sendStandardMessageWithoutRequiredParameters(): void 22 | { 23 | $this->expectException(ArgumentCountError::class); 24 | 25 | $params = [ 26 | 'QueueUrl' => '', 27 | 'MessageBody' => '' 28 | ]; 29 | 30 | $this->instance->sendMessage($params); 31 | } 32 | 33 | /** @test */ 34 | public function sendStandardMessage(): void 35 | { 36 | $params = [ 37 | 'QueueUrl' => '', 38 | 'MessageBody' => 'Message 001' 39 | ]; 40 | 41 | $this->assertIsString($this->instance->sendMessage($params)); 42 | } 43 | 44 | /** @test */ 45 | public function sendFifoMessage(): void 46 | { 47 | $params = [ 48 | 'QueueUrl' => '.fifo', //required 49 | 'MessageBody' => 'Message 001', 50 | 'MessageDeduplicationId' => 'acac6e8f4ec9f44abc445945e76bf209', 51 | 'MessageGroupId' => '2fe6a413d02e3adef70256a36bf3b969', 52 | ]; 53 | 54 | $this->assertIsString($this->instance->sendMessage($params)); 55 | } 56 | 57 | /** @test */ 58 | public function receiveMessage(): void 59 | { 60 | $params = [ 61 | 'AttributeNames' => ['SentTimestamp'], 62 | 'MaxNumberOfMessages' => 1, 63 | 'MessageAttributeNames' => ['All'], 64 | 'QueueUrl' => '', //required 65 | 'WaitTimeSeconds' => 0, 66 | ]; 67 | 68 | $this->assertIsArray($this->instance->receiveMessage($params)); 69 | } 70 | 71 | /** @test */ 72 | public function deleteMessage(): void 73 | { 74 | $params = [ 75 | 'QueueUrl' => '', //required 76 | 'ReceiptHandle' => '', //required 77 | ]; 78 | 79 | $this->assertIsObject($this->instance->deleteMessage($params)); 80 | } 81 | 82 | /** @test */ 83 | public function deleteMessageWithoutParameters(): void 84 | { 85 | $this->expectException(ArgumentCountError::class); 86 | 87 | $params = [ 88 | 'QueueUrl' => '', 89 | 'ReceiptHandle' => '', 90 | ]; 91 | 92 | $this->instance->deleteMessage($params); 93 | } 94 | 95 | /** @test */ 96 | public function ifExistsMessage(): void 97 | { 98 | $queueUrl = ''; //required 99 | 100 | $this->assertGreaterThan(0, $this->instance->countMessages($queueUrl)); 101 | } 102 | } --------------------------------------------------------------------------------