├── .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 | [](https://packagist.org/packages/benjaminhirsch/php-azure-search)
5 | [](https://benjaminhirsch.visualstudio.com/azure-search-php/_build/latest?definitionId=1)
6 | [](https://travis-ci.org/benjaminhirsch/azure-search-php)
7 | [](https://coveralls.io/github/benjaminhirsch/azure-search-php?branch=master)
8 | [](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 |
--------------------------------------------------------------------------------