├── assets └── logo.png ├── .gitignore ├── lib └── Vpos.php ├── composer.json ├── .github └── workflows │ └── php.yml ├── README.md ├── src └── Vpos.php ├── tests └── VposTest.php └── composer.lock /assets/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/v-pos/vpos-php/HEAD/assets/logo.png -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | /.settings 3 | /.project 4 | /.buildpath 5 | /composer.phar 6 | /vendor/ 7 | /nbproject 8 | phpunit.xml 9 | .vagrant 10 | Vagrantfile 11 | .idea 12 | .php_cs.cache 13 | .vendor 14 | -------------------------------------------------------------------------------- /lib/Vpos.php: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vpos/vpos", 3 | "description": "Payments made easy", 4 | "type": "library", 5 | "keywords": 6 | ["vpos", 7 | "emis", 8 | "payments", 9 | "angola", 10 | "multicaixa", 11 | "online" 12 | ], 13 | "homepage": "https://github.com/v-pos/vpos-php", 14 | "require": { 15 | "php": "^8", 16 | "phpunit/phpunit": "^9.5", 17 | "ramsey/uuid": "^4.1", 18 | "guzzlehttp/guzzle": "^7.2.0" 19 | }, 20 | "minimum-stability": "dev", 21 | "license": "MIT", 22 | "authors": [ 23 | { 24 | "name": "Alexandre Antonio Juca", 25 | "email": "alexandre.juca@nextbss.co.ao", 26 | "role": "Developer" 27 | }, 28 | { 29 | "name": "Sergio Maziano", 30 | "email": "sergio.maziano@vpos.ao", 31 | "role": "Developer" 32 | } 33 | ], 34 | "autoload": { 35 | "psr-4": { 36 | "Vpos\\Vpos\\": "src/" 37 | } 38 | }, 39 | "support": { 40 | "email": "suporte@vpos.ao" 41 | }, 42 | "autoload-dev": { 43 | "psr-4": { 44 | "Vpos\\VposTest\\": "tests/" 45 | } 46 | }, 47 | "scripts": { 48 | "test": ["vendor/bin/phpunit tests"] 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /.github/workflows/php.yml: -------------------------------------------------------------------------------- 1 | name: PHP Composer 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | 12 | runs-on: ubuntu-latest 13 | 14 | steps: 15 | - uses: actions/checkout@v2 16 | 17 | - name: Validate composer.json and composer.lock 18 | run: composer validate 19 | 20 | - name: Cache Composer packages 21 | id: composer-cache 22 | uses: actions/cache@v2 23 | with: 24 | path: vendor 25 | key: ${{ runner.os }}-php-${{ hashFiles('**/composer.lock') }} 26 | restore-keys: | 27 | ${{ runner.os }}-php- 28 | 29 | - name: Install dependencies 30 | if: steps.composer-cache.outputs.cache-hit != 'true' 31 | run: composer install --prefer-dist --no-progress --no-suggest 32 | 33 | # Add a test script to composer.json, for instance: "test": "vendor/bin/phpunit" 34 | # Docs: https://getcomposer.org/doc/articles/scripts.md 35 | 36 | - name: Run test suite 37 | run: composer run-script test 38 | env: 39 | MERCHANT_VPOS_TOKEN: ${{ secrets.MERCHANT_VPOS_TOKEN }} 40 | GPO_POS_ID: ${{ secrets.GPO_POS_ID }} 41 | GPO_SUPERVISOR_CARD: ${{ secrets.GPO_SUPERVISOR_CARD }} 42 | PAYMENT_CALLBACK_URL: ${{ secrets.PAYMENT_CALLBACK_URL }} 43 | REFUND_CALLBACK_URL: ${{ secrets.REFUND_CALLBACK_URL }} 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # vPOS PHP 2 | 3 |

vPOS

4 | 5 | [![](https://img.shields.io/badge/vPOS-OpenSource-blue.svg)](https://www.vpos.ao) 6 | 7 | This php library helps you easily interact with the vPOS API, 8 | Allowing merchants apps/services to request a payment from a client through his/her mobile phone number. 9 | 10 | The service currently works for solutions listed below: 11 | 12 | EMIS - GPO (Multicaixa Express) 13 | 14 | Want to know more about how we are empowering merchants in Angola? See our [website](https://vpos.ao) 15 | 16 | ### Features 17 | - Simple interface 18 | - Uniform plain old objects are returned by all official libraries, so you don't have 19 | to serialize/deserialize the JSON returned by our API. 20 | 21 | ### Documentation 22 | Does interacting directly with our API service sound better to you? 23 | See our documentation on [developer.vpos.ao](https://developer.vpos.ao) 24 | 25 | ## Installation 26 | ```php 27 | compose require vpos/vpos 28 | ``` 29 | 30 | ### Configuration 31 | This php library requires you set up the following environment variables on your machine before 32 | interacting with the API using this library: 33 | 34 | | Variable | Description | Required | 35 | | --- | --- | --- | 36 | | `GPO_POS_ID` | The Point of Sale ID provided by EMIS | true | 37 | | `GPO_SUPERVISOR_CARD` | The Supervisor card ID provided by EMIS | true | 38 | | `MERCHANT_VPOS_TOKEN` | The API token provided by vPOS | true | 39 | | `PAYMENT_CALLBACK_URL` | The URL that will handle payment notifications | false | 40 | | `REFUND_CALLBACK_URL` | The URL that will handle refund notifications | false | 41 | 42 | Don't have this information? [Talk to us](suporte@vpos.ao) 43 | 44 | Given you have set up all the environment variables above with the correct information, you will now 45 | be able to authenticate and communicate effectively with our API using this library. 46 | 47 | The next section will show the various payment actions that can be performed by you, the merchant. 48 | 49 | ### How to instantiate vPOS 50 | To create an instance of a vPOS merchant see argument table and a simple example below. 51 | 52 | #### Constructor Arguments 53 | 54 | | Argument | Description | Type | 55 | | --- | --- | --- | 56 | | `token` | Token generated at [vPOS](https://merchant.vpos.ao) dashboard | `string` 57 | | `pos_id` | Merchant POS ID provided by EMIS | `string` 58 | | `supervisor_card` | Merchant Supervisor Card number provided by EMIS | `string` 59 | | `payment_callback_url` | Merchant application JSON endpoint to accept the callback payment response | `string` 60 | | `refund_callback_url` | Merchant application JSON endpoint to accept the callback refund response | `string` 61 | 62 | #### Example 63 | 64 | ```php 65 | $token = "YOUR VPOS TOKEN"; 66 | $pos_id = "YOUR GPO POS ID"; 67 | $payment_callback_url = "YOUR PAYMENT CALLBACK URL"; 68 | $refund_callback_url = "YOUR REFUND CALLBACK URL"; 69 | $supervisor_card = "YOUR GPO SUPERVISOR CARD"; 70 | 71 | $merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card); 72 | ``` 73 | 74 | ### Get a specific Transaction 75 | Retrieves a transaction given a valid transaction ID. 76 | 77 | ```php 78 | use Vpos\Vpos\Vpos; 79 | 80 | $merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card); 81 | $transaction = $merchant->getTransaction("9kOmKYUWxN0Jpe4PBoXzE"); 82 | ``` 83 | 84 | | Argument | Description | Type | 85 | | --- | --- | --- | 86 | | `id` | An existing Transaction ID | `string` 87 | 88 | ### New Payment Transaction 89 | Creates a new payment transaction given a valid mobile number associated with a `MULTICAIXA` account 90 | and a valid amount. 91 | 92 | ```php 93 | use Vpos\Vpos\Vpos; 94 | 95 | $merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card); 96 | $payment = $merchant->newPayment(customer: "925889553", amount: "112.58"); 97 | ``` 98 | 99 | | Argument | Description | Type | 100 | | --- | --- | --- | 101 | | `mobile` | The mobile number of the client who will pay | `string` 102 | | `amount` | The amount the client should pay, eg. "259.99", "259000.00" | `string` 103 | 104 | ### Request Refund 105 | Given an existing `parent_transaction_id`, request a refund. 106 | 107 | ```php 108 | use Vpos\Vpos\Vpos; 109 | 110 | $merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card); 111 | refund = $merchant->newRefund(id: "9kOmKYUWxN0Jpe4PBoXzE"); 112 | ``` 113 | 114 | | Argument | Description | Type | 115 | | --- | --- | --- | 116 | | `id` | The ID of transaction you wish to refund | `string` 117 | 118 | ### Poll Transaction Status 119 | Poll the status of a transaction given a valid `request_id`. 120 | 121 | Note: The `request_id` or simply `id` in this context is essentially the `transaction_id` of an existing request. 122 | 123 | ```php 124 | use Vpos\Vpos\Vpos; 125 | 126 | $merchant = new Vpos($token, $pos_id, $payment_callback_url, $refund_callback_url, $supervisor_card); 127 | $request = $merchant->getRequest(id: "9kOmKYUWxN0Jpe4PBoXzE"); 128 | ``` 129 | 130 | | Argument | Description | Type | 131 | | --- | --- | --- | 132 | | `request_id` | The ID of transaction you wish to poll | `string` 133 | 134 | ### Have any doubts? 135 | In case of any doubts, bugs, or the like, please leave an issue. We would love to help. 136 | 137 | License 138 | ---------------- 139 | 140 | The library is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT). -------------------------------------------------------------------------------- /src/Vpos.php: -------------------------------------------------------------------------------- 1 | host = $this->getHost(); 25 | $this->pos_id = (int) $pos_id; 26 | $this->refund_callback_url = $refund_callback_url; 27 | $this->payment_callback_url = $payment_callback_url; 28 | $this->supervisor_card = $supervisor_card; 29 | $this->token = "Bearer " . $token; 30 | $this->client = new Client(); 31 | } 32 | 33 | #[Pure] private function getHost(): string 34 | { 35 | return "https://vpos.ao/api/v1"; 36 | } 37 | 38 | #[ArrayShape(['http_errors' => "false", 1 => "false[]", 'headers' => "array"])] private function setDefaultRequestOptions(): array 39 | { 40 | return [ 41 | 'http_errors' => false, 42 | ['allow_redirects' => false], 43 | 'headers' => [ 44 | 'Authorization' => $this->token, 45 | 'Content-Type' => 'application/json', 46 | 'Accept' => 'application/json'] 47 | ]; 48 | } 49 | 50 | private function returnVposObject($response): array 51 | { 52 | return match ($response->getStatusCode()) { 53 | 200 => [ 54 | 'status_code' => $response->getStatusCode(), 55 | 'message' => $response->getReasonPhrase(), 56 | 'data' => $response->getBody()->getContents() 57 | ], 58 | 202 => [ 59 | 'status_code' => $response->getStatusCode(), 60 | 'message' => $response->getReasonPhrase(), 61 | 'location' => $response->getHeader('Location')[0] 62 | ], 63 | default => [ 64 | 'status_code' => $response->getStatusCode(), 65 | 'message' => $response->getReasonPhrase(), 66 | 'details' => $response->getBody()->getContents() 67 | ], 68 | }; 69 | } 70 | 71 | public function getTransaction($id): array 72 | { 73 | $response = $this->client->request( 74 | "GET", 75 | $this->host . "/transactions/" . $id, 76 | $this->setDefaultRequestOptions() 77 | ); 78 | return $this->returnVposObject($response); 79 | } 80 | 81 | public function newPayment($customer, $amount): array 82 | { 83 | $options = $this->setRequestOptionsForPayment( 84 | customer: $customer, 85 | amount: $amount, 86 | transaction_type: "payment" 87 | ); 88 | $response = $this->client->request( 89 | method: "POST", 90 | uri: $this->host . "/transactions", 91 | options: $options 92 | ); 93 | return $this->returnVposObject($response); 94 | } 95 | 96 | #[ArrayShape(['http_errors' => "false", 1 => "false[]", 'json' => "array", 'headers' => "array"])] private function setRequestOptionsForPayment($customer, $amount, $transaction_type): array 97 | { 98 | return [ 99 | 'http_errors' => false, 100 | ['allow_redirects' => false], 101 | 'json' => [ 102 | 'type' => $transaction_type, 103 | 'pos_id' => $this->pos_id, 104 | 'mobile' => $customer, 105 | 'amount' => $amount, 106 | 'callback_url' => $this->payment_callback_url 107 | ], 108 | 'headers' => [ 109 | 'Idempotency-Key' => Uuid::uuid4()->toString(), 110 | 'Authorization' => $this->token, 111 | 'Content-Type' => 'application/json', 112 | 'Accept' => 'application/json' 113 | ] 114 | ]; 115 | } 116 | 117 | public function newRefund($id): array 118 | { 119 | $options = $this->setRequestOptionsForRefund( 120 | transaction_id: $id, 121 | transaction_type: "refund" 122 | ); 123 | $response = $this->client->request( 124 | "POST", 125 | $this->host . "/transactions", 126 | $options 127 | ); 128 | return $this->returnVposObject($response); 129 | } 130 | 131 | #[ArrayShape(['http_errors' => "false", 1 => "false[]", 'json' => "array", 'headers' => "array"])] private function setRequestOptionsForRefund($transaction_id, $transaction_type): array 132 | { 133 | return [ 134 | 'http_errors' => false, 135 | ['allow_redirects' => false], 136 | 'json' => [ 137 | 'type' => $transaction_type, 138 | 'parent_transaction_id' => $transaction_id, 139 | 'supervisor_card' => $this->supervisor_card, 140 | 'callback_url' => $this->refund_callback_url 141 | ], 142 | 'headers' => [ 143 | 'Idempotency-Key' => Uuid::uuid4()->toString(), 144 | 'Authorization' => $this->token, 145 | 'Content-Type' => 'application/json', 146 | 'Accept' => 'application/json' 147 | ] 148 | ]; 149 | } 150 | 151 | public function getRequest($id): array 152 | { 153 | $options = $this->setDefaultRequestOptions(); 154 | $response = $this->client->request( 155 | "GET", 156 | $this->host . "/requests/" . $id, 157 | $options 158 | ); 159 | return $this->returnVposObject($response); 160 | } 161 | 162 | #[Pure] public function getRequestId($response): string 163 | { 164 | if ($response['status_code'] == 202) { 165 | return substr($response['location'], self::LOCATION); 166 | } 167 | return substr($response['location'], self::LOCATION); 168 | } 169 | 170 | public function setToken($token): void 171 | { 172 | $this->token = "Bearer ". $token; 173 | } 174 | } 175 | 176 | -------------------------------------------------------------------------------- /tests/VposTest.php: -------------------------------------------------------------------------------- 1 | getTransaction(id: "9kOmKYUWxN0Jpe4PBoXzE"); 22 | $this->assertIsArray($transaction); 23 | $this->assertEquals(404, $transaction['status_code']); 24 | $this->assertEquals('Not Found', $transaction['message']); 25 | } 26 | 27 | public function testItShouldNotGetTransactionByIdIfTokenIsInvalid() 28 | { 29 | $token = getenv("MERCHANT_VPOS_TOKEN"); 30 | $pos_id = getenv("GPO_POS_ID"); 31 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 32 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 33 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 34 | 35 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 36 | $merchant->setToken("invalid-token"); 37 | $transaction = $merchant->getTransaction(id: "9kOmKYUWxN0Jpe4PBoXzE"); 38 | $this->assertIsArray($transaction); 39 | $this->assertEquals(401, $transaction['status_code']); 40 | $this->assertEquals('Unauthorized', $transaction['message']); 41 | } 42 | 43 | // New Payment 44 | public function testItShouldNotPerformPaymentIfTokenIsInvalid() 45 | { 46 | $token = getenv("MERCHANT_VPOS_TOKEN"); 47 | $pos_id = getenv("GPO_POS_ID"); 48 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 49 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 50 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 51 | 52 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 53 | $merchant->setToken("invalid-token"); 54 | $transaction = $merchant->newPayment(customer: "92588855", amount: "1912.58"); 55 | $this->assertIsArray($transaction); 56 | $this->assertEquals(401, $transaction['status_code']); 57 | $this->assertEquals('Unauthorized', $transaction['message']); 58 | } 59 | 60 | public function testItShouldNotPerformPaymentIfAmountIsInvalid() 61 | { 62 | $token = getenv("MERCHANT_VPOS_TOKEN"); 63 | $pos_id = getenv("GPO_POS_ID"); 64 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 65 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 66 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 67 | 68 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 69 | $transaction = $merchant->newPayment(customer: "92588855", amount: "invalid"); 70 | $this->assertIsArray($transaction); 71 | $this->assertEquals(400, $transaction['status_code']); 72 | $this->assertEquals('Bad Request', $transaction['message']); 73 | } 74 | 75 | public function testItShouldNotPerformPaymentIfCustomerIsInvalid() 76 | { 77 | $token = getenv("MERCHANT_VPOS_TOKEN"); 78 | $pos_id = getenv("GPO_POS_ID"); 79 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 80 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 81 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 82 | 83 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 84 | $transaction = $merchant->newPayment(customer: "invalid", amount: "1900.99"); 85 | $this->assertIsArray($transaction); 86 | $this->assertEquals(400, $transaction['status_code']); 87 | $this->assertEquals('Bad Request', $transaction['message']); 88 | } 89 | 90 | public function testItShouldPerformPayment() 91 | { 92 | $token = getenv("MERCHANT_VPOS_TOKEN"); 93 | $pos_id = getenv("GPO_POS_ID"); 94 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 95 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 96 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 97 | 98 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 99 | $payment = $merchant->newPayment(customer: "925888553", amount: "112.58"); 100 | $this->assertIsArray($payment); 101 | $this->assertEquals(202, $payment['status_code']); 102 | $this->assertEquals('Accepted', $payment['message']); 103 | $this->assertNotFalse('', $payment['location']); 104 | } 105 | 106 | // New Refund 107 | public function testItShouldNotPerformRefundIfTokenIsInvalid() 108 | { 109 | $token = getenv("MERCHANT_VPOS_TOKEN"); 110 | $pos_id = getenv("GPO_POS_ID"); 111 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 112 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 113 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 114 | 115 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 116 | $merchant->setToken("invalid-token"); 117 | $transaction = $merchant->newRefund(id: "non-existent-transaction-id"); 118 | $this->assertIsArray($transaction); 119 | $this->assertEquals(401, $transaction['status_code']); 120 | $this->assertEquals('Unauthorized', $transaction['message']); 121 | } 122 | 123 | public function testItShouldNotPerformRefundIfIdDoesNotExist() 124 | { 125 | $token = getenv("MERCHANT_VPOS_TOKEN"); 126 | $pos_id = getenv("GPO_POS_ID"); 127 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 128 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 129 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 130 | 131 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 132 | $transaction = $merchant->newRefund(id: "non-existent-transaction-id"); 133 | $this->assertIsArray($transaction); 134 | $this->assertEquals(202, $transaction['status_code']); 135 | $this->assertEquals('Accepted', $transaction['message']); 136 | } 137 | 138 | // Poll Resource 139 | public function testItShouldNotGetRequestByIdIfTokenIsInvalid() 140 | { 141 | $token = getenv("MERCHANT_VPOS_TOKEN"); 142 | $pos_id = getenv("GPO_POS_ID"); 143 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 144 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 145 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 146 | 147 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 148 | $merchant->setToken("invalid-token"); 149 | $request = $merchant->getRequest(id: "9kOmKYUWxN0Jpe4PBoXzE"); 150 | $this->assertIsArray($request); 151 | $this->assertEquals(401, $request['status_code']); 152 | $this->assertEquals('Unauthorized', $request['message']); 153 | } 154 | 155 | public function testItShouldGetRequestById() 156 | { 157 | $token = getenv("MERCHANT_VPOS_TOKEN"); 158 | $pos_id = getenv("GPO_POS_ID"); 159 | $supervisor_card = getenv("GPO_SUPERVISOR_CARD"); 160 | $payment_callback_url = getenv("PAYMENT_CALLBACK_URL"); 161 | $refund_callback_url = getenv("REFUND_CALLBACK_URL"); 162 | 163 | $merchant = new Vpos($token, $pos_id, $supervisor_card, $payment_callback_url, $refund_callback_url); 164 | 165 | $payment = $merchant->newPayment(customer: "925888553", amount: "112.58"); 166 | 167 | $id = $merchant->getRequestId($payment); 168 | 169 | $request = $merchant->getRequest(id: $id); 170 | $this->assertIsArray($request); 171 | $this->assertEquals(200, $request['status_code']); 172 | $this->assertEquals('OK', $request['message']); 173 | $this->assertNotEmpty($request['data']); 174 | } 175 | } 176 | -------------------------------------------------------------------------------- /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": "84d5f1d5df5543b95955b3bfd0c0b822", 8 | "packages": [ 9 | { 10 | "name": "brick/math", 11 | "version": "0.9.2", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/brick/math.git", 15 | "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/brick/math/zipball/dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", 20 | "reference": "dff976c2f3487d42c1db75a3b180e2b9f0e72ce0", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "ext-json": "*", 25 | "php": "^7.1 || ^8.0" 26 | }, 27 | "require-dev": { 28 | "php-coveralls/php-coveralls": "^2.2", 29 | "phpunit/phpunit": "^7.5.15 || ^8.5 || ^9.0", 30 | "vimeo/psalm": "4.3.2" 31 | }, 32 | "type": "library", 33 | "autoload": { 34 | "psr-4": { 35 | "Brick\\Math\\": "src/" 36 | } 37 | }, 38 | "notification-url": "https://packagist.org/downloads/", 39 | "license": [ 40 | "MIT" 41 | ], 42 | "description": "Arbitrary-precision arithmetic library", 43 | "keywords": [ 44 | "Arbitrary-precision", 45 | "BigInteger", 46 | "BigRational", 47 | "arithmetic", 48 | "bigdecimal", 49 | "bignum", 50 | "brick", 51 | "math" 52 | ], 53 | "support": { 54 | "issues": "https://github.com/brick/math/issues", 55 | "source": "https://github.com/brick/math/tree/0.9.2" 56 | }, 57 | "funding": [ 58 | { 59 | "url": "https://tidelift.com/funding/github/packagist/brick/math", 60 | "type": "tidelift" 61 | } 62 | ], 63 | "time": "2021-01-20T22:51:39+00:00" 64 | }, 65 | { 66 | "name": "doctrine/instantiator", 67 | "version": "1.5.x-dev", 68 | "source": { 69 | "type": "git", 70 | "url": "https://github.com/doctrine/instantiator.git", 71 | "reference": "6410c4b8352cb64218641457cef64997e6b784fb" 72 | }, 73 | "dist": { 74 | "type": "zip", 75 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/6410c4b8352cb64218641457cef64997e6b784fb", 76 | "reference": "6410c4b8352cb64218641457cef64997e6b784fb", 77 | "shasum": "" 78 | }, 79 | "require": { 80 | "php": "^7.1 || ^8.0" 81 | }, 82 | "require-dev": { 83 | "doctrine/coding-standard": "^8.0", 84 | "ext-pdo": "*", 85 | "ext-phar": "*", 86 | "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", 87 | "phpstan/phpstan": "^0.12", 88 | "phpstan/phpstan-phpunit": "^0.12", 89 | "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" 90 | }, 91 | "type": "library", 92 | "autoload": { 93 | "psr-4": { 94 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 95 | } 96 | }, 97 | "notification-url": "https://packagist.org/downloads/", 98 | "license": [ 99 | "MIT" 100 | ], 101 | "authors": [ 102 | { 103 | "name": "Marco Pivetta", 104 | "email": "ocramius@gmail.com", 105 | "homepage": "https://ocramius.github.io/" 106 | } 107 | ], 108 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 109 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 110 | "keywords": [ 111 | "constructor", 112 | "instantiate" 113 | ], 114 | "support": { 115 | "issues": "https://github.com/doctrine/instantiator/issues", 116 | "source": "https://github.com/doctrine/instantiator/tree/1.4.x" 117 | }, 118 | "funding": [ 119 | { 120 | "url": "https://www.doctrine-project.org/sponsorship.html", 121 | "type": "custom" 122 | }, 123 | { 124 | "url": "https://www.patreon.com/phpdoctrine", 125 | "type": "patreon" 126 | }, 127 | { 128 | "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", 129 | "type": "tidelift" 130 | } 131 | ], 132 | "time": "2020-11-10T19:05:51+00:00" 133 | }, 134 | { 135 | "name": "guzzlehttp/guzzle", 136 | "version": "7.2.0", 137 | "source": { 138 | "type": "git", 139 | "url": "https://github.com/guzzle/guzzle.git", 140 | "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79" 141 | }, 142 | "dist": { 143 | "type": "zip", 144 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/0aa74dfb41ae110835923ef10a9d803a22d50e79", 145 | "reference": "0aa74dfb41ae110835923ef10a9d803a22d50e79", 146 | "shasum": "" 147 | }, 148 | "require": { 149 | "ext-json": "*", 150 | "guzzlehttp/promises": "^1.4", 151 | "guzzlehttp/psr7": "^1.7", 152 | "php": "^7.2.5 || ^8.0", 153 | "psr/http-client": "^1.0" 154 | }, 155 | "provide": { 156 | "psr/http-client-implementation": "1.0" 157 | }, 158 | "require-dev": { 159 | "ext-curl": "*", 160 | "php-http/client-integration-tests": "^3.0", 161 | "phpunit/phpunit": "^8.5.5 || ^9.3.5", 162 | "psr/log": "^1.1" 163 | }, 164 | "suggest": { 165 | "ext-curl": "Required for CURL handler support", 166 | "ext-intl": "Required for Internationalized Domain Name (IDN) support", 167 | "psr/log": "Required for using the Log middleware" 168 | }, 169 | "type": "library", 170 | "extra": { 171 | "branch-alias": { 172 | "dev-master": "7.1-dev" 173 | } 174 | }, 175 | "autoload": { 176 | "psr-4": { 177 | "GuzzleHttp\\": "src/" 178 | }, 179 | "files": [ 180 | "src/functions_include.php" 181 | ] 182 | }, 183 | "notification-url": "https://packagist.org/downloads/", 184 | "license": [ 185 | "MIT" 186 | ], 187 | "authors": [ 188 | { 189 | "name": "Michael Dowling", 190 | "email": "mtdowling@gmail.com", 191 | "homepage": "https://github.com/mtdowling" 192 | }, 193 | { 194 | "name": "Márk Sági-Kazár", 195 | "email": "mark.sagikazar@gmail.com", 196 | "homepage": "https://sagikazarmark.hu" 197 | } 198 | ], 199 | "description": "Guzzle is a PHP HTTP client library", 200 | "homepage": "http://guzzlephp.org/", 201 | "keywords": [ 202 | "client", 203 | "curl", 204 | "framework", 205 | "http", 206 | "http client", 207 | "psr-18", 208 | "psr-7", 209 | "rest", 210 | "web service" 211 | ], 212 | "support": { 213 | "issues": "https://github.com/guzzle/guzzle/issues", 214 | "source": "https://github.com/guzzle/guzzle/tree/7.2.0" 215 | }, 216 | "funding": [ 217 | { 218 | "url": "https://github.com/GrahamCampbell", 219 | "type": "github" 220 | }, 221 | { 222 | "url": "https://github.com/Nyholm", 223 | "type": "github" 224 | }, 225 | { 226 | "url": "https://github.com/alexeyshockov", 227 | "type": "github" 228 | }, 229 | { 230 | "url": "https://github.com/gmponos", 231 | "type": "github" 232 | } 233 | ], 234 | "time": "2020-10-10T11:47:56+00:00" 235 | }, 236 | { 237 | "name": "guzzlehttp/promises", 238 | "version": "dev-master", 239 | "source": { 240 | "type": "git", 241 | "url": "https://github.com/guzzle/promises.git", 242 | "reference": "ddfeedfff2a52661429437da0702979f708e6ac6" 243 | }, 244 | "dist": { 245 | "type": "zip", 246 | "url": "https://api.github.com/repos/guzzle/promises/zipball/ddfeedfff2a52661429437da0702979f708e6ac6", 247 | "reference": "ddfeedfff2a52661429437da0702979f708e6ac6", 248 | "shasum": "" 249 | }, 250 | "require": { 251 | "php": ">=5.5" 252 | }, 253 | "require-dev": { 254 | "symfony/phpunit-bridge": "^4.4 || ^5.1" 255 | }, 256 | "default-branch": true, 257 | "type": "library", 258 | "extra": { 259 | "branch-alias": { 260 | "dev-master": "1.4-dev" 261 | } 262 | }, 263 | "autoload": { 264 | "psr-4": { 265 | "GuzzleHttp\\Promise\\": "src/" 266 | }, 267 | "files": [ 268 | "src/functions_include.php" 269 | ] 270 | }, 271 | "notification-url": "https://packagist.org/downloads/", 272 | "license": [ 273 | "MIT" 274 | ], 275 | "authors": [ 276 | { 277 | "name": "Michael Dowling", 278 | "email": "mtdowling@gmail.com", 279 | "homepage": "https://github.com/mtdowling" 280 | } 281 | ], 282 | "description": "Guzzle promises library", 283 | "keywords": [ 284 | "promise" 285 | ], 286 | "support": { 287 | "issues": "https://github.com/guzzle/promises/issues", 288 | "source": "https://github.com/guzzle/promises/tree/master" 289 | }, 290 | "time": "2020-10-19T16:50:15+00:00" 291 | }, 292 | { 293 | "name": "guzzlehttp/psr7", 294 | "version": "1.x-dev", 295 | "source": { 296 | "type": "git", 297 | "url": "https://github.com/guzzle/psr7.git", 298 | "reference": "f47ece9e6e8ce74e3be04bef47f46061dc18c095" 299 | }, 300 | "dist": { 301 | "type": "zip", 302 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f47ece9e6e8ce74e3be04bef47f46061dc18c095", 303 | "reference": "f47ece9e6e8ce74e3be04bef47f46061dc18c095", 304 | "shasum": "" 305 | }, 306 | "require": { 307 | "php": ">=5.4.0", 308 | "psr/http-message": "~1.0", 309 | "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" 310 | }, 311 | "provide": { 312 | "psr/http-message-implementation": "1.0" 313 | }, 314 | "require-dev": { 315 | "ext-zlib": "*", 316 | "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" 317 | }, 318 | "suggest": { 319 | "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" 320 | }, 321 | "type": "library", 322 | "extra": { 323 | "branch-alias": { 324 | "dev-master": "1.7-dev" 325 | } 326 | }, 327 | "autoload": { 328 | "psr-4": { 329 | "GuzzleHttp\\Psr7\\": "src/" 330 | }, 331 | "files": [ 332 | "src/functions_include.php" 333 | ] 334 | }, 335 | "notification-url": "https://packagist.org/downloads/", 336 | "license": [ 337 | "MIT" 338 | ], 339 | "authors": [ 340 | { 341 | "name": "Michael Dowling", 342 | "email": "mtdowling@gmail.com", 343 | "homepage": "https://github.com/mtdowling" 344 | }, 345 | { 346 | "name": "Tobias Schultze", 347 | "homepage": "https://github.com/Tobion" 348 | } 349 | ], 350 | "description": "PSR-7 message implementation that also provides common utility methods", 351 | "keywords": [ 352 | "http", 353 | "message", 354 | "psr-7", 355 | "request", 356 | "response", 357 | "stream", 358 | "uri", 359 | "url" 360 | ], 361 | "support": { 362 | "issues": "https://github.com/guzzle/psr7/issues", 363 | "source": "https://github.com/guzzle/psr7/tree/1.x" 364 | }, 365 | "time": "2020-12-08T11:45:39+00:00" 366 | }, 367 | { 368 | "name": "myclabs/deep-copy", 369 | "version": "1.x-dev", 370 | "source": { 371 | "type": "git", 372 | "url": "https://github.com/myclabs/DeepCopy.git", 373 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" 374 | }, 375 | "dist": { 376 | "type": "zip", 377 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", 378 | "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", 379 | "shasum": "" 380 | }, 381 | "require": { 382 | "php": "^7.1 || ^8.0" 383 | }, 384 | "replace": { 385 | "myclabs/deep-copy": "self.version" 386 | }, 387 | "require-dev": { 388 | "doctrine/collections": "^1.0", 389 | "doctrine/common": "^2.6", 390 | "phpunit/phpunit": "^7.1" 391 | }, 392 | "default-branch": true, 393 | "type": "library", 394 | "autoload": { 395 | "psr-4": { 396 | "DeepCopy\\": "src/DeepCopy/" 397 | }, 398 | "files": [ 399 | "src/DeepCopy/deep_copy.php" 400 | ] 401 | }, 402 | "notification-url": "https://packagist.org/downloads/", 403 | "license": [ 404 | "MIT" 405 | ], 406 | "description": "Create deep copies (clones) of your objects", 407 | "keywords": [ 408 | "clone", 409 | "copy", 410 | "duplicate", 411 | "object", 412 | "object graph" 413 | ], 414 | "support": { 415 | "issues": "https://github.com/myclabs/DeepCopy/issues", 416 | "source": "https://github.com/myclabs/DeepCopy/tree/1.10.2" 417 | }, 418 | "funding": [ 419 | { 420 | "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", 421 | "type": "tidelift" 422 | } 423 | ], 424 | "time": "2020-11-13T09:40:50+00:00" 425 | }, 426 | { 427 | "name": "nikic/php-parser", 428 | "version": "v4.10.4", 429 | "source": { 430 | "type": "git", 431 | "url": "https://github.com/nikic/PHP-Parser.git", 432 | "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" 433 | }, 434 | "dist": { 435 | "type": "zip", 436 | "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", 437 | "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", 438 | "shasum": "" 439 | }, 440 | "require": { 441 | "ext-tokenizer": "*", 442 | "php": ">=7.0" 443 | }, 444 | "require-dev": { 445 | "ircmaxell/php-yacc": "^0.0.7", 446 | "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" 447 | }, 448 | "bin": [ 449 | "bin/php-parse" 450 | ], 451 | "type": "library", 452 | "extra": { 453 | "branch-alias": { 454 | "dev-master": "4.9-dev" 455 | } 456 | }, 457 | "autoload": { 458 | "psr-4": { 459 | "PhpParser\\": "lib/PhpParser" 460 | } 461 | }, 462 | "notification-url": "https://packagist.org/downloads/", 463 | "license": [ 464 | "BSD-3-Clause" 465 | ], 466 | "authors": [ 467 | { 468 | "name": "Nikita Popov" 469 | } 470 | ], 471 | "description": "A PHP parser written in PHP", 472 | "keywords": [ 473 | "parser", 474 | "php" 475 | ], 476 | "support": { 477 | "issues": "https://github.com/nikic/PHP-Parser/issues", 478 | "source": "https://github.com/nikic/PHP-Parser/tree/v4.10.4" 479 | }, 480 | "time": "2020-12-20T10:01:03+00:00" 481 | }, 482 | { 483 | "name": "phar-io/manifest", 484 | "version": "dev-master", 485 | "source": { 486 | "type": "git", 487 | "url": "https://github.com/phar-io/manifest.git", 488 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" 489 | }, 490 | "dist": { 491 | "type": "zip", 492 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", 493 | "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", 494 | "shasum": "" 495 | }, 496 | "require": { 497 | "ext-dom": "*", 498 | "ext-phar": "*", 499 | "ext-xmlwriter": "*", 500 | "phar-io/version": "^3.0.1", 501 | "php": "^7.2 || ^8.0" 502 | }, 503 | "default-branch": true, 504 | "type": "library", 505 | "extra": { 506 | "branch-alias": { 507 | "dev-master": "2.0.x-dev" 508 | } 509 | }, 510 | "autoload": { 511 | "classmap": [ 512 | "src/" 513 | ] 514 | }, 515 | "notification-url": "https://packagist.org/downloads/", 516 | "license": [ 517 | "BSD-3-Clause" 518 | ], 519 | "authors": [ 520 | { 521 | "name": "Arne Blankerts", 522 | "email": "arne@blankerts.de", 523 | "role": "Developer" 524 | }, 525 | { 526 | "name": "Sebastian Heuer", 527 | "email": "sebastian@phpeople.de", 528 | "role": "Developer" 529 | }, 530 | { 531 | "name": "Sebastian Bergmann", 532 | "email": "sebastian@phpunit.de", 533 | "role": "Developer" 534 | } 535 | ], 536 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 537 | "support": { 538 | "issues": "https://github.com/phar-io/manifest/issues", 539 | "source": "https://github.com/phar-io/manifest/tree/2.0.1" 540 | }, 541 | "time": "2020-06-27T14:33:11+00:00" 542 | }, 543 | { 544 | "name": "phar-io/version", 545 | "version": "3.0.4", 546 | "source": { 547 | "type": "git", 548 | "url": "https://github.com/phar-io/version.git", 549 | "reference": "e4782611070e50613683d2b9a57730e9a3ba5451" 550 | }, 551 | "dist": { 552 | "type": "zip", 553 | "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451", 554 | "reference": "e4782611070e50613683d2b9a57730e9a3ba5451", 555 | "shasum": "" 556 | }, 557 | "require": { 558 | "php": "^7.2 || ^8.0" 559 | }, 560 | "type": "library", 561 | "autoload": { 562 | "classmap": [ 563 | "src/" 564 | ] 565 | }, 566 | "notification-url": "https://packagist.org/downloads/", 567 | "license": [ 568 | "BSD-3-Clause" 569 | ], 570 | "authors": [ 571 | { 572 | "name": "Arne Blankerts", 573 | "email": "arne@blankerts.de", 574 | "role": "Developer" 575 | }, 576 | { 577 | "name": "Sebastian Heuer", 578 | "email": "sebastian@phpeople.de", 579 | "role": "Developer" 580 | }, 581 | { 582 | "name": "Sebastian Bergmann", 583 | "email": "sebastian@phpunit.de", 584 | "role": "Developer" 585 | } 586 | ], 587 | "description": "Library for handling version information and constraints", 588 | "support": { 589 | "issues": "https://github.com/phar-io/version/issues", 590 | "source": "https://github.com/phar-io/version/tree/3.0.4" 591 | }, 592 | "time": "2020-12-13T23:18:30+00:00" 593 | }, 594 | { 595 | "name": "phpdocumentor/reflection-common", 596 | "version": "dev-master", 597 | "source": { 598 | "type": "git", 599 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 600 | "reference": "cf8df60735d98fd18070b7cab0019ba0831e219c" 601 | }, 602 | "dist": { 603 | "type": "zip", 604 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/cf8df60735d98fd18070b7cab0019ba0831e219c", 605 | "reference": "cf8df60735d98fd18070b7cab0019ba0831e219c", 606 | "shasum": "" 607 | }, 608 | "require": { 609 | "php": ">=7.1" 610 | }, 611 | "default-branch": true, 612 | "type": "library", 613 | "extra": { 614 | "branch-alias": { 615 | "dev-master": "2.x-dev" 616 | } 617 | }, 618 | "autoload": { 619 | "psr-4": { 620 | "phpDocumentor\\Reflection\\": "src/" 621 | } 622 | }, 623 | "notification-url": "https://packagist.org/downloads/", 624 | "license": [ 625 | "MIT" 626 | ], 627 | "authors": [ 628 | { 629 | "name": "Jaap van Otterdijk", 630 | "email": "opensource@ijaap.nl" 631 | } 632 | ], 633 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 634 | "homepage": "http://www.phpdoc.org", 635 | "keywords": [ 636 | "FQSEN", 637 | "phpDocumentor", 638 | "phpdoc", 639 | "reflection", 640 | "static analysis" 641 | ], 642 | "support": { 643 | "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", 644 | "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/master" 645 | }, 646 | "time": "2020-06-19T17:42:03+00:00" 647 | }, 648 | { 649 | "name": "phpdocumentor/reflection-docblock", 650 | "version": "dev-master", 651 | "source": { 652 | "type": "git", 653 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 654 | "reference": "e3324ecbde7319b0bbcf0fd7ca4af19469c38da9" 655 | }, 656 | "dist": { 657 | "type": "zip", 658 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/e3324ecbde7319b0bbcf0fd7ca4af19469c38da9", 659 | "reference": "e3324ecbde7319b0bbcf0fd7ca4af19469c38da9", 660 | "shasum": "" 661 | }, 662 | "require": { 663 | "ext-filter": "*", 664 | "php": "^7.2 || ^8.0", 665 | "phpdocumentor/reflection-common": "^2.2", 666 | "phpdocumentor/type-resolver": "^1.3", 667 | "webmozart/assert": "^1.9.1" 668 | }, 669 | "require-dev": { 670 | "mockery/mockery": "~1.3.2" 671 | }, 672 | "default-branch": true, 673 | "type": "library", 674 | "extra": { 675 | "branch-alias": { 676 | "dev-master": "5.x-dev" 677 | } 678 | }, 679 | "autoload": { 680 | "psr-4": { 681 | "phpDocumentor\\Reflection\\": "src" 682 | } 683 | }, 684 | "notification-url": "https://packagist.org/downloads/", 685 | "license": [ 686 | "MIT" 687 | ], 688 | "authors": [ 689 | { 690 | "name": "Mike van Riel", 691 | "email": "me@mikevanriel.com" 692 | }, 693 | { 694 | "name": "Jaap van Otterdijk", 695 | "email": "account@ijaap.nl" 696 | } 697 | ], 698 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 699 | "support": { 700 | "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", 701 | "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/master" 702 | }, 703 | "time": "2020-11-18T14:27:38+00:00" 704 | }, 705 | { 706 | "name": "phpdocumentor/type-resolver", 707 | "version": "1.x-dev", 708 | "source": { 709 | "type": "git", 710 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 711 | "reference": "6759f2268deb9f329812679e9dcb2d0083b2a30b" 712 | }, 713 | "dist": { 714 | "type": "zip", 715 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6759f2268deb9f329812679e9dcb2d0083b2a30b", 716 | "reference": "6759f2268deb9f329812679e9dcb2d0083b2a30b", 717 | "shasum": "" 718 | }, 719 | "require": { 720 | "php": "^7.2 || ^8.0", 721 | "phpdocumentor/reflection-common": "^2.0" 722 | }, 723 | "require-dev": { 724 | "ext-tokenizer": "*" 725 | }, 726 | "default-branch": true, 727 | "type": "library", 728 | "extra": { 729 | "branch-alias": { 730 | "dev-1.x": "1.x-dev" 731 | } 732 | }, 733 | "autoload": { 734 | "psr-4": { 735 | "phpDocumentor\\Reflection\\": "src" 736 | } 737 | }, 738 | "notification-url": "https://packagist.org/downloads/", 739 | "license": [ 740 | "MIT" 741 | ], 742 | "authors": [ 743 | { 744 | "name": "Mike van Riel", 745 | "email": "me@mikevanriel.com" 746 | } 747 | ], 748 | "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", 749 | "support": { 750 | "issues": "https://github.com/phpDocumentor/TypeResolver/issues", 751 | "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.x" 752 | }, 753 | "time": "2021-02-02T21:09:27+00:00" 754 | }, 755 | { 756 | "name": "phpspec/prophecy", 757 | "version": "1.12.2", 758 | "source": { 759 | "type": "git", 760 | "url": "https://github.com/phpspec/prophecy.git", 761 | "reference": "245710e971a030f42e08f4912863805570f23d39" 762 | }, 763 | "dist": { 764 | "type": "zip", 765 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39", 766 | "reference": "245710e971a030f42e08f4912863805570f23d39", 767 | "shasum": "" 768 | }, 769 | "require": { 770 | "doctrine/instantiator": "^1.2", 771 | "php": "^7.2 || ~8.0, <8.1", 772 | "phpdocumentor/reflection-docblock": "^5.2", 773 | "sebastian/comparator": "^3.0 || ^4.0", 774 | "sebastian/recursion-context": "^3.0 || ^4.0" 775 | }, 776 | "require-dev": { 777 | "phpspec/phpspec": "^6.0", 778 | "phpunit/phpunit": "^8.0 || ^9.0" 779 | }, 780 | "type": "library", 781 | "extra": { 782 | "branch-alias": { 783 | "dev-master": "1.11.x-dev" 784 | } 785 | }, 786 | "autoload": { 787 | "psr-4": { 788 | "Prophecy\\": "src/Prophecy" 789 | } 790 | }, 791 | "notification-url": "https://packagist.org/downloads/", 792 | "license": [ 793 | "MIT" 794 | ], 795 | "authors": [ 796 | { 797 | "name": "Konstantin Kudryashov", 798 | "email": "ever.zet@gmail.com", 799 | "homepage": "http://everzet.com" 800 | }, 801 | { 802 | "name": "Marcello Duarte", 803 | "email": "marcello.duarte@gmail.com" 804 | } 805 | ], 806 | "description": "Highly opinionated mocking framework for PHP 5.3+", 807 | "homepage": "https://github.com/phpspec/prophecy", 808 | "keywords": [ 809 | "Double", 810 | "Dummy", 811 | "fake", 812 | "mock", 813 | "spy", 814 | "stub" 815 | ], 816 | "support": { 817 | "issues": "https://github.com/phpspec/prophecy/issues", 818 | "source": "https://github.com/phpspec/prophecy/tree/1.12.2" 819 | }, 820 | "time": "2020-12-19T10:15:11+00:00" 821 | }, 822 | { 823 | "name": "phpunit/php-code-coverage", 824 | "version": "9.2.x-dev", 825 | "source": { 826 | "type": "git", 827 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 828 | "reference": "ad069801f3d0cdb7102e58afd5f9f32834ec7160" 829 | }, 830 | "dist": { 831 | "type": "zip", 832 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ad069801f3d0cdb7102e58afd5f9f32834ec7160", 833 | "reference": "ad069801f3d0cdb7102e58afd5f9f32834ec7160", 834 | "shasum": "" 835 | }, 836 | "require": { 837 | "ext-dom": "*", 838 | "ext-libxml": "*", 839 | "ext-xmlwriter": "*", 840 | "nikic/php-parser": "^4.10.2", 841 | "php": ">=7.3", 842 | "phpunit/php-file-iterator": "^3.0.3", 843 | "phpunit/php-text-template": "^2.0.2", 844 | "sebastian/code-unit-reverse-lookup": "^2.0.2", 845 | "sebastian/complexity": "^2.0", 846 | "sebastian/environment": "^5.1.2", 847 | "sebastian/lines-of-code": "^1.0.3", 848 | "sebastian/version": "^3.0.1", 849 | "theseer/tokenizer": "^1.2.0" 850 | }, 851 | "require-dev": { 852 | "phpunit/phpunit": "^9.3" 853 | }, 854 | "suggest": { 855 | "ext-pcov": "*", 856 | "ext-xdebug": "*" 857 | }, 858 | "type": "library", 859 | "extra": { 860 | "branch-alias": { 861 | "dev-master": "9.2-dev" 862 | } 863 | }, 864 | "autoload": { 865 | "classmap": [ 866 | "src/" 867 | ] 868 | }, 869 | "notification-url": "https://packagist.org/downloads/", 870 | "license": [ 871 | "BSD-3-Clause" 872 | ], 873 | "authors": [ 874 | { 875 | "name": "Sebastian Bergmann", 876 | "email": "sebastian@phpunit.de", 877 | "role": "lead" 878 | } 879 | ], 880 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 881 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 882 | "keywords": [ 883 | "coverage", 884 | "testing", 885 | "xunit" 886 | ], 887 | "support": { 888 | "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", 889 | "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2" 890 | }, 891 | "funding": [ 892 | { 893 | "url": "https://github.com/sebastianbergmann", 894 | "type": "github" 895 | } 896 | ], 897 | "time": "2021-02-08T09:55:27+00:00" 898 | }, 899 | { 900 | "name": "phpunit/php-file-iterator", 901 | "version": "dev-master", 902 | "source": { 903 | "type": "git", 904 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 905 | "reference": "7643948b9b254d2c1406437070c53489ca858632" 906 | }, 907 | "dist": { 908 | "type": "zip", 909 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/7643948b9b254d2c1406437070c53489ca858632", 910 | "reference": "7643948b9b254d2c1406437070c53489ca858632", 911 | "shasum": "" 912 | }, 913 | "require": { 914 | "php": ">=7.3" 915 | }, 916 | "require-dev": { 917 | "phpunit/phpunit": "^9.3" 918 | }, 919 | "default-branch": true, 920 | "type": "library", 921 | "extra": { 922 | "branch-alias": { 923 | "dev-master": "3.0-dev" 924 | } 925 | }, 926 | "autoload": { 927 | "classmap": [ 928 | "src/" 929 | ] 930 | }, 931 | "notification-url": "https://packagist.org/downloads/", 932 | "license": [ 933 | "BSD-3-Clause" 934 | ], 935 | "authors": [ 936 | { 937 | "name": "Sebastian Bergmann", 938 | "email": "sebastian@phpunit.de", 939 | "role": "lead" 940 | } 941 | ], 942 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 943 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 944 | "keywords": [ 945 | "filesystem", 946 | "iterator" 947 | ], 948 | "support": { 949 | "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", 950 | "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/master" 951 | }, 952 | "funding": [ 953 | { 954 | "url": "https://github.com/sebastianbergmann", 955 | "type": "github" 956 | } 957 | ], 958 | "time": "2021-01-31T06:06:23+00:00" 959 | }, 960 | { 961 | "name": "phpunit/php-invoker", 962 | "version": "dev-master", 963 | "source": { 964 | "type": "git", 965 | "url": "https://github.com/sebastianbergmann/php-invoker.git", 966 | "reference": "8ddb05c30eb42ee9342a711ff490436db0f42aad" 967 | }, 968 | "dist": { 969 | "type": "zip", 970 | "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/8ddb05c30eb42ee9342a711ff490436db0f42aad", 971 | "reference": "8ddb05c30eb42ee9342a711ff490436db0f42aad", 972 | "shasum": "" 973 | }, 974 | "require": { 975 | "php": ">=7.3" 976 | }, 977 | "require-dev": { 978 | "ext-pcntl": "*", 979 | "phpunit/phpunit": "^9.3" 980 | }, 981 | "suggest": { 982 | "ext-pcntl": "*" 983 | }, 984 | "default-branch": true, 985 | "type": "library", 986 | "extra": { 987 | "branch-alias": { 988 | "dev-master": "3.1-dev" 989 | } 990 | }, 991 | "autoload": { 992 | "classmap": [ 993 | "src/" 994 | ] 995 | }, 996 | "notification-url": "https://packagist.org/downloads/", 997 | "license": [ 998 | "BSD-3-Clause" 999 | ], 1000 | "authors": [ 1001 | { 1002 | "name": "Sebastian Bergmann", 1003 | "email": "sebastian@phpunit.de", 1004 | "role": "lead" 1005 | } 1006 | ], 1007 | "description": "Invoke callables with a timeout", 1008 | "homepage": "https://github.com/sebastianbergmann/php-invoker/", 1009 | "keywords": [ 1010 | "process" 1011 | ], 1012 | "support": { 1013 | "issues": "https://github.com/sebastianbergmann/php-invoker/issues", 1014 | "source": "https://github.com/sebastianbergmann/php-invoker/tree/master" 1015 | }, 1016 | "funding": [ 1017 | { 1018 | "url": "https://github.com/sebastianbergmann", 1019 | "type": "github" 1020 | } 1021 | ], 1022 | "time": "2021-01-31T06:06:31+00:00" 1023 | }, 1024 | { 1025 | "name": "phpunit/php-text-template", 1026 | "version": "dev-master", 1027 | "source": { 1028 | "type": "git", 1029 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1030 | "reference": "eace5f89cab382a6908f404ca2ea757e644047ab" 1031 | }, 1032 | "dist": { 1033 | "type": "zip", 1034 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/eace5f89cab382a6908f404ca2ea757e644047ab", 1035 | "reference": "eace5f89cab382a6908f404ca2ea757e644047ab", 1036 | "shasum": "" 1037 | }, 1038 | "require": { 1039 | "php": ">=7.3" 1040 | }, 1041 | "require-dev": { 1042 | "phpunit/phpunit": "^9.3" 1043 | }, 1044 | "default-branch": true, 1045 | "type": "library", 1046 | "extra": { 1047 | "branch-alias": { 1048 | "dev-master": "2.0-dev" 1049 | } 1050 | }, 1051 | "autoload": { 1052 | "classmap": [ 1053 | "src/" 1054 | ] 1055 | }, 1056 | "notification-url": "https://packagist.org/downloads/", 1057 | "license": [ 1058 | "BSD-3-Clause" 1059 | ], 1060 | "authors": [ 1061 | { 1062 | "name": "Sebastian Bergmann", 1063 | "email": "sebastian@phpunit.de", 1064 | "role": "lead" 1065 | } 1066 | ], 1067 | "description": "Simple template engine.", 1068 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1069 | "keywords": [ 1070 | "template" 1071 | ], 1072 | "support": { 1073 | "issues": "https://github.com/sebastianbergmann/php-text-template/issues", 1074 | "source": "https://github.com/sebastianbergmann/php-text-template/tree/master" 1075 | }, 1076 | "funding": [ 1077 | { 1078 | "url": "https://github.com/sebastianbergmann", 1079 | "type": "github" 1080 | } 1081 | ], 1082 | "time": "2021-01-31T06:07:05+00:00" 1083 | }, 1084 | { 1085 | "name": "phpunit/php-timer", 1086 | "version": "dev-master", 1087 | "source": { 1088 | "type": "git", 1089 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1090 | "reference": "c2c32bcece727700ce67b2c4fa5b5231c03d1232" 1091 | }, 1092 | "dist": { 1093 | "type": "zip", 1094 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/c2c32bcece727700ce67b2c4fa5b5231c03d1232", 1095 | "reference": "c2c32bcece727700ce67b2c4fa5b5231c03d1232", 1096 | "shasum": "" 1097 | }, 1098 | "require": { 1099 | "php": ">=7.3" 1100 | }, 1101 | "require-dev": { 1102 | "phpunit/phpunit": "^9.3" 1103 | }, 1104 | "default-branch": true, 1105 | "type": "library", 1106 | "extra": { 1107 | "branch-alias": { 1108 | "dev-master": "5.0-dev" 1109 | } 1110 | }, 1111 | "autoload": { 1112 | "classmap": [ 1113 | "src/" 1114 | ] 1115 | }, 1116 | "notification-url": "https://packagist.org/downloads/", 1117 | "license": [ 1118 | "BSD-3-Clause" 1119 | ], 1120 | "authors": [ 1121 | { 1122 | "name": "Sebastian Bergmann", 1123 | "email": "sebastian@phpunit.de", 1124 | "role": "lead" 1125 | } 1126 | ], 1127 | "description": "Utility class for timing", 1128 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1129 | "keywords": [ 1130 | "timer" 1131 | ], 1132 | "support": { 1133 | "issues": "https://github.com/sebastianbergmann/php-timer/issues", 1134 | "source": "https://github.com/sebastianbergmann/php-timer/tree/master" 1135 | }, 1136 | "funding": [ 1137 | { 1138 | "url": "https://github.com/sebastianbergmann", 1139 | "type": "github" 1140 | } 1141 | ], 1142 | "time": "2021-01-31T06:06:40+00:00" 1143 | }, 1144 | { 1145 | "name": "phpunit/phpunit", 1146 | "version": "9.5.x-dev", 1147 | "source": { 1148 | "type": "git", 1149 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1150 | "reference": "03db76e7af7243ca0bc99524b0f10bd062777c97" 1151 | }, 1152 | "dist": { 1153 | "type": "zip", 1154 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/03db76e7af7243ca0bc99524b0f10bd062777c97", 1155 | "reference": "03db76e7af7243ca0bc99524b0f10bd062777c97", 1156 | "shasum": "" 1157 | }, 1158 | "require": { 1159 | "doctrine/instantiator": "^1.3.1", 1160 | "ext-dom": "*", 1161 | "ext-json": "*", 1162 | "ext-libxml": "*", 1163 | "ext-mbstring": "*", 1164 | "ext-xml": "*", 1165 | "ext-xmlwriter": "*", 1166 | "myclabs/deep-copy": "^1.10.1", 1167 | "phar-io/manifest": "^2.0.1", 1168 | "phar-io/version": "^3.0.2", 1169 | "php": ">=7.3", 1170 | "phpspec/prophecy": "^1.12.1", 1171 | "phpunit/php-code-coverage": "^9.2.3", 1172 | "phpunit/php-file-iterator": "^3.0.5", 1173 | "phpunit/php-invoker": "^3.1.1", 1174 | "phpunit/php-text-template": "^2.0.3", 1175 | "phpunit/php-timer": "^5.0.2", 1176 | "sebastian/cli-parser": "^1.0.1", 1177 | "sebastian/code-unit": "^1.0.6", 1178 | "sebastian/comparator": "^4.0.5", 1179 | "sebastian/diff": "^4.0.3", 1180 | "sebastian/environment": "^5.1.3", 1181 | "sebastian/exporter": "^4.0.3", 1182 | "sebastian/global-state": "^5.0.1", 1183 | "sebastian/object-enumerator": "^4.0.3", 1184 | "sebastian/resource-operations": "^3.0.3", 1185 | "sebastian/type": "^2.3", 1186 | "sebastian/version": "^3.0.2" 1187 | }, 1188 | "require-dev": { 1189 | "ext-pdo": "*", 1190 | "phpspec/prophecy-phpunit": "^2.0.1" 1191 | }, 1192 | "suggest": { 1193 | "ext-soap": "*", 1194 | "ext-xdebug": "*" 1195 | }, 1196 | "bin": [ 1197 | "phpunit" 1198 | ], 1199 | "type": "library", 1200 | "extra": { 1201 | "branch-alias": { 1202 | "dev-master": "9.5-dev" 1203 | } 1204 | }, 1205 | "autoload": { 1206 | "classmap": [ 1207 | "src/" 1208 | ], 1209 | "files": [ 1210 | "src/Framework/Assert/Functions.php" 1211 | ] 1212 | }, 1213 | "notification-url": "https://packagist.org/downloads/", 1214 | "license": [ 1215 | "BSD-3-Clause" 1216 | ], 1217 | "authors": [ 1218 | { 1219 | "name": "Sebastian Bergmann", 1220 | "email": "sebastian@phpunit.de", 1221 | "role": "lead" 1222 | } 1223 | ], 1224 | "description": "The PHP Unit Testing framework.", 1225 | "homepage": "https://phpunit.de/", 1226 | "keywords": [ 1227 | "phpunit", 1228 | "testing", 1229 | "xunit" 1230 | ], 1231 | "support": { 1232 | "issues": "https://github.com/sebastianbergmann/phpunit/issues", 1233 | "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5" 1234 | }, 1235 | "funding": [ 1236 | { 1237 | "url": "https://phpunit.de/donate.html", 1238 | "type": "custom" 1239 | }, 1240 | { 1241 | "url": "https://github.com/sebastianbergmann", 1242 | "type": "github" 1243 | } 1244 | ], 1245 | "time": "2021-02-03T13:20:37+00:00" 1246 | }, 1247 | { 1248 | "name": "psr/http-client", 1249 | "version": "dev-master", 1250 | "source": { 1251 | "type": "git", 1252 | "url": "https://github.com/php-fig/http-client.git", 1253 | "reference": "22b2ef5687f43679481615605d7a15c557ce85b1" 1254 | }, 1255 | "dist": { 1256 | "type": "zip", 1257 | "url": "https://api.github.com/repos/php-fig/http-client/zipball/22b2ef5687f43679481615605d7a15c557ce85b1", 1258 | "reference": "22b2ef5687f43679481615605d7a15c557ce85b1", 1259 | "shasum": "" 1260 | }, 1261 | "require": { 1262 | "php": "^7.0 || ^8.0", 1263 | "psr/http-message": "^1.0" 1264 | }, 1265 | "default-branch": true, 1266 | "type": "library", 1267 | "extra": { 1268 | "branch-alias": { 1269 | "dev-master": "1.0.x-dev" 1270 | } 1271 | }, 1272 | "autoload": { 1273 | "psr-4": { 1274 | "Psr\\Http\\Client\\": "src/" 1275 | } 1276 | }, 1277 | "notification-url": "https://packagist.org/downloads/", 1278 | "license": [ 1279 | "MIT" 1280 | ], 1281 | "authors": [ 1282 | { 1283 | "name": "PHP-FIG", 1284 | "homepage": "https://www.php-fig.org/" 1285 | } 1286 | ], 1287 | "description": "Common interface for HTTP clients", 1288 | "homepage": "https://github.com/php-fig/http-client", 1289 | "keywords": [ 1290 | "http", 1291 | "http-client", 1292 | "psr", 1293 | "psr-18" 1294 | ], 1295 | "support": { 1296 | "source": "https://github.com/php-fig/http-client/tree/master" 1297 | }, 1298 | "time": "2020-09-19T09:12:31+00:00" 1299 | }, 1300 | { 1301 | "name": "psr/http-message", 1302 | "version": "dev-master", 1303 | "source": { 1304 | "type": "git", 1305 | "url": "https://github.com/php-fig/http-message.git", 1306 | "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4" 1307 | }, 1308 | "dist": { 1309 | "type": "zip", 1310 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/efd67d1dc14a7ef4fc4e518e7dee91c271d524e4", 1311 | "reference": "efd67d1dc14a7ef4fc4e518e7dee91c271d524e4", 1312 | "shasum": "" 1313 | }, 1314 | "require": { 1315 | "php": ">=5.3.0" 1316 | }, 1317 | "default-branch": true, 1318 | "type": "library", 1319 | "extra": { 1320 | "branch-alias": { 1321 | "dev-master": "1.0.x-dev" 1322 | } 1323 | }, 1324 | "autoload": { 1325 | "psr-4": { 1326 | "Psr\\Http\\Message\\": "src/" 1327 | } 1328 | }, 1329 | "notification-url": "https://packagist.org/downloads/", 1330 | "license": [ 1331 | "MIT" 1332 | ], 1333 | "authors": [ 1334 | { 1335 | "name": "PHP-FIG", 1336 | "homepage": "http://www.php-fig.org/" 1337 | } 1338 | ], 1339 | "description": "Common interface for HTTP messages", 1340 | "homepage": "https://github.com/php-fig/http-message", 1341 | "keywords": [ 1342 | "http", 1343 | "http-message", 1344 | "psr", 1345 | "psr-7", 1346 | "request", 1347 | "response" 1348 | ], 1349 | "support": { 1350 | "source": "https://github.com/php-fig/http-message/tree/master" 1351 | }, 1352 | "time": "2019-08-29T13:16:46+00:00" 1353 | }, 1354 | { 1355 | "name": "ralouphie/getallheaders", 1356 | "version": "3.0.3", 1357 | "source": { 1358 | "type": "git", 1359 | "url": "https://github.com/ralouphie/getallheaders.git", 1360 | "reference": "120b605dfeb996808c31b6477290a714d356e822" 1361 | }, 1362 | "dist": { 1363 | "type": "zip", 1364 | "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", 1365 | "reference": "120b605dfeb996808c31b6477290a714d356e822", 1366 | "shasum": "" 1367 | }, 1368 | "require": { 1369 | "php": ">=5.6" 1370 | }, 1371 | "require-dev": { 1372 | "php-coveralls/php-coveralls": "^2.1", 1373 | "phpunit/phpunit": "^5 || ^6.5" 1374 | }, 1375 | "type": "library", 1376 | "autoload": { 1377 | "files": [ 1378 | "src/getallheaders.php" 1379 | ] 1380 | }, 1381 | "notification-url": "https://packagist.org/downloads/", 1382 | "license": [ 1383 | "MIT" 1384 | ], 1385 | "authors": [ 1386 | { 1387 | "name": "Ralph Khattar", 1388 | "email": "ralph.khattar@gmail.com" 1389 | } 1390 | ], 1391 | "description": "A polyfill for getallheaders.", 1392 | "support": { 1393 | "issues": "https://github.com/ralouphie/getallheaders/issues", 1394 | "source": "https://github.com/ralouphie/getallheaders/tree/develop" 1395 | }, 1396 | "time": "2019-03-08T08:55:37+00:00" 1397 | }, 1398 | { 1399 | "name": "ramsey/collection", 1400 | "version": "1.1.3", 1401 | "source": { 1402 | "type": "git", 1403 | "url": "https://github.com/ramsey/collection.git", 1404 | "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1" 1405 | }, 1406 | "dist": { 1407 | "type": "zip", 1408 | "url": "https://api.github.com/repos/ramsey/collection/zipball/28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", 1409 | "reference": "28a5c4ab2f5111db6a60b2b4ec84057e0f43b9c1", 1410 | "shasum": "" 1411 | }, 1412 | "require": { 1413 | "php": "^7.2 || ^8" 1414 | }, 1415 | "require-dev": { 1416 | "captainhook/captainhook": "^5.3", 1417 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 1418 | "ergebnis/composer-normalize": "^2.6", 1419 | "fakerphp/faker": "^1.5", 1420 | "hamcrest/hamcrest-php": "^2", 1421 | "jangregor/phpstan-prophecy": "^0.8", 1422 | "mockery/mockery": "^1.3", 1423 | "phpstan/extension-installer": "^1", 1424 | "phpstan/phpstan": "^0.12.32", 1425 | "phpstan/phpstan-mockery": "^0.12.5", 1426 | "phpstan/phpstan-phpunit": "^0.12.11", 1427 | "phpunit/phpunit": "^8.5 || ^9", 1428 | "psy/psysh": "^0.10.4", 1429 | "slevomat/coding-standard": "^6.3", 1430 | "squizlabs/php_codesniffer": "^3.5", 1431 | "vimeo/psalm": "^4.4" 1432 | }, 1433 | "type": "library", 1434 | "autoload": { 1435 | "psr-4": { 1436 | "Ramsey\\Collection\\": "src/" 1437 | } 1438 | }, 1439 | "notification-url": "https://packagist.org/downloads/", 1440 | "license": [ 1441 | "MIT" 1442 | ], 1443 | "authors": [ 1444 | { 1445 | "name": "Ben Ramsey", 1446 | "email": "ben@benramsey.com", 1447 | "homepage": "https://benramsey.com" 1448 | } 1449 | ], 1450 | "description": "A PHP 7.2+ library for representing and manipulating collections.", 1451 | "keywords": [ 1452 | "array", 1453 | "collection", 1454 | "hash", 1455 | "map", 1456 | "queue", 1457 | "set" 1458 | ], 1459 | "support": { 1460 | "issues": "https://github.com/ramsey/collection/issues", 1461 | "source": "https://github.com/ramsey/collection/tree/1.1.3" 1462 | }, 1463 | "funding": [ 1464 | { 1465 | "url": "https://github.com/ramsey", 1466 | "type": "github" 1467 | }, 1468 | { 1469 | "url": "https://tidelift.com/funding/github/packagist/ramsey/collection", 1470 | "type": "tidelift" 1471 | } 1472 | ], 1473 | "time": "2021-01-21T17:40:04+00:00" 1474 | }, 1475 | { 1476 | "name": "ramsey/uuid", 1477 | "version": "dev-master", 1478 | "source": { 1479 | "type": "git", 1480 | "url": "https://github.com/ramsey/uuid.git", 1481 | "reference": "e5b3699bbe04e18794a3b6e6e1e0443a9742e4ad" 1482 | }, 1483 | "dist": { 1484 | "type": "zip", 1485 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/e5b3699bbe04e18794a3b6e6e1e0443a9742e4ad", 1486 | "reference": "e5b3699bbe04e18794a3b6e6e1e0443a9742e4ad", 1487 | "shasum": "" 1488 | }, 1489 | "require": { 1490 | "brick/math": "^0.8 || ^0.9", 1491 | "ext-json": "*", 1492 | "php": "^7.2 || ^8", 1493 | "ramsey/collection": "^1.0", 1494 | "symfony/polyfill-ctype": "^1.8" 1495 | }, 1496 | "replace": { 1497 | "rhumsaa/uuid": "self.version" 1498 | }, 1499 | "require-dev": { 1500 | "dealerdirect/phpcodesniffer-composer-installer": "^0.7.0", 1501 | "doctrine/annotations": "^1.8", 1502 | "mockery/mockery": "^1.3", 1503 | "moontoast/math": "^1.1", 1504 | "paragonie/random-lib": "^2", 1505 | "php-mock/php-mock": "^2.2", 1506 | "php-mock/php-mock-mockery": "^1.3", 1507 | "php-parallel-lint/php-parallel-lint": "^1.1", 1508 | "phpbench/phpbench": "1.0.0-alpha2", 1509 | "phpstan/extension-installer": "^1.0", 1510 | "phpstan/phpstan": "^0.12", 1511 | "phpstan/phpstan-mockery": "^0.12", 1512 | "phpstan/phpstan-phpunit": "^0.12", 1513 | "phpunit/phpunit": "^8.5 || ^9", 1514 | "psy/psysh": "^0.10.0", 1515 | "slevomat/coding-standard": "^6.0", 1516 | "squizlabs/php_codesniffer": "^3.5", 1517 | "vimeo/psalm": "^3.18" 1518 | }, 1519 | "suggest": { 1520 | "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", 1521 | "ext-ctype": "Enables faster processing of character classification using ctype functions.", 1522 | "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", 1523 | "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", 1524 | "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1525 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1526 | }, 1527 | "default-branch": true, 1528 | "type": "library", 1529 | "extra": { 1530 | "branch-alias": { 1531 | "dev-master": "4.x-dev" 1532 | } 1533 | }, 1534 | "autoload": { 1535 | "psr-4": { 1536 | "Ramsey\\Uuid\\": "src/" 1537 | }, 1538 | "files": [ 1539 | "src/functions.php" 1540 | ] 1541 | }, 1542 | "notification-url": "https://packagist.org/downloads/", 1543 | "license": [ 1544 | "MIT" 1545 | ], 1546 | "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", 1547 | "homepage": "https://github.com/ramsey/uuid", 1548 | "keywords": [ 1549 | "guid", 1550 | "identifier", 1551 | "uuid" 1552 | ], 1553 | "support": { 1554 | "issues": "https://github.com/ramsey/uuid/issues", 1555 | "rss": "https://github.com/ramsey/uuid/releases.atom", 1556 | "source": "https://github.com/ramsey/uuid" 1557 | }, 1558 | "funding": [ 1559 | { 1560 | "url": "https://github.com/ramsey", 1561 | "type": "github" 1562 | }, 1563 | { 1564 | "url": "https://tidelift.com/funding/github/packagist/ramsey/uuid", 1565 | "type": "tidelift" 1566 | } 1567 | ], 1568 | "time": "2020-11-05T21:15:32+00:00" 1569 | }, 1570 | { 1571 | "name": "sebastian/cli-parser", 1572 | "version": "dev-master", 1573 | "source": { 1574 | "type": "git", 1575 | "url": "https://github.com/sebastianbergmann/cli-parser.git", 1576 | "reference": "852907f9ef27ea08ad4135614a9fbd2f70c91ed1" 1577 | }, 1578 | "dist": { 1579 | "type": "zip", 1580 | "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/852907f9ef27ea08ad4135614a9fbd2f70c91ed1", 1581 | "reference": "852907f9ef27ea08ad4135614a9fbd2f70c91ed1", 1582 | "shasum": "" 1583 | }, 1584 | "require": { 1585 | "php": ">=7.3" 1586 | }, 1587 | "require-dev": { 1588 | "phpunit/phpunit": "^9.3" 1589 | }, 1590 | "default-branch": true, 1591 | "type": "library", 1592 | "extra": { 1593 | "branch-alias": { 1594 | "dev-master": "1.0-dev" 1595 | } 1596 | }, 1597 | "autoload": { 1598 | "classmap": [ 1599 | "src/" 1600 | ] 1601 | }, 1602 | "notification-url": "https://packagist.org/downloads/", 1603 | "license": [ 1604 | "BSD-3-Clause" 1605 | ], 1606 | "authors": [ 1607 | { 1608 | "name": "Sebastian Bergmann", 1609 | "email": "sebastian@phpunit.de", 1610 | "role": "lead" 1611 | } 1612 | ], 1613 | "description": "Library for parsing CLI options", 1614 | "homepage": "https://github.com/sebastianbergmann/cli-parser", 1615 | "support": { 1616 | "issues": "https://github.com/sebastianbergmann/cli-parser/issues", 1617 | "source": "https://github.com/sebastianbergmann/cli-parser/tree/master" 1618 | }, 1619 | "funding": [ 1620 | { 1621 | "url": "https://github.com/sebastianbergmann", 1622 | "type": "github" 1623 | } 1624 | ], 1625 | "time": "2021-01-31T06:07:32+00:00" 1626 | }, 1627 | { 1628 | "name": "sebastian/code-unit", 1629 | "version": "1.0.8", 1630 | "source": { 1631 | "type": "git", 1632 | "url": "https://github.com/sebastianbergmann/code-unit.git", 1633 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" 1634 | }, 1635 | "dist": { 1636 | "type": "zip", 1637 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", 1638 | "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", 1639 | "shasum": "" 1640 | }, 1641 | "require": { 1642 | "php": ">=7.3" 1643 | }, 1644 | "require-dev": { 1645 | "phpunit/phpunit": "^9.3" 1646 | }, 1647 | "type": "library", 1648 | "extra": { 1649 | "branch-alias": { 1650 | "dev-master": "1.0-dev" 1651 | } 1652 | }, 1653 | "autoload": { 1654 | "classmap": [ 1655 | "src/" 1656 | ] 1657 | }, 1658 | "notification-url": "https://packagist.org/downloads/", 1659 | "license": [ 1660 | "BSD-3-Clause" 1661 | ], 1662 | "authors": [ 1663 | { 1664 | "name": "Sebastian Bergmann", 1665 | "email": "sebastian@phpunit.de", 1666 | "role": "lead" 1667 | } 1668 | ], 1669 | "description": "Collection of value objects that represent the PHP code units", 1670 | "homepage": "https://github.com/sebastianbergmann/code-unit", 1671 | "support": { 1672 | "issues": "https://github.com/sebastianbergmann/code-unit/issues", 1673 | "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" 1674 | }, 1675 | "funding": [ 1676 | { 1677 | "url": "https://github.com/sebastianbergmann", 1678 | "type": "github" 1679 | } 1680 | ], 1681 | "time": "2020-10-26T13:08:54+00:00" 1682 | }, 1683 | { 1684 | "name": "sebastian/code-unit-reverse-lookup", 1685 | "version": "dev-master", 1686 | "source": { 1687 | "type": "git", 1688 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1689 | "reference": "bae9e6f9fc00aa95c1971a52f819b08494a394f0" 1690 | }, 1691 | "dist": { 1692 | "type": "zip", 1693 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/bae9e6f9fc00aa95c1971a52f819b08494a394f0", 1694 | "reference": "bae9e6f9fc00aa95c1971a52f819b08494a394f0", 1695 | "shasum": "" 1696 | }, 1697 | "require": { 1698 | "php": ">=7.3" 1699 | }, 1700 | "require-dev": { 1701 | "phpunit/phpunit": "^9.3" 1702 | }, 1703 | "default-branch": true, 1704 | "type": "library", 1705 | "extra": { 1706 | "branch-alias": { 1707 | "dev-master": "2.0-dev" 1708 | } 1709 | }, 1710 | "autoload": { 1711 | "classmap": [ 1712 | "src/" 1713 | ] 1714 | }, 1715 | "notification-url": "https://packagist.org/downloads/", 1716 | "license": [ 1717 | "BSD-3-Clause" 1718 | ], 1719 | "authors": [ 1720 | { 1721 | "name": "Sebastian Bergmann", 1722 | "email": "sebastian@phpunit.de" 1723 | } 1724 | ], 1725 | "description": "Looks up which function or method a line of code belongs to", 1726 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1727 | "support": { 1728 | "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", 1729 | "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/master" 1730 | }, 1731 | "funding": [ 1732 | { 1733 | "url": "https://github.com/sebastianbergmann", 1734 | "type": "github" 1735 | } 1736 | ], 1737 | "time": "2021-01-31T06:05:15+00:00" 1738 | }, 1739 | { 1740 | "name": "sebastian/comparator", 1741 | "version": "dev-master", 1742 | "source": { 1743 | "type": "git", 1744 | "url": "https://github.com/sebastianbergmann/comparator.git", 1745 | "reference": "d529bf5bc5746f6c59a1defc17c3725b5374c750" 1746 | }, 1747 | "dist": { 1748 | "type": "zip", 1749 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/d529bf5bc5746f6c59a1defc17c3725b5374c750", 1750 | "reference": "d529bf5bc5746f6c59a1defc17c3725b5374c750", 1751 | "shasum": "" 1752 | }, 1753 | "require": { 1754 | "php": ">=7.3", 1755 | "sebastian/diff": "^4.0", 1756 | "sebastian/exporter": "^4.0" 1757 | }, 1758 | "require-dev": { 1759 | "phpunit/phpunit": "^9.3" 1760 | }, 1761 | "default-branch": true, 1762 | "type": "library", 1763 | "extra": { 1764 | "branch-alias": { 1765 | "dev-master": "4.0-dev" 1766 | } 1767 | }, 1768 | "autoload": { 1769 | "classmap": [ 1770 | "src/" 1771 | ] 1772 | }, 1773 | "notification-url": "https://packagist.org/downloads/", 1774 | "license": [ 1775 | "BSD-3-Clause" 1776 | ], 1777 | "authors": [ 1778 | { 1779 | "name": "Sebastian Bergmann", 1780 | "email": "sebastian@phpunit.de" 1781 | }, 1782 | { 1783 | "name": "Jeff Welch", 1784 | "email": "whatthejeff@gmail.com" 1785 | }, 1786 | { 1787 | "name": "Volker Dusch", 1788 | "email": "github@wallbash.com" 1789 | }, 1790 | { 1791 | "name": "Bernhard Schussek", 1792 | "email": "bschussek@2bepublished.at" 1793 | } 1794 | ], 1795 | "description": "Provides the functionality to compare PHP values for equality", 1796 | "homepage": "https://github.com/sebastianbergmann/comparator", 1797 | "keywords": [ 1798 | "comparator", 1799 | "compare", 1800 | "equality" 1801 | ], 1802 | "support": { 1803 | "issues": "https://github.com/sebastianbergmann/comparator/issues", 1804 | "source": "https://github.com/sebastianbergmann/comparator/tree/master" 1805 | }, 1806 | "funding": [ 1807 | { 1808 | "url": "https://github.com/sebastianbergmann", 1809 | "type": "github" 1810 | } 1811 | ], 1812 | "time": "2021-01-31T06:05:24+00:00" 1813 | }, 1814 | { 1815 | "name": "sebastian/complexity", 1816 | "version": "dev-master", 1817 | "source": { 1818 | "type": "git", 1819 | "url": "https://github.com/sebastianbergmann/complexity.git", 1820 | "reference": "1e51f588b0bf9783d80e952339a1f057f530f3ac" 1821 | }, 1822 | "dist": { 1823 | "type": "zip", 1824 | "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/1e51f588b0bf9783d80e952339a1f057f530f3ac", 1825 | "reference": "1e51f588b0bf9783d80e952339a1f057f530f3ac", 1826 | "shasum": "" 1827 | }, 1828 | "require": { 1829 | "nikic/php-parser": "^4.7", 1830 | "php": ">=7.3" 1831 | }, 1832 | "require-dev": { 1833 | "phpunit/phpunit": "^9.3" 1834 | }, 1835 | "default-branch": true, 1836 | "type": "library", 1837 | "extra": { 1838 | "branch-alias": { 1839 | "dev-master": "2.0-dev" 1840 | } 1841 | }, 1842 | "autoload": { 1843 | "classmap": [ 1844 | "src/" 1845 | ] 1846 | }, 1847 | "notification-url": "https://packagist.org/downloads/", 1848 | "license": [ 1849 | "BSD-3-Clause" 1850 | ], 1851 | "authors": [ 1852 | { 1853 | "name": "Sebastian Bergmann", 1854 | "email": "sebastian@phpunit.de", 1855 | "role": "lead" 1856 | } 1857 | ], 1858 | "description": "Library for calculating the complexity of PHP code units", 1859 | "homepage": "https://github.com/sebastianbergmann/complexity", 1860 | "support": { 1861 | "issues": "https://github.com/sebastianbergmann/complexity/issues", 1862 | "source": "https://github.com/sebastianbergmann/complexity/tree/master" 1863 | }, 1864 | "funding": [ 1865 | { 1866 | "url": "https://github.com/sebastianbergmann", 1867 | "type": "github" 1868 | } 1869 | ], 1870 | "time": "2021-01-31T06:07:14+00:00" 1871 | }, 1872 | { 1873 | "name": "sebastian/diff", 1874 | "version": "dev-master", 1875 | "source": { 1876 | "type": "git", 1877 | "url": "https://github.com/sebastianbergmann/diff.git", 1878 | "reference": "492912a4b41de6a0127ebcd2f766b7d7f10f574c" 1879 | }, 1880 | "dist": { 1881 | "type": "zip", 1882 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/492912a4b41de6a0127ebcd2f766b7d7f10f574c", 1883 | "reference": "492912a4b41de6a0127ebcd2f766b7d7f10f574c", 1884 | "shasum": "" 1885 | }, 1886 | "require": { 1887 | "php": ">=7.3" 1888 | }, 1889 | "require-dev": { 1890 | "phpunit/phpunit": "^9.3", 1891 | "symfony/process": "^4.2 || ^5" 1892 | }, 1893 | "default-branch": true, 1894 | "type": "library", 1895 | "extra": { 1896 | "branch-alias": { 1897 | "dev-master": "4.0-dev" 1898 | } 1899 | }, 1900 | "autoload": { 1901 | "classmap": [ 1902 | "src/" 1903 | ] 1904 | }, 1905 | "notification-url": "https://packagist.org/downloads/", 1906 | "license": [ 1907 | "BSD-3-Clause" 1908 | ], 1909 | "authors": [ 1910 | { 1911 | "name": "Sebastian Bergmann", 1912 | "email": "sebastian@phpunit.de" 1913 | }, 1914 | { 1915 | "name": "Kore Nordmann", 1916 | "email": "mail@kore-nordmann.de" 1917 | } 1918 | ], 1919 | "description": "Diff implementation", 1920 | "homepage": "https://github.com/sebastianbergmann/diff", 1921 | "keywords": [ 1922 | "diff", 1923 | "udiff", 1924 | "unidiff", 1925 | "unified diff" 1926 | ], 1927 | "support": { 1928 | "issues": "https://github.com/sebastianbergmann/diff/issues", 1929 | "source": "https://github.com/sebastianbergmann/diff/tree/master" 1930 | }, 1931 | "funding": [ 1932 | { 1933 | "url": "https://github.com/sebastianbergmann", 1934 | "type": "github" 1935 | } 1936 | ], 1937 | "time": "2021-01-31T06:05:32+00:00" 1938 | }, 1939 | { 1940 | "name": "sebastian/environment", 1941 | "version": "dev-master", 1942 | "source": { 1943 | "type": "git", 1944 | "url": "https://github.com/sebastianbergmann/environment.git", 1945 | "reference": "36ffd0fc651961e864d955e6fd71ef03c367abae" 1946 | }, 1947 | "dist": { 1948 | "type": "zip", 1949 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/36ffd0fc651961e864d955e6fd71ef03c367abae", 1950 | "reference": "36ffd0fc651961e864d955e6fd71ef03c367abae", 1951 | "shasum": "" 1952 | }, 1953 | "require": { 1954 | "php": ">=7.3" 1955 | }, 1956 | "require-dev": { 1957 | "phpunit/phpunit": "^9.3" 1958 | }, 1959 | "suggest": { 1960 | "ext-posix": "*" 1961 | }, 1962 | "default-branch": true, 1963 | "type": "library", 1964 | "extra": { 1965 | "branch-alias": { 1966 | "dev-master": "5.1-dev" 1967 | } 1968 | }, 1969 | "autoload": { 1970 | "classmap": [ 1971 | "src/" 1972 | ] 1973 | }, 1974 | "notification-url": "https://packagist.org/downloads/", 1975 | "license": [ 1976 | "BSD-3-Clause" 1977 | ], 1978 | "authors": [ 1979 | { 1980 | "name": "Sebastian Bergmann", 1981 | "email": "sebastian@phpunit.de" 1982 | } 1983 | ], 1984 | "description": "Provides functionality to handle HHVM/PHP environments", 1985 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1986 | "keywords": [ 1987 | "Xdebug", 1988 | "environment", 1989 | "hhvm" 1990 | ], 1991 | "support": { 1992 | "issues": "https://github.com/sebastianbergmann/environment/issues", 1993 | "source": "https://github.com/sebastianbergmann/environment/tree/master" 1994 | }, 1995 | "funding": [ 1996 | { 1997 | "url": "https://github.com/sebastianbergmann", 1998 | "type": "github" 1999 | } 2000 | ], 2001 | "time": "2021-01-31T06:05:40+00:00" 2002 | }, 2003 | { 2004 | "name": "sebastian/exporter", 2005 | "version": "dev-master", 2006 | "source": { 2007 | "type": "git", 2008 | "url": "https://github.com/sebastianbergmann/exporter.git", 2009 | "reference": "61024af3555edd28c0e2df7ae6a72bb24b1c3f88" 2010 | }, 2011 | "dist": { 2012 | "type": "zip", 2013 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/61024af3555edd28c0e2df7ae6a72bb24b1c3f88", 2014 | "reference": "61024af3555edd28c0e2df7ae6a72bb24b1c3f88", 2015 | "shasum": "" 2016 | }, 2017 | "require": { 2018 | "php": ">=7.3", 2019 | "sebastian/recursion-context": "^4.0" 2020 | }, 2021 | "require-dev": { 2022 | "ext-mbstring": "*", 2023 | "phpunit/phpunit": "^9.3" 2024 | }, 2025 | "default-branch": true, 2026 | "type": "library", 2027 | "extra": { 2028 | "branch-alias": { 2029 | "dev-master": "4.0-dev" 2030 | } 2031 | }, 2032 | "autoload": { 2033 | "classmap": [ 2034 | "src/" 2035 | ] 2036 | }, 2037 | "notification-url": "https://packagist.org/downloads/", 2038 | "license": [ 2039 | "BSD-3-Clause" 2040 | ], 2041 | "authors": [ 2042 | { 2043 | "name": "Sebastian Bergmann", 2044 | "email": "sebastian@phpunit.de" 2045 | }, 2046 | { 2047 | "name": "Jeff Welch", 2048 | "email": "whatthejeff@gmail.com" 2049 | }, 2050 | { 2051 | "name": "Volker Dusch", 2052 | "email": "github@wallbash.com" 2053 | }, 2054 | { 2055 | "name": "Adam Harvey", 2056 | "email": "aharvey@php.net" 2057 | }, 2058 | { 2059 | "name": "Bernhard Schussek", 2060 | "email": "bschussek@gmail.com" 2061 | } 2062 | ], 2063 | "description": "Provides the functionality to export PHP variables for visualization", 2064 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2065 | "keywords": [ 2066 | "export", 2067 | "exporter" 2068 | ], 2069 | "support": { 2070 | "issues": "https://github.com/sebastianbergmann/exporter/issues", 2071 | "source": "https://github.com/sebastianbergmann/exporter/tree/master" 2072 | }, 2073 | "funding": [ 2074 | { 2075 | "url": "https://github.com/sebastianbergmann", 2076 | "type": "github" 2077 | } 2078 | ], 2079 | "time": "2021-01-31T06:05:49+00:00" 2080 | }, 2081 | { 2082 | "name": "sebastian/global-state", 2083 | "version": "dev-master", 2084 | "source": { 2085 | "type": "git", 2086 | "url": "https://github.com/sebastianbergmann/global-state.git", 2087 | "reference": "ebe2eda599117719755417db6552cf3e6cea68a3" 2088 | }, 2089 | "dist": { 2090 | "type": "zip", 2091 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/ebe2eda599117719755417db6552cf3e6cea68a3", 2092 | "reference": "ebe2eda599117719755417db6552cf3e6cea68a3", 2093 | "shasum": "" 2094 | }, 2095 | "require": { 2096 | "php": ">=7.3", 2097 | "sebastian/object-reflector": "^2.0", 2098 | "sebastian/recursion-context": "^4.0" 2099 | }, 2100 | "require-dev": { 2101 | "ext-dom": "*", 2102 | "phpunit/phpunit": "^9.3" 2103 | }, 2104 | "suggest": { 2105 | "ext-uopz": "*" 2106 | }, 2107 | "default-branch": true, 2108 | "type": "library", 2109 | "extra": { 2110 | "branch-alias": { 2111 | "dev-master": "5.0-dev" 2112 | } 2113 | }, 2114 | "autoload": { 2115 | "classmap": [ 2116 | "src/" 2117 | ] 2118 | }, 2119 | "notification-url": "https://packagist.org/downloads/", 2120 | "license": [ 2121 | "BSD-3-Clause" 2122 | ], 2123 | "authors": [ 2124 | { 2125 | "name": "Sebastian Bergmann", 2126 | "email": "sebastian@phpunit.de" 2127 | } 2128 | ], 2129 | "description": "Snapshotting of global state", 2130 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2131 | "keywords": [ 2132 | "global state" 2133 | ], 2134 | "support": { 2135 | "issues": "https://github.com/sebastianbergmann/global-state/issues", 2136 | "source": "https://github.com/sebastianbergmann/global-state/tree/master" 2137 | }, 2138 | "funding": [ 2139 | { 2140 | "url": "https://github.com/sebastianbergmann", 2141 | "type": "github" 2142 | } 2143 | ], 2144 | "time": "2021-01-31T06:05:57+00:00" 2145 | }, 2146 | { 2147 | "name": "sebastian/lines-of-code", 2148 | "version": "dev-master", 2149 | "source": { 2150 | "type": "git", 2151 | "url": "https://github.com/sebastianbergmann/lines-of-code.git", 2152 | "reference": "a58591ee219008ebc039a6ef1a1ad5ebd7aa5094" 2153 | }, 2154 | "dist": { 2155 | "type": "zip", 2156 | "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/a58591ee219008ebc039a6ef1a1ad5ebd7aa5094", 2157 | "reference": "a58591ee219008ebc039a6ef1a1ad5ebd7aa5094", 2158 | "shasum": "" 2159 | }, 2160 | "require": { 2161 | "nikic/php-parser": "^4.6", 2162 | "php": ">=7.3" 2163 | }, 2164 | "require-dev": { 2165 | "phpunit/phpunit": "^9.3" 2166 | }, 2167 | "default-branch": true, 2168 | "type": "library", 2169 | "extra": { 2170 | "branch-alias": { 2171 | "dev-master": "1.0-dev" 2172 | } 2173 | }, 2174 | "autoload": { 2175 | "classmap": [ 2176 | "src/" 2177 | ] 2178 | }, 2179 | "notification-url": "https://packagist.org/downloads/", 2180 | "license": [ 2181 | "BSD-3-Clause" 2182 | ], 2183 | "authors": [ 2184 | { 2185 | "name": "Sebastian Bergmann", 2186 | "email": "sebastian@phpunit.de", 2187 | "role": "lead" 2188 | } 2189 | ], 2190 | "description": "Library for counting the lines of code in PHP source code", 2191 | "homepage": "https://github.com/sebastianbergmann/lines-of-code", 2192 | "support": { 2193 | "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", 2194 | "source": "https://github.com/sebastianbergmann/lines-of-code/tree/master" 2195 | }, 2196 | "funding": [ 2197 | { 2198 | "url": "https://github.com/sebastianbergmann", 2199 | "type": "github" 2200 | } 2201 | ], 2202 | "time": "2021-01-31T06:07:23+00:00" 2203 | }, 2204 | { 2205 | "name": "sebastian/object-enumerator", 2206 | "version": "dev-master", 2207 | "source": { 2208 | "type": "git", 2209 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2210 | "reference": "c3392f76c657681a2fde9073a47d26190580acee" 2211 | }, 2212 | "dist": { 2213 | "type": "zip", 2214 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/c3392f76c657681a2fde9073a47d26190580acee", 2215 | "reference": "c3392f76c657681a2fde9073a47d26190580acee", 2216 | "shasum": "" 2217 | }, 2218 | "require": { 2219 | "php": ">=7.3", 2220 | "sebastian/object-reflector": "^2.0", 2221 | "sebastian/recursion-context": "^4.0" 2222 | }, 2223 | "require-dev": { 2224 | "phpunit/phpunit": "^9.3" 2225 | }, 2226 | "default-branch": true, 2227 | "type": "library", 2228 | "extra": { 2229 | "branch-alias": { 2230 | "dev-master": "4.0-dev" 2231 | } 2232 | }, 2233 | "autoload": { 2234 | "classmap": [ 2235 | "src/" 2236 | ] 2237 | }, 2238 | "notification-url": "https://packagist.org/downloads/", 2239 | "license": [ 2240 | "BSD-3-Clause" 2241 | ], 2242 | "authors": [ 2243 | { 2244 | "name": "Sebastian Bergmann", 2245 | "email": "sebastian@phpunit.de" 2246 | } 2247 | ], 2248 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2249 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2250 | "support": { 2251 | "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", 2252 | "source": "https://github.com/sebastianbergmann/object-enumerator/tree/master" 2253 | }, 2254 | "funding": [ 2255 | { 2256 | "url": "https://github.com/sebastianbergmann", 2257 | "type": "github" 2258 | } 2259 | ], 2260 | "time": "2021-01-31T06:06:06+00:00" 2261 | }, 2262 | { 2263 | "name": "sebastian/object-reflector", 2264 | "version": "dev-master", 2265 | "source": { 2266 | "type": "git", 2267 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2268 | "reference": "0b1e3b35407041b8f28c2d8b9f3d792720c81c23" 2269 | }, 2270 | "dist": { 2271 | "type": "zip", 2272 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/0b1e3b35407041b8f28c2d8b9f3d792720c81c23", 2273 | "reference": "0b1e3b35407041b8f28c2d8b9f3d792720c81c23", 2274 | "shasum": "" 2275 | }, 2276 | "require": { 2277 | "php": ">=7.3" 2278 | }, 2279 | "require-dev": { 2280 | "phpunit/phpunit": "^9.3" 2281 | }, 2282 | "default-branch": true, 2283 | "type": "library", 2284 | "extra": { 2285 | "branch-alias": { 2286 | "dev-master": "2.0-dev" 2287 | } 2288 | }, 2289 | "autoload": { 2290 | "classmap": [ 2291 | "src/" 2292 | ] 2293 | }, 2294 | "notification-url": "https://packagist.org/downloads/", 2295 | "license": [ 2296 | "BSD-3-Clause" 2297 | ], 2298 | "authors": [ 2299 | { 2300 | "name": "Sebastian Bergmann", 2301 | "email": "sebastian@phpunit.de" 2302 | } 2303 | ], 2304 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2305 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2306 | "support": { 2307 | "issues": "https://github.com/sebastianbergmann/object-reflector/issues", 2308 | "source": "https://github.com/sebastianbergmann/object-reflector/tree/master" 2309 | }, 2310 | "funding": [ 2311 | { 2312 | "url": "https://github.com/sebastianbergmann", 2313 | "type": "github" 2314 | } 2315 | ], 2316 | "time": "2021-01-31T06:06:15+00:00" 2317 | }, 2318 | { 2319 | "name": "sebastian/recursion-context", 2320 | "version": "dev-master", 2321 | "source": { 2322 | "type": "git", 2323 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2324 | "reference": "5df92f91b2cc5f733bb1d2df3eb81013a2bf69c6" 2325 | }, 2326 | "dist": { 2327 | "type": "zip", 2328 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5df92f91b2cc5f733bb1d2df3eb81013a2bf69c6", 2329 | "reference": "5df92f91b2cc5f733bb1d2df3eb81013a2bf69c6", 2330 | "shasum": "" 2331 | }, 2332 | "require": { 2333 | "php": ">=7.3" 2334 | }, 2335 | "require-dev": { 2336 | "phpunit/phpunit": "^9.3" 2337 | }, 2338 | "default-branch": true, 2339 | "type": "library", 2340 | "extra": { 2341 | "branch-alias": { 2342 | "dev-master": "4.0-dev" 2343 | } 2344 | }, 2345 | "autoload": { 2346 | "classmap": [ 2347 | "src/" 2348 | ] 2349 | }, 2350 | "notification-url": "https://packagist.org/downloads/", 2351 | "license": [ 2352 | "BSD-3-Clause" 2353 | ], 2354 | "authors": [ 2355 | { 2356 | "name": "Sebastian Bergmann", 2357 | "email": "sebastian@phpunit.de" 2358 | }, 2359 | { 2360 | "name": "Jeff Welch", 2361 | "email": "whatthejeff@gmail.com" 2362 | }, 2363 | { 2364 | "name": "Adam Harvey", 2365 | "email": "aharvey@php.net" 2366 | } 2367 | ], 2368 | "description": "Provides functionality to recursively process PHP variables", 2369 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2370 | "support": { 2371 | "issues": "https://github.com/sebastianbergmann/recursion-context/issues", 2372 | "source": "https://github.com/sebastianbergmann/recursion-context/tree/master" 2373 | }, 2374 | "funding": [ 2375 | { 2376 | "url": "https://github.com/sebastianbergmann", 2377 | "type": "github" 2378 | } 2379 | ], 2380 | "time": "2021-01-31T06:06:48+00:00" 2381 | }, 2382 | { 2383 | "name": "sebastian/resource-operations", 2384 | "version": "dev-master", 2385 | "source": { 2386 | "type": "git", 2387 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2388 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" 2389 | }, 2390 | "dist": { 2391 | "type": "zip", 2392 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 2393 | "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", 2394 | "shasum": "" 2395 | }, 2396 | "require": { 2397 | "php": ">=7.3" 2398 | }, 2399 | "require-dev": { 2400 | "phpunit/phpunit": "^9.0" 2401 | }, 2402 | "default-branch": true, 2403 | "type": "library", 2404 | "extra": { 2405 | "branch-alias": { 2406 | "dev-master": "3.0-dev" 2407 | } 2408 | }, 2409 | "autoload": { 2410 | "classmap": [ 2411 | "src/" 2412 | ] 2413 | }, 2414 | "notification-url": "https://packagist.org/downloads/", 2415 | "license": [ 2416 | "BSD-3-Clause" 2417 | ], 2418 | "authors": [ 2419 | { 2420 | "name": "Sebastian Bergmann", 2421 | "email": "sebastian@phpunit.de" 2422 | } 2423 | ], 2424 | "description": "Provides a list of PHP built-in functions that operate on resources", 2425 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2426 | "support": { 2427 | "issues": "https://github.com/sebastianbergmann/resource-operations/issues", 2428 | "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" 2429 | }, 2430 | "funding": [ 2431 | { 2432 | "url": "https://github.com/sebastianbergmann", 2433 | "type": "github" 2434 | } 2435 | ], 2436 | "time": "2020-09-28T06:45:17+00:00" 2437 | }, 2438 | { 2439 | "name": "sebastian/type", 2440 | "version": "dev-master", 2441 | "source": { 2442 | "type": "git", 2443 | "url": "https://github.com/sebastianbergmann/type.git", 2444 | "reference": "6751662dde805fb5e46e05d3133a89e056796404" 2445 | }, 2446 | "dist": { 2447 | "type": "zip", 2448 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/6751662dde805fb5e46e05d3133a89e056796404", 2449 | "reference": "6751662dde805fb5e46e05d3133a89e056796404", 2450 | "shasum": "" 2451 | }, 2452 | "require": { 2453 | "php": ">=7.3" 2454 | }, 2455 | "require-dev": { 2456 | "phpunit/phpunit": "^9.3" 2457 | }, 2458 | "default-branch": true, 2459 | "type": "library", 2460 | "extra": { 2461 | "branch-alias": { 2462 | "dev-master": "2.3-dev" 2463 | } 2464 | }, 2465 | "autoload": { 2466 | "classmap": [ 2467 | "src/" 2468 | ] 2469 | }, 2470 | "notification-url": "https://packagist.org/downloads/", 2471 | "license": [ 2472 | "BSD-3-Clause" 2473 | ], 2474 | "authors": [ 2475 | { 2476 | "name": "Sebastian Bergmann", 2477 | "email": "sebastian@phpunit.de", 2478 | "role": "lead" 2479 | } 2480 | ], 2481 | "description": "Collection of value objects that represent the types of the PHP type system", 2482 | "homepage": "https://github.com/sebastianbergmann/type", 2483 | "support": { 2484 | "issues": "https://github.com/sebastianbergmann/type/issues", 2485 | "source": "https://github.com/sebastianbergmann/type/tree/master" 2486 | }, 2487 | "funding": [ 2488 | { 2489 | "url": "https://github.com/sebastianbergmann", 2490 | "type": "github" 2491 | } 2492 | ], 2493 | "time": "2021-01-31T06:06:56+00:00" 2494 | }, 2495 | { 2496 | "name": "sebastian/version", 2497 | "version": "dev-master", 2498 | "source": { 2499 | "type": "git", 2500 | "url": "https://github.com/sebastianbergmann/version.git", 2501 | "reference": "c6c1022351a901512170118436c764e473f6de8c" 2502 | }, 2503 | "dist": { 2504 | "type": "zip", 2505 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", 2506 | "reference": "c6c1022351a901512170118436c764e473f6de8c", 2507 | "shasum": "" 2508 | }, 2509 | "require": { 2510 | "php": ">=7.3" 2511 | }, 2512 | "default-branch": true, 2513 | "type": "library", 2514 | "extra": { 2515 | "branch-alias": { 2516 | "dev-master": "3.0-dev" 2517 | } 2518 | }, 2519 | "autoload": { 2520 | "classmap": [ 2521 | "src/" 2522 | ] 2523 | }, 2524 | "notification-url": "https://packagist.org/downloads/", 2525 | "license": [ 2526 | "BSD-3-Clause" 2527 | ], 2528 | "authors": [ 2529 | { 2530 | "name": "Sebastian Bergmann", 2531 | "email": "sebastian@phpunit.de", 2532 | "role": "lead" 2533 | } 2534 | ], 2535 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2536 | "homepage": "https://github.com/sebastianbergmann/version", 2537 | "support": { 2538 | "issues": "https://github.com/sebastianbergmann/version/issues", 2539 | "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" 2540 | }, 2541 | "funding": [ 2542 | { 2543 | "url": "https://github.com/sebastianbergmann", 2544 | "type": "github" 2545 | } 2546 | ], 2547 | "time": "2020-09-28T06:39:44+00:00" 2548 | }, 2549 | { 2550 | "name": "symfony/polyfill-ctype", 2551 | "version": "dev-main", 2552 | "source": { 2553 | "type": "git", 2554 | "url": "https://github.com/symfony/polyfill-ctype.git", 2555 | "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" 2556 | }, 2557 | "dist": { 2558 | "type": "zip", 2559 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", 2560 | "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", 2561 | "shasum": "" 2562 | }, 2563 | "require": { 2564 | "php": ">=7.1" 2565 | }, 2566 | "suggest": { 2567 | "ext-ctype": "For best performance" 2568 | }, 2569 | "default-branch": true, 2570 | "type": "library", 2571 | "extra": { 2572 | "branch-alias": { 2573 | "dev-main": "1.22-dev" 2574 | }, 2575 | "thanks": { 2576 | "name": "symfony/polyfill", 2577 | "url": "https://github.com/symfony/polyfill" 2578 | } 2579 | }, 2580 | "autoload": { 2581 | "psr-4": { 2582 | "Symfony\\Polyfill\\Ctype\\": "" 2583 | }, 2584 | "files": [ 2585 | "bootstrap.php" 2586 | ] 2587 | }, 2588 | "notification-url": "https://packagist.org/downloads/", 2589 | "license": [ 2590 | "MIT" 2591 | ], 2592 | "authors": [ 2593 | { 2594 | "name": "Gert de Pagter", 2595 | "email": "BackEndTea@gmail.com" 2596 | }, 2597 | { 2598 | "name": "Symfony Community", 2599 | "homepage": "https://symfony.com/contributors" 2600 | } 2601 | ], 2602 | "description": "Symfony polyfill for ctype functions", 2603 | "homepage": "https://symfony.com", 2604 | "keywords": [ 2605 | "compatibility", 2606 | "ctype", 2607 | "polyfill", 2608 | "portable" 2609 | ], 2610 | "support": { 2611 | "source": "https://github.com/symfony/polyfill-ctype/tree/v1.22.0" 2612 | }, 2613 | "funding": [ 2614 | { 2615 | "url": "https://symfony.com/sponsor", 2616 | "type": "custom" 2617 | }, 2618 | { 2619 | "url": "https://github.com/fabpot", 2620 | "type": "github" 2621 | }, 2622 | { 2623 | "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", 2624 | "type": "tidelift" 2625 | } 2626 | ], 2627 | "time": "2021-01-07T16:49:33+00:00" 2628 | }, 2629 | { 2630 | "name": "theseer/tokenizer", 2631 | "version": "1.2.0", 2632 | "source": { 2633 | "type": "git", 2634 | "url": "https://github.com/theseer/tokenizer.git", 2635 | "reference": "75a63c33a8577608444246075ea0af0d052e452a" 2636 | }, 2637 | "dist": { 2638 | "type": "zip", 2639 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", 2640 | "reference": "75a63c33a8577608444246075ea0af0d052e452a", 2641 | "shasum": "" 2642 | }, 2643 | "require": { 2644 | "ext-dom": "*", 2645 | "ext-tokenizer": "*", 2646 | "ext-xmlwriter": "*", 2647 | "php": "^7.2 || ^8.0" 2648 | }, 2649 | "type": "library", 2650 | "autoload": { 2651 | "classmap": [ 2652 | "src/" 2653 | ] 2654 | }, 2655 | "notification-url": "https://packagist.org/downloads/", 2656 | "license": [ 2657 | "BSD-3-Clause" 2658 | ], 2659 | "authors": [ 2660 | { 2661 | "name": "Arne Blankerts", 2662 | "email": "arne@blankerts.de", 2663 | "role": "Developer" 2664 | } 2665 | ], 2666 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2667 | "support": { 2668 | "issues": "https://github.com/theseer/tokenizer/issues", 2669 | "source": "https://github.com/theseer/tokenizer/tree/master" 2670 | }, 2671 | "funding": [ 2672 | { 2673 | "url": "https://github.com/theseer", 2674 | "type": "github" 2675 | } 2676 | ], 2677 | "time": "2020-07-12T23:59:07+00:00" 2678 | }, 2679 | { 2680 | "name": "webmozart/assert", 2681 | "version": "dev-master", 2682 | "source": { 2683 | "type": "git", 2684 | "url": "https://github.com/webmozarts/assert.git", 2685 | "reference": "9c89b265ccc4092d58e66d72af5d343ee77a41ae" 2686 | }, 2687 | "dist": { 2688 | "type": "zip", 2689 | "url": "https://api.github.com/repos/webmozarts/assert/zipball/9c89b265ccc4092d58e66d72af5d343ee77a41ae", 2690 | "reference": "9c89b265ccc4092d58e66d72af5d343ee77a41ae", 2691 | "shasum": "" 2692 | }, 2693 | "require": { 2694 | "php": "^7.2 || ^8.0", 2695 | "symfony/polyfill-ctype": "^1.8" 2696 | }, 2697 | "conflict": { 2698 | "phpstan/phpstan": "<0.12.20", 2699 | "vimeo/psalm": "<3.9.1" 2700 | }, 2701 | "require-dev": { 2702 | "phpunit/phpunit": "^8.5.13" 2703 | }, 2704 | "default-branch": true, 2705 | "type": "library", 2706 | "extra": { 2707 | "branch-alias": { 2708 | "dev-master": "1.10-dev" 2709 | } 2710 | }, 2711 | "autoload": { 2712 | "psr-4": { 2713 | "Webmozart\\Assert\\": "src/" 2714 | } 2715 | }, 2716 | "notification-url": "https://packagist.org/downloads/", 2717 | "license": [ 2718 | "MIT" 2719 | ], 2720 | "authors": [ 2721 | { 2722 | "name": "Bernhard Schussek", 2723 | "email": "bschussek@gmail.com" 2724 | } 2725 | ], 2726 | "description": "Assertions to validate method input/output with nice error messages.", 2727 | "keywords": [ 2728 | "assert", 2729 | "check", 2730 | "validate" 2731 | ], 2732 | "support": { 2733 | "issues": "https://github.com/webmozarts/assert/issues", 2734 | "source": "https://github.com/webmozarts/assert/tree/master" 2735 | }, 2736 | "time": "2021-01-18T12:52:36+00:00" 2737 | } 2738 | ], 2739 | "packages-dev": [], 2740 | "aliases": [], 2741 | "minimum-stability": "dev", 2742 | "stability-flags": [], 2743 | "prefer-stable": false, 2744 | "prefer-lowest": false, 2745 | "platform": { 2746 | "php": "^8" 2747 | }, 2748 | "platform-dev": [], 2749 | "plugin-api-version": "2.0.0" 2750 | } 2751 | --------------------------------------------------------------------------------