├── .coveralls.yml ├── .phpcs.xml ├── src └── AzureSearch │ ├── Exception │ ├── ExceptionInterface.php │ └── LengthException.php │ ├── Index │ ├── Suggest.php │ └── Field.php │ ├── Index.php │ └── Service.php ├── .gitignore ├── phpunit.xml.dist ├── .travis.yml ├── LICENSE ├── composer.json ├── azure-pipelines.yml ├── README.md ├── test └── AzureSearchTest.php └── composer.lock /.coveralls.yml: -------------------------------------------------------------------------------- 1 | coverage_clover: clover.xml 2 | service_name: travis-pro 3 | repo_token: O88AvYJFPx3xd8XdWI5bmrp0bQ2wRmGgo 4 | json_path: coveralls-upload.json -------------------------------------------------------------------------------- /.phpcs.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | ./src 4 | ./test 5 | 6 | -------------------------------------------------------------------------------- /src/AzureSearch/Exception/ExceptionInterface.php: -------------------------------------------------------------------------------- 1 | 2 | 6 | 7 | 8 | ./test/ 9 | 10 | 11 | 12 | 13 | ./src 14 | 15 | 16 | 17 | 18 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | sudo: false 2 | 3 | language: php 4 | 5 | cache: 6 | directories: 7 | - $HOME/.composer/cache 8 | 9 | env: 10 | global: 11 | - COMPOSER_ARGS="--no-interaction" 12 | 13 | matrix: 14 | include: 15 | - php: 7.0 16 | - php: 7.1 17 | - php: 7.2 18 | env: 19 | - CS_CHECK=true 20 | - TEST_COVERAGE=true 21 | 22 | before_install: 23 | - if [[ $TEST_COVERAGE != 'true' ]]; then phpenv config-rm xdebug.ini || return 0 ; fi 24 | 25 | install: 26 | - travis_retry composer install $COMPOSER_ARGS --ignore-platform-reqs 27 | - stty cols 120 && composer show 28 | 29 | script: 30 | - if [[ $TEST_COVERAGE == 'true' ]]; then composer test-coverage ; else composer test ; fi 31 | - if [[ $CS_CHECK == 'true' ]]; then composer cs-check ; fi 32 | 33 | after_script: 34 | - if [[ $TEST_COVERAGE == 'true' ]]; then travis_retry php vendor/bin/php-coveralls -v ; fi -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2016 B3N 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "benjaminhirsch/php-azure-search", 3 | "description": "A simple PHP Class to communicate with the Microsoft Azure Search REST API", 4 | "minimum-stability": "stable", 5 | "license": "MIT", 6 | "config": { 7 | "platform": { 8 | "php": "7.0.32" 9 | } 10 | }, 11 | "authors": [ 12 | { 13 | "name": "Benjamin Hirsch", 14 | "email": "mail@benjaminhirsch.net" 15 | } 16 | ], 17 | "keywords": [ 18 | "azure", 19 | "search", 20 | "microsoft" 21 | ], 22 | "require": { 23 | "php": "^7.0", 24 | "zendframework/zend-http": "^2.8", 25 | "ext-json": "*" 26 | }, 27 | "require-dev": { 28 | "roave/security-advisories": "dev-master", 29 | "phpunit/phpunit": "^6.0", 30 | "squizlabs/php_codesniffer": "^3.3", 31 | "php-coveralls/php-coveralls": "^2.1" 32 | }, 33 | "autoload": { 34 | "psr-4": { 35 | "BenjaminHirsch\\Azure\\Search\\": "src/AzureSearch" 36 | } 37 | }, 38 | "autoload-dev": { 39 | "psr-4": { 40 | "BenjaminHirschTest\\Azure\\Search\\": "test/" 41 | } 42 | }, 43 | "scripts": { 44 | "check": [ 45 | "@cs-check", 46 | "@test" 47 | ], 48 | "cs-check": "phpcs", 49 | "cs-fix": "phpcbf", 50 | "test": "phpunit --colors=always", 51 | "test-coverage": "phpunit --colors=always --coverage-clover clover.xml --log-junit junit/log.xml" 52 | } 53 | } 54 | -------------------------------------------------------------------------------- /src/AzureSearch/Index/Suggest.php: -------------------------------------------------------------------------------- 1 | name = $name; 41 | $this->sourceFields = $sourceFields; 42 | $this->mode = $mode; 43 | } 44 | 45 | /** 46 | * @return array 47 | */ 48 | public function __invoke() 49 | { 50 | return [ 51 | 'name' => $this->name, 52 | 'sourceFields' => $this->sourceFields, 53 | 'searchMode' => $this->mode 54 | ]; 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /azure-pipelines.yml: -------------------------------------------------------------------------------- 1 | # PHP 2 | # Test and package your PHP application. 3 | # Add steps that run tests, save build artifacts, deploy, and more: 4 | # https://docs.microsoft.com/azure/devops/pipelines/languages/php 5 | 6 | jobs: 7 | - job: PHP_70 8 | pool: 9 | vmImage: 'Ubuntu 16.04' 10 | 11 | variables: 12 | phpVersion: 7.0 13 | 14 | steps: 15 | - script: | 16 | sudo update-alternatives --set php /usr/bin/php$(phpVersion) 17 | sudo update-alternatives --set phar /usr/bin/phar$(phpVersion) 18 | sudo update-alternatives --set phpdbg /usr/bin/phpdbg$(phpVersion) 19 | sudo update-alternatives --set php-cgi /usr/bin/php-cgi$(phpVersion) 20 | sudo update-alternatives --set phar.phar /usr/bin/phar.phar$(phpVersion) 21 | php -version 22 | displayName: 'Use PHP version $(phpVersion)' 23 | 24 | - script: composer install --no-interaction --prefer-dist 25 | displayName: 'composer install' 26 | 27 | - script: composer test-coverage 28 | displayName: 'Run tests with phpunit' 29 | 30 | - job: PHP_71 31 | pool: 32 | vmImage: 'Ubuntu 16.04' 33 | 34 | variables: 35 | phpVersion: 7.1 36 | 37 | steps: 38 | - script: | 39 | sudo update-alternatives --set php /usr/bin/php$(phpVersion) 40 | sudo update-alternatives --set phar /usr/bin/phar$(phpVersion) 41 | sudo update-alternatives --set phpdbg /usr/bin/phpdbg$(phpVersion) 42 | sudo update-alternatives --set php-cgi /usr/bin/php-cgi$(phpVersion) 43 | sudo update-alternatives --set phar.phar /usr/bin/phar.phar$(phpVersion) 44 | php -version 45 | displayName: 'Use PHP version $(phpVersion)' 46 | 47 | - script: composer install --no-interaction --prefer-dist 48 | displayName: 'composer install' 49 | 50 | - script: composer test-coverage 51 | displayName: 'Run tests with phpunit' 52 | 53 | - job: PHP_72 54 | pool: 55 | vmImage: 'Ubuntu 16.04' 56 | 57 | variables: 58 | phpVersion: 7.2 59 | 60 | steps: 61 | - script: | 62 | sudo update-alternatives --set php /usr/bin/php$(phpVersion) 63 | sudo update-alternatives --set phar /usr/bin/phar$(phpVersion) 64 | sudo update-alternatives --set phpdbg /usr/bin/phpdbg$(phpVersion) 65 | sudo update-alternatives --set php-cgi /usr/bin/php-cgi$(phpVersion) 66 | sudo update-alternatives --set phar.phar /usr/bin/phar.phar$(phpVersion) 67 | php -version 68 | displayName: 'Use PHP version $(phpVersion)' 69 | 70 | - script: composer install --no-interaction --prefer-dist 71 | displayName: 'composer install' 72 | 73 | - script: composer test-coverage 74 | displayName: 'Run tests with phpunit' 75 | 76 | - script: composer cs-check 77 | displayName: 'Run cs checks' 78 | 79 | - script: php vendor/bin/php-coveralls -v 80 | displayName: 'Code coverage' 81 | 82 | # Publish test results 83 | #- task: PublishTestResults@2 84 | # displayName: Publish test results test-log.xml 85 | # inputs: 86 | # testResultsFiles: 'log.xml' 87 | # testRunTitle: 'PHPUnit test results' 88 | # searchFolder: '$(System.DefaultWorkingDirectory)/junit' -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # ❗This package is no longer maintained due to missing time and personal relevance ❗ 2 | 3 | ## Microsoft Azure Search Service for php 4 | [![Latest Stable Version](https://poser.pugx.org/benjaminhirsch/php-azure-search/v/stable)](https://packagist.org/packages/benjaminhirsch/php-azure-search) 5 | [![Build Status](https://benjaminhirsch.visualstudio.com/azure-search-php/_apis/build/status/benjaminhirsch.azure-search-php)](https://benjaminhirsch.visualstudio.com/azure-search-php/_build/latest?definitionId=1) 6 | [![Build Status](https://travis-ci.com/benjaminhirsch/azure-search-php.svg?branch=master)](https://travis-ci.org/benjaminhirsch/azure-search-php) 7 | [![Coverage Status](https://coveralls.io/repos/github/benjaminhirsch/azure-search-php/badge.svg?branch=master&t=1)](https://coveralls.io/github/benjaminhirsch/azure-search-php?branch=master) 8 | [![License](https://poser.pugx.org/benjaminhirsch/php-azure-search/license)](https://packagist.org/packages/benjaminhirsch/php-azure-search) 9 | 10 | 11 | `benjaminhirsch/php-azure-search` is a simple php toolbox to interact with the Microsoft Azure Search Service REST API. 12 | 13 | **Features:** 14 | - Create, update and delete indexes including suggesters and corsOptions 15 | - Create, update and delete all type of fields including collections 16 | - List indexes 17 | - Get index statistics 18 | - Add, update and delete documents 19 | - Search documents 20 | - Get live suggestions 21 | - Count documents 22 | 23 | **Upcomming Features** 24 | * Add scoring profiles 25 | 26 | ## Installation 27 | The easiest way to get started is to install `benjaminhirsch/php-azure-search` via composer. 28 | ```bash 29 | $ composer require benjaminhirsch/php-azure-search 30 | ``` 31 | --- 32 | 33 | ### Initalize 34 | You get your credentials `$azure_url`, `$azure_admin_key` and `$azure_version` in your Microsoft Azure portal under "Search Services". 35 | ```php 36 | $azuresearch = new BenjaminHirsch\Azure\Search\Service(azure_url, azure_admin_key, azure_version); 37 | ``` 38 | 39 | ### Create a Index 40 | At first you have to create a index `BenjaminHirsch\Azure\Search\Index` in which you have to store your documents later. Your index can be filled with as many fields as you want. Adding a suggester is optional but required if you want to use live search (suggestions). 41 | 42 | ```php 43 | $index = new BenjaminHirsch\Azure\Search\Index('name of your index'); 44 | $index->addField(new BenjaminHirsch\Azure\Search\Index\Field('field name 1', BenjaminHirsch\Azure\Search\Index\Field::TYPE_STRING, true)) 45 | ->addField(new BenjaminHirsch\Azure\Search\Index\Field('field name 2', BenjaminHirsch\Azure\Search\Index\Field::TYPE_STRING)) 46 | ->addSuggesters(new BenjaminHirsch\Azure\Search\Index\Suggest('livesearch', ['field name(s)'])); 47 | 48 | $azuresearch->createIndex($index); 49 | ``` 50 | 51 | ### Delete a index 52 | Deletes the complete index from Azure. Deleting a index also deletes the documents stored in the index. 53 | ```php 54 | $azuresearch->deleteIndex('name of the index to delete'); 55 | ``` 56 | 57 | ### Upload documents 58 | After you have created a index, you are ready to fill the index with your data. Maximum array size per request (1000). 59 | ```php 60 | $data['value'][] = [ 61 | '@search.action' => BenjaminHirsch\Azure\Search\Index::ACTION_UPLOAD, 62 | 'field name 1' => , 63 | 'field name 2' => 64 | ]; 65 | 66 | $azuresearch->uploadToIndex('name of your index', $data); 67 | ``` 68 | 69 | ### Live search (suggestions) 70 | ```php 71 | $azuresearch->suggestions('name of your index', 'your term', 'livesearch') 72 | ``` 73 | 74 | ### Search documents 75 | ```php 76 | $azuresearch->search('name of your index', 'your term'); 77 | ``` 78 | -------------------------------------------------------------------------------- /src/AzureSearch/Index.php: -------------------------------------------------------------------------------- 1 | name = $name; 73 | } 74 | 75 | /** 76 | * @return string 77 | */ 78 | public function getName() 79 | { 80 | return $this->name; 81 | } 82 | 83 | /** 84 | * @param Field $field 85 | * 86 | * @return Index 87 | */ 88 | public function addField(Field $field): Index 89 | { 90 | $this->fields[] = $field(); 91 | 92 | return $this; 93 | } 94 | 95 | /** 96 | * @param Suggest $suggest 97 | * 98 | * @return Index 99 | */ 100 | public function addSuggesters(Suggest $suggest): Index 101 | { 102 | $this->suggesters[] = $suggest(); 103 | 104 | return $this; 105 | } 106 | 107 | /** 108 | * @param mixed(string|array) $allowedOrigins 109 | * @param int $maxAgeInSeconds 110 | * 111 | * @return Index 112 | */ 113 | public function addCrossOrigins($allowedOrigins, int $maxAgeInSeconds = 0): Index 114 | { 115 | $this->crossOrigins = $allowedOrigins; 116 | $this->maxAgeInSecond = $maxAgeInSeconds; 117 | 118 | return $this; 119 | } 120 | 121 | /** 122 | * @todo Implement possibility to add scoring profiles 123 | * 124 | * @throws \Exception 125 | */ 126 | public function addScoringProfile() 127 | { 128 | throw new \RuntimeException('Not yet implemented'); 129 | } 130 | 131 | /** 132 | * @return array 133 | */ 134 | public function __invoke() 135 | { 136 | return [ 137 | 'name' => $this->name, 138 | 'fields' => $this->fields, 139 | 'suggesters' => $this->suggesters, 140 | 'corsOptions' => $this->crossOrigins 141 | ]; 142 | } 143 | } 144 | -------------------------------------------------------------------------------- /src/AzureSearch/Index/Field.php: -------------------------------------------------------------------------------- 1 | name = $name; 150 | $this->type = $type; 151 | $this->searchable = $searchable; 152 | $this->filterable = $filterable; 153 | $this->sortable = $sortable; 154 | $this->facetable = $facetable; 155 | $this->key = $key; 156 | $this->retrievable = $retrievable; 157 | $this->analyzer = $analyzer; 158 | } 159 | 160 | /** 161 | * @return array 162 | */ 163 | public function __invoke() 164 | { 165 | return [ 166 | 'name' => $this->name, 167 | 'type' => $this->type, 168 | 'searchable' => $this->searchable, 169 | 'filterable' => $this->filterable, 170 | 'sortable' => $this->sortable, 171 | 'facetable' => $this->facetable, 172 | 'key' => $this->key, 173 | 'retrievable' => $this->retrievable, 174 | 'analyzer' => $this->analyzer 175 | ]; 176 | } 177 | } 178 | -------------------------------------------------------------------------------- /test/AzureSearchTest.php: -------------------------------------------------------------------------------- 1 | client = $this->getMockBuilder(Client::class) 27 | ->setMethods(['setMethod', 'send']) 28 | ->disableOriginalConstructor() 29 | ->getMock(); 30 | 31 | $this->client->method('setMethod')->willReturn($this->client); 32 | 33 | $this->azure = new Service( 34 | 'http://127.0.0.1', 35 | 'AZURE_ADMIN_KEY', 36 | 'AZURE_VERSION', 37 | null, 38 | $this->client 39 | ); 40 | } 41 | 42 | public function testConstruct() 43 | { 44 | $this->assertInstanceOf(Service::class, $foo = new Service( 45 | 'http://127.0.0.1', 46 | 'AZURE_ADMIN_KEY', 47 | 'AZURE_VERSION', 48 | null, 49 | $this->client 50 | )); 51 | 52 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)); 53 | $foo->getIndex('testindex'); 54 | 55 | $this->assertInstanceOf(Service::class, $foo = new Service( 56 | 'http://127.0.0.1', 57 | 'AZURE_ADMIN_KEY', 58 | 'AZURE_VERSION', 59 | null, 60 | null 61 | )); 62 | 63 | $this->expectException(\Zend\Http\Exception\RuntimeException::class); 64 | $foo->getIndex('testindex'); 65 | } 66 | 67 | public function testInitAzureAdmin() 68 | { 69 | $this->assertInstanceOf('BenjaminHirsch\Azure\Search\Service', $this->azure); 70 | $this->assertEquals('http://127.0.0.1', $this->azure->getUrl()); 71 | $this->assertEquals('AZURE_ADMIN_KEY', $this->azure->getApiAdminKey()); 72 | } 73 | 74 | public function testCreateIndex() 75 | { 76 | 77 | $this->client->method('send')->willReturn((new Response())->setStatusCode(201)); 78 | 79 | $index = new Index('testindex'); 80 | $index->addField(new Field('test', Field::TYPE_STRING, true)) 81 | ->addField(new Field('test2', Field::TYPE_STRING)) 82 | ->addCrossOrigins('foo', 1) 83 | ->addSuggesters(new Index\Suggest('livesearch', ['test'])); 84 | 85 | /** @var \Zend\Http\Response $response */ 86 | $response = $this->azure->createIndex($index); 87 | 88 | $this->assertEquals(Response::STATUS_CODE_201, $response->getStatusCode()); 89 | } 90 | 91 | public function testAddScoringProfile() 92 | { 93 | $this->expectException(\RuntimeException::class); 94 | $index = new Index('testindex'); 95 | $index->addScoringProfile(); 96 | } 97 | 98 | public function testUploadToIndex() 99 | { 100 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)); 101 | 102 | $data = []; 103 | for ($i = 1; $i <= 10; $i++) { 104 | $data['value'][] = [ 105 | '@search.action' => Index::ACTION_UPLOAD, 106 | 'test' => uniqid('', true), 107 | 'test2' => microtime() . ' Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy.' 108 | ]; 109 | } 110 | 111 | /** @var \Zend\Http\Response $response */ 112 | $response = $this->azure->uploadToIndex('testindex', $data); 113 | 114 | $this->assertEquals(Response::STATUS_CODE_200, $response->getStatusCode()); 115 | } 116 | 117 | public function testCountDocuments() 118 | { 119 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)->setContent(10)); 120 | $this->assertEquals(10, $this->azure->countDocuments('testindex')); 121 | } 122 | 123 | public function testFailCountDocuments() 124 | { 125 | $this->client->method('send')->willReturn((new Response())->setStatusCode(500)->setContent(null)); 126 | $this->assertEquals(0, $this->azure->countDocuments('testindex')); 127 | } 128 | 129 | public function testSuggest() 130 | { 131 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200) 132 | ->setContent(json_encode(['foo' => 'bar']))); 133 | $this->assertEquals( 134 | ['foo' => 'bar'], 135 | $this->azure->suggestions('testindex', uniqid('', true), 'livesearch', ['foo' => 'bar']) 136 | ); 137 | } 138 | 139 | public function testFailSuggest() 140 | { 141 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)->setContent(null)); 142 | $this->assertEquals( 143 | [], 144 | $this->azure->suggestions('testindex', uniqid('', true), 'livesearch') 145 | ); 146 | } 147 | 148 | public function testDeleteIndex() 149 | { 150 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)); 151 | 152 | /** @var \Zend\Http\Response $response */ 153 | $response = $this->azure->deleteIndex('testindex'); 154 | 155 | $this->assertGreaterThanOrEqual(Response::STATUS_CODE_200, $response->getStatusCode()); 156 | $this->assertLessThan(Response::STATUS_CODE_300, $response->getStatusCode()); 157 | } 158 | 159 | public function testSearch() 160 | { 161 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200) 162 | ->setContent(json_encode(['foo' => 'bar']))); 163 | $this->assertEquals(['foo' => 'bar'], $this->azure->search('testindex', 'foo', ['foo' => 'bar'])); 164 | } 165 | 166 | public function testFailSearch() 167 | { 168 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200) 169 | ->setContent(null)); 170 | 171 | $this->assertEquals([], $this->azure->search('testindex', 'foo')); 172 | } 173 | 174 | public function testUpdateIndex() 175 | { 176 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)); 177 | $response = $this->azure->updateIndex(new Index('testindex')); 178 | $this->assertInstanceOf(Response::class, $response); 179 | $this->assertEquals(Response::STATUS_CODE_200, $response->getStatusCode()); 180 | } 181 | 182 | public function testListIndexes() 183 | { 184 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200) 185 | ->setContent(json_encode([ 186 | 'value' => [ 187 | 'foo' => 'bar' 188 | ] 189 | ]))); 190 | 191 | $this->assertArrayHasKey( 192 | 'foo', 193 | $this->azure->listIndexes() 194 | ); 195 | } 196 | 197 | public function testFailListIndexes() 198 | { 199 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200) 200 | ->setContent(json_encode(null))); 201 | 202 | $this->assertEquals( 203 | [], 204 | $this->azure->listIndexes() 205 | ); 206 | } 207 | 208 | public function testGetIndex() 209 | { 210 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)->setContent( 211 | json_encode(['foo' => 'bar']) 212 | )); 213 | $this->assertEquals(['foo' => 'bar'], $this->azure->getIndex('testindex')); 214 | } 215 | 216 | public function testFailGetIndex() 217 | { 218 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)->setContent(null)); 219 | $this->assertEquals([], $this->azure->getIndex('testindex')); 220 | } 221 | 222 | public function testGetIndexStatistics() 223 | { 224 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)->setContent( 225 | json_encode(['foo' => 'bar']) 226 | )); 227 | $this->assertEquals(['foo' => 'bar'], $this->azure->getIndexStatistics('testindex')); 228 | } 229 | 230 | public function testFailGetIndexStatistics() 231 | { 232 | $this->client->method('send')->willReturn((new Response())->setStatusCode(200)->setContent(null)); 233 | $this->assertEquals([], $this->azure->getIndexStatistics('testindex')); 234 | } 235 | 236 | public function testExceededUploadLimit() 237 | { 238 | $this->expectException(LengthException::class); 239 | $this->azure->uploadToIndex('testindex', range(1, 2000)); 240 | } 241 | } 242 | -------------------------------------------------------------------------------- /src/AzureSearch/Service.php: -------------------------------------------------------------------------------- 1 | url = $url; 63 | $this->apiAdminKey = $apiAdminKey; 64 | 65 | // If curl is installed - use curl, otherwise use php sockets or custom adapter 66 | if ($adapter === null) { 67 | $adapter = \function_exists('curl_version') ? new Curl() : new Socket(); 68 | } 69 | 70 | if ($adapter instanceof Curl) { 71 | $adapter->setCurlOption(CURLOPT_SSL_VERIFYPEER, false) 72 | ->setCurlOption(CURLOPT_TIMEOUT, 10) 73 | ->setCurlOption(CURLOPT_RETURNTRANSFER, true); 74 | } 75 | 76 | $this->version = $version; 77 | 78 | // Setup HTTP Client for the requests 79 | if (null === $client) { 80 | $this->client = new Client(); 81 | } else { 82 | $this->client = $client; 83 | } 84 | $this->client->setAdapter($adapter); 85 | 86 | // Set necessary headers / content-type 87 | $headers = new Headers(); 88 | $headers->addHeader(ContentType::fromString('Content-Type: application/json')) 89 | ->addHeaderLine('api-key: ' . $apiAdminKey); 90 | $this->client->setHeaders($headers); 91 | } 92 | 93 | /** 94 | * @return string 95 | */ 96 | public function getUrl(): string 97 | { 98 | return $this->url; 99 | } 100 | 101 | /** 102 | * @return string 103 | */ 104 | public function getApiAdminKey(): string 105 | { 106 | return $this->apiAdminKey; 107 | } 108 | 109 | /** 110 | * You can upload, merge or delete documents from a specified index using HTTP POST. For large 111 | * numbers of updates, batching of documents (up to 1000 documents per batch, or about 112 | * 16 MB per batch) is recommended. 113 | * https://msdn.microsoft.com/en-gb/library/dn798930.aspx 114 | * 115 | * @param string $indexName 116 | * @param array $data 117 | * 118 | * @return Response 119 | * @throws LengthException 120 | */ 121 | public function uploadToIndex(string $indexName, array $data): Response 122 | { 123 | // Check if max number per request if reached 124 | if (count($data) > $this->batchLimit) { 125 | throw new LengthException('Maximum number of 126 | documents per request exceeded (max. length' . $this->batchLimit . ').'); 127 | } 128 | 129 | $this->client->setUri($this->url . '/indexes/' . $indexName . '/docs/index?api-version=' . $this->getVersion()) 130 | ->setMethod(Request::METHOD_POST) 131 | ->setRawBody(json_encode($data)); 132 | 133 | return $this->client->send(); 134 | } 135 | 136 | /** 137 | * @return string 138 | */ 139 | public function getVersion() 140 | { 141 | return $this->version; 142 | } 143 | 144 | /** 145 | * Create a new search index. An index is the primary means of organizing and searching documents 146 | * in Azure Search, similar to how a table organizes records in a database. Each index has a 147 | * collection of documents that all conform to the index schema (field names, data types, and 148 | * properties), but indexes also specify additional constructs (suggesters, scoring profiles, 149 | * and CORS configuration) that define other search behaviors. 150 | * https://msdn.microsoft.com/en-gb/library/dn798941.aspx 151 | * 152 | * @param Index $index 153 | * 154 | * @return Response 155 | */ 156 | public function createIndex(Index $index): Response 157 | { 158 | $this->client->setUri($this->url . '/indexes?api-version=' . $this->getVersion()) 159 | ->setMethod(Request::METHOD_POST) 160 | ->setRawBody(json_encode($index())); 161 | 162 | return $this->client->send(); 163 | } 164 | 165 | /** 166 | * The Delete Index operation removes an index and associated documents from your Azure Search 167 | * service. You can get the index name from the service dashboard in the Azure Preview portal, 168 | * or from the API. 169 | * https://msdn.microsoft.com/en-gb/library/dn798926.aspx 170 | * 171 | * @param string $indexName 172 | * 173 | * @return Response 174 | */ 175 | public function deleteIndex(string $indexName): Response 176 | { 177 | $this->client->setUri($this->url . '/indexes/' . $indexName . '?api-version=' . $this->getVersion()) 178 | ->setMethod(Request::METHOD_DELETE); 179 | 180 | return $this->client->send(); 181 | } 182 | 183 | /** 184 | * Update an existing index 185 | * https://msdn.microsoft.com/en-gb/library/dn800964.aspx 186 | * 187 | * @param Index $index 188 | * 189 | * @return Response 190 | */ 191 | public function updateIndex(Index $index): Response 192 | { 193 | $this->client->setUri($this->url . '/indexes/' . $index->getName() . '?api-version=' . $this->getVersion()) 194 | ->setMethod(Request::METHOD_PUT) 195 | ->setRawBody(json_encode($index())); 196 | 197 | return $this->client->send(); 198 | } 199 | 200 | /** 201 | * The List Indexes operation returns a list of the indexes currently in your Azure Search service. 202 | * https://msdn.microsoft.com/en-gb/library/dn798923.aspx 203 | * 204 | * @return array 205 | */ 206 | public function listIndexes(): array 207 | { 208 | $this->client->setUri($this->url . '/indexes?api-version=' . $this->getVersion()) 209 | ->setMethod(Request::METHOD_GET); 210 | $response = $this->client->send(); 211 | 212 | if ($response->isSuccess()) { 213 | $obj = json_decode($response->getBody(), true); 214 | if ($obj !== null) { 215 | return $obj['value']; 216 | } 217 | } 218 | 219 | return []; 220 | } 221 | 222 | /** 223 | * Get a specific index by name 224 | * https://msdn.microsoft.com/en-gb/library/dn798939.aspx 225 | * 226 | * @param string $indexName 227 | * 228 | * @return array 229 | */ 230 | public function getIndex(string $indexName): array 231 | { 232 | $this->client->setUri($this->url . '/indexes/' . $indexName . '?api-version=' . $this->getVersion()) 233 | ->setMethod(Request::METHOD_GET); 234 | $response = $this->client->send(); 235 | 236 | $obj = json_decode($response->getBody(), true); 237 | if ($obj !== null && $response->isSuccess()) { 238 | return $obj; 239 | } 240 | 241 | return []; 242 | } 243 | 244 | /** 245 | * The Get Index Statistics operation returns from Azure Search a document count for the current 246 | * index, plus storage usage. You can also get this information from the portal. 247 | * https://msdn.microsoft.com/en-gb/library/dn798942.aspx 248 | * 249 | * @param string $indexName 250 | * 251 | * @return array 252 | */ 253 | public function getIndexStatistics(string $indexName): array 254 | { 255 | $this->client->setUri($this->url . '/indexes/' . $indexName . '/stats?api-version=' . $this->getVersion()) 256 | ->setMethod(Request::METHOD_GET); 257 | $response = $this->client->send(); 258 | 259 | $obj = json_decode($response->getBody(), true); 260 | if ($obj !== null && $response->isSuccess()) { 261 | return $obj; 262 | } 263 | 264 | return []; 265 | } 266 | 267 | /** 268 | * Search the documents inside a specific index 269 | * https://msdn.microsoft.com/en-gb/library/dn798927.aspx 270 | * 271 | * @param string $indexName 272 | * @param string|null $term 273 | * @param array|null $options List of all available options https://msdn.microsoft.com/en-us/library/dn798927.aspx 274 | * 275 | * @return array 276 | */ 277 | public function search(string $indexName, string $term = null, array $options = null): array 278 | { 279 | $this->client->setUri($this->url . '/indexes/' . $indexName . '/docs/search?api-version=' . $this->getVersion()) 280 | ->setMethod(Request::METHOD_POST); 281 | 282 | $args = []; 283 | if ($term !== null) { 284 | $args = [ 285 | 'search' => $term 286 | ]; 287 | } 288 | 289 | if ($options !== null) { 290 | $args = array_merge($args, $options); 291 | } 292 | 293 | if ($args) { 294 | $this->client->setRawBody(json_encode($args)); 295 | } 296 | 297 | $response = $this->client->send(); 298 | 299 | $obj = json_decode($response->getBody(), true); 300 | if ($obj !== null && $response->isSuccess()) { 301 | return $obj; 302 | } 303 | 304 | return []; 305 | } 306 | 307 | /** 308 | * The Suggestions operation retrieves suggestions based on partial search input. It's typically used 309 | * in search boxes to provide type-ahead suggestions as users are entering search terms. 310 | * https://msdn.microsoft.com/en-gb/library/dn798936.aspx 311 | * 312 | * @param string $indexName 313 | * @param string $term 314 | * @param string $suggester 315 | * @param array|null $options List of all available options https://msdn.microsoft.com/en-us/library/dn798927.aspx 316 | * 317 | * @return array 318 | */ 319 | public function suggestions(string $indexName, string $term, string $suggester, array $options = null): array 320 | { 321 | $this->client 322 | ->setUri($this->url . '/indexes/' . $indexName . '/docs/suggest?api-version=' . $this->getVersion()) 323 | ->setMethod(Request::METHOD_POST); 324 | 325 | $args = [ 326 | 'search' => $term, 327 | 'suggesterName' => $suggester 328 | ]; 329 | 330 | if ($options !== null) { 331 | $args = array_merge($args, $options); 332 | } 333 | 334 | if ($args) { 335 | $this->client->setRawBody(json_encode($args)); 336 | } 337 | 338 | $response = $this->client->send(); 339 | 340 | $obj = json_decode($response->getBody(), true); 341 | if ($obj !== null && $response->isSuccess()) { 342 | return $obj; 343 | } 344 | 345 | return []; 346 | } 347 | 348 | /** 349 | * The Count Documents operation retrieves a count of the number of documents in a search index. 350 | * The $count syntax is part of the OData protocol. 351 | * https://msdn.microsoft.com/en-gb/library/dn798924.aspx 352 | * 353 | * @param string $indexName 354 | * 355 | * @return int 356 | */ 357 | public function countDocuments(string $indexName): int 358 | { 359 | $this->client->setUri($this->url . '/indexes/' . $indexName . '/docs/$count?api-version=' . $this->getVersion()) 360 | ->setMethod(Request::METHOD_GET); 361 | $response = $this->client->send(); 362 | 363 | if ($response->isSuccess()) { 364 | return (int)filter_var($response->getBody(), FILTER_SANITIZE_NUMBER_INT); 365 | } 366 | 367 | return 0; 368 | } 369 | } 370 | -------------------------------------------------------------------------------- /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": "dddc3bec5e0406300505d63f4808ae06", 8 | "packages": [ 9 | { 10 | "name": "container-interop/container-interop", 11 | "version": "1.2.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/container-interop/container-interop.git", 15 | "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/container-interop/container-interop/zipball/79cbf1341c22ec75643d841642dd5d6acd83bdb8", 20 | "reference": "79cbf1341c22ec75643d841642dd5d6acd83bdb8", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "psr/container": "^1.0" 25 | }, 26 | "type": "library", 27 | "autoload": { 28 | "psr-4": { 29 | "Interop\\Container\\": "src/Interop/Container/" 30 | } 31 | }, 32 | "notification-url": "https://packagist.org/downloads/", 33 | "license": [ 34 | "MIT" 35 | ], 36 | "description": "Promoting the interoperability of container objects (DIC, SL, etc.)", 37 | "homepage": "https://github.com/container-interop/container-interop", 38 | "time": "2017-02-14T19:40:03+00:00" 39 | }, 40 | { 41 | "name": "psr/container", 42 | "version": "1.0.0", 43 | "source": { 44 | "type": "git", 45 | "url": "https://github.com/php-fig/container.git", 46 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 47 | }, 48 | "dist": { 49 | "type": "zip", 50 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 51 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 52 | "shasum": "" 53 | }, 54 | "require": { 55 | "php": ">=5.3.0" 56 | }, 57 | "type": "library", 58 | "extra": { 59 | "branch-alias": { 60 | "dev-master": "1.0.x-dev" 61 | } 62 | }, 63 | "autoload": { 64 | "psr-4": { 65 | "Psr\\Container\\": "src/" 66 | } 67 | }, 68 | "notification-url": "https://packagist.org/downloads/", 69 | "license": [ 70 | "MIT" 71 | ], 72 | "authors": [ 73 | { 74 | "name": "PHP-FIG", 75 | "homepage": "http://www.php-fig.org/" 76 | } 77 | ], 78 | "description": "Common Container Interface (PHP FIG PSR-11)", 79 | "homepage": "https://github.com/php-fig/container", 80 | "keywords": [ 81 | "PSR-11", 82 | "container", 83 | "container-interface", 84 | "container-interop", 85 | "psr" 86 | ], 87 | "time": "2017-02-14T16:28:37+00:00" 88 | }, 89 | { 90 | "name": "zendframework/zend-escaper", 91 | "version": "2.6.0", 92 | "source": { 93 | "type": "git", 94 | "url": "https://github.com/zendframework/zend-escaper.git", 95 | "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074" 96 | }, 97 | "dist": { 98 | "type": "zip", 99 | "url": "https://api.github.com/repos/zendframework/zend-escaper/zipball/31d8aafae982f9568287cb4dce987e6aff8fd074", 100 | "reference": "31d8aafae982f9568287cb4dce987e6aff8fd074", 101 | "shasum": "" 102 | }, 103 | "require": { 104 | "php": "^5.6 || ^7.0" 105 | }, 106 | "require-dev": { 107 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", 108 | "zendframework/zend-coding-standard": "~1.0.0" 109 | }, 110 | "type": "library", 111 | "extra": { 112 | "branch-alias": { 113 | "dev-master": "2.6.x-dev", 114 | "dev-develop": "2.7.x-dev" 115 | } 116 | }, 117 | "autoload": { 118 | "psr-4": { 119 | "Zend\\Escaper\\": "src/" 120 | } 121 | }, 122 | "notification-url": "https://packagist.org/downloads/", 123 | "license": [ 124 | "BSD-3-Clause" 125 | ], 126 | "description": "Securely and safely escape HTML, HTML attributes, JavaScript, CSS, and URLs", 127 | "keywords": [ 128 | "ZendFramework", 129 | "escaper", 130 | "zf" 131 | ], 132 | "time": "2018-04-25T15:48:53+00:00" 133 | }, 134 | { 135 | "name": "zendframework/zend-http", 136 | "version": "2.8.2", 137 | "source": { 138 | "type": "git", 139 | "url": "https://github.com/zendframework/zend-http.git", 140 | "reference": "2c8aed3d25522618573194e7cc51351f8cd4a45b" 141 | }, 142 | "dist": { 143 | "type": "zip", 144 | "url": "https://api.github.com/repos/zendframework/zend-http/zipball/2c8aed3d25522618573194e7cc51351f8cd4a45b", 145 | "reference": "2c8aed3d25522618573194e7cc51351f8cd4a45b", 146 | "shasum": "" 147 | }, 148 | "require": { 149 | "php": "^5.6 || ^7.0", 150 | "zendframework/zend-loader": "^2.5.1", 151 | "zendframework/zend-stdlib": "^3.1 || ^2.7.7", 152 | "zendframework/zend-uri": "^2.5.2", 153 | "zendframework/zend-validator": "^2.10.1" 154 | }, 155 | "require-dev": { 156 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.3", 157 | "zendframework/zend-coding-standard": "~1.0.0", 158 | "zendframework/zend-config": "^3.1 || ^2.6" 159 | }, 160 | "suggest": { 161 | "paragonie/certainty": "For automated management of cacert.pem" 162 | }, 163 | "type": "library", 164 | "extra": { 165 | "branch-alias": { 166 | "dev-master": "2.8.x-dev", 167 | "dev-develop": "2.9.x-dev" 168 | } 169 | }, 170 | "autoload": { 171 | "psr-4": { 172 | "Zend\\Http\\": "src/" 173 | } 174 | }, 175 | "notification-url": "https://packagist.org/downloads/", 176 | "license": [ 177 | "BSD-3-Clause" 178 | ], 179 | "description": "Provides an easy interface for performing Hyper-Text Transfer Protocol (HTTP) requests", 180 | "keywords": [ 181 | "ZendFramework", 182 | "http", 183 | "http client", 184 | "zend", 185 | "zf" 186 | ], 187 | "time": "2018-08-13T18:47:03+00:00" 188 | }, 189 | { 190 | "name": "zendframework/zend-loader", 191 | "version": "2.6.0", 192 | "source": { 193 | "type": "git", 194 | "url": "https://github.com/zendframework/zend-loader.git", 195 | "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c" 196 | }, 197 | "dist": { 198 | "type": "zip", 199 | "url": "https://api.github.com/repos/zendframework/zend-loader/zipball/78f11749ea340f6ca316bca5958eef80b38f9b6c", 200 | "reference": "78f11749ea340f6ca316bca5958eef80b38f9b6c", 201 | "shasum": "" 202 | }, 203 | "require": { 204 | "php": "^5.6 || ^7.0" 205 | }, 206 | "require-dev": { 207 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", 208 | "zendframework/zend-coding-standard": "~1.0.0" 209 | }, 210 | "type": "library", 211 | "extra": { 212 | "branch-alias": { 213 | "dev-master": "2.6.x-dev", 214 | "dev-develop": "2.7.x-dev" 215 | } 216 | }, 217 | "autoload": { 218 | "psr-4": { 219 | "Zend\\Loader\\": "src/" 220 | } 221 | }, 222 | "notification-url": "https://packagist.org/downloads/", 223 | "license": [ 224 | "BSD-3-Clause" 225 | ], 226 | "description": "Autoloading and plugin loading strategies", 227 | "keywords": [ 228 | "ZendFramework", 229 | "loader", 230 | "zf" 231 | ], 232 | "time": "2018-04-30T15:20:54+00:00" 233 | }, 234 | { 235 | "name": "zendframework/zend-stdlib", 236 | "version": "3.2.1", 237 | "source": { 238 | "type": "git", 239 | "url": "https://github.com/zendframework/zend-stdlib.git", 240 | "reference": "66536006722aff9e62d1b331025089b7ec71c065" 241 | }, 242 | "dist": { 243 | "type": "zip", 244 | "url": "https://api.github.com/repos/zendframework/zend-stdlib/zipball/66536006722aff9e62d1b331025089b7ec71c065", 245 | "reference": "66536006722aff9e62d1b331025089b7ec71c065", 246 | "shasum": "" 247 | }, 248 | "require": { 249 | "php": "^5.6 || ^7.0" 250 | }, 251 | "require-dev": { 252 | "phpbench/phpbench": "^0.13", 253 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.2", 254 | "zendframework/zend-coding-standard": "~1.0.0" 255 | }, 256 | "type": "library", 257 | "extra": { 258 | "branch-alias": { 259 | "dev-master": "3.2.x-dev", 260 | "dev-develop": "3.3.x-dev" 261 | } 262 | }, 263 | "autoload": { 264 | "psr-4": { 265 | "Zend\\Stdlib\\": "src/" 266 | } 267 | }, 268 | "notification-url": "https://packagist.org/downloads/", 269 | "license": [ 270 | "BSD-3-Clause" 271 | ], 272 | "description": "SPL extensions, array utilities, error handlers, and more", 273 | "keywords": [ 274 | "ZendFramework", 275 | "stdlib", 276 | "zf" 277 | ], 278 | "time": "2018-08-28T21:34:05+00:00" 279 | }, 280 | { 281 | "name": "zendframework/zend-uri", 282 | "version": "2.6.1", 283 | "source": { 284 | "type": "git", 285 | "url": "https://github.com/zendframework/zend-uri.git", 286 | "reference": "3b6463645c6766f78ce537c70cb4fdabee1e725f" 287 | }, 288 | "dist": { 289 | "type": "zip", 290 | "url": "https://api.github.com/repos/zendframework/zend-uri/zipball/3b6463645c6766f78ce537c70cb4fdabee1e725f", 291 | "reference": "3b6463645c6766f78ce537c70cb4fdabee1e725f", 292 | "shasum": "" 293 | }, 294 | "require": { 295 | "php": "^5.6 || ^7.0", 296 | "zendframework/zend-escaper": "^2.5", 297 | "zendframework/zend-validator": "^2.10" 298 | }, 299 | "require-dev": { 300 | "phpunit/phpunit": "^5.7.27 || ^6.5.8 || ^7.1.4", 301 | "zendframework/zend-coding-standard": "~1.0.0" 302 | }, 303 | "type": "library", 304 | "extra": { 305 | "branch-alias": { 306 | "dev-master": "2.6.x-dev", 307 | "dev-develop": "2.7.x-dev" 308 | } 309 | }, 310 | "autoload": { 311 | "psr-4": { 312 | "Zend\\Uri\\": "src/" 313 | } 314 | }, 315 | "notification-url": "https://packagist.org/downloads/", 316 | "license": [ 317 | "BSD-3-Clause" 318 | ], 319 | "description": "A component that aids in manipulating and validating » Uniform Resource Identifiers (URIs)", 320 | "keywords": [ 321 | "ZendFramework", 322 | "uri", 323 | "zf" 324 | ], 325 | "time": "2018-04-30T13:40:08+00:00" 326 | }, 327 | { 328 | "name": "zendframework/zend-validator", 329 | "version": "2.10.2", 330 | "source": { 331 | "type": "git", 332 | "url": "https://github.com/zendframework/zend-validator.git", 333 | "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9" 334 | }, 335 | "dist": { 336 | "type": "zip", 337 | "url": "https://api.github.com/repos/zendframework/zend-validator/zipball/38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", 338 | "reference": "38109ed7d8e46cfa71bccbe7e6ca80cdd035f8c9", 339 | "shasum": "" 340 | }, 341 | "require": { 342 | "container-interop/container-interop": "^1.1", 343 | "php": "^5.6 || ^7.0", 344 | "zendframework/zend-stdlib": "^2.7.6 || ^3.1" 345 | }, 346 | "require-dev": { 347 | "phpunit/phpunit": "^6.0.8 || ^5.7.15", 348 | "zendframework/zend-cache": "^2.6.1", 349 | "zendframework/zend-coding-standard": "~1.0.0", 350 | "zendframework/zend-config": "^2.6", 351 | "zendframework/zend-db": "^2.7", 352 | "zendframework/zend-filter": "^2.6", 353 | "zendframework/zend-http": "^2.5.4", 354 | "zendframework/zend-i18n": "^2.6", 355 | "zendframework/zend-math": "^2.6", 356 | "zendframework/zend-servicemanager": "^2.7.5 || ^3.0.3", 357 | "zendframework/zend-session": "^2.8", 358 | "zendframework/zend-uri": "^2.5" 359 | }, 360 | "suggest": { 361 | "zendframework/zend-db": "Zend\\Db component, required by the (No)RecordExists validator", 362 | "zendframework/zend-filter": "Zend\\Filter component, required by the Digits validator", 363 | "zendframework/zend-i18n": "Zend\\I18n component to allow translation of validation error messages", 364 | "zendframework/zend-i18n-resources": "Translations of validator messages", 365 | "zendframework/zend-math": "Zend\\Math component, required by the Csrf validator", 366 | "zendframework/zend-servicemanager": "Zend\\ServiceManager component to allow using the ValidatorPluginManager and validator chains", 367 | "zendframework/zend-session": "Zend\\Session component, ^2.8; required by the Csrf validator", 368 | "zendframework/zend-uri": "Zend\\Uri component, required by the Uri and Sitemap\\Loc validators" 369 | }, 370 | "type": "library", 371 | "extra": { 372 | "branch-alias": { 373 | "dev-master": "2.10.x-dev", 374 | "dev-develop": "2.11.x-dev" 375 | }, 376 | "zf": { 377 | "component": "Zend\\Validator", 378 | "config-provider": "Zend\\Validator\\ConfigProvider" 379 | } 380 | }, 381 | "autoload": { 382 | "psr-4": { 383 | "Zend\\Validator\\": "src/" 384 | } 385 | }, 386 | "notification-url": "https://packagist.org/downloads/", 387 | "license": [ 388 | "BSD-3-Clause" 389 | ], 390 | "description": "provides a set of commonly needed validators", 391 | "homepage": "https://github.com/zendframework/zend-validator", 392 | "keywords": [ 393 | "validator", 394 | "zf2" 395 | ], 396 | "time": "2018-02-01T17:05:33+00:00" 397 | } 398 | ], 399 | "packages-dev": [ 400 | { 401 | "name": "doctrine/instantiator", 402 | "version": "1.0.5", 403 | "source": { 404 | "type": "git", 405 | "url": "https://github.com/doctrine/instantiator.git", 406 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" 407 | }, 408 | "dist": { 409 | "type": "zip", 410 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", 411 | "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", 412 | "shasum": "" 413 | }, 414 | "require": { 415 | "php": ">=5.3,<8.0-DEV" 416 | }, 417 | "require-dev": { 418 | "athletic/athletic": "~0.1.8", 419 | "ext-pdo": "*", 420 | "ext-phar": "*", 421 | "phpunit/phpunit": "~4.0", 422 | "squizlabs/php_codesniffer": "~2.0" 423 | }, 424 | "type": "library", 425 | "extra": { 426 | "branch-alias": { 427 | "dev-master": "1.0.x-dev" 428 | } 429 | }, 430 | "autoload": { 431 | "psr-4": { 432 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 433 | } 434 | }, 435 | "notification-url": "https://packagist.org/downloads/", 436 | "license": [ 437 | "MIT" 438 | ], 439 | "authors": [ 440 | { 441 | "name": "Marco Pivetta", 442 | "email": "ocramius@gmail.com", 443 | "homepage": "http://ocramius.github.com/" 444 | } 445 | ], 446 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 447 | "homepage": "https://github.com/doctrine/instantiator", 448 | "keywords": [ 449 | "constructor", 450 | "instantiate" 451 | ], 452 | "time": "2015-06-14T21:17:01+00:00" 453 | }, 454 | { 455 | "name": "guzzlehttp/guzzle", 456 | "version": "6.3.3", 457 | "source": { 458 | "type": "git", 459 | "url": "https://github.com/guzzle/guzzle.git", 460 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" 461 | }, 462 | "dist": { 463 | "type": "zip", 464 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", 465 | "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", 466 | "shasum": "" 467 | }, 468 | "require": { 469 | "guzzlehttp/promises": "^1.0", 470 | "guzzlehttp/psr7": "^1.4", 471 | "php": ">=5.5" 472 | }, 473 | "require-dev": { 474 | "ext-curl": "*", 475 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", 476 | "psr/log": "^1.0" 477 | }, 478 | "suggest": { 479 | "psr/log": "Required for using the Log middleware" 480 | }, 481 | "type": "library", 482 | "extra": { 483 | "branch-alias": { 484 | "dev-master": "6.3-dev" 485 | } 486 | }, 487 | "autoload": { 488 | "files": [ 489 | "src/functions_include.php" 490 | ], 491 | "psr-4": { 492 | "GuzzleHttp\\": "src/" 493 | } 494 | }, 495 | "notification-url": "https://packagist.org/downloads/", 496 | "license": [ 497 | "MIT" 498 | ], 499 | "authors": [ 500 | { 501 | "name": "Michael Dowling", 502 | "email": "mtdowling@gmail.com", 503 | "homepage": "https://github.com/mtdowling" 504 | } 505 | ], 506 | "description": "Guzzle is a PHP HTTP client library", 507 | "homepage": "http://guzzlephp.org/", 508 | "keywords": [ 509 | "client", 510 | "curl", 511 | "framework", 512 | "http", 513 | "http client", 514 | "rest", 515 | "web service" 516 | ], 517 | "time": "2018-04-22T15:46:56+00:00" 518 | }, 519 | { 520 | "name": "guzzlehttp/promises", 521 | "version": "v1.3.1", 522 | "source": { 523 | "type": "git", 524 | "url": "https://github.com/guzzle/promises.git", 525 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646" 526 | }, 527 | "dist": { 528 | "type": "zip", 529 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646", 530 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646", 531 | "shasum": "" 532 | }, 533 | "require": { 534 | "php": ">=5.5.0" 535 | }, 536 | "require-dev": { 537 | "phpunit/phpunit": "^4.0" 538 | }, 539 | "type": "library", 540 | "extra": { 541 | "branch-alias": { 542 | "dev-master": "1.4-dev" 543 | } 544 | }, 545 | "autoload": { 546 | "psr-4": { 547 | "GuzzleHttp\\Promise\\": "src/" 548 | }, 549 | "files": [ 550 | "src/functions_include.php" 551 | ] 552 | }, 553 | "notification-url": "https://packagist.org/downloads/", 554 | "license": [ 555 | "MIT" 556 | ], 557 | "authors": [ 558 | { 559 | "name": "Michael Dowling", 560 | "email": "mtdowling@gmail.com", 561 | "homepage": "https://github.com/mtdowling" 562 | } 563 | ], 564 | "description": "Guzzle promises library", 565 | "keywords": [ 566 | "promise" 567 | ], 568 | "time": "2016-12-20T10:07:11+00:00" 569 | }, 570 | { 571 | "name": "guzzlehttp/psr7", 572 | "version": "1.4.2", 573 | "source": { 574 | "type": "git", 575 | "url": "https://github.com/guzzle/psr7.git", 576 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c" 577 | }, 578 | "dist": { 579 | "type": "zip", 580 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 581 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c", 582 | "shasum": "" 583 | }, 584 | "require": { 585 | "php": ">=5.4.0", 586 | "psr/http-message": "~1.0" 587 | }, 588 | "provide": { 589 | "psr/http-message-implementation": "1.0" 590 | }, 591 | "require-dev": { 592 | "phpunit/phpunit": "~4.0" 593 | }, 594 | "type": "library", 595 | "extra": { 596 | "branch-alias": { 597 | "dev-master": "1.4-dev" 598 | } 599 | }, 600 | "autoload": { 601 | "psr-4": { 602 | "GuzzleHttp\\Psr7\\": "src/" 603 | }, 604 | "files": [ 605 | "src/functions_include.php" 606 | ] 607 | }, 608 | "notification-url": "https://packagist.org/downloads/", 609 | "license": [ 610 | "MIT" 611 | ], 612 | "authors": [ 613 | { 614 | "name": "Michael Dowling", 615 | "email": "mtdowling@gmail.com", 616 | "homepage": "https://github.com/mtdowling" 617 | }, 618 | { 619 | "name": "Tobias Schultze", 620 | "homepage": "https://github.com/Tobion" 621 | } 622 | ], 623 | "description": "PSR-7 message implementation that also provides common utility methods", 624 | "keywords": [ 625 | "http", 626 | "message", 627 | "request", 628 | "response", 629 | "stream", 630 | "uri", 631 | "url" 632 | ], 633 | "time": "2017-03-20T17:10:46+00:00" 634 | }, 635 | { 636 | "name": "myclabs/deep-copy", 637 | "version": "1.7.0", 638 | "source": { 639 | "type": "git", 640 | "url": "https://github.com/myclabs/DeepCopy.git", 641 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" 642 | }, 643 | "dist": { 644 | "type": "zip", 645 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 646 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", 647 | "shasum": "" 648 | }, 649 | "require": { 650 | "php": "^5.6 || ^7.0" 651 | }, 652 | "require-dev": { 653 | "doctrine/collections": "^1.0", 654 | "doctrine/common": "^2.6", 655 | "phpunit/phpunit": "^4.1" 656 | }, 657 | "type": "library", 658 | "autoload": { 659 | "psr-4": { 660 | "DeepCopy\\": "src/DeepCopy/" 661 | }, 662 | "files": [ 663 | "src/DeepCopy/deep_copy.php" 664 | ] 665 | }, 666 | "notification-url": "https://packagist.org/downloads/", 667 | "license": [ 668 | "MIT" 669 | ], 670 | "description": "Create deep copies (clones) of your objects", 671 | "keywords": [ 672 | "clone", 673 | "copy", 674 | "duplicate", 675 | "object", 676 | "object graph" 677 | ], 678 | "time": "2017-10-19T19:58:43+00:00" 679 | }, 680 | { 681 | "name": "phar-io/manifest", 682 | "version": "1.0.1", 683 | "source": { 684 | "type": "git", 685 | "url": "https://github.com/phar-io/manifest.git", 686 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0" 687 | }, 688 | "dist": { 689 | "type": "zip", 690 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0", 691 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0", 692 | "shasum": "" 693 | }, 694 | "require": { 695 | "ext-dom": "*", 696 | "ext-phar": "*", 697 | "phar-io/version": "^1.0.1", 698 | "php": "^5.6 || ^7.0" 699 | }, 700 | "type": "library", 701 | "extra": { 702 | "branch-alias": { 703 | "dev-master": "1.0.x-dev" 704 | } 705 | }, 706 | "autoload": { 707 | "classmap": [ 708 | "src/" 709 | ] 710 | }, 711 | "notification-url": "https://packagist.org/downloads/", 712 | "license": [ 713 | "BSD-3-Clause" 714 | ], 715 | "authors": [ 716 | { 717 | "name": "Arne Blankerts", 718 | "email": "arne@blankerts.de", 719 | "role": "Developer" 720 | }, 721 | { 722 | "name": "Sebastian Heuer", 723 | "email": "sebastian@phpeople.de", 724 | "role": "Developer" 725 | }, 726 | { 727 | "name": "Sebastian Bergmann", 728 | "email": "sebastian@phpunit.de", 729 | "role": "Developer" 730 | } 731 | ], 732 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 733 | "time": "2017-03-05T18:14:27+00:00" 734 | }, 735 | { 736 | "name": "phar-io/version", 737 | "version": "1.0.1", 738 | "source": { 739 | "type": "git", 740 | "url": "https://github.com/phar-io/version.git", 741 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df" 742 | }, 743 | "dist": { 744 | "type": "zip", 745 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df", 746 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df", 747 | "shasum": "" 748 | }, 749 | "require": { 750 | "php": "^5.6 || ^7.0" 751 | }, 752 | "type": "library", 753 | "autoload": { 754 | "classmap": [ 755 | "src/" 756 | ] 757 | }, 758 | "notification-url": "https://packagist.org/downloads/", 759 | "license": [ 760 | "BSD-3-Clause" 761 | ], 762 | "authors": [ 763 | { 764 | "name": "Arne Blankerts", 765 | "email": "arne@blankerts.de", 766 | "role": "Developer" 767 | }, 768 | { 769 | "name": "Sebastian Heuer", 770 | "email": "sebastian@phpeople.de", 771 | "role": "Developer" 772 | }, 773 | { 774 | "name": "Sebastian Bergmann", 775 | "email": "sebastian@phpunit.de", 776 | "role": "Developer" 777 | } 778 | ], 779 | "description": "Library for handling version information and constraints", 780 | "time": "2017-03-05T17:38:23+00:00" 781 | }, 782 | { 783 | "name": "php-coveralls/php-coveralls", 784 | "version": "v2.1.0", 785 | "source": { 786 | "type": "git", 787 | "url": "https://github.com/php-coveralls/php-coveralls.git", 788 | "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d" 789 | }, 790 | "dist": { 791 | "type": "zip", 792 | "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/3b00c229726f892bfdadeaf01ea430ffd04a939d", 793 | "reference": "3b00c229726f892bfdadeaf01ea430ffd04a939d", 794 | "shasum": "" 795 | }, 796 | "require": { 797 | "ext-json": "*", 798 | "ext-simplexml": "*", 799 | "guzzlehttp/guzzle": "^6.0", 800 | "php": "^5.5 || ^7.0", 801 | "psr/log": "^1.0", 802 | "symfony/config": "^2.1 || ^3.0 || ^4.0", 803 | "symfony/console": "^2.1 || ^3.0 || ^4.0", 804 | "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0", 805 | "symfony/yaml": "^2.0 || ^3.0 || ^4.0" 806 | }, 807 | "require-dev": { 808 | "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0" 809 | }, 810 | "suggest": { 811 | "symfony/http-kernel": "Allows Symfony integration" 812 | }, 813 | "bin": [ 814 | "bin/php-coveralls" 815 | ], 816 | "type": "library", 817 | "extra": { 818 | "branch-alias": { 819 | "dev-master": "2.1-dev" 820 | } 821 | }, 822 | "autoload": { 823 | "psr-4": { 824 | "PhpCoveralls\\": "src/" 825 | } 826 | }, 827 | "notification-url": "https://packagist.org/downloads/", 828 | "license": [ 829 | "MIT" 830 | ], 831 | "authors": [ 832 | { 833 | "name": "Kitamura Satoshi", 834 | "email": "with.no.parachute@gmail.com", 835 | "homepage": "https://www.facebook.com/satooshi.jp", 836 | "role": "Original creator" 837 | }, 838 | { 839 | "name": "Takashi Matsuo", 840 | "email": "tmatsuo@google.com" 841 | }, 842 | { 843 | "name": "Google Inc" 844 | }, 845 | { 846 | "name": "Dariusz Ruminski", 847 | "email": "dariusz.ruminski@gmail.com", 848 | "homepage": "https://github.com/keradus" 849 | }, 850 | { 851 | "name": "Contributors", 852 | "homepage": "https://github.com/php-coveralls/php-coveralls/graphs/contributors" 853 | } 854 | ], 855 | "description": "PHP client library for Coveralls API", 856 | "homepage": "https://github.com/php-coveralls/php-coveralls", 857 | "keywords": [ 858 | "ci", 859 | "coverage", 860 | "github", 861 | "test" 862 | ], 863 | "time": "2018-05-22T23:11:08+00:00" 864 | }, 865 | { 866 | "name": "phpdocumentor/reflection-common", 867 | "version": "1.0.1", 868 | "source": { 869 | "type": "git", 870 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 871 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 872 | }, 873 | "dist": { 874 | "type": "zip", 875 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 876 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 877 | "shasum": "" 878 | }, 879 | "require": { 880 | "php": ">=5.5" 881 | }, 882 | "require-dev": { 883 | "phpunit/phpunit": "^4.6" 884 | }, 885 | "type": "library", 886 | "extra": { 887 | "branch-alias": { 888 | "dev-master": "1.0.x-dev" 889 | } 890 | }, 891 | "autoload": { 892 | "psr-4": { 893 | "phpDocumentor\\Reflection\\": [ 894 | "src" 895 | ] 896 | } 897 | }, 898 | "notification-url": "https://packagist.org/downloads/", 899 | "license": [ 900 | "MIT" 901 | ], 902 | "authors": [ 903 | { 904 | "name": "Jaap van Otterdijk", 905 | "email": "opensource@ijaap.nl" 906 | } 907 | ], 908 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 909 | "homepage": "http://www.phpdoc.org", 910 | "keywords": [ 911 | "FQSEN", 912 | "phpDocumentor", 913 | "phpdoc", 914 | "reflection", 915 | "static analysis" 916 | ], 917 | "time": "2017-09-11T18:02:19+00:00" 918 | }, 919 | { 920 | "name": "phpdocumentor/reflection-docblock", 921 | "version": "4.3.0", 922 | "source": { 923 | "type": "git", 924 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 925 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08" 926 | }, 927 | "dist": { 928 | "type": "zip", 929 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", 930 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08", 931 | "shasum": "" 932 | }, 933 | "require": { 934 | "php": "^7.0", 935 | "phpdocumentor/reflection-common": "^1.0.0", 936 | "phpdocumentor/type-resolver": "^0.4.0", 937 | "webmozart/assert": "^1.0" 938 | }, 939 | "require-dev": { 940 | "doctrine/instantiator": "~1.0.5", 941 | "mockery/mockery": "^1.0", 942 | "phpunit/phpunit": "^6.4" 943 | }, 944 | "type": "library", 945 | "extra": { 946 | "branch-alias": { 947 | "dev-master": "4.x-dev" 948 | } 949 | }, 950 | "autoload": { 951 | "psr-4": { 952 | "phpDocumentor\\Reflection\\": [ 953 | "src/" 954 | ] 955 | } 956 | }, 957 | "notification-url": "https://packagist.org/downloads/", 958 | "license": [ 959 | "MIT" 960 | ], 961 | "authors": [ 962 | { 963 | "name": "Mike van Riel", 964 | "email": "me@mikevanriel.com" 965 | } 966 | ], 967 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 968 | "time": "2017-11-30T07:14:17+00:00" 969 | }, 970 | { 971 | "name": "phpdocumentor/type-resolver", 972 | "version": "0.4.0", 973 | "source": { 974 | "type": "git", 975 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 976 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 977 | }, 978 | "dist": { 979 | "type": "zip", 980 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 981 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 982 | "shasum": "" 983 | }, 984 | "require": { 985 | "php": "^5.5 || ^7.0", 986 | "phpdocumentor/reflection-common": "^1.0" 987 | }, 988 | "require-dev": { 989 | "mockery/mockery": "^0.9.4", 990 | "phpunit/phpunit": "^5.2||^4.8.24" 991 | }, 992 | "type": "library", 993 | "extra": { 994 | "branch-alias": { 995 | "dev-master": "1.0.x-dev" 996 | } 997 | }, 998 | "autoload": { 999 | "psr-4": { 1000 | "phpDocumentor\\Reflection\\": [ 1001 | "src/" 1002 | ] 1003 | } 1004 | }, 1005 | "notification-url": "https://packagist.org/downloads/", 1006 | "license": [ 1007 | "MIT" 1008 | ], 1009 | "authors": [ 1010 | { 1011 | "name": "Mike van Riel", 1012 | "email": "me@mikevanriel.com" 1013 | } 1014 | ], 1015 | "time": "2017-07-14T14:27:02+00:00" 1016 | }, 1017 | { 1018 | "name": "phpspec/prophecy", 1019 | "version": "1.8.0", 1020 | "source": { 1021 | "type": "git", 1022 | "url": "https://github.com/phpspec/prophecy.git", 1023 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" 1024 | }, 1025 | "dist": { 1026 | "type": "zip", 1027 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1028 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 1029 | "shasum": "" 1030 | }, 1031 | "require": { 1032 | "doctrine/instantiator": "^1.0.2", 1033 | "php": "^5.3|^7.0", 1034 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 1035 | "sebastian/comparator": "^1.1|^2.0|^3.0", 1036 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 1037 | }, 1038 | "require-dev": { 1039 | "phpspec/phpspec": "^2.5|^3.2", 1040 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 1041 | }, 1042 | "type": "library", 1043 | "extra": { 1044 | "branch-alias": { 1045 | "dev-master": "1.8.x-dev" 1046 | } 1047 | }, 1048 | "autoload": { 1049 | "psr-0": { 1050 | "Prophecy\\": "src/" 1051 | } 1052 | }, 1053 | "notification-url": "https://packagist.org/downloads/", 1054 | "license": [ 1055 | "MIT" 1056 | ], 1057 | "authors": [ 1058 | { 1059 | "name": "Konstantin Kudryashov", 1060 | "email": "ever.zet@gmail.com", 1061 | "homepage": "http://everzet.com" 1062 | }, 1063 | { 1064 | "name": "Marcello Duarte", 1065 | "email": "marcello.duarte@gmail.com" 1066 | } 1067 | ], 1068 | "description": "Highly opinionated mocking framework for PHP 5.3+", 1069 | "homepage": "https://github.com/phpspec/prophecy", 1070 | "keywords": [ 1071 | "Double", 1072 | "Dummy", 1073 | "fake", 1074 | "mock", 1075 | "spy", 1076 | "stub" 1077 | ], 1078 | "time": "2018-08-05T17:53:17+00:00" 1079 | }, 1080 | { 1081 | "name": "phpunit/php-code-coverage", 1082 | "version": "5.3.2", 1083 | "source": { 1084 | "type": "git", 1085 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 1086 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac" 1087 | }, 1088 | "dist": { 1089 | "type": "zip", 1090 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", 1091 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac", 1092 | "shasum": "" 1093 | }, 1094 | "require": { 1095 | "ext-dom": "*", 1096 | "ext-xmlwriter": "*", 1097 | "php": "^7.0", 1098 | "phpunit/php-file-iterator": "^1.4.2", 1099 | "phpunit/php-text-template": "^1.2.1", 1100 | "phpunit/php-token-stream": "^2.0.1", 1101 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 1102 | "sebastian/environment": "^3.0", 1103 | "sebastian/version": "^2.0.1", 1104 | "theseer/tokenizer": "^1.1" 1105 | }, 1106 | "require-dev": { 1107 | "phpunit/phpunit": "^6.0" 1108 | }, 1109 | "suggest": { 1110 | "ext-xdebug": "^2.5.5" 1111 | }, 1112 | "type": "library", 1113 | "extra": { 1114 | "branch-alias": { 1115 | "dev-master": "5.3.x-dev" 1116 | } 1117 | }, 1118 | "autoload": { 1119 | "classmap": [ 1120 | "src/" 1121 | ] 1122 | }, 1123 | "notification-url": "https://packagist.org/downloads/", 1124 | "license": [ 1125 | "BSD-3-Clause" 1126 | ], 1127 | "authors": [ 1128 | { 1129 | "name": "Sebastian Bergmann", 1130 | "email": "sebastian@phpunit.de", 1131 | "role": "lead" 1132 | } 1133 | ], 1134 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 1135 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 1136 | "keywords": [ 1137 | "coverage", 1138 | "testing", 1139 | "xunit" 1140 | ], 1141 | "time": "2018-04-06T15:36:58+00:00" 1142 | }, 1143 | { 1144 | "name": "phpunit/php-file-iterator", 1145 | "version": "1.4.5", 1146 | "source": { 1147 | "type": "git", 1148 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 1149 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" 1150 | }, 1151 | "dist": { 1152 | "type": "zip", 1153 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", 1154 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", 1155 | "shasum": "" 1156 | }, 1157 | "require": { 1158 | "php": ">=5.3.3" 1159 | }, 1160 | "type": "library", 1161 | "extra": { 1162 | "branch-alias": { 1163 | "dev-master": "1.4.x-dev" 1164 | } 1165 | }, 1166 | "autoload": { 1167 | "classmap": [ 1168 | "src/" 1169 | ] 1170 | }, 1171 | "notification-url": "https://packagist.org/downloads/", 1172 | "license": [ 1173 | "BSD-3-Clause" 1174 | ], 1175 | "authors": [ 1176 | { 1177 | "name": "Sebastian Bergmann", 1178 | "email": "sb@sebastian-bergmann.de", 1179 | "role": "lead" 1180 | } 1181 | ], 1182 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 1183 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 1184 | "keywords": [ 1185 | "filesystem", 1186 | "iterator" 1187 | ], 1188 | "time": "2017-11-27T13:52:08+00:00" 1189 | }, 1190 | { 1191 | "name": "phpunit/php-text-template", 1192 | "version": "1.2.1", 1193 | "source": { 1194 | "type": "git", 1195 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 1196 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 1197 | }, 1198 | "dist": { 1199 | "type": "zip", 1200 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1201 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 1202 | "shasum": "" 1203 | }, 1204 | "require": { 1205 | "php": ">=5.3.3" 1206 | }, 1207 | "type": "library", 1208 | "autoload": { 1209 | "classmap": [ 1210 | "src/" 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": "Simple template engine.", 1225 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 1226 | "keywords": [ 1227 | "template" 1228 | ], 1229 | "time": "2015-06-21T13:50:34+00:00" 1230 | }, 1231 | { 1232 | "name": "phpunit/php-timer", 1233 | "version": "1.0.9", 1234 | "source": { 1235 | "type": "git", 1236 | "url": "https://github.com/sebastianbergmann/php-timer.git", 1237 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f" 1238 | }, 1239 | "dist": { 1240 | "type": "zip", 1241 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1242 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f", 1243 | "shasum": "" 1244 | }, 1245 | "require": { 1246 | "php": "^5.3.3 || ^7.0" 1247 | }, 1248 | "require-dev": { 1249 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 1250 | }, 1251 | "type": "library", 1252 | "extra": { 1253 | "branch-alias": { 1254 | "dev-master": "1.0-dev" 1255 | } 1256 | }, 1257 | "autoload": { 1258 | "classmap": [ 1259 | "src/" 1260 | ] 1261 | }, 1262 | "notification-url": "https://packagist.org/downloads/", 1263 | "license": [ 1264 | "BSD-3-Clause" 1265 | ], 1266 | "authors": [ 1267 | { 1268 | "name": "Sebastian Bergmann", 1269 | "email": "sb@sebastian-bergmann.de", 1270 | "role": "lead" 1271 | } 1272 | ], 1273 | "description": "Utility class for timing", 1274 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 1275 | "keywords": [ 1276 | "timer" 1277 | ], 1278 | "time": "2017-02-26T11:10:40+00:00" 1279 | }, 1280 | { 1281 | "name": "phpunit/php-token-stream", 1282 | "version": "2.0.2", 1283 | "source": { 1284 | "type": "git", 1285 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 1286 | "reference": "791198a2c6254db10131eecfe8c06670700904db" 1287 | }, 1288 | "dist": { 1289 | "type": "zip", 1290 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", 1291 | "reference": "791198a2c6254db10131eecfe8c06670700904db", 1292 | "shasum": "" 1293 | }, 1294 | "require": { 1295 | "ext-tokenizer": "*", 1296 | "php": "^7.0" 1297 | }, 1298 | "require-dev": { 1299 | "phpunit/phpunit": "^6.2.4" 1300 | }, 1301 | "type": "library", 1302 | "extra": { 1303 | "branch-alias": { 1304 | "dev-master": "2.0-dev" 1305 | } 1306 | }, 1307 | "autoload": { 1308 | "classmap": [ 1309 | "src/" 1310 | ] 1311 | }, 1312 | "notification-url": "https://packagist.org/downloads/", 1313 | "license": [ 1314 | "BSD-3-Clause" 1315 | ], 1316 | "authors": [ 1317 | { 1318 | "name": "Sebastian Bergmann", 1319 | "email": "sebastian@phpunit.de" 1320 | } 1321 | ], 1322 | "description": "Wrapper around PHP's tokenizer extension.", 1323 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 1324 | "keywords": [ 1325 | "tokenizer" 1326 | ], 1327 | "time": "2017-11-27T05:48:46+00:00" 1328 | }, 1329 | { 1330 | "name": "phpunit/phpunit", 1331 | "version": "6.5.13", 1332 | "source": { 1333 | "type": "git", 1334 | "url": "https://github.com/sebastianbergmann/phpunit.git", 1335 | "reference": "0973426fb012359b2f18d3bd1e90ef1172839693" 1336 | }, 1337 | "dist": { 1338 | "type": "zip", 1339 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/0973426fb012359b2f18d3bd1e90ef1172839693", 1340 | "reference": "0973426fb012359b2f18d3bd1e90ef1172839693", 1341 | "shasum": "" 1342 | }, 1343 | "require": { 1344 | "ext-dom": "*", 1345 | "ext-json": "*", 1346 | "ext-libxml": "*", 1347 | "ext-mbstring": "*", 1348 | "ext-xml": "*", 1349 | "myclabs/deep-copy": "^1.6.1", 1350 | "phar-io/manifest": "^1.0.1", 1351 | "phar-io/version": "^1.0", 1352 | "php": "^7.0", 1353 | "phpspec/prophecy": "^1.7", 1354 | "phpunit/php-code-coverage": "^5.3", 1355 | "phpunit/php-file-iterator": "^1.4.3", 1356 | "phpunit/php-text-template": "^1.2.1", 1357 | "phpunit/php-timer": "^1.0.9", 1358 | "phpunit/phpunit-mock-objects": "^5.0.9", 1359 | "sebastian/comparator": "^2.1", 1360 | "sebastian/diff": "^2.0", 1361 | "sebastian/environment": "^3.1", 1362 | "sebastian/exporter": "^3.1", 1363 | "sebastian/global-state": "^2.0", 1364 | "sebastian/object-enumerator": "^3.0.3", 1365 | "sebastian/resource-operations": "^1.0", 1366 | "sebastian/version": "^2.0.1" 1367 | }, 1368 | "conflict": { 1369 | "phpdocumentor/reflection-docblock": "3.0.2", 1370 | "phpunit/dbunit": "<3.0" 1371 | }, 1372 | "require-dev": { 1373 | "ext-pdo": "*" 1374 | }, 1375 | "suggest": { 1376 | "ext-xdebug": "*", 1377 | "phpunit/php-invoker": "^1.1" 1378 | }, 1379 | "bin": [ 1380 | "phpunit" 1381 | ], 1382 | "type": "library", 1383 | "extra": { 1384 | "branch-alias": { 1385 | "dev-master": "6.5.x-dev" 1386 | } 1387 | }, 1388 | "autoload": { 1389 | "classmap": [ 1390 | "src/" 1391 | ] 1392 | }, 1393 | "notification-url": "https://packagist.org/downloads/", 1394 | "license": [ 1395 | "BSD-3-Clause" 1396 | ], 1397 | "authors": [ 1398 | { 1399 | "name": "Sebastian Bergmann", 1400 | "email": "sebastian@phpunit.de", 1401 | "role": "lead" 1402 | } 1403 | ], 1404 | "description": "The PHP Unit Testing framework.", 1405 | "homepage": "https://phpunit.de/", 1406 | "keywords": [ 1407 | "phpunit", 1408 | "testing", 1409 | "xunit" 1410 | ], 1411 | "time": "2018-09-08T15:10:43+00:00" 1412 | }, 1413 | { 1414 | "name": "phpunit/phpunit-mock-objects", 1415 | "version": "5.0.10", 1416 | "source": { 1417 | "type": "git", 1418 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", 1419 | "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f" 1420 | }, 1421 | "dist": { 1422 | "type": "zip", 1423 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/cd1cf05c553ecfec36b170070573e540b67d3f1f", 1424 | "reference": "cd1cf05c553ecfec36b170070573e540b67d3f1f", 1425 | "shasum": "" 1426 | }, 1427 | "require": { 1428 | "doctrine/instantiator": "^1.0.5", 1429 | "php": "^7.0", 1430 | "phpunit/php-text-template": "^1.2.1", 1431 | "sebastian/exporter": "^3.1" 1432 | }, 1433 | "conflict": { 1434 | "phpunit/phpunit": "<6.0" 1435 | }, 1436 | "require-dev": { 1437 | "phpunit/phpunit": "^6.5.11" 1438 | }, 1439 | "suggest": { 1440 | "ext-soap": "*" 1441 | }, 1442 | "type": "library", 1443 | "extra": { 1444 | "branch-alias": { 1445 | "dev-master": "5.0.x-dev" 1446 | } 1447 | }, 1448 | "autoload": { 1449 | "classmap": [ 1450 | "src/" 1451 | ] 1452 | }, 1453 | "notification-url": "https://packagist.org/downloads/", 1454 | "license": [ 1455 | "BSD-3-Clause" 1456 | ], 1457 | "authors": [ 1458 | { 1459 | "name": "Sebastian Bergmann", 1460 | "email": "sebastian@phpunit.de", 1461 | "role": "lead" 1462 | } 1463 | ], 1464 | "description": "Mock Object library for PHPUnit", 1465 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", 1466 | "keywords": [ 1467 | "mock", 1468 | "xunit" 1469 | ], 1470 | "time": "2018-08-09T05:50:03+00:00" 1471 | }, 1472 | { 1473 | "name": "psr/http-message", 1474 | "version": "1.0.1", 1475 | "source": { 1476 | "type": "git", 1477 | "url": "https://github.com/php-fig/http-message.git", 1478 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" 1479 | }, 1480 | "dist": { 1481 | "type": "zip", 1482 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", 1483 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", 1484 | "shasum": "" 1485 | }, 1486 | "require": { 1487 | "php": ">=5.3.0" 1488 | }, 1489 | "type": "library", 1490 | "extra": { 1491 | "branch-alias": { 1492 | "dev-master": "1.0.x-dev" 1493 | } 1494 | }, 1495 | "autoload": { 1496 | "psr-4": { 1497 | "Psr\\Http\\Message\\": "src/" 1498 | } 1499 | }, 1500 | "notification-url": "https://packagist.org/downloads/", 1501 | "license": [ 1502 | "MIT" 1503 | ], 1504 | "authors": [ 1505 | { 1506 | "name": "PHP-FIG", 1507 | "homepage": "http://www.php-fig.org/" 1508 | } 1509 | ], 1510 | "description": "Common interface for HTTP messages", 1511 | "homepage": "https://github.com/php-fig/http-message", 1512 | "keywords": [ 1513 | "http", 1514 | "http-message", 1515 | "psr", 1516 | "psr-7", 1517 | "request", 1518 | "response" 1519 | ], 1520 | "time": "2016-08-06T14:39:51+00:00" 1521 | }, 1522 | { 1523 | "name": "psr/log", 1524 | "version": "1.0.2", 1525 | "source": { 1526 | "type": "git", 1527 | "url": "https://github.com/php-fig/log.git", 1528 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" 1529 | }, 1530 | "dist": { 1531 | "type": "zip", 1532 | "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1533 | "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", 1534 | "shasum": "" 1535 | }, 1536 | "require": { 1537 | "php": ">=5.3.0" 1538 | }, 1539 | "type": "library", 1540 | "extra": { 1541 | "branch-alias": { 1542 | "dev-master": "1.0.x-dev" 1543 | } 1544 | }, 1545 | "autoload": { 1546 | "psr-4": { 1547 | "Psr\\Log\\": "Psr/Log/" 1548 | } 1549 | }, 1550 | "notification-url": "https://packagist.org/downloads/", 1551 | "license": [ 1552 | "MIT" 1553 | ], 1554 | "authors": [ 1555 | { 1556 | "name": "PHP-FIG", 1557 | "homepage": "http://www.php-fig.org/" 1558 | } 1559 | ], 1560 | "description": "Common interface for logging libraries", 1561 | "homepage": "https://github.com/php-fig/log", 1562 | "keywords": [ 1563 | "log", 1564 | "psr", 1565 | "psr-3" 1566 | ], 1567 | "time": "2016-10-10T12:19:37+00:00" 1568 | }, 1569 | { 1570 | "name": "roave/security-advisories", 1571 | "version": "dev-master", 1572 | "conflict": { 1573 | "3f/pygmentize": "<1.2", 1574 | "adodb/adodb-php": "<5.20.12", 1575 | "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", 1576 | "amphp/artax": "<1.0.6|>=2,<2.0.6", 1577 | "amphp/http": "<1.0.1", 1578 | "asymmetricrypt/asymmetricrypt": ">=0,<9.9.99", 1579 | "aws/aws-sdk-php": ">=3,<3.2.1", 1580 | "brightlocal/phpwhois": "<=4.2.5", 1581 | "bugsnag/bugsnag-laravel": ">=2,<2.0.2", 1582 | "cakephp/cakephp": ">=1.3,<1.3.18|>=2,<2.4.99|>=2.5,<2.5.99|>=2.6,<2.6.12|>=2.7,<2.7.6|>=3,<3.0.15|>=3.1,<3.1.4|>=3.4,<3.4.14|>=3.5,<3.5.17|>=3.6,<3.6.4", 1583 | "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", 1584 | "cartalyst/sentry": "<=2.1.6", 1585 | "codeigniter/framework": "<=3.0.6", 1586 | "composer/composer": "<=1.0.0-alpha11", 1587 | "contao-components/mediaelement": ">=2.14.2,<2.21.1", 1588 | "contao/core": ">=2,<3.5.35", 1589 | "contao/core-bundle": ">=4,<4.4.18|>=4.5,<4.5.8", 1590 | "contao/listing-bundle": ">=4,<4.4.8", 1591 | "contao/newsletter-bundle": ">=4,<4.1", 1592 | "david-garcia/phpwhois": "<=4.3.1", 1593 | "doctrine/annotations": ">=1,<1.2.7", 1594 | "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", 1595 | "doctrine/common": ">=2,<2.4.3|>=2.5,<2.5.1", 1596 | "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2", 1597 | "doctrine/doctrine-bundle": "<1.5.2", 1598 | "doctrine/doctrine-module": "<=0.7.1", 1599 | "doctrine/mongodb-odm": ">=1,<1.0.2", 1600 | "doctrine/mongodb-odm-bundle": ">=2,<3.0.1", 1601 | "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1", 1602 | "dompdf/dompdf": ">=0.6,<0.6.2", 1603 | "drupal/core": ">=7,<7.59|>=8,<8.4.8|>=8.5,<8.5.3", 1604 | "drupal/drupal": ">=7,<7.59|>=8,<8.4.8|>=8.5,<8.5.3", 1605 | "erusev/parsedown": "<1.7", 1606 | "ezsystems/ezpublish-legacy": ">=5.3,<5.3.12.3|>=5.4,<5.4.11.3|>=2017.8,<2017.8.1.1|>=2017.12,<2017.12.2.1", 1607 | "ezyang/htmlpurifier": "<4.1.1", 1608 | "firebase/php-jwt": "<2", 1609 | "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", 1610 | "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", 1611 | "fuel/core": "<1.8.1", 1612 | "gree/jose": "<=2.2", 1613 | "gregwar/rst": "<1.0.3", 1614 | "guzzlehttp/guzzle": ">=6,<6.2.1|>=4.0.0-rc2,<4.2.4|>=5,<5.3.1", 1615 | "illuminate/auth": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.10", 1616 | "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", 1617 | "illuminate/database": ">=4,<4.0.99|>=4.1,<4.1.29", 1618 | "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", 1619 | "ivankristianto/phpwhois": "<=4.3", 1620 | "james-heinrich/getid3": "<1.9.9", 1621 | "joomla/session": "<1.3.1", 1622 | "jsmitty12/phpwhois": "<5.1", 1623 | "kazist/phpwhois": "<=4.2.6", 1624 | "kreait/firebase-php": ">=3.2,<3.8.1", 1625 | "laravel/framework": ">=4,<4.0.99|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.42|>=5.6,<5.6.30", 1626 | "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", 1627 | "magento/magento1ce": "<1.9.3.9", 1628 | "magento/magento1ee": ">=1.9,<1.14.3.2", 1629 | "magento/product-community-edition": ">=2,<2.2.5", 1630 | "monolog/monolog": ">=1.8,<1.12", 1631 | "namshi/jose": "<2.2", 1632 | "onelogin/php-saml": "<2.10.4", 1633 | "openid/php-openid": "<2.3", 1634 | "oro/crm": ">=1.7,<1.7.4", 1635 | "oro/platform": ">=1.7,<1.7.4", 1636 | "padraic/humbug_get_contents": "<1.1.2", 1637 | "pagarme/pagarme-php": ">=0,<3", 1638 | "paragonie/random_compat": "<2", 1639 | "paypal/merchant-sdk-php": "<3.12", 1640 | "phpmailer/phpmailer": ">=5,<5.2.24", 1641 | "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", 1642 | "phpwhois/phpwhois": "<=4.2.5", 1643 | "phpxmlrpc/extras": "<0.6.1", 1644 | "propel/propel": ">=2.0.0-alpha1,<=2.0.0-alpha7", 1645 | "propel/propel1": ">=1,<=1.7.1", 1646 | "pusher/pusher-php-server": "<2.2.1", 1647 | "robrichards/xmlseclibs": ">=1,<3.0.2", 1648 | "sabre/dav": ">=1.6,<1.6.99|>=1.7,<1.7.11|>=1.8,<1.8.9", 1649 | "sensiolabs/connect": "<4.2.3", 1650 | "serluck/phpwhois": "<=4.2.6", 1651 | "shopware/shopware": "<5.3.7", 1652 | "silverstripe/cms": ">=3,<=3.0.11|>=3.1,<3.1.11", 1653 | "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", 1654 | "silverstripe/framework": ">=3,<3.3", 1655 | "silverstripe/userforms": "<3", 1656 | "simple-updates/phpwhois": "<=1", 1657 | "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4", 1658 | "simplesamlphp/simplesamlphp": "<1.15.2", 1659 | "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", 1660 | "slim/slim": "<2.6", 1661 | "smarty/smarty": "<3.1.33", 1662 | "socalnick/scn-social-auth": "<1.15.2", 1663 | "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", 1664 | "stormpath/sdk": ">=0,<9.9.99", 1665 | "swiftmailer/swiftmailer": ">=4,<5.4.5", 1666 | "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", 1667 | "sylius/sylius": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", 1668 | "symfony/dependency-injection": ">=2,<2.0.17", 1669 | "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", 1670 | "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2", 1671 | "symfony/http-foundation": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", 1672 | "symfony/http-kernel": ">=2,<2.3.29|>=2.4,<2.5.12|>=2.6,<2.6.8", 1673 | "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", 1674 | "symfony/routing": ">=2,<2.0.19", 1675 | "symfony/security": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", 1676 | "symfony/security-bundle": ">=2,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", 1677 | "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<2.8.37|>=3,<3.3.17|>=3.4,<3.4.7|>=4,<4.0.7", 1678 | "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", 1679 | "symfony/security-guard": ">=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", 1680 | "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", 1681 | "symfony/serializer": ">=2,<2.0.11", 1682 | "symfony/symfony": ">=2,<2.7.49|>=2.8,<2.8.44|>=3,<3.3.18|>=3.4,<3.4.14|>=4,<4.0.14|>=4.1,<4.1.3", 1683 | "symfony/translation": ">=2,<2.0.17", 1684 | "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", 1685 | "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", 1686 | "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7", 1687 | "thelia/backoffice-default-template": ">=2.1,<2.1.2", 1688 | "thelia/thelia": ">=2.1,<2.1.2|>=2.1.0-beta1,<2.1.3", 1689 | "theonedemon/phpwhois": "<=4.2.5", 1690 | "titon/framework": ">=0,<9.9.99", 1691 | "truckersmp/phpwhois": "<=4.3.1", 1692 | "twig/twig": "<1.20", 1693 | "typo3/cms": ">=6.2,<6.2.30|>=7,<7.6.30|>=8,<8.7.17|>=9,<9.3.2", 1694 | "typo3/cms-core": ">=8,<8.7.17|>=9,<9.3.2", 1695 | "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.10|>=3.1,<3.1.7|>=3.2,<3.2.7|>=3.3,<3.3.5", 1696 | "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4", 1697 | "willdurand/js-translation-bundle": "<2.1.1", 1698 | "yiisoft/yii": ">=1.1.14,<1.1.15", 1699 | "yiisoft/yii2": "<2.0.15", 1700 | "yiisoft/yii2-bootstrap": "<2.0.4", 1701 | "yiisoft/yii2-dev": "<2.0.15", 1702 | "yiisoft/yii2-elasticsearch": "<2.0.5", 1703 | "yiisoft/yii2-gii": "<2.0.4", 1704 | "yiisoft/yii2-jui": "<2.0.4", 1705 | "yiisoft/yii2-redis": "<2.0.8", 1706 | "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", 1707 | "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", 1708 | "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", 1709 | "zendframework/zend-db": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.10|>=2.3,<2.3.5", 1710 | "zendframework/zend-diactoros": ">=1,<1.8.4", 1711 | "zendframework/zend-feed": ">=1,<2.10.3", 1712 | "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", 1713 | "zendframework/zend-http": ">=1,<2.8.1", 1714 | "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", 1715 | "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", 1716 | "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", 1717 | "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", 1718 | "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", 1719 | "zendframework/zend-validator": ">=2.3,<2.3.6", 1720 | "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", 1721 | "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", 1722 | "zendframework/zendframework": "<2.5.1", 1723 | "zendframework/zendframework1": "<1.12.20", 1724 | "zendframework/zendopenid": ">=2,<2.0.2", 1725 | "zendframework/zendxml": ">=1,<1.0.1", 1726 | "zetacomponents/mail": "<1.8.2", 1727 | "zf-commons/zfc-user": "<1.2.2", 1728 | "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", 1729 | "zfr/zfr-oauth2-server-module": "<0.1.2" 1730 | }, 1731 | "type": "metapackage", 1732 | "notification-url": "https://packagist.org/downloads/", 1733 | "license": [ 1734 | "MIT" 1735 | ], 1736 | "authors": [ 1737 | { 1738 | "name": "Marco Pivetta", 1739 | "email": "ocramius@gmail.com", 1740 | "role": "maintainer" 1741 | } 1742 | ], 1743 | "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", 1744 | "time": "2018-10-05T18:14:02+00:00" 1745 | }, 1746 | { 1747 | "name": "sebastian/code-unit-reverse-lookup", 1748 | "version": "1.0.1", 1749 | "source": { 1750 | "type": "git", 1751 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 1752 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 1753 | }, 1754 | "dist": { 1755 | "type": "zip", 1756 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1757 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 1758 | "shasum": "" 1759 | }, 1760 | "require": { 1761 | "php": "^5.6 || ^7.0" 1762 | }, 1763 | "require-dev": { 1764 | "phpunit/phpunit": "^5.7 || ^6.0" 1765 | }, 1766 | "type": "library", 1767 | "extra": { 1768 | "branch-alias": { 1769 | "dev-master": "1.0.x-dev" 1770 | } 1771 | }, 1772 | "autoload": { 1773 | "classmap": [ 1774 | "src/" 1775 | ] 1776 | }, 1777 | "notification-url": "https://packagist.org/downloads/", 1778 | "license": [ 1779 | "BSD-3-Clause" 1780 | ], 1781 | "authors": [ 1782 | { 1783 | "name": "Sebastian Bergmann", 1784 | "email": "sebastian@phpunit.de" 1785 | } 1786 | ], 1787 | "description": "Looks up which function or method a line of code belongs to", 1788 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 1789 | "time": "2017-03-04T06:30:41+00:00" 1790 | }, 1791 | { 1792 | "name": "sebastian/comparator", 1793 | "version": "2.1.3", 1794 | "source": { 1795 | "type": "git", 1796 | "url": "https://github.com/sebastianbergmann/comparator.git", 1797 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" 1798 | }, 1799 | "dist": { 1800 | "type": "zip", 1801 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", 1802 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", 1803 | "shasum": "" 1804 | }, 1805 | "require": { 1806 | "php": "^7.0", 1807 | "sebastian/diff": "^2.0 || ^3.0", 1808 | "sebastian/exporter": "^3.1" 1809 | }, 1810 | "require-dev": { 1811 | "phpunit/phpunit": "^6.4" 1812 | }, 1813 | "type": "library", 1814 | "extra": { 1815 | "branch-alias": { 1816 | "dev-master": "2.1.x-dev" 1817 | } 1818 | }, 1819 | "autoload": { 1820 | "classmap": [ 1821 | "src/" 1822 | ] 1823 | }, 1824 | "notification-url": "https://packagist.org/downloads/", 1825 | "license": [ 1826 | "BSD-3-Clause" 1827 | ], 1828 | "authors": [ 1829 | { 1830 | "name": "Jeff Welch", 1831 | "email": "whatthejeff@gmail.com" 1832 | }, 1833 | { 1834 | "name": "Volker Dusch", 1835 | "email": "github@wallbash.com" 1836 | }, 1837 | { 1838 | "name": "Bernhard Schussek", 1839 | "email": "bschussek@2bepublished.at" 1840 | }, 1841 | { 1842 | "name": "Sebastian Bergmann", 1843 | "email": "sebastian@phpunit.de" 1844 | } 1845 | ], 1846 | "description": "Provides the functionality to compare PHP values for equality", 1847 | "homepage": "https://github.com/sebastianbergmann/comparator", 1848 | "keywords": [ 1849 | "comparator", 1850 | "compare", 1851 | "equality" 1852 | ], 1853 | "time": "2018-02-01T13:46:46+00:00" 1854 | }, 1855 | { 1856 | "name": "sebastian/diff", 1857 | "version": "2.0.1", 1858 | "source": { 1859 | "type": "git", 1860 | "url": "https://github.com/sebastianbergmann/diff.git", 1861 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" 1862 | }, 1863 | "dist": { 1864 | "type": "zip", 1865 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1866 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", 1867 | "shasum": "" 1868 | }, 1869 | "require": { 1870 | "php": "^7.0" 1871 | }, 1872 | "require-dev": { 1873 | "phpunit/phpunit": "^6.2" 1874 | }, 1875 | "type": "library", 1876 | "extra": { 1877 | "branch-alias": { 1878 | "dev-master": "2.0-dev" 1879 | } 1880 | }, 1881 | "autoload": { 1882 | "classmap": [ 1883 | "src/" 1884 | ] 1885 | }, 1886 | "notification-url": "https://packagist.org/downloads/", 1887 | "license": [ 1888 | "BSD-3-Clause" 1889 | ], 1890 | "authors": [ 1891 | { 1892 | "name": "Kore Nordmann", 1893 | "email": "mail@kore-nordmann.de" 1894 | }, 1895 | { 1896 | "name": "Sebastian Bergmann", 1897 | "email": "sebastian@phpunit.de" 1898 | } 1899 | ], 1900 | "description": "Diff implementation", 1901 | "homepage": "https://github.com/sebastianbergmann/diff", 1902 | "keywords": [ 1903 | "diff" 1904 | ], 1905 | "time": "2017-08-03T08:09:46+00:00" 1906 | }, 1907 | { 1908 | "name": "sebastian/environment", 1909 | "version": "3.1.0", 1910 | "source": { 1911 | "type": "git", 1912 | "url": "https://github.com/sebastianbergmann/environment.git", 1913 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" 1914 | }, 1915 | "dist": { 1916 | "type": "zip", 1917 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1918 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", 1919 | "shasum": "" 1920 | }, 1921 | "require": { 1922 | "php": "^7.0" 1923 | }, 1924 | "require-dev": { 1925 | "phpunit/phpunit": "^6.1" 1926 | }, 1927 | "type": "library", 1928 | "extra": { 1929 | "branch-alias": { 1930 | "dev-master": "3.1.x-dev" 1931 | } 1932 | }, 1933 | "autoload": { 1934 | "classmap": [ 1935 | "src/" 1936 | ] 1937 | }, 1938 | "notification-url": "https://packagist.org/downloads/", 1939 | "license": [ 1940 | "BSD-3-Clause" 1941 | ], 1942 | "authors": [ 1943 | { 1944 | "name": "Sebastian Bergmann", 1945 | "email": "sebastian@phpunit.de" 1946 | } 1947 | ], 1948 | "description": "Provides functionality to handle HHVM/PHP environments", 1949 | "homepage": "http://www.github.com/sebastianbergmann/environment", 1950 | "keywords": [ 1951 | "Xdebug", 1952 | "environment", 1953 | "hhvm" 1954 | ], 1955 | "time": "2017-07-01T08:51:00+00:00" 1956 | }, 1957 | { 1958 | "name": "sebastian/exporter", 1959 | "version": "3.1.0", 1960 | "source": { 1961 | "type": "git", 1962 | "url": "https://github.com/sebastianbergmann/exporter.git", 1963 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 1964 | }, 1965 | "dist": { 1966 | "type": "zip", 1967 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 1968 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 1969 | "shasum": "" 1970 | }, 1971 | "require": { 1972 | "php": "^7.0", 1973 | "sebastian/recursion-context": "^3.0" 1974 | }, 1975 | "require-dev": { 1976 | "ext-mbstring": "*", 1977 | "phpunit/phpunit": "^6.0" 1978 | }, 1979 | "type": "library", 1980 | "extra": { 1981 | "branch-alias": { 1982 | "dev-master": "3.1.x-dev" 1983 | } 1984 | }, 1985 | "autoload": { 1986 | "classmap": [ 1987 | "src/" 1988 | ] 1989 | }, 1990 | "notification-url": "https://packagist.org/downloads/", 1991 | "license": [ 1992 | "BSD-3-Clause" 1993 | ], 1994 | "authors": [ 1995 | { 1996 | "name": "Jeff Welch", 1997 | "email": "whatthejeff@gmail.com" 1998 | }, 1999 | { 2000 | "name": "Volker Dusch", 2001 | "email": "github@wallbash.com" 2002 | }, 2003 | { 2004 | "name": "Bernhard Schussek", 2005 | "email": "bschussek@2bepublished.at" 2006 | }, 2007 | { 2008 | "name": "Sebastian Bergmann", 2009 | "email": "sebastian@phpunit.de" 2010 | }, 2011 | { 2012 | "name": "Adam Harvey", 2013 | "email": "aharvey@php.net" 2014 | } 2015 | ], 2016 | "description": "Provides the functionality to export PHP variables for visualization", 2017 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 2018 | "keywords": [ 2019 | "export", 2020 | "exporter" 2021 | ], 2022 | "time": "2017-04-03T13:19:02+00:00" 2023 | }, 2024 | { 2025 | "name": "sebastian/global-state", 2026 | "version": "2.0.0", 2027 | "source": { 2028 | "type": "git", 2029 | "url": "https://github.com/sebastianbergmann/global-state.git", 2030 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" 2031 | }, 2032 | "dist": { 2033 | "type": "zip", 2034 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 2035 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", 2036 | "shasum": "" 2037 | }, 2038 | "require": { 2039 | "php": "^7.0" 2040 | }, 2041 | "require-dev": { 2042 | "phpunit/phpunit": "^6.0" 2043 | }, 2044 | "suggest": { 2045 | "ext-uopz": "*" 2046 | }, 2047 | "type": "library", 2048 | "extra": { 2049 | "branch-alias": { 2050 | "dev-master": "2.0-dev" 2051 | } 2052 | }, 2053 | "autoload": { 2054 | "classmap": [ 2055 | "src/" 2056 | ] 2057 | }, 2058 | "notification-url": "https://packagist.org/downloads/", 2059 | "license": [ 2060 | "BSD-3-Clause" 2061 | ], 2062 | "authors": [ 2063 | { 2064 | "name": "Sebastian Bergmann", 2065 | "email": "sebastian@phpunit.de" 2066 | } 2067 | ], 2068 | "description": "Snapshotting of global state", 2069 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 2070 | "keywords": [ 2071 | "global state" 2072 | ], 2073 | "time": "2017-04-27T15:39:26+00:00" 2074 | }, 2075 | { 2076 | "name": "sebastian/object-enumerator", 2077 | "version": "3.0.3", 2078 | "source": { 2079 | "type": "git", 2080 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 2081 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 2082 | }, 2083 | "dist": { 2084 | "type": "zip", 2085 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2086 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 2087 | "shasum": "" 2088 | }, 2089 | "require": { 2090 | "php": "^7.0", 2091 | "sebastian/object-reflector": "^1.1.1", 2092 | "sebastian/recursion-context": "^3.0" 2093 | }, 2094 | "require-dev": { 2095 | "phpunit/phpunit": "^6.0" 2096 | }, 2097 | "type": "library", 2098 | "extra": { 2099 | "branch-alias": { 2100 | "dev-master": "3.0.x-dev" 2101 | } 2102 | }, 2103 | "autoload": { 2104 | "classmap": [ 2105 | "src/" 2106 | ] 2107 | }, 2108 | "notification-url": "https://packagist.org/downloads/", 2109 | "license": [ 2110 | "BSD-3-Clause" 2111 | ], 2112 | "authors": [ 2113 | { 2114 | "name": "Sebastian Bergmann", 2115 | "email": "sebastian@phpunit.de" 2116 | } 2117 | ], 2118 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 2119 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 2120 | "time": "2017-08-03T12:35:26+00:00" 2121 | }, 2122 | { 2123 | "name": "sebastian/object-reflector", 2124 | "version": "1.1.1", 2125 | "source": { 2126 | "type": "git", 2127 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 2128 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 2129 | }, 2130 | "dist": { 2131 | "type": "zip", 2132 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 2133 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 2134 | "shasum": "" 2135 | }, 2136 | "require": { 2137 | "php": "^7.0" 2138 | }, 2139 | "require-dev": { 2140 | "phpunit/phpunit": "^6.0" 2141 | }, 2142 | "type": "library", 2143 | "extra": { 2144 | "branch-alias": { 2145 | "dev-master": "1.1-dev" 2146 | } 2147 | }, 2148 | "autoload": { 2149 | "classmap": [ 2150 | "src/" 2151 | ] 2152 | }, 2153 | "notification-url": "https://packagist.org/downloads/", 2154 | "license": [ 2155 | "BSD-3-Clause" 2156 | ], 2157 | "authors": [ 2158 | { 2159 | "name": "Sebastian Bergmann", 2160 | "email": "sebastian@phpunit.de" 2161 | } 2162 | ], 2163 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 2164 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 2165 | "time": "2017-03-29T09:07:27+00:00" 2166 | }, 2167 | { 2168 | "name": "sebastian/recursion-context", 2169 | "version": "3.0.0", 2170 | "source": { 2171 | "type": "git", 2172 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 2173 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 2174 | }, 2175 | "dist": { 2176 | "type": "zip", 2177 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2178 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 2179 | "shasum": "" 2180 | }, 2181 | "require": { 2182 | "php": "^7.0" 2183 | }, 2184 | "require-dev": { 2185 | "phpunit/phpunit": "^6.0" 2186 | }, 2187 | "type": "library", 2188 | "extra": { 2189 | "branch-alias": { 2190 | "dev-master": "3.0.x-dev" 2191 | } 2192 | }, 2193 | "autoload": { 2194 | "classmap": [ 2195 | "src/" 2196 | ] 2197 | }, 2198 | "notification-url": "https://packagist.org/downloads/", 2199 | "license": [ 2200 | "BSD-3-Clause" 2201 | ], 2202 | "authors": [ 2203 | { 2204 | "name": "Jeff Welch", 2205 | "email": "whatthejeff@gmail.com" 2206 | }, 2207 | { 2208 | "name": "Sebastian Bergmann", 2209 | "email": "sebastian@phpunit.de" 2210 | }, 2211 | { 2212 | "name": "Adam Harvey", 2213 | "email": "aharvey@php.net" 2214 | } 2215 | ], 2216 | "description": "Provides functionality to recursively process PHP variables", 2217 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 2218 | "time": "2017-03-03T06:23:57+00:00" 2219 | }, 2220 | { 2221 | "name": "sebastian/resource-operations", 2222 | "version": "1.0.0", 2223 | "source": { 2224 | "type": "git", 2225 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 2226 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52" 2227 | }, 2228 | "dist": { 2229 | "type": "zip", 2230 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 2231 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52", 2232 | "shasum": "" 2233 | }, 2234 | "require": { 2235 | "php": ">=5.6.0" 2236 | }, 2237 | "type": "library", 2238 | "extra": { 2239 | "branch-alias": { 2240 | "dev-master": "1.0.x-dev" 2241 | } 2242 | }, 2243 | "autoload": { 2244 | "classmap": [ 2245 | "src/" 2246 | ] 2247 | }, 2248 | "notification-url": "https://packagist.org/downloads/", 2249 | "license": [ 2250 | "BSD-3-Clause" 2251 | ], 2252 | "authors": [ 2253 | { 2254 | "name": "Sebastian Bergmann", 2255 | "email": "sebastian@phpunit.de" 2256 | } 2257 | ], 2258 | "description": "Provides a list of PHP built-in functions that operate on resources", 2259 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 2260 | "time": "2015-07-28T20:34:47+00:00" 2261 | }, 2262 | { 2263 | "name": "sebastian/version", 2264 | "version": "2.0.1", 2265 | "source": { 2266 | "type": "git", 2267 | "url": "https://github.com/sebastianbergmann/version.git", 2268 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 2269 | }, 2270 | "dist": { 2271 | "type": "zip", 2272 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 2273 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 2274 | "shasum": "" 2275 | }, 2276 | "require": { 2277 | "php": ">=5.6" 2278 | }, 2279 | "type": "library", 2280 | "extra": { 2281 | "branch-alias": { 2282 | "dev-master": "2.0.x-dev" 2283 | } 2284 | }, 2285 | "autoload": { 2286 | "classmap": [ 2287 | "src/" 2288 | ] 2289 | }, 2290 | "notification-url": "https://packagist.org/downloads/", 2291 | "license": [ 2292 | "BSD-3-Clause" 2293 | ], 2294 | "authors": [ 2295 | { 2296 | "name": "Sebastian Bergmann", 2297 | "email": "sebastian@phpunit.de", 2298 | "role": "lead" 2299 | } 2300 | ], 2301 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 2302 | "homepage": "https://github.com/sebastianbergmann/version", 2303 | "time": "2016-10-03T07:35:21+00:00" 2304 | }, 2305 | { 2306 | "name": "squizlabs/php_codesniffer", 2307 | "version": "3.3.2", 2308 | "source": { 2309 | "type": "git", 2310 | "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", 2311 | "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e" 2312 | }, 2313 | "dist": { 2314 | "type": "zip", 2315 | "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/6ad28354c04b364c3c71a34e4a18b629cc3b231e", 2316 | "reference": "6ad28354c04b364c3c71a34e4a18b629cc3b231e", 2317 | "shasum": "" 2318 | }, 2319 | "require": { 2320 | "ext-simplexml": "*", 2321 | "ext-tokenizer": "*", 2322 | "ext-xmlwriter": "*", 2323 | "php": ">=5.4.0" 2324 | }, 2325 | "require-dev": { 2326 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 2327 | }, 2328 | "bin": [ 2329 | "bin/phpcs", 2330 | "bin/phpcbf" 2331 | ], 2332 | "type": "library", 2333 | "extra": { 2334 | "branch-alias": { 2335 | "dev-master": "3.x-dev" 2336 | } 2337 | }, 2338 | "notification-url": "https://packagist.org/downloads/", 2339 | "license": [ 2340 | "BSD-3-Clause" 2341 | ], 2342 | "authors": [ 2343 | { 2344 | "name": "Greg Sherwood", 2345 | "role": "lead" 2346 | } 2347 | ], 2348 | "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", 2349 | "homepage": "http://www.squizlabs.com/php-codesniffer", 2350 | "keywords": [ 2351 | "phpcs", 2352 | "standards" 2353 | ], 2354 | "time": "2018-09-23T23:08:17+00:00" 2355 | }, 2356 | { 2357 | "name": "symfony/config", 2358 | "version": "v3.4.17", 2359 | "source": { 2360 | "type": "git", 2361 | "url": "https://github.com/symfony/config.git", 2362 | "reference": "e5389132dc6320682de3643091121c048ff796b3" 2363 | }, 2364 | "dist": { 2365 | "type": "zip", 2366 | "url": "https://api.github.com/repos/symfony/config/zipball/e5389132dc6320682de3643091121c048ff796b3", 2367 | "reference": "e5389132dc6320682de3643091121c048ff796b3", 2368 | "shasum": "" 2369 | }, 2370 | "require": { 2371 | "php": "^5.5.9|>=7.0.8", 2372 | "symfony/filesystem": "~2.8|~3.0|~4.0", 2373 | "symfony/polyfill-ctype": "~1.8" 2374 | }, 2375 | "conflict": { 2376 | "symfony/dependency-injection": "<3.3", 2377 | "symfony/finder": "<3.3" 2378 | }, 2379 | "require-dev": { 2380 | "symfony/dependency-injection": "~3.3|~4.0", 2381 | "symfony/event-dispatcher": "~3.3|~4.0", 2382 | "symfony/finder": "~3.3|~4.0", 2383 | "symfony/yaml": "~3.0|~4.0" 2384 | }, 2385 | "suggest": { 2386 | "symfony/yaml": "To use the yaml reference dumper" 2387 | }, 2388 | "type": "library", 2389 | "extra": { 2390 | "branch-alias": { 2391 | "dev-master": "3.4-dev" 2392 | } 2393 | }, 2394 | "autoload": { 2395 | "psr-4": { 2396 | "Symfony\\Component\\Config\\": "" 2397 | }, 2398 | "exclude-from-classmap": [ 2399 | "/Tests/" 2400 | ] 2401 | }, 2402 | "notification-url": "https://packagist.org/downloads/", 2403 | "license": [ 2404 | "MIT" 2405 | ], 2406 | "authors": [ 2407 | { 2408 | "name": "Fabien Potencier", 2409 | "email": "fabien@symfony.com" 2410 | }, 2411 | { 2412 | "name": "Symfony Community", 2413 | "homepage": "https://symfony.com/contributors" 2414 | } 2415 | ], 2416 | "description": "Symfony Config Component", 2417 | "homepage": "https://symfony.com", 2418 | "time": "2018-09-08T13:15:14+00:00" 2419 | }, 2420 | { 2421 | "name": "symfony/console", 2422 | "version": "v3.4.17", 2423 | "source": { 2424 | "type": "git", 2425 | "url": "https://github.com/symfony/console.git", 2426 | "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b" 2427 | }, 2428 | "dist": { 2429 | "type": "zip", 2430 | "url": "https://api.github.com/repos/symfony/console/zipball/3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", 2431 | "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", 2432 | "shasum": "" 2433 | }, 2434 | "require": { 2435 | "php": "^5.5.9|>=7.0.8", 2436 | "symfony/debug": "~2.8|~3.0|~4.0", 2437 | "symfony/polyfill-mbstring": "~1.0" 2438 | }, 2439 | "conflict": { 2440 | "symfony/dependency-injection": "<3.4", 2441 | "symfony/process": "<3.3" 2442 | }, 2443 | "require-dev": { 2444 | "psr/log": "~1.0", 2445 | "symfony/config": "~3.3|~4.0", 2446 | "symfony/dependency-injection": "~3.4|~4.0", 2447 | "symfony/event-dispatcher": "~2.8|~3.0|~4.0", 2448 | "symfony/lock": "~3.4|~4.0", 2449 | "symfony/process": "~3.3|~4.0" 2450 | }, 2451 | "suggest": { 2452 | "psr/log-implementation": "For using the console logger", 2453 | "symfony/event-dispatcher": "", 2454 | "symfony/lock": "", 2455 | "symfony/process": "" 2456 | }, 2457 | "type": "library", 2458 | "extra": { 2459 | "branch-alias": { 2460 | "dev-master": "3.4-dev" 2461 | } 2462 | }, 2463 | "autoload": { 2464 | "psr-4": { 2465 | "Symfony\\Component\\Console\\": "" 2466 | }, 2467 | "exclude-from-classmap": [ 2468 | "/Tests/" 2469 | ] 2470 | }, 2471 | "notification-url": "https://packagist.org/downloads/", 2472 | "license": [ 2473 | "MIT" 2474 | ], 2475 | "authors": [ 2476 | { 2477 | "name": "Fabien Potencier", 2478 | "email": "fabien@symfony.com" 2479 | }, 2480 | { 2481 | "name": "Symfony Community", 2482 | "homepage": "https://symfony.com/contributors" 2483 | } 2484 | ], 2485 | "description": "Symfony Console Component", 2486 | "homepage": "https://symfony.com", 2487 | "time": "2018-10-02T16:33:53+00:00" 2488 | }, 2489 | { 2490 | "name": "symfony/debug", 2491 | "version": "v3.4.17", 2492 | "source": { 2493 | "type": "git", 2494 | "url": "https://github.com/symfony/debug.git", 2495 | "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6" 2496 | }, 2497 | "dist": { 2498 | "type": "zip", 2499 | "url": "https://api.github.com/repos/symfony/debug/zipball/0a612e9dfbd2ccce03eb174365f31ecdca930ff6", 2500 | "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6", 2501 | "shasum": "" 2502 | }, 2503 | "require": { 2504 | "php": "^5.5.9|>=7.0.8", 2505 | "psr/log": "~1.0" 2506 | }, 2507 | "conflict": { 2508 | "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" 2509 | }, 2510 | "require-dev": { 2511 | "symfony/http-kernel": "~2.8|~3.0|~4.0" 2512 | }, 2513 | "type": "library", 2514 | "extra": { 2515 | "branch-alias": { 2516 | "dev-master": "3.4-dev" 2517 | } 2518 | }, 2519 | "autoload": { 2520 | "psr-4": { 2521 | "Symfony\\Component\\Debug\\": "" 2522 | }, 2523 | "exclude-from-classmap": [ 2524 | "/Tests/" 2525 | ] 2526 | }, 2527 | "notification-url": "https://packagist.org/downloads/", 2528 | "license": [ 2529 | "MIT" 2530 | ], 2531 | "authors": [ 2532 | { 2533 | "name": "Fabien Potencier", 2534 | "email": "fabien@symfony.com" 2535 | }, 2536 | { 2537 | "name": "Symfony Community", 2538 | "homepage": "https://symfony.com/contributors" 2539 | } 2540 | ], 2541 | "description": "Symfony Debug Component", 2542 | "homepage": "https://symfony.com", 2543 | "time": "2018-10-02T16:33:53+00:00" 2544 | }, 2545 | { 2546 | "name": "symfony/filesystem", 2547 | "version": "v3.4.17", 2548 | "source": { 2549 | "type": "git", 2550 | "url": "https://github.com/symfony/filesystem.git", 2551 | "reference": "d69930fc337d767607267d57c20a7403d0a822a4" 2552 | }, 2553 | "dist": { 2554 | "type": "zip", 2555 | "url": "https://api.github.com/repos/symfony/filesystem/zipball/d69930fc337d767607267d57c20a7403d0a822a4", 2556 | "reference": "d69930fc337d767607267d57c20a7403d0a822a4", 2557 | "shasum": "" 2558 | }, 2559 | "require": { 2560 | "php": "^5.5.9|>=7.0.8", 2561 | "symfony/polyfill-ctype": "~1.8" 2562 | }, 2563 | "type": "library", 2564 | "extra": { 2565 | "branch-alias": { 2566 | "dev-master": "3.4-dev" 2567 | } 2568 | }, 2569 | "autoload": { 2570 | "psr-4": { 2571 | "Symfony\\Component\\Filesystem\\": "" 2572 | }, 2573 | "exclude-from-classmap": [ 2574 | "/Tests/" 2575 | ] 2576 | }, 2577 | "notification-url": "https://packagist.org/downloads/", 2578 | "license": [ 2579 | "MIT" 2580 | ], 2581 | "authors": [ 2582 | { 2583 | "name": "Fabien Potencier", 2584 | "email": "fabien@symfony.com" 2585 | }, 2586 | { 2587 | "name": "Symfony Community", 2588 | "homepage": "https://symfony.com/contributors" 2589 | } 2590 | ], 2591 | "description": "Symfony Filesystem Component", 2592 | "homepage": "https://symfony.com", 2593 | "time": "2018-10-02T12:28:39+00:00" 2594 | }, 2595 | { 2596 | "name": "symfony/polyfill-ctype", 2597 | "version": "v1.9.0", 2598 | "source": { 2599 | "type": "git", 2600 | "url": "https://github.com/symfony/polyfill-ctype.git", 2601 | "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" 2602 | }, 2603 | "dist": { 2604 | "type": "zip", 2605 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", 2606 | "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", 2607 | "shasum": "" 2608 | }, 2609 | "require": { 2610 | "php": ">=5.3.3" 2611 | }, 2612 | "suggest": { 2613 | "ext-ctype": "For best performance" 2614 | }, 2615 | "type": "library", 2616 | "extra": { 2617 | "branch-alias": { 2618 | "dev-master": "1.9-dev" 2619 | } 2620 | }, 2621 | "autoload": { 2622 | "psr-4": { 2623 | "Symfony\\Polyfill\\Ctype\\": "" 2624 | }, 2625 | "files": [ 2626 | "bootstrap.php" 2627 | ] 2628 | }, 2629 | "notification-url": "https://packagist.org/downloads/", 2630 | "license": [ 2631 | "MIT" 2632 | ], 2633 | "authors": [ 2634 | { 2635 | "name": "Symfony Community", 2636 | "homepage": "https://symfony.com/contributors" 2637 | }, 2638 | { 2639 | "name": "Gert de Pagter", 2640 | "email": "BackEndTea@gmail.com" 2641 | } 2642 | ], 2643 | "description": "Symfony polyfill for ctype functions", 2644 | "homepage": "https://symfony.com", 2645 | "keywords": [ 2646 | "compatibility", 2647 | "ctype", 2648 | "polyfill", 2649 | "portable" 2650 | ], 2651 | "time": "2018-08-06T14:22:27+00:00" 2652 | }, 2653 | { 2654 | "name": "symfony/polyfill-mbstring", 2655 | "version": "v1.9.0", 2656 | "source": { 2657 | "type": "git", 2658 | "url": "https://github.com/symfony/polyfill-mbstring.git", 2659 | "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8" 2660 | }, 2661 | "dist": { 2662 | "type": "zip", 2663 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/d0cd638f4634c16d8df4508e847f14e9e43168b8", 2664 | "reference": "d0cd638f4634c16d8df4508e847f14e9e43168b8", 2665 | "shasum": "" 2666 | }, 2667 | "require": { 2668 | "php": ">=5.3.3" 2669 | }, 2670 | "suggest": { 2671 | "ext-mbstring": "For best performance" 2672 | }, 2673 | "type": "library", 2674 | "extra": { 2675 | "branch-alias": { 2676 | "dev-master": "1.9-dev" 2677 | } 2678 | }, 2679 | "autoload": { 2680 | "psr-4": { 2681 | "Symfony\\Polyfill\\Mbstring\\": "" 2682 | }, 2683 | "files": [ 2684 | "bootstrap.php" 2685 | ] 2686 | }, 2687 | "notification-url": "https://packagist.org/downloads/", 2688 | "license": [ 2689 | "MIT" 2690 | ], 2691 | "authors": [ 2692 | { 2693 | "name": "Nicolas Grekas", 2694 | "email": "p@tchwork.com" 2695 | }, 2696 | { 2697 | "name": "Symfony Community", 2698 | "homepage": "https://symfony.com/contributors" 2699 | } 2700 | ], 2701 | "description": "Symfony polyfill for the Mbstring extension", 2702 | "homepage": "https://symfony.com", 2703 | "keywords": [ 2704 | "compatibility", 2705 | "mbstring", 2706 | "polyfill", 2707 | "portable", 2708 | "shim" 2709 | ], 2710 | "time": "2018-08-06T14:22:27+00:00" 2711 | }, 2712 | { 2713 | "name": "symfony/stopwatch", 2714 | "version": "v3.4.17", 2715 | "source": { 2716 | "type": "git", 2717 | "url": "https://github.com/symfony/stopwatch.git", 2718 | "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4" 2719 | }, 2720 | "dist": { 2721 | "type": "zip", 2722 | "url": "https://api.github.com/repos/symfony/stopwatch/zipball/05e52a39de52ba690aebaed462b2bc8a9649f0a4", 2723 | "reference": "05e52a39de52ba690aebaed462b2bc8a9649f0a4", 2724 | "shasum": "" 2725 | }, 2726 | "require": { 2727 | "php": "^5.5.9|>=7.0.8" 2728 | }, 2729 | "type": "library", 2730 | "extra": { 2731 | "branch-alias": { 2732 | "dev-master": "3.4-dev" 2733 | } 2734 | }, 2735 | "autoload": { 2736 | "psr-4": { 2737 | "Symfony\\Component\\Stopwatch\\": "" 2738 | }, 2739 | "exclude-from-classmap": [ 2740 | "/Tests/" 2741 | ] 2742 | }, 2743 | "notification-url": "https://packagist.org/downloads/", 2744 | "license": [ 2745 | "MIT" 2746 | ], 2747 | "authors": [ 2748 | { 2749 | "name": "Fabien Potencier", 2750 | "email": "fabien@symfony.com" 2751 | }, 2752 | { 2753 | "name": "Symfony Community", 2754 | "homepage": "https://symfony.com/contributors" 2755 | } 2756 | ], 2757 | "description": "Symfony Stopwatch Component", 2758 | "homepage": "https://symfony.com", 2759 | "time": "2018-10-02T12:28:39+00:00" 2760 | }, 2761 | { 2762 | "name": "symfony/yaml", 2763 | "version": "v3.4.17", 2764 | "source": { 2765 | "type": "git", 2766 | "url": "https://github.com/symfony/yaml.git", 2767 | "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f" 2768 | }, 2769 | "dist": { 2770 | "type": "zip", 2771 | "url": "https://api.github.com/repos/symfony/yaml/zipball/640b6c27fed4066d64b64d5903a86043f4a4de7f", 2772 | "reference": "640b6c27fed4066d64b64d5903a86043f4a4de7f", 2773 | "shasum": "" 2774 | }, 2775 | "require": { 2776 | "php": "^5.5.9|>=7.0.8", 2777 | "symfony/polyfill-ctype": "~1.8" 2778 | }, 2779 | "conflict": { 2780 | "symfony/console": "<3.4" 2781 | }, 2782 | "require-dev": { 2783 | "symfony/console": "~3.4|~4.0" 2784 | }, 2785 | "suggest": { 2786 | "symfony/console": "For validating YAML files using the lint command" 2787 | }, 2788 | "type": "library", 2789 | "extra": { 2790 | "branch-alias": { 2791 | "dev-master": "3.4-dev" 2792 | } 2793 | }, 2794 | "autoload": { 2795 | "psr-4": { 2796 | "Symfony\\Component\\Yaml\\": "" 2797 | }, 2798 | "exclude-from-classmap": [ 2799 | "/Tests/" 2800 | ] 2801 | }, 2802 | "notification-url": "https://packagist.org/downloads/", 2803 | "license": [ 2804 | "MIT" 2805 | ], 2806 | "authors": [ 2807 | { 2808 | "name": "Fabien Potencier", 2809 | "email": "fabien@symfony.com" 2810 | }, 2811 | { 2812 | "name": "Symfony Community", 2813 | "homepage": "https://symfony.com/contributors" 2814 | } 2815 | ], 2816 | "description": "Symfony Yaml Component", 2817 | "homepage": "https://symfony.com", 2818 | "time": "2018-10-02T16:33:53+00:00" 2819 | }, 2820 | { 2821 | "name": "theseer/tokenizer", 2822 | "version": "1.1.0", 2823 | "source": { 2824 | "type": "git", 2825 | "url": "https://github.com/theseer/tokenizer.git", 2826 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" 2827 | }, 2828 | "dist": { 2829 | "type": "zip", 2830 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", 2831 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", 2832 | "shasum": "" 2833 | }, 2834 | "require": { 2835 | "ext-dom": "*", 2836 | "ext-tokenizer": "*", 2837 | "ext-xmlwriter": "*", 2838 | "php": "^7.0" 2839 | }, 2840 | "type": "library", 2841 | "autoload": { 2842 | "classmap": [ 2843 | "src/" 2844 | ] 2845 | }, 2846 | "notification-url": "https://packagist.org/downloads/", 2847 | "license": [ 2848 | "BSD-3-Clause" 2849 | ], 2850 | "authors": [ 2851 | { 2852 | "name": "Arne Blankerts", 2853 | "email": "arne@blankerts.de", 2854 | "role": "Developer" 2855 | } 2856 | ], 2857 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 2858 | "time": "2017-04-07T12:08:54+00:00" 2859 | }, 2860 | { 2861 | "name": "webmozart/assert", 2862 | "version": "1.3.0", 2863 | "source": { 2864 | "type": "git", 2865 | "url": "https://github.com/webmozart/assert.git", 2866 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a" 2867 | }, 2868 | "dist": { 2869 | "type": "zip", 2870 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a", 2871 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a", 2872 | "shasum": "" 2873 | }, 2874 | "require": { 2875 | "php": "^5.3.3 || ^7.0" 2876 | }, 2877 | "require-dev": { 2878 | "phpunit/phpunit": "^4.6", 2879 | "sebastian/version": "^1.0.1" 2880 | }, 2881 | "type": "library", 2882 | "extra": { 2883 | "branch-alias": { 2884 | "dev-master": "1.3-dev" 2885 | } 2886 | }, 2887 | "autoload": { 2888 | "psr-4": { 2889 | "Webmozart\\Assert\\": "src/" 2890 | } 2891 | }, 2892 | "notification-url": "https://packagist.org/downloads/", 2893 | "license": [ 2894 | "MIT" 2895 | ], 2896 | "authors": [ 2897 | { 2898 | "name": "Bernhard Schussek", 2899 | "email": "bschussek@gmail.com" 2900 | } 2901 | ], 2902 | "description": "Assertions to validate method input/output with nice error messages.", 2903 | "keywords": [ 2904 | "assert", 2905 | "check", 2906 | "validate" 2907 | ], 2908 | "time": "2018-01-29T19:49:41+00:00" 2909 | } 2910 | ], 2911 | "aliases": [], 2912 | "minimum-stability": "stable", 2913 | "stability-flags": { 2914 | "roave/security-advisories": 20 2915 | }, 2916 | "prefer-stable": false, 2917 | "prefer-lowest": false, 2918 | "platform": { 2919 | "php": "^7.0", 2920 | "ext-json": "*" 2921 | }, 2922 | "platform-dev": [], 2923 | "platform-overrides": { 2924 | "php": "7.0.32" 2925 | } 2926 | } 2927 | --------------------------------------------------------------------------------