├── CHANGELOG.md
├── CONTRIBUTING.md
├── LICENSE
├── README.md
├── UPGRADE.md
├── composer.json
├── composer.lock
└── src
├── SearchComponent.php
├── interfaces
├── CustomSearchInterface.php
└── SearchInterface.php
└── models
└── SearchResult.php
/CHANGELOG.md:
--------------------------------------------------------------------------------
1 | Search Component Change Log
2 | ---------------------------
3 |
4 | 2.0.0 February 10, 2018
5 | -----------------------
6 | * Enh: Some improvements in SearchResult model (greeflas)
7 | * Chg #1: Changed minimum Yii version from `^2.0.0` to `^2.0.13` (greeflas, CodeIgniter00)
8 | * Chg: Removed unused dev packages `codeception/verify` and `codeception/specify` (greeflas)
9 | * Chg: Updated code style
10 |
11 | 1.1.0 October 19, 2017
12 | ----------------------
13 | * Enh: Refactored code: improve code readability (greeflas)
14 | * Enh: Creates interface for custom search query (greeflas)
15 | * Enh: Improved unit tests (greeflas)
16 | * Fix: Use Inflector if label for model not specified (greeflas)
17 |
18 | 1.0.0 August 11, 2017
19 | ---------------------
20 | * Initial release (greeflas)
21 |
22 | Development started April 05, 2017
23 | ----------------------------------
24 |
--------------------------------------------------------------------------------
/CONTRIBUTING.md:
--------------------------------------------------------------------------------
1 | Contributing
2 | ============
3 |
4 | We welcome any contributing!
5 |
6 | Pull requests
7 | -------------
8 |
9 | You must follow the next rules to contribute to this project:
10 |
11 | - **Create feature branches** - You must create a new branch for a feature. We don't accept pull requests from master branch.
12 |
13 | - **One pull request per feature** - If you want to do more than one thing, send multiple pull requests.
14 |
15 | Tests
16 | -----
17 |
18 | You can run tests with composer command
19 |
20 | ```
21 | $ composer test
22 | ```
23 |
24 | or using following command
25 |
26 | ```
27 | $ codecept build && codecept run
28 | ```
29 |
30 | Happy coding :)
31 | ---------------
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | BSD 3-Clause License
2 |
3 | Copyright (c) 2017, Vladimir Kuprienko
4 | All rights reserved.
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 |
9 | * Redistributions of source code must retain the above copyright notice, this
10 | list of conditions and the following disclaimer.
11 |
12 | * Redistributions in binary form must reproduce the above copyright notice,
13 | this list of conditions and the following disclaimer in the documentation
14 | and/or other materials provided with the distribution.
15 |
16 | * Neither the name of the copyright holder nor the names of its
17 | contributors may be used to endorse or promote products derived from
18 | this software without specific prior written permission.
19 |
20 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
21 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
22 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
23 | DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
24 | FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
25 | DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
26 | SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
27 | CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
28 | OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29 | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Search in Active Record models for Yii2
6 |
7 |
8 | [](https://travis-ci.org/Vintage-web-production/yii2-search)
9 | [](https://scrutinizer-ci.com/g/Vintage-web-production/yii2-search/?branch=master)
10 | [](https://packagist.org/packages/vintage/yii2-search)
11 | [](CHANGELOG.md)
12 | [](CHANGELOG.md)
13 |
14 | This is component for searching in the Active Record models for Yii2 Framework.
15 |
16 | Documentation is at [docs/guide/README.md](docs/guide/README.md).
17 |
18 | Installation
19 | ------------
20 |
21 | #### Install package
22 |
23 | The preferred way to install this extension is through [composer](http://getcomposer.org/download/).
24 |
25 | Either run
26 |
27 | ```
28 | $ composer require vintage/yii2-search
29 | ```
30 |
31 | or add
32 |
33 | ```
34 | "vintage/yii2-search": "~2.0"
35 | ```
36 |
37 | to the `require` section of your `composer.json`.
38 |
39 | Usage
40 | -----
41 |
42 | Implement `\vintage\search\interfaces\SearchInterface` interface in Active Record models
43 |
44 | ```php
45 | /**
46 | * Article search model.
47 | *
48 | * @property integer $id
49 | * @property string $title
50 | * @property string $short_description
51 | * @property string $content
52 | */
53 | class ArticleSearch extends ActiveRecord implements \vintage\search\interfaces\SearchInterface
54 | {
55 | /**
56 | * @inheritdoc
57 | */
58 | public function getSearchTitle()
59 | {
60 |
61 | return $this->title;
62 | }
63 |
64 | /**
65 | * @inheritdoc
66 | */
67 | public function getSearchDescription()
68 | {
69 | return $this->short_description;
70 | }
71 |
72 | /**
73 | * @inheritdoc
74 | */
75 | public function getSearchUrl()
76 | {
77 | return Url::toRoute(['/news/default/index', 'id' => $this->id]);
78 | }
79 |
80 | /**
81 | * @inheritdoc
82 | */
83 | public function getSearchFields()
84 | {
85 | return [
86 | 'title',
87 | 'short_description',
88 | 'content',
89 | ];
90 | }
91 | }
92 | ```
93 |
94 | Call method of search component with a query
95 |
96 | ```php
97 | /* @var \vintage\search\models\SearchResult[] $result */
98 | $result = Yii::$app->get('searcher')->search('some query here');
99 | ```
100 |
101 | this method returns array of `\vintage\search\models\SearchResult` objects.
102 |
103 | Tests
104 | -----
105 | You can run tests with composer command
106 |
107 | ```
108 | $ composer test
109 | ```
110 |
111 | or using following command
112 |
113 | ```
114 | $ codecept build && codecept run
115 | ```
116 |
117 | Contributing
118 | ------------
119 | For information about contributing please read [CONTRIBUTING.md](CONTRIBUTING.md).
120 |
121 | Licence
122 | -------
123 | [](LICENSE)
124 |
125 | This project is released under the terms of the BSD-3-Clause [license](LICENSE).
126 |
--------------------------------------------------------------------------------
/UPGRADE.md:
--------------------------------------------------------------------------------
1 | Upgrading Instructions
2 | ======================
3 |
4 | This file contains the upgrade notes. These notes highlight changes that could break your
5 | application when you upgrade the package from one version to another.
6 |
7 | Upgrade from 1.x to 2.x
8 | -----------------------
9 |
10 | * Changed minimum Yii version from `^2.0.0` to `^2.0.13`
11 |
12 | * Moved `vintage\search\data\SearchResult` class to `vintage\search\models\SearchResult`
13 | namespace
14 |
15 | * Removed unused dev packages codeception/verify and codeception/specify
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vintage/yii2-search",
3 | "description": "Search in Active Record models for Yii2",
4 | "keywords": ["yii2", "component", "search", "active record"],
5 | "type": "yii2-extension",
6 | "license": "BSD-3-Clause",
7 | "support": {
8 | "source": "https://github.com/Vintage-web-production/yii2-search",
9 | "issues": "https://github.com/Vintage-web-production/yii2-search/issues"
10 | },
11 | "authors": [
12 | {
13 | "name": "Vladimir Kuprienko",
14 | "email": "vldmr.kuprienko@gmail.com",
15 | "role": "Developer"
16 | }
17 | ],
18 | "repositories": [
19 | {
20 | "type": "composer",
21 | "url": "https://asset-packagist.org"
22 | }
23 | ],
24 | "require": {
25 | "yiisoft/yii2": "^2.0.13"
26 | },
27 | "require-dev": {
28 | "codeception/codeception": "~2.3"
29 | },
30 | "autoload": {
31 | "psr-4": {
32 | "vintage\\search\\": "src/"
33 | }
34 | },
35 | "autoload-dev": {
36 | "psr-4": {
37 | "vintage\\search\\tests\\": "tests/"
38 | }
39 | },
40 | "extra": {
41 | "branch-alias": {
42 | "dev-master": "2.0.x-dev"
43 | }
44 | },
45 | "scripts": {
46 | "test": [
47 | "codecept build",
48 | "codecept run"
49 | ]
50 | }
51 | }
--------------------------------------------------------------------------------
/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#composer-lock-the-lock-file",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "23b3e0c34c0f9966ee23d4da4ae21d1e",
8 | "packages": [
9 | {
10 | "name": "bower-asset/inputmask",
11 | "version": "3.3.11",
12 | "source": {
13 | "type": "git",
14 | "url": "https://github.com/RobinHerbots/Inputmask.git",
15 | "reference": "5e670ad62f50c738388d4dcec78d2888505ad77b"
16 | },
17 | "dist": {
18 | "type": "zip",
19 | "url": "https://api.github.com/repos/RobinHerbots/Inputmask/zipball/5e670ad62f50c738388d4dcec78d2888505ad77b",
20 | "reference": "5e670ad62f50c738388d4dcec78d2888505ad77b",
21 | "shasum": null
22 | },
23 | "require": {
24 | "bower-asset/jquery": ">=1.7"
25 | },
26 | "type": "bower-asset",
27 | "license": [
28 | "http://opensource.org/licenses/mit-license.php"
29 | ]
30 | },
31 | {
32 | "name": "bower-asset/jquery",
33 | "version": "3.2.1",
34 | "source": {
35 | "type": "git",
36 | "url": "https://github.com/jquery/jquery-dist.git",
37 | "reference": "77d2a51d0520d2ee44173afdf4e40a9201f5964e"
38 | },
39 | "dist": {
40 | "type": "zip",
41 | "url": "https://api.github.com/repos/jquery/jquery-dist/zipball/77d2a51d0520d2ee44173afdf4e40a9201f5964e",
42 | "reference": "77d2a51d0520d2ee44173afdf4e40a9201f5964e",
43 | "shasum": null
44 | },
45 | "type": "bower-asset",
46 | "license": [
47 | "MIT"
48 | ]
49 | },
50 | {
51 | "name": "bower-asset/punycode",
52 | "version": "v1.3.2",
53 | "source": {
54 | "type": "git",
55 | "url": "https://github.com/bestiejs/punycode.js.git",
56 | "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3"
57 | },
58 | "dist": {
59 | "type": "zip",
60 | "url": "https://api.github.com/repos/bestiejs/punycode.js/zipball/38c8d3131a82567bfef18da09f7f4db68c84f8a3",
61 | "reference": "38c8d3131a82567bfef18da09f7f4db68c84f8a3",
62 | "shasum": null
63 | },
64 | "type": "bower-asset"
65 | },
66 | {
67 | "name": "bower-asset/yii2-pjax",
68 | "version": "2.0.7.1",
69 | "source": {
70 | "type": "git",
71 | "url": "git@github.com:yiisoft/jquery-pjax.git",
72 | "reference": "aef7b953107264f00234902a3880eb50dafc48be"
73 | },
74 | "dist": {
75 | "type": "zip",
76 | "url": "https://api.github.com/repos/yiisoft/jquery-pjax/zipball/aef7b953107264f00234902a3880eb50dafc48be",
77 | "reference": "aef7b953107264f00234902a3880eb50dafc48be",
78 | "shasum": null
79 | },
80 | "require": {
81 | "bower-asset/jquery": ">=1.8"
82 | },
83 | "type": "bower-asset",
84 | "license": [
85 | "MIT"
86 | ]
87 | },
88 | {
89 | "name": "cebe/markdown",
90 | "version": "1.1.2",
91 | "source": {
92 | "type": "git",
93 | "url": "https://github.com/cebe/markdown.git",
94 | "reference": "25b28bae8a6f185b5030673af77b32e1163d5c6e"
95 | },
96 | "dist": {
97 | "type": "zip",
98 | "url": "https://api.github.com/repos/cebe/markdown/zipball/25b28bae8a6f185b5030673af77b32e1163d5c6e",
99 | "reference": "25b28bae8a6f185b5030673af77b32e1163d5c6e",
100 | "shasum": ""
101 | },
102 | "require": {
103 | "lib-pcre": "*",
104 | "php": ">=5.4.0"
105 | },
106 | "require-dev": {
107 | "cebe/indent": "*",
108 | "facebook/xhprof": "*@dev",
109 | "phpunit/phpunit": "4.1.*"
110 | },
111 | "bin": [
112 | "bin/markdown"
113 | ],
114 | "type": "library",
115 | "extra": {
116 | "branch-alias": {
117 | "dev-master": "1.1.x-dev"
118 | }
119 | },
120 | "autoload": {
121 | "psr-4": {
122 | "cebe\\markdown\\": ""
123 | }
124 | },
125 | "notification-url": "https://packagist.org/downloads/",
126 | "license": [
127 | "MIT"
128 | ],
129 | "authors": [
130 | {
131 | "name": "Carsten Brandt",
132 | "email": "mail@cebe.cc",
133 | "homepage": "http://cebe.cc/",
134 | "role": "Creator"
135 | }
136 | ],
137 | "description": "A super fast, highly extensible markdown parser for PHP",
138 | "homepage": "https://github.com/cebe/markdown#readme",
139 | "keywords": [
140 | "extensible",
141 | "fast",
142 | "gfm",
143 | "markdown",
144 | "markdown-extra"
145 | ],
146 | "time": "2017-07-16T21:13:23+00:00"
147 | },
148 | {
149 | "name": "ezyang/htmlpurifier",
150 | "version": "v4.9.3",
151 | "source": {
152 | "type": "git",
153 | "url": "https://github.com/ezyang/htmlpurifier.git",
154 | "reference": "95e1bae3182efc0f3422896a3236e991049dac69"
155 | },
156 | "dist": {
157 | "type": "zip",
158 | "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/95e1bae3182efc0f3422896a3236e991049dac69",
159 | "reference": "95e1bae3182efc0f3422896a3236e991049dac69",
160 | "shasum": ""
161 | },
162 | "require": {
163 | "php": ">=5.2"
164 | },
165 | "require-dev": {
166 | "simpletest/simpletest": "^1.1"
167 | },
168 | "type": "library",
169 | "autoload": {
170 | "psr-0": {
171 | "HTMLPurifier": "library/"
172 | },
173 | "files": [
174 | "library/HTMLPurifier.composer.php"
175 | ]
176 | },
177 | "notification-url": "https://packagist.org/downloads/",
178 | "license": [
179 | "LGPL"
180 | ],
181 | "authors": [
182 | {
183 | "name": "Edward Z. Yang",
184 | "email": "admin@htmlpurifier.org",
185 | "homepage": "http://ezyang.com"
186 | }
187 | ],
188 | "description": "Standards compliant HTML filter written in PHP",
189 | "homepage": "http://htmlpurifier.org/",
190 | "keywords": [
191 | "html"
192 | ],
193 | "time": "2017-06-03T02:28:16+00:00"
194 | },
195 | {
196 | "name": "yiisoft/yii2",
197 | "version": "2.0.13.1",
198 | "source": {
199 | "type": "git",
200 | "url": "https://github.com/yiisoft/yii2-framework.git",
201 | "reference": "7af96d8da5ea3e9a5dd05d0e734b21c5726a6ddf"
202 | },
203 | "dist": {
204 | "type": "zip",
205 | "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/7af96d8da5ea3e9a5dd05d0e734b21c5726a6ddf",
206 | "reference": "7af96d8da5ea3e9a5dd05d0e734b21c5726a6ddf",
207 | "shasum": ""
208 | },
209 | "require": {
210 | "bower-asset/inputmask": "~3.2.2 | ~3.3.5",
211 | "bower-asset/jquery": "3.2.*@stable | 3.1.*@stable | 2.2.*@stable | 2.1.*@stable | 1.11.*@stable | 1.12.*@stable",
212 | "bower-asset/punycode": "1.3.*",
213 | "bower-asset/yii2-pjax": "~2.0.1",
214 | "cebe/markdown": "~1.0.0 | ~1.1.0",
215 | "ext-ctype": "*",
216 | "ext-mbstring": "*",
217 | "ezyang/htmlpurifier": "~4.6",
218 | "lib-pcre": "*",
219 | "php": ">=5.4.0",
220 | "yiisoft/yii2-composer": "~2.0.4"
221 | },
222 | "bin": [
223 | "yii"
224 | ],
225 | "type": "library",
226 | "extra": {
227 | "branch-alias": {
228 | "dev-master": "2.0.x-dev"
229 | }
230 | },
231 | "autoload": {
232 | "psr-4": {
233 | "yii\\": ""
234 | }
235 | },
236 | "notification-url": "https://packagist.org/downloads/",
237 | "license": [
238 | "BSD-3-Clause"
239 | ],
240 | "authors": [
241 | {
242 | "name": "Qiang Xue",
243 | "email": "qiang.xue@gmail.com",
244 | "homepage": "http://www.yiiframework.com/",
245 | "role": "Founder and project lead"
246 | },
247 | {
248 | "name": "Alexander Makarov",
249 | "email": "sam@rmcreative.ru",
250 | "homepage": "http://rmcreative.ru/",
251 | "role": "Core framework development"
252 | },
253 | {
254 | "name": "Maurizio Domba",
255 | "homepage": "http://mdomba.info/",
256 | "role": "Core framework development"
257 | },
258 | {
259 | "name": "Carsten Brandt",
260 | "email": "mail@cebe.cc",
261 | "homepage": "http://cebe.cc/",
262 | "role": "Core framework development"
263 | },
264 | {
265 | "name": "Timur Ruziev",
266 | "email": "resurtm@gmail.com",
267 | "homepage": "http://resurtm.com/",
268 | "role": "Core framework development"
269 | },
270 | {
271 | "name": "Paul Klimov",
272 | "email": "klimov.paul@gmail.com",
273 | "role": "Core framework development"
274 | },
275 | {
276 | "name": "Dmitry Naumenko",
277 | "email": "d.naumenko.a@gmail.com",
278 | "role": "Core framework development"
279 | },
280 | {
281 | "name": "Boudewijn Vahrmeijer",
282 | "email": "info@dynasource.eu",
283 | "homepage": "http://dynasource.eu",
284 | "role": "Core framework development"
285 | }
286 | ],
287 | "description": "Yii PHP Framework Version 2",
288 | "homepage": "http://www.yiiframework.com/",
289 | "keywords": [
290 | "framework",
291 | "yii2"
292 | ],
293 | "time": "2017-11-14T11:08:21+00:00"
294 | },
295 | {
296 | "name": "yiisoft/yii2-composer",
297 | "version": "2.0.5",
298 | "source": {
299 | "type": "git",
300 | "url": "https://github.com/yiisoft/yii2-composer.git",
301 | "reference": "3f4923c2bde6caf3f5b88cc22fdd5770f52f8df2"
302 | },
303 | "dist": {
304 | "type": "zip",
305 | "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/3f4923c2bde6caf3f5b88cc22fdd5770f52f8df2",
306 | "reference": "3f4923c2bde6caf3f5b88cc22fdd5770f52f8df2",
307 | "shasum": ""
308 | },
309 | "require": {
310 | "composer-plugin-api": "^1.0"
311 | },
312 | "require-dev": {
313 | "composer/composer": "^1.0"
314 | },
315 | "type": "composer-plugin",
316 | "extra": {
317 | "class": "yii\\composer\\Plugin",
318 | "branch-alias": {
319 | "dev-master": "2.0.x-dev"
320 | }
321 | },
322 | "autoload": {
323 | "psr-4": {
324 | "yii\\composer\\": ""
325 | }
326 | },
327 | "notification-url": "https://packagist.org/downloads/",
328 | "license": [
329 | "BSD-3-Clause"
330 | ],
331 | "authors": [
332 | {
333 | "name": "Qiang Xue",
334 | "email": "qiang.xue@gmail.com"
335 | }
336 | ],
337 | "description": "The composer plugin for Yii extension installer",
338 | "keywords": [
339 | "composer",
340 | "extension installer",
341 | "yii2"
342 | ],
343 | "time": "2016-12-20T13:26:02+00:00"
344 | }
345 | ],
346 | "packages-dev": [
347 | {
348 | "name": "behat/gherkin",
349 | "version": "v4.4.5",
350 | "source": {
351 | "type": "git",
352 | "url": "https://github.com/Behat/Gherkin.git",
353 | "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74"
354 | },
355 | "dist": {
356 | "type": "zip",
357 | "url": "https://api.github.com/repos/Behat/Gherkin/zipball/5c14cff4f955b17d20d088dec1bde61c0539ec74",
358 | "reference": "5c14cff4f955b17d20d088dec1bde61c0539ec74",
359 | "shasum": ""
360 | },
361 | "require": {
362 | "php": ">=5.3.1"
363 | },
364 | "require-dev": {
365 | "phpunit/phpunit": "~4.5|~5",
366 | "symfony/phpunit-bridge": "~2.7|~3",
367 | "symfony/yaml": "~2.3|~3"
368 | },
369 | "suggest": {
370 | "symfony/yaml": "If you want to parse features, represented in YAML files"
371 | },
372 | "type": "library",
373 | "extra": {
374 | "branch-alias": {
375 | "dev-master": "4.4-dev"
376 | }
377 | },
378 | "autoload": {
379 | "psr-0": {
380 | "Behat\\Gherkin": "src/"
381 | }
382 | },
383 | "notification-url": "https://packagist.org/downloads/",
384 | "license": [
385 | "MIT"
386 | ],
387 | "authors": [
388 | {
389 | "name": "Konstantin Kudryashov",
390 | "email": "ever.zet@gmail.com",
391 | "homepage": "http://everzet.com"
392 | }
393 | ],
394 | "description": "Gherkin DSL parser for PHP 5.3",
395 | "homepage": "http://behat.org/",
396 | "keywords": [
397 | "BDD",
398 | "Behat",
399 | "Cucumber",
400 | "DSL",
401 | "gherkin",
402 | "parser"
403 | ],
404 | "time": "2016-10-30T11:50:56+00:00"
405 | },
406 | {
407 | "name": "codeception/codeception",
408 | "version": "2.3.8",
409 | "source": {
410 | "type": "git",
411 | "url": "https://github.com/Codeception/Codeception.git",
412 | "reference": "43eade17a8cd68e9cde401e8585b09d11d41b12d"
413 | },
414 | "dist": {
415 | "type": "zip",
416 | "url": "https://api.github.com/repos/Codeception/Codeception/zipball/43eade17a8cd68e9cde401e8585b09d11d41b12d",
417 | "reference": "43eade17a8cd68e9cde401e8585b09d11d41b12d",
418 | "shasum": ""
419 | },
420 | "require": {
421 | "behat/gherkin": "~4.4.0",
422 | "codeception/stub": "^1.0",
423 | "ext-json": "*",
424 | "ext-mbstring": "*",
425 | "facebook/webdriver": ">=1.1.3 <2.0",
426 | "guzzlehttp/guzzle": ">=4.1.4 <7.0",
427 | "guzzlehttp/psr7": "~1.0",
428 | "php": ">=5.4.0 <8.0",
429 | "phpunit/php-code-coverage": ">=2.2.4 <6.0",
430 | "phpunit/phpunit": ">=4.8.28 <5.0.0 || >=5.6.3 <7.0",
431 | "sebastian/comparator": ">1.1 <3.0",
432 | "sebastian/diff": ">=1.4 <3.0",
433 | "symfony/browser-kit": ">=2.7 <5.0",
434 | "symfony/console": ">=2.7 <5.0",
435 | "symfony/css-selector": ">=2.7 <5.0",
436 | "symfony/dom-crawler": ">=2.7 <5.0",
437 | "symfony/event-dispatcher": ">=2.7 <5.0",
438 | "symfony/finder": ">=2.7 <5.0",
439 | "symfony/yaml": ">=2.7 <5.0"
440 | },
441 | "require-dev": {
442 | "codeception/specify": "~0.3",
443 | "facebook/graph-sdk": "~5.3",
444 | "flow/jsonpath": "~0.2",
445 | "monolog/monolog": "~1.8",
446 | "pda/pheanstalk": "~3.0",
447 | "php-amqplib/php-amqplib": "~2.4",
448 | "predis/predis": "^1.0",
449 | "squizlabs/php_codesniffer": "~2.0",
450 | "symfony/process": ">=2.7 <5.0",
451 | "vlucas/phpdotenv": "^2.4.0"
452 | },
453 | "suggest": {
454 | "aws/aws-sdk-php": "For using AWS Auth in REST module and Queue module",
455 | "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests",
456 | "codeception/specify": "BDD-style code blocks",
457 | "codeception/verify": "BDD-style assertions",
458 | "flow/jsonpath": "For using JSONPath in REST module",
459 | "league/factory-muffin": "For DataFactory module",
460 | "league/factory-muffin-faker": "For Faker support in DataFactory module",
461 | "phpseclib/phpseclib": "for SFTP option in FTP Module",
462 | "stecman/symfony-console-completion": "For BASH autocompletion",
463 | "symfony/phpunit-bridge": "For phpunit-bridge support"
464 | },
465 | "bin": [
466 | "codecept"
467 | ],
468 | "type": "library",
469 | "extra": {
470 | "branch-alias": []
471 | },
472 | "autoload": {
473 | "psr-4": {
474 | "Codeception\\": "src\\Codeception",
475 | "Codeception\\Extension\\": "ext"
476 | }
477 | },
478 | "notification-url": "https://packagist.org/downloads/",
479 | "license": [
480 | "MIT"
481 | ],
482 | "authors": [
483 | {
484 | "name": "Michael Bodnarchuk",
485 | "email": "davert@mail.ua",
486 | "homepage": "http://codegyre.com"
487 | }
488 | ],
489 | "description": "BDD-style testing framework",
490 | "homepage": "http://codeception.com/",
491 | "keywords": [
492 | "BDD",
493 | "TDD",
494 | "acceptance testing",
495 | "functional testing",
496 | "unit testing"
497 | ],
498 | "time": "2018-01-27T22:47:33+00:00"
499 | },
500 | {
501 | "name": "codeception/stub",
502 | "version": "1.0.1",
503 | "source": {
504 | "type": "git",
505 | "url": "https://github.com/Codeception/Stub.git",
506 | "reference": "673ea54cdd7141e0a5138ad78aaa60751912f573"
507 | },
508 | "dist": {
509 | "type": "zip",
510 | "url": "https://api.github.com/repos/Codeception/Stub/zipball/673ea54cdd7141e0a5138ad78aaa60751912f573",
511 | "reference": "673ea54cdd7141e0a5138ad78aaa60751912f573",
512 | "shasum": ""
513 | },
514 | "require": {
515 | "phpunit/phpunit-mock-objects": "^2.3|^3.0|^4.0|^5.0"
516 | },
517 | "require-dev": {
518 | "phpunit/phpunit": "^4.8|^5.0|^6.0|^7.0"
519 | },
520 | "type": "library",
521 | "autoload": {
522 | "psr-4": {
523 | "Codeception\\": "src/"
524 | }
525 | },
526 | "notification-url": "https://packagist.org/downloads/",
527 | "license": [
528 | "MIT"
529 | ],
530 | "description": "Flexible Stub wrapper for PHPUnit's Mock Builder",
531 | "time": "2018-01-27T00:37:17+00:00"
532 | },
533 | {
534 | "name": "doctrine/instantiator",
535 | "version": "1.1.0",
536 | "source": {
537 | "type": "git",
538 | "url": "https://github.com/doctrine/instantiator.git",
539 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
540 | },
541 | "dist": {
542 | "type": "zip",
543 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
544 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
545 | "shasum": ""
546 | },
547 | "require": {
548 | "php": "^7.1"
549 | },
550 | "require-dev": {
551 | "athletic/athletic": "~0.1.8",
552 | "ext-pdo": "*",
553 | "ext-phar": "*",
554 | "phpunit/phpunit": "^6.2.3",
555 | "squizlabs/php_codesniffer": "^3.0.2"
556 | },
557 | "type": "library",
558 | "extra": {
559 | "branch-alias": {
560 | "dev-master": "1.2.x-dev"
561 | }
562 | },
563 | "autoload": {
564 | "psr-4": {
565 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
566 | }
567 | },
568 | "notification-url": "https://packagist.org/downloads/",
569 | "license": [
570 | "MIT"
571 | ],
572 | "authors": [
573 | {
574 | "name": "Marco Pivetta",
575 | "email": "ocramius@gmail.com",
576 | "homepage": "http://ocramius.github.com/"
577 | }
578 | ],
579 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
580 | "homepage": "https://github.com/doctrine/instantiator",
581 | "keywords": [
582 | "constructor",
583 | "instantiate"
584 | ],
585 | "time": "2017-07-22T11:58:36+00:00"
586 | },
587 | {
588 | "name": "facebook/webdriver",
589 | "version": "1.5.0",
590 | "source": {
591 | "type": "git",
592 | "url": "https://github.com/facebook/php-webdriver.git",
593 | "reference": "86b5ca2f67173c9d34340845dd690149c886a605"
594 | },
595 | "dist": {
596 | "type": "zip",
597 | "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/86b5ca2f67173c9d34340845dd690149c886a605",
598 | "reference": "86b5ca2f67173c9d34340845dd690149c886a605",
599 | "shasum": ""
600 | },
601 | "require": {
602 | "ext-curl": "*",
603 | "ext-zip": "*",
604 | "php": "^5.6 || ~7.0",
605 | "symfony/process": "^2.8 || ^3.1 || ^4.0"
606 | },
607 | "require-dev": {
608 | "friendsofphp/php-cs-fixer": "^2.0",
609 | "guzzle/guzzle": "^3.4.1",
610 | "php-coveralls/php-coveralls": "^1.0.2",
611 | "php-mock/php-mock-phpunit": "^1.1",
612 | "phpunit/phpunit": "^5.7",
613 | "sebastian/environment": "^1.3.4 || ^2.0 || ^3.0",
614 | "squizlabs/php_codesniffer": "^2.6",
615 | "symfony/var-dumper": "^3.3 || ^4.0"
616 | },
617 | "type": "library",
618 | "extra": {
619 | "branch-alias": {
620 | "dev-community": "1.5-dev"
621 | }
622 | },
623 | "autoload": {
624 | "psr-4": {
625 | "Facebook\\WebDriver\\": "lib/"
626 | }
627 | },
628 | "notification-url": "https://packagist.org/downloads/",
629 | "license": [
630 | "Apache-2.0"
631 | ],
632 | "description": "A PHP client for Selenium WebDriver",
633 | "homepage": "https://github.com/facebook/php-webdriver",
634 | "keywords": [
635 | "facebook",
636 | "php",
637 | "selenium",
638 | "webdriver"
639 | ],
640 | "time": "2017-11-15T11:08:09+00:00"
641 | },
642 | {
643 | "name": "guzzlehttp/guzzle",
644 | "version": "6.3.0",
645 | "source": {
646 | "type": "git",
647 | "url": "https://github.com/guzzle/guzzle.git",
648 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699"
649 | },
650 | "dist": {
651 | "type": "zip",
652 | "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4db5a78a5ea468d4831de7f0bf9d9415e348699",
653 | "reference": "f4db5a78a5ea468d4831de7f0bf9d9415e348699",
654 | "shasum": ""
655 | },
656 | "require": {
657 | "guzzlehttp/promises": "^1.0",
658 | "guzzlehttp/psr7": "^1.4",
659 | "php": ">=5.5"
660 | },
661 | "require-dev": {
662 | "ext-curl": "*",
663 | "phpunit/phpunit": "^4.0 || ^5.0",
664 | "psr/log": "^1.0"
665 | },
666 | "suggest": {
667 | "psr/log": "Required for using the Log middleware"
668 | },
669 | "type": "library",
670 | "extra": {
671 | "branch-alias": {
672 | "dev-master": "6.2-dev"
673 | }
674 | },
675 | "autoload": {
676 | "files": [
677 | "src/functions_include.php"
678 | ],
679 | "psr-4": {
680 | "GuzzleHttp\\": "src/"
681 | }
682 | },
683 | "notification-url": "https://packagist.org/downloads/",
684 | "license": [
685 | "MIT"
686 | ],
687 | "authors": [
688 | {
689 | "name": "Michael Dowling",
690 | "email": "mtdowling@gmail.com",
691 | "homepage": "https://github.com/mtdowling"
692 | }
693 | ],
694 | "description": "Guzzle is a PHP HTTP client library",
695 | "homepage": "http://guzzlephp.org/",
696 | "keywords": [
697 | "client",
698 | "curl",
699 | "framework",
700 | "http",
701 | "http client",
702 | "rest",
703 | "web service"
704 | ],
705 | "time": "2017-06-22T18:50:49+00:00"
706 | },
707 | {
708 | "name": "guzzlehttp/promises",
709 | "version": "v1.3.1",
710 | "source": {
711 | "type": "git",
712 | "url": "https://github.com/guzzle/promises.git",
713 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646"
714 | },
715 | "dist": {
716 | "type": "zip",
717 | "url": "https://api.github.com/repos/guzzle/promises/zipball/a59da6cf61d80060647ff4d3eb2c03a2bc694646",
718 | "reference": "a59da6cf61d80060647ff4d3eb2c03a2bc694646",
719 | "shasum": ""
720 | },
721 | "require": {
722 | "php": ">=5.5.0"
723 | },
724 | "require-dev": {
725 | "phpunit/phpunit": "^4.0"
726 | },
727 | "type": "library",
728 | "extra": {
729 | "branch-alias": {
730 | "dev-master": "1.4-dev"
731 | }
732 | },
733 | "autoload": {
734 | "psr-4": {
735 | "GuzzleHttp\\Promise\\": "src/"
736 | },
737 | "files": [
738 | "src/functions_include.php"
739 | ]
740 | },
741 | "notification-url": "https://packagist.org/downloads/",
742 | "license": [
743 | "MIT"
744 | ],
745 | "authors": [
746 | {
747 | "name": "Michael Dowling",
748 | "email": "mtdowling@gmail.com",
749 | "homepage": "https://github.com/mtdowling"
750 | }
751 | ],
752 | "description": "Guzzle promises library",
753 | "keywords": [
754 | "promise"
755 | ],
756 | "time": "2016-12-20T10:07:11+00:00"
757 | },
758 | {
759 | "name": "guzzlehttp/psr7",
760 | "version": "1.4.2",
761 | "source": {
762 | "type": "git",
763 | "url": "https://github.com/guzzle/psr7.git",
764 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c"
765 | },
766 | "dist": {
767 | "type": "zip",
768 | "url": "https://api.github.com/repos/guzzle/psr7/zipball/f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
769 | "reference": "f5b8a8512e2b58b0071a7280e39f14f72e05d87c",
770 | "shasum": ""
771 | },
772 | "require": {
773 | "php": ">=5.4.0",
774 | "psr/http-message": "~1.0"
775 | },
776 | "provide": {
777 | "psr/http-message-implementation": "1.0"
778 | },
779 | "require-dev": {
780 | "phpunit/phpunit": "~4.0"
781 | },
782 | "type": "library",
783 | "extra": {
784 | "branch-alias": {
785 | "dev-master": "1.4-dev"
786 | }
787 | },
788 | "autoload": {
789 | "psr-4": {
790 | "GuzzleHttp\\Psr7\\": "src/"
791 | },
792 | "files": [
793 | "src/functions_include.php"
794 | ]
795 | },
796 | "notification-url": "https://packagist.org/downloads/",
797 | "license": [
798 | "MIT"
799 | ],
800 | "authors": [
801 | {
802 | "name": "Michael Dowling",
803 | "email": "mtdowling@gmail.com",
804 | "homepage": "https://github.com/mtdowling"
805 | },
806 | {
807 | "name": "Tobias Schultze",
808 | "homepage": "https://github.com/Tobion"
809 | }
810 | ],
811 | "description": "PSR-7 message implementation that also provides common utility methods",
812 | "keywords": [
813 | "http",
814 | "message",
815 | "request",
816 | "response",
817 | "stream",
818 | "uri",
819 | "url"
820 | ],
821 | "time": "2017-03-20T17:10:46+00:00"
822 | },
823 | {
824 | "name": "myclabs/deep-copy",
825 | "version": "1.7.0",
826 | "source": {
827 | "type": "git",
828 | "url": "https://github.com/myclabs/DeepCopy.git",
829 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
830 | },
831 | "dist": {
832 | "type": "zip",
833 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
834 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
835 | "shasum": ""
836 | },
837 | "require": {
838 | "php": "^5.6 || ^7.0"
839 | },
840 | "require-dev": {
841 | "doctrine/collections": "^1.0",
842 | "doctrine/common": "^2.6",
843 | "phpunit/phpunit": "^4.1"
844 | },
845 | "type": "library",
846 | "autoload": {
847 | "psr-4": {
848 | "DeepCopy\\": "src/DeepCopy/"
849 | },
850 | "files": [
851 | "src/DeepCopy/deep_copy.php"
852 | ]
853 | },
854 | "notification-url": "https://packagist.org/downloads/",
855 | "license": [
856 | "MIT"
857 | ],
858 | "description": "Create deep copies (clones) of your objects",
859 | "keywords": [
860 | "clone",
861 | "copy",
862 | "duplicate",
863 | "object",
864 | "object graph"
865 | ],
866 | "time": "2017-10-19T19:58:43+00:00"
867 | },
868 | {
869 | "name": "phar-io/manifest",
870 | "version": "1.0.1",
871 | "source": {
872 | "type": "git",
873 | "url": "https://github.com/phar-io/manifest.git",
874 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
875 | },
876 | "dist": {
877 | "type": "zip",
878 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
879 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
880 | "shasum": ""
881 | },
882 | "require": {
883 | "ext-dom": "*",
884 | "ext-phar": "*",
885 | "phar-io/version": "^1.0.1",
886 | "php": "^5.6 || ^7.0"
887 | },
888 | "type": "library",
889 | "extra": {
890 | "branch-alias": {
891 | "dev-master": "1.0.x-dev"
892 | }
893 | },
894 | "autoload": {
895 | "classmap": [
896 | "src/"
897 | ]
898 | },
899 | "notification-url": "https://packagist.org/downloads/",
900 | "license": [
901 | "BSD-3-Clause"
902 | ],
903 | "authors": [
904 | {
905 | "name": "Arne Blankerts",
906 | "email": "arne@blankerts.de",
907 | "role": "Developer"
908 | },
909 | {
910 | "name": "Sebastian Heuer",
911 | "email": "sebastian@phpeople.de",
912 | "role": "Developer"
913 | },
914 | {
915 | "name": "Sebastian Bergmann",
916 | "email": "sebastian@phpunit.de",
917 | "role": "Developer"
918 | }
919 | ],
920 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
921 | "time": "2017-03-05T18:14:27+00:00"
922 | },
923 | {
924 | "name": "phar-io/version",
925 | "version": "1.0.1",
926 | "source": {
927 | "type": "git",
928 | "url": "https://github.com/phar-io/version.git",
929 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
930 | },
931 | "dist": {
932 | "type": "zip",
933 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
934 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
935 | "shasum": ""
936 | },
937 | "require": {
938 | "php": "^5.6 || ^7.0"
939 | },
940 | "type": "library",
941 | "autoload": {
942 | "classmap": [
943 | "src/"
944 | ]
945 | },
946 | "notification-url": "https://packagist.org/downloads/",
947 | "license": [
948 | "BSD-3-Clause"
949 | ],
950 | "authors": [
951 | {
952 | "name": "Arne Blankerts",
953 | "email": "arne@blankerts.de",
954 | "role": "Developer"
955 | },
956 | {
957 | "name": "Sebastian Heuer",
958 | "email": "sebastian@phpeople.de",
959 | "role": "Developer"
960 | },
961 | {
962 | "name": "Sebastian Bergmann",
963 | "email": "sebastian@phpunit.de",
964 | "role": "Developer"
965 | }
966 | ],
967 | "description": "Library for handling version information and constraints",
968 | "time": "2017-03-05T17:38:23+00:00"
969 | },
970 | {
971 | "name": "phpdocumentor/reflection-common",
972 | "version": "1.0.1",
973 | "source": {
974 | "type": "git",
975 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
976 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
977 | },
978 | "dist": {
979 | "type": "zip",
980 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
981 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
982 | "shasum": ""
983 | },
984 | "require": {
985 | "php": ">=5.5"
986 | },
987 | "require-dev": {
988 | "phpunit/phpunit": "^4.6"
989 | },
990 | "type": "library",
991 | "extra": {
992 | "branch-alias": {
993 | "dev-master": "1.0.x-dev"
994 | }
995 | },
996 | "autoload": {
997 | "psr-4": {
998 | "phpDocumentor\\Reflection\\": [
999 | "src"
1000 | ]
1001 | }
1002 | },
1003 | "notification-url": "https://packagist.org/downloads/",
1004 | "license": [
1005 | "MIT"
1006 | ],
1007 | "authors": [
1008 | {
1009 | "name": "Jaap van Otterdijk",
1010 | "email": "opensource@ijaap.nl"
1011 | }
1012 | ],
1013 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
1014 | "homepage": "http://www.phpdoc.org",
1015 | "keywords": [
1016 | "FQSEN",
1017 | "phpDocumentor",
1018 | "phpdoc",
1019 | "reflection",
1020 | "static analysis"
1021 | ],
1022 | "time": "2017-09-11T18:02:19+00:00"
1023 | },
1024 | {
1025 | "name": "phpdocumentor/reflection-docblock",
1026 | "version": "4.3.0",
1027 | "source": {
1028 | "type": "git",
1029 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
1030 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
1031 | },
1032 | "dist": {
1033 | "type": "zip",
1034 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
1035 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
1036 | "shasum": ""
1037 | },
1038 | "require": {
1039 | "php": "^7.0",
1040 | "phpdocumentor/reflection-common": "^1.0.0",
1041 | "phpdocumentor/type-resolver": "^0.4.0",
1042 | "webmozart/assert": "^1.0"
1043 | },
1044 | "require-dev": {
1045 | "doctrine/instantiator": "~1.0.5",
1046 | "mockery/mockery": "^1.0",
1047 | "phpunit/phpunit": "^6.4"
1048 | },
1049 | "type": "library",
1050 | "extra": {
1051 | "branch-alias": {
1052 | "dev-master": "4.x-dev"
1053 | }
1054 | },
1055 | "autoload": {
1056 | "psr-4": {
1057 | "phpDocumentor\\Reflection\\": [
1058 | "src/"
1059 | ]
1060 | }
1061 | },
1062 | "notification-url": "https://packagist.org/downloads/",
1063 | "license": [
1064 | "MIT"
1065 | ],
1066 | "authors": [
1067 | {
1068 | "name": "Mike van Riel",
1069 | "email": "me@mikevanriel.com"
1070 | }
1071 | ],
1072 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
1073 | "time": "2017-11-30T07:14:17+00:00"
1074 | },
1075 | {
1076 | "name": "phpdocumentor/type-resolver",
1077 | "version": "0.4.0",
1078 | "source": {
1079 | "type": "git",
1080 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
1081 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
1082 | },
1083 | "dist": {
1084 | "type": "zip",
1085 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
1086 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
1087 | "shasum": ""
1088 | },
1089 | "require": {
1090 | "php": "^5.5 || ^7.0",
1091 | "phpdocumentor/reflection-common": "^1.0"
1092 | },
1093 | "require-dev": {
1094 | "mockery/mockery": "^0.9.4",
1095 | "phpunit/phpunit": "^5.2||^4.8.24"
1096 | },
1097 | "type": "library",
1098 | "extra": {
1099 | "branch-alias": {
1100 | "dev-master": "1.0.x-dev"
1101 | }
1102 | },
1103 | "autoload": {
1104 | "psr-4": {
1105 | "phpDocumentor\\Reflection\\": [
1106 | "src/"
1107 | ]
1108 | }
1109 | },
1110 | "notification-url": "https://packagist.org/downloads/",
1111 | "license": [
1112 | "MIT"
1113 | ],
1114 | "authors": [
1115 | {
1116 | "name": "Mike van Riel",
1117 | "email": "me@mikevanriel.com"
1118 | }
1119 | ],
1120 | "time": "2017-07-14T14:27:02+00:00"
1121 | },
1122 | {
1123 | "name": "phpspec/prophecy",
1124 | "version": "1.7.3",
1125 | "source": {
1126 | "type": "git",
1127 | "url": "https://github.com/phpspec/prophecy.git",
1128 | "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf"
1129 | },
1130 | "dist": {
1131 | "type": "zip",
1132 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
1133 | "reference": "e4ed002c67da8eceb0eb8ddb8b3847bb53c5c2bf",
1134 | "shasum": ""
1135 | },
1136 | "require": {
1137 | "doctrine/instantiator": "^1.0.2",
1138 | "php": "^5.3|^7.0",
1139 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
1140 | "sebastian/comparator": "^1.1|^2.0",
1141 | "sebastian/recursion-context": "^1.0|^2.0|^3.0"
1142 | },
1143 | "require-dev": {
1144 | "phpspec/phpspec": "^2.5|^3.2",
1145 | "phpunit/phpunit": "^4.8.35 || ^5.7"
1146 | },
1147 | "type": "library",
1148 | "extra": {
1149 | "branch-alias": {
1150 | "dev-master": "1.7.x-dev"
1151 | }
1152 | },
1153 | "autoload": {
1154 | "psr-0": {
1155 | "Prophecy\\": "src/"
1156 | }
1157 | },
1158 | "notification-url": "https://packagist.org/downloads/",
1159 | "license": [
1160 | "MIT"
1161 | ],
1162 | "authors": [
1163 | {
1164 | "name": "Konstantin Kudryashov",
1165 | "email": "ever.zet@gmail.com",
1166 | "homepage": "http://everzet.com"
1167 | },
1168 | {
1169 | "name": "Marcello Duarte",
1170 | "email": "marcello.duarte@gmail.com"
1171 | }
1172 | ],
1173 | "description": "Highly opinionated mocking framework for PHP 5.3+",
1174 | "homepage": "https://github.com/phpspec/prophecy",
1175 | "keywords": [
1176 | "Double",
1177 | "Dummy",
1178 | "fake",
1179 | "mock",
1180 | "spy",
1181 | "stub"
1182 | ],
1183 | "time": "2017-11-24T13:59:53+00:00"
1184 | },
1185 | {
1186 | "name": "phpunit/php-code-coverage",
1187 | "version": "5.3.0",
1188 | "source": {
1189 | "type": "git",
1190 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
1191 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1"
1192 | },
1193 | "dist": {
1194 | "type": "zip",
1195 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/661f34d0bd3f1a7225ef491a70a020ad23a057a1",
1196 | "reference": "661f34d0bd3f1a7225ef491a70a020ad23a057a1",
1197 | "shasum": ""
1198 | },
1199 | "require": {
1200 | "ext-dom": "*",
1201 | "ext-xmlwriter": "*",
1202 | "php": "^7.0",
1203 | "phpunit/php-file-iterator": "^1.4.2",
1204 | "phpunit/php-text-template": "^1.2.1",
1205 | "phpunit/php-token-stream": "^2.0.1",
1206 | "sebastian/code-unit-reverse-lookup": "^1.0.1",
1207 | "sebastian/environment": "^3.0",
1208 | "sebastian/version": "^2.0.1",
1209 | "theseer/tokenizer": "^1.1"
1210 | },
1211 | "require-dev": {
1212 | "phpunit/phpunit": "^6.0"
1213 | },
1214 | "suggest": {
1215 | "ext-xdebug": "^2.5.5"
1216 | },
1217 | "type": "library",
1218 | "extra": {
1219 | "branch-alias": {
1220 | "dev-master": "5.3.x-dev"
1221 | }
1222 | },
1223 | "autoload": {
1224 | "classmap": [
1225 | "src/"
1226 | ]
1227 | },
1228 | "notification-url": "https://packagist.org/downloads/",
1229 | "license": [
1230 | "BSD-3-Clause"
1231 | ],
1232 | "authors": [
1233 | {
1234 | "name": "Sebastian Bergmann",
1235 | "email": "sebastian@phpunit.de",
1236 | "role": "lead"
1237 | }
1238 | ],
1239 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
1240 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
1241 | "keywords": [
1242 | "coverage",
1243 | "testing",
1244 | "xunit"
1245 | ],
1246 | "time": "2017-12-06T09:29:45+00:00"
1247 | },
1248 | {
1249 | "name": "phpunit/php-file-iterator",
1250 | "version": "1.4.5",
1251 | "source": {
1252 | "type": "git",
1253 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
1254 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
1255 | },
1256 | "dist": {
1257 | "type": "zip",
1258 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
1259 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
1260 | "shasum": ""
1261 | },
1262 | "require": {
1263 | "php": ">=5.3.3"
1264 | },
1265 | "type": "library",
1266 | "extra": {
1267 | "branch-alias": {
1268 | "dev-master": "1.4.x-dev"
1269 | }
1270 | },
1271 | "autoload": {
1272 | "classmap": [
1273 | "src/"
1274 | ]
1275 | },
1276 | "notification-url": "https://packagist.org/downloads/",
1277 | "license": [
1278 | "BSD-3-Clause"
1279 | ],
1280 | "authors": [
1281 | {
1282 | "name": "Sebastian Bergmann",
1283 | "email": "sb@sebastian-bergmann.de",
1284 | "role": "lead"
1285 | }
1286 | ],
1287 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
1288 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
1289 | "keywords": [
1290 | "filesystem",
1291 | "iterator"
1292 | ],
1293 | "time": "2017-11-27T13:52:08+00:00"
1294 | },
1295 | {
1296 | "name": "phpunit/php-text-template",
1297 | "version": "1.2.1",
1298 | "source": {
1299 | "type": "git",
1300 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
1301 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
1302 | },
1303 | "dist": {
1304 | "type": "zip",
1305 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1306 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
1307 | "shasum": ""
1308 | },
1309 | "require": {
1310 | "php": ">=5.3.3"
1311 | },
1312 | "type": "library",
1313 | "autoload": {
1314 | "classmap": [
1315 | "src/"
1316 | ]
1317 | },
1318 | "notification-url": "https://packagist.org/downloads/",
1319 | "license": [
1320 | "BSD-3-Clause"
1321 | ],
1322 | "authors": [
1323 | {
1324 | "name": "Sebastian Bergmann",
1325 | "email": "sebastian@phpunit.de",
1326 | "role": "lead"
1327 | }
1328 | ],
1329 | "description": "Simple template engine.",
1330 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
1331 | "keywords": [
1332 | "template"
1333 | ],
1334 | "time": "2015-06-21T13:50:34+00:00"
1335 | },
1336 | {
1337 | "name": "phpunit/php-timer",
1338 | "version": "1.0.9",
1339 | "source": {
1340 | "type": "git",
1341 | "url": "https://github.com/sebastianbergmann/php-timer.git",
1342 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
1343 | },
1344 | "dist": {
1345 | "type": "zip",
1346 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1347 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
1348 | "shasum": ""
1349 | },
1350 | "require": {
1351 | "php": "^5.3.3 || ^7.0"
1352 | },
1353 | "require-dev": {
1354 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
1355 | },
1356 | "type": "library",
1357 | "extra": {
1358 | "branch-alias": {
1359 | "dev-master": "1.0-dev"
1360 | }
1361 | },
1362 | "autoload": {
1363 | "classmap": [
1364 | "src/"
1365 | ]
1366 | },
1367 | "notification-url": "https://packagist.org/downloads/",
1368 | "license": [
1369 | "BSD-3-Clause"
1370 | ],
1371 | "authors": [
1372 | {
1373 | "name": "Sebastian Bergmann",
1374 | "email": "sb@sebastian-bergmann.de",
1375 | "role": "lead"
1376 | }
1377 | ],
1378 | "description": "Utility class for timing",
1379 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
1380 | "keywords": [
1381 | "timer"
1382 | ],
1383 | "time": "2017-02-26T11:10:40+00:00"
1384 | },
1385 | {
1386 | "name": "phpunit/php-token-stream",
1387 | "version": "2.0.2",
1388 | "source": {
1389 | "type": "git",
1390 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
1391 | "reference": "791198a2c6254db10131eecfe8c06670700904db"
1392 | },
1393 | "dist": {
1394 | "type": "zip",
1395 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
1396 | "reference": "791198a2c6254db10131eecfe8c06670700904db",
1397 | "shasum": ""
1398 | },
1399 | "require": {
1400 | "ext-tokenizer": "*",
1401 | "php": "^7.0"
1402 | },
1403 | "require-dev": {
1404 | "phpunit/phpunit": "^6.2.4"
1405 | },
1406 | "type": "library",
1407 | "extra": {
1408 | "branch-alias": {
1409 | "dev-master": "2.0-dev"
1410 | }
1411 | },
1412 | "autoload": {
1413 | "classmap": [
1414 | "src/"
1415 | ]
1416 | },
1417 | "notification-url": "https://packagist.org/downloads/",
1418 | "license": [
1419 | "BSD-3-Clause"
1420 | ],
1421 | "authors": [
1422 | {
1423 | "name": "Sebastian Bergmann",
1424 | "email": "sebastian@phpunit.de"
1425 | }
1426 | ],
1427 | "description": "Wrapper around PHP's tokenizer extension.",
1428 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1429 | "keywords": [
1430 | "tokenizer"
1431 | ],
1432 | "time": "2017-11-27T05:48:46+00:00"
1433 | },
1434 | {
1435 | "name": "phpunit/phpunit",
1436 | "version": "6.5.6",
1437 | "source": {
1438 | "type": "git",
1439 | "url": "https://github.com/sebastianbergmann/phpunit.git",
1440 | "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe"
1441 | },
1442 | "dist": {
1443 | "type": "zip",
1444 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3330ef26ade05359d006041316ed0fa9e8e3cefe",
1445 | "reference": "3330ef26ade05359d006041316ed0fa9e8e3cefe",
1446 | "shasum": ""
1447 | },
1448 | "require": {
1449 | "ext-dom": "*",
1450 | "ext-json": "*",
1451 | "ext-libxml": "*",
1452 | "ext-mbstring": "*",
1453 | "ext-xml": "*",
1454 | "myclabs/deep-copy": "^1.6.1",
1455 | "phar-io/manifest": "^1.0.1",
1456 | "phar-io/version": "^1.0",
1457 | "php": "^7.0",
1458 | "phpspec/prophecy": "^1.7",
1459 | "phpunit/php-code-coverage": "^5.3",
1460 | "phpunit/php-file-iterator": "^1.4.3",
1461 | "phpunit/php-text-template": "^1.2.1",
1462 | "phpunit/php-timer": "^1.0.9",
1463 | "phpunit/phpunit-mock-objects": "^5.0.5",
1464 | "sebastian/comparator": "^2.1",
1465 | "sebastian/diff": "^2.0",
1466 | "sebastian/environment": "^3.1",
1467 | "sebastian/exporter": "^3.1",
1468 | "sebastian/global-state": "^2.0",
1469 | "sebastian/object-enumerator": "^3.0.3",
1470 | "sebastian/resource-operations": "^1.0",
1471 | "sebastian/version": "^2.0.1"
1472 | },
1473 | "conflict": {
1474 | "phpdocumentor/reflection-docblock": "3.0.2",
1475 | "phpunit/dbunit": "<3.0"
1476 | },
1477 | "require-dev": {
1478 | "ext-pdo": "*"
1479 | },
1480 | "suggest": {
1481 | "ext-xdebug": "*",
1482 | "phpunit/php-invoker": "^1.1"
1483 | },
1484 | "bin": [
1485 | "phpunit"
1486 | ],
1487 | "type": "library",
1488 | "extra": {
1489 | "branch-alias": {
1490 | "dev-master": "6.5.x-dev"
1491 | }
1492 | },
1493 | "autoload": {
1494 | "classmap": [
1495 | "src/"
1496 | ]
1497 | },
1498 | "notification-url": "https://packagist.org/downloads/",
1499 | "license": [
1500 | "BSD-3-Clause"
1501 | ],
1502 | "authors": [
1503 | {
1504 | "name": "Sebastian Bergmann",
1505 | "email": "sebastian@phpunit.de",
1506 | "role": "lead"
1507 | }
1508 | ],
1509 | "description": "The PHP Unit Testing framework.",
1510 | "homepage": "https://phpunit.de/",
1511 | "keywords": [
1512 | "phpunit",
1513 | "testing",
1514 | "xunit"
1515 | ],
1516 | "time": "2018-02-01T05:57:37+00:00"
1517 | },
1518 | {
1519 | "name": "phpunit/phpunit-mock-objects",
1520 | "version": "5.0.6",
1521 | "source": {
1522 | "type": "git",
1523 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1524 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf"
1525 | },
1526 | "dist": {
1527 | "type": "zip",
1528 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
1529 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
1530 | "shasum": ""
1531 | },
1532 | "require": {
1533 | "doctrine/instantiator": "^1.0.5",
1534 | "php": "^7.0",
1535 | "phpunit/php-text-template": "^1.2.1",
1536 | "sebastian/exporter": "^3.1"
1537 | },
1538 | "conflict": {
1539 | "phpunit/phpunit": "<6.0"
1540 | },
1541 | "require-dev": {
1542 | "phpunit/phpunit": "^6.5"
1543 | },
1544 | "suggest": {
1545 | "ext-soap": "*"
1546 | },
1547 | "type": "library",
1548 | "extra": {
1549 | "branch-alias": {
1550 | "dev-master": "5.0.x-dev"
1551 | }
1552 | },
1553 | "autoload": {
1554 | "classmap": [
1555 | "src/"
1556 | ]
1557 | },
1558 | "notification-url": "https://packagist.org/downloads/",
1559 | "license": [
1560 | "BSD-3-Clause"
1561 | ],
1562 | "authors": [
1563 | {
1564 | "name": "Sebastian Bergmann",
1565 | "email": "sebastian@phpunit.de",
1566 | "role": "lead"
1567 | }
1568 | ],
1569 | "description": "Mock Object library for PHPUnit",
1570 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1571 | "keywords": [
1572 | "mock",
1573 | "xunit"
1574 | ],
1575 | "time": "2018-01-06T05:45:45+00:00"
1576 | },
1577 | {
1578 | "name": "psr/http-message",
1579 | "version": "1.0.1",
1580 | "source": {
1581 | "type": "git",
1582 | "url": "https://github.com/php-fig/http-message.git",
1583 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363"
1584 | },
1585 | "dist": {
1586 | "type": "zip",
1587 | "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363",
1588 | "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363",
1589 | "shasum": ""
1590 | },
1591 | "require": {
1592 | "php": ">=5.3.0"
1593 | },
1594 | "type": "library",
1595 | "extra": {
1596 | "branch-alias": {
1597 | "dev-master": "1.0.x-dev"
1598 | }
1599 | },
1600 | "autoload": {
1601 | "psr-4": {
1602 | "Psr\\Http\\Message\\": "src/"
1603 | }
1604 | },
1605 | "notification-url": "https://packagist.org/downloads/",
1606 | "license": [
1607 | "MIT"
1608 | ],
1609 | "authors": [
1610 | {
1611 | "name": "PHP-FIG",
1612 | "homepage": "http://www.php-fig.org/"
1613 | }
1614 | ],
1615 | "description": "Common interface for HTTP messages",
1616 | "homepage": "https://github.com/php-fig/http-message",
1617 | "keywords": [
1618 | "http",
1619 | "http-message",
1620 | "psr",
1621 | "psr-7",
1622 | "request",
1623 | "response"
1624 | ],
1625 | "time": "2016-08-06T14:39:51+00:00"
1626 | },
1627 | {
1628 | "name": "sebastian/code-unit-reverse-lookup",
1629 | "version": "1.0.1",
1630 | "source": {
1631 | "type": "git",
1632 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1633 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1634 | },
1635 | "dist": {
1636 | "type": "zip",
1637 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1638 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1639 | "shasum": ""
1640 | },
1641 | "require": {
1642 | "php": "^5.6 || ^7.0"
1643 | },
1644 | "require-dev": {
1645 | "phpunit/phpunit": "^5.7 || ^6.0"
1646 | },
1647 | "type": "library",
1648 | "extra": {
1649 | "branch-alias": {
1650 | "dev-master": "1.0.x-dev"
1651 | }
1652 | },
1653 | "autoload": {
1654 | "classmap": [
1655 | "src/"
1656 | ]
1657 | },
1658 | "notification-url": "https://packagist.org/downloads/",
1659 | "license": [
1660 | "BSD-3-Clause"
1661 | ],
1662 | "authors": [
1663 | {
1664 | "name": "Sebastian Bergmann",
1665 | "email": "sebastian@phpunit.de"
1666 | }
1667 | ],
1668 | "description": "Looks up which function or method a line of code belongs to",
1669 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1670 | "time": "2017-03-04T06:30:41+00:00"
1671 | },
1672 | {
1673 | "name": "sebastian/comparator",
1674 | "version": "2.1.3",
1675 | "source": {
1676 | "type": "git",
1677 | "url": "https://github.com/sebastianbergmann/comparator.git",
1678 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
1679 | },
1680 | "dist": {
1681 | "type": "zip",
1682 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
1683 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
1684 | "shasum": ""
1685 | },
1686 | "require": {
1687 | "php": "^7.0",
1688 | "sebastian/diff": "^2.0 || ^3.0",
1689 | "sebastian/exporter": "^3.1"
1690 | },
1691 | "require-dev": {
1692 | "phpunit/phpunit": "^6.4"
1693 | },
1694 | "type": "library",
1695 | "extra": {
1696 | "branch-alias": {
1697 | "dev-master": "2.1.x-dev"
1698 | }
1699 | },
1700 | "autoload": {
1701 | "classmap": [
1702 | "src/"
1703 | ]
1704 | },
1705 | "notification-url": "https://packagist.org/downloads/",
1706 | "license": [
1707 | "BSD-3-Clause"
1708 | ],
1709 | "authors": [
1710 | {
1711 | "name": "Jeff Welch",
1712 | "email": "whatthejeff@gmail.com"
1713 | },
1714 | {
1715 | "name": "Volker Dusch",
1716 | "email": "github@wallbash.com"
1717 | },
1718 | {
1719 | "name": "Bernhard Schussek",
1720 | "email": "bschussek@2bepublished.at"
1721 | },
1722 | {
1723 | "name": "Sebastian Bergmann",
1724 | "email": "sebastian@phpunit.de"
1725 | }
1726 | ],
1727 | "description": "Provides the functionality to compare PHP values for equality",
1728 | "homepage": "https://github.com/sebastianbergmann/comparator",
1729 | "keywords": [
1730 | "comparator",
1731 | "compare",
1732 | "equality"
1733 | ],
1734 | "time": "2018-02-01T13:46:46+00:00"
1735 | },
1736 | {
1737 | "name": "sebastian/diff",
1738 | "version": "2.0.1",
1739 | "source": {
1740 | "type": "git",
1741 | "url": "https://github.com/sebastianbergmann/diff.git",
1742 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
1743 | },
1744 | "dist": {
1745 | "type": "zip",
1746 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1747 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1748 | "shasum": ""
1749 | },
1750 | "require": {
1751 | "php": "^7.0"
1752 | },
1753 | "require-dev": {
1754 | "phpunit/phpunit": "^6.2"
1755 | },
1756 | "type": "library",
1757 | "extra": {
1758 | "branch-alias": {
1759 | "dev-master": "2.0-dev"
1760 | }
1761 | },
1762 | "autoload": {
1763 | "classmap": [
1764 | "src/"
1765 | ]
1766 | },
1767 | "notification-url": "https://packagist.org/downloads/",
1768 | "license": [
1769 | "BSD-3-Clause"
1770 | ],
1771 | "authors": [
1772 | {
1773 | "name": "Kore Nordmann",
1774 | "email": "mail@kore-nordmann.de"
1775 | },
1776 | {
1777 | "name": "Sebastian Bergmann",
1778 | "email": "sebastian@phpunit.de"
1779 | }
1780 | ],
1781 | "description": "Diff implementation",
1782 | "homepage": "https://github.com/sebastianbergmann/diff",
1783 | "keywords": [
1784 | "diff"
1785 | ],
1786 | "time": "2017-08-03T08:09:46+00:00"
1787 | },
1788 | {
1789 | "name": "sebastian/environment",
1790 | "version": "3.1.0",
1791 | "source": {
1792 | "type": "git",
1793 | "url": "https://github.com/sebastianbergmann/environment.git",
1794 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
1795 | },
1796 | "dist": {
1797 | "type": "zip",
1798 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1799 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1800 | "shasum": ""
1801 | },
1802 | "require": {
1803 | "php": "^7.0"
1804 | },
1805 | "require-dev": {
1806 | "phpunit/phpunit": "^6.1"
1807 | },
1808 | "type": "library",
1809 | "extra": {
1810 | "branch-alias": {
1811 | "dev-master": "3.1.x-dev"
1812 | }
1813 | },
1814 | "autoload": {
1815 | "classmap": [
1816 | "src/"
1817 | ]
1818 | },
1819 | "notification-url": "https://packagist.org/downloads/",
1820 | "license": [
1821 | "BSD-3-Clause"
1822 | ],
1823 | "authors": [
1824 | {
1825 | "name": "Sebastian Bergmann",
1826 | "email": "sebastian@phpunit.de"
1827 | }
1828 | ],
1829 | "description": "Provides functionality to handle HHVM/PHP environments",
1830 | "homepage": "http://www.github.com/sebastianbergmann/environment",
1831 | "keywords": [
1832 | "Xdebug",
1833 | "environment",
1834 | "hhvm"
1835 | ],
1836 | "time": "2017-07-01T08:51:00+00:00"
1837 | },
1838 | {
1839 | "name": "sebastian/exporter",
1840 | "version": "3.1.0",
1841 | "source": {
1842 | "type": "git",
1843 | "url": "https://github.com/sebastianbergmann/exporter.git",
1844 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
1845 | },
1846 | "dist": {
1847 | "type": "zip",
1848 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
1849 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
1850 | "shasum": ""
1851 | },
1852 | "require": {
1853 | "php": "^7.0",
1854 | "sebastian/recursion-context": "^3.0"
1855 | },
1856 | "require-dev": {
1857 | "ext-mbstring": "*",
1858 | "phpunit/phpunit": "^6.0"
1859 | },
1860 | "type": "library",
1861 | "extra": {
1862 | "branch-alias": {
1863 | "dev-master": "3.1.x-dev"
1864 | }
1865 | },
1866 | "autoload": {
1867 | "classmap": [
1868 | "src/"
1869 | ]
1870 | },
1871 | "notification-url": "https://packagist.org/downloads/",
1872 | "license": [
1873 | "BSD-3-Clause"
1874 | ],
1875 | "authors": [
1876 | {
1877 | "name": "Jeff Welch",
1878 | "email": "whatthejeff@gmail.com"
1879 | },
1880 | {
1881 | "name": "Volker Dusch",
1882 | "email": "github@wallbash.com"
1883 | },
1884 | {
1885 | "name": "Bernhard Schussek",
1886 | "email": "bschussek@2bepublished.at"
1887 | },
1888 | {
1889 | "name": "Sebastian Bergmann",
1890 | "email": "sebastian@phpunit.de"
1891 | },
1892 | {
1893 | "name": "Adam Harvey",
1894 | "email": "aharvey@php.net"
1895 | }
1896 | ],
1897 | "description": "Provides the functionality to export PHP variables for visualization",
1898 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
1899 | "keywords": [
1900 | "export",
1901 | "exporter"
1902 | ],
1903 | "time": "2017-04-03T13:19:02+00:00"
1904 | },
1905 | {
1906 | "name": "sebastian/global-state",
1907 | "version": "2.0.0",
1908 | "source": {
1909 | "type": "git",
1910 | "url": "https://github.com/sebastianbergmann/global-state.git",
1911 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
1912 | },
1913 | "dist": {
1914 | "type": "zip",
1915 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1916 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1917 | "shasum": ""
1918 | },
1919 | "require": {
1920 | "php": "^7.0"
1921 | },
1922 | "require-dev": {
1923 | "phpunit/phpunit": "^6.0"
1924 | },
1925 | "suggest": {
1926 | "ext-uopz": "*"
1927 | },
1928 | "type": "library",
1929 | "extra": {
1930 | "branch-alias": {
1931 | "dev-master": "2.0-dev"
1932 | }
1933 | },
1934 | "autoload": {
1935 | "classmap": [
1936 | "src/"
1937 | ]
1938 | },
1939 | "notification-url": "https://packagist.org/downloads/",
1940 | "license": [
1941 | "BSD-3-Clause"
1942 | ],
1943 | "authors": [
1944 | {
1945 | "name": "Sebastian Bergmann",
1946 | "email": "sebastian@phpunit.de"
1947 | }
1948 | ],
1949 | "description": "Snapshotting of global state",
1950 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
1951 | "keywords": [
1952 | "global state"
1953 | ],
1954 | "time": "2017-04-27T15:39:26+00:00"
1955 | },
1956 | {
1957 | "name": "sebastian/object-enumerator",
1958 | "version": "3.0.3",
1959 | "source": {
1960 | "type": "git",
1961 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1962 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
1963 | },
1964 | "dist": {
1965 | "type": "zip",
1966 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1967 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1968 | "shasum": ""
1969 | },
1970 | "require": {
1971 | "php": "^7.0",
1972 | "sebastian/object-reflector": "^1.1.1",
1973 | "sebastian/recursion-context": "^3.0"
1974 | },
1975 | "require-dev": {
1976 | "phpunit/phpunit": "^6.0"
1977 | },
1978 | "type": "library",
1979 | "extra": {
1980 | "branch-alias": {
1981 | "dev-master": "3.0.x-dev"
1982 | }
1983 | },
1984 | "autoload": {
1985 | "classmap": [
1986 | "src/"
1987 | ]
1988 | },
1989 | "notification-url": "https://packagist.org/downloads/",
1990 | "license": [
1991 | "BSD-3-Clause"
1992 | ],
1993 | "authors": [
1994 | {
1995 | "name": "Sebastian Bergmann",
1996 | "email": "sebastian@phpunit.de"
1997 | }
1998 | ],
1999 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
2000 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
2001 | "time": "2017-08-03T12:35:26+00:00"
2002 | },
2003 | {
2004 | "name": "sebastian/object-reflector",
2005 | "version": "1.1.1",
2006 | "source": {
2007 | "type": "git",
2008 | "url": "https://github.com/sebastianbergmann/object-reflector.git",
2009 | "reference": "773f97c67f28de00d397be301821b06708fca0be"
2010 | },
2011 | "dist": {
2012 | "type": "zip",
2013 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
2014 | "reference": "773f97c67f28de00d397be301821b06708fca0be",
2015 | "shasum": ""
2016 | },
2017 | "require": {
2018 | "php": "^7.0"
2019 | },
2020 | "require-dev": {
2021 | "phpunit/phpunit": "^6.0"
2022 | },
2023 | "type": "library",
2024 | "extra": {
2025 | "branch-alias": {
2026 | "dev-master": "1.1-dev"
2027 | }
2028 | },
2029 | "autoload": {
2030 | "classmap": [
2031 | "src/"
2032 | ]
2033 | },
2034 | "notification-url": "https://packagist.org/downloads/",
2035 | "license": [
2036 | "BSD-3-Clause"
2037 | ],
2038 | "authors": [
2039 | {
2040 | "name": "Sebastian Bergmann",
2041 | "email": "sebastian@phpunit.de"
2042 | }
2043 | ],
2044 | "description": "Allows reflection of object attributes, including inherited and non-public ones",
2045 | "homepage": "https://github.com/sebastianbergmann/object-reflector/",
2046 | "time": "2017-03-29T09:07:27+00:00"
2047 | },
2048 | {
2049 | "name": "sebastian/recursion-context",
2050 | "version": "3.0.0",
2051 | "source": {
2052 | "type": "git",
2053 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
2054 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
2055 | },
2056 | "dist": {
2057 | "type": "zip",
2058 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
2059 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
2060 | "shasum": ""
2061 | },
2062 | "require": {
2063 | "php": "^7.0"
2064 | },
2065 | "require-dev": {
2066 | "phpunit/phpunit": "^6.0"
2067 | },
2068 | "type": "library",
2069 | "extra": {
2070 | "branch-alias": {
2071 | "dev-master": "3.0.x-dev"
2072 | }
2073 | },
2074 | "autoload": {
2075 | "classmap": [
2076 | "src/"
2077 | ]
2078 | },
2079 | "notification-url": "https://packagist.org/downloads/",
2080 | "license": [
2081 | "BSD-3-Clause"
2082 | ],
2083 | "authors": [
2084 | {
2085 | "name": "Jeff Welch",
2086 | "email": "whatthejeff@gmail.com"
2087 | },
2088 | {
2089 | "name": "Sebastian Bergmann",
2090 | "email": "sebastian@phpunit.de"
2091 | },
2092 | {
2093 | "name": "Adam Harvey",
2094 | "email": "aharvey@php.net"
2095 | }
2096 | ],
2097 | "description": "Provides functionality to recursively process PHP variables",
2098 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
2099 | "time": "2017-03-03T06:23:57+00:00"
2100 | },
2101 | {
2102 | "name": "sebastian/resource-operations",
2103 | "version": "1.0.0",
2104 | "source": {
2105 | "type": "git",
2106 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
2107 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
2108 | },
2109 | "dist": {
2110 | "type": "zip",
2111 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2112 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
2113 | "shasum": ""
2114 | },
2115 | "require": {
2116 | "php": ">=5.6.0"
2117 | },
2118 | "type": "library",
2119 | "extra": {
2120 | "branch-alias": {
2121 | "dev-master": "1.0.x-dev"
2122 | }
2123 | },
2124 | "autoload": {
2125 | "classmap": [
2126 | "src/"
2127 | ]
2128 | },
2129 | "notification-url": "https://packagist.org/downloads/",
2130 | "license": [
2131 | "BSD-3-Clause"
2132 | ],
2133 | "authors": [
2134 | {
2135 | "name": "Sebastian Bergmann",
2136 | "email": "sebastian@phpunit.de"
2137 | }
2138 | ],
2139 | "description": "Provides a list of PHP built-in functions that operate on resources",
2140 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
2141 | "time": "2015-07-28T20:34:47+00:00"
2142 | },
2143 | {
2144 | "name": "sebastian/version",
2145 | "version": "2.0.1",
2146 | "source": {
2147 | "type": "git",
2148 | "url": "https://github.com/sebastianbergmann/version.git",
2149 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
2150 | },
2151 | "dist": {
2152 | "type": "zip",
2153 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
2154 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
2155 | "shasum": ""
2156 | },
2157 | "require": {
2158 | "php": ">=5.6"
2159 | },
2160 | "type": "library",
2161 | "extra": {
2162 | "branch-alias": {
2163 | "dev-master": "2.0.x-dev"
2164 | }
2165 | },
2166 | "autoload": {
2167 | "classmap": [
2168 | "src/"
2169 | ]
2170 | },
2171 | "notification-url": "https://packagist.org/downloads/",
2172 | "license": [
2173 | "BSD-3-Clause"
2174 | ],
2175 | "authors": [
2176 | {
2177 | "name": "Sebastian Bergmann",
2178 | "email": "sebastian@phpunit.de",
2179 | "role": "lead"
2180 | }
2181 | ],
2182 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
2183 | "homepage": "https://github.com/sebastianbergmann/version",
2184 | "time": "2016-10-03T07:35:21+00:00"
2185 | },
2186 | {
2187 | "name": "symfony/browser-kit",
2188 | "version": "v4.0.4",
2189 | "source": {
2190 | "type": "git",
2191 | "url": "https://github.com/symfony/browser-kit.git",
2192 | "reference": "fee0fcd501304b1c3190f6293f650cceb738a353"
2193 | },
2194 | "dist": {
2195 | "type": "zip",
2196 | "url": "https://api.github.com/repos/symfony/browser-kit/zipball/fee0fcd501304b1c3190f6293f650cceb738a353",
2197 | "reference": "fee0fcd501304b1c3190f6293f650cceb738a353",
2198 | "shasum": ""
2199 | },
2200 | "require": {
2201 | "php": "^7.1.3",
2202 | "symfony/dom-crawler": "~3.4|~4.0"
2203 | },
2204 | "require-dev": {
2205 | "symfony/css-selector": "~3.4|~4.0",
2206 | "symfony/process": "~3.4|~4.0"
2207 | },
2208 | "suggest": {
2209 | "symfony/process": ""
2210 | },
2211 | "type": "library",
2212 | "extra": {
2213 | "branch-alias": {
2214 | "dev-master": "4.0-dev"
2215 | }
2216 | },
2217 | "autoload": {
2218 | "psr-4": {
2219 | "Symfony\\Component\\BrowserKit\\": ""
2220 | },
2221 | "exclude-from-classmap": [
2222 | "/Tests/"
2223 | ]
2224 | },
2225 | "notification-url": "https://packagist.org/downloads/",
2226 | "license": [
2227 | "MIT"
2228 | ],
2229 | "authors": [
2230 | {
2231 | "name": "Fabien Potencier",
2232 | "email": "fabien@symfony.com"
2233 | },
2234 | {
2235 | "name": "Symfony Community",
2236 | "homepage": "https://symfony.com/contributors"
2237 | }
2238 | ],
2239 | "description": "Symfony BrowserKit Component",
2240 | "homepage": "https://symfony.com",
2241 | "time": "2018-01-03T07:38:00+00:00"
2242 | },
2243 | {
2244 | "name": "symfony/console",
2245 | "version": "v4.0.4",
2246 | "source": {
2247 | "type": "git",
2248 | "url": "https://github.com/symfony/console.git",
2249 | "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488"
2250 | },
2251 | "dist": {
2252 | "type": "zip",
2253 | "url": "https://api.github.com/repos/symfony/console/zipball/36d5b41e7d4e1ccf0370f6babe966c08ef0a1488",
2254 | "reference": "36d5b41e7d4e1ccf0370f6babe966c08ef0a1488",
2255 | "shasum": ""
2256 | },
2257 | "require": {
2258 | "php": "^7.1.3",
2259 | "symfony/polyfill-mbstring": "~1.0"
2260 | },
2261 | "conflict": {
2262 | "symfony/dependency-injection": "<3.4",
2263 | "symfony/process": "<3.3"
2264 | },
2265 | "require-dev": {
2266 | "psr/log": "~1.0",
2267 | "symfony/config": "~3.4|~4.0",
2268 | "symfony/dependency-injection": "~3.4|~4.0",
2269 | "symfony/event-dispatcher": "~3.4|~4.0",
2270 | "symfony/lock": "~3.4|~4.0",
2271 | "symfony/process": "~3.4|~4.0"
2272 | },
2273 | "suggest": {
2274 | "psr/log": "For using the console logger",
2275 | "symfony/event-dispatcher": "",
2276 | "symfony/lock": "",
2277 | "symfony/process": ""
2278 | },
2279 | "type": "library",
2280 | "extra": {
2281 | "branch-alias": {
2282 | "dev-master": "4.0-dev"
2283 | }
2284 | },
2285 | "autoload": {
2286 | "psr-4": {
2287 | "Symfony\\Component\\Console\\": ""
2288 | },
2289 | "exclude-from-classmap": [
2290 | "/Tests/"
2291 | ]
2292 | },
2293 | "notification-url": "https://packagist.org/downloads/",
2294 | "license": [
2295 | "MIT"
2296 | ],
2297 | "authors": [
2298 | {
2299 | "name": "Fabien Potencier",
2300 | "email": "fabien@symfony.com"
2301 | },
2302 | {
2303 | "name": "Symfony Community",
2304 | "homepage": "https://symfony.com/contributors"
2305 | }
2306 | ],
2307 | "description": "Symfony Console Component",
2308 | "homepage": "https://symfony.com",
2309 | "time": "2018-01-29T09:06:29+00:00"
2310 | },
2311 | {
2312 | "name": "symfony/css-selector",
2313 | "version": "v4.0.4",
2314 | "source": {
2315 | "type": "git",
2316 | "url": "https://github.com/symfony/css-selector.git",
2317 | "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7"
2318 | },
2319 | "dist": {
2320 | "type": "zip",
2321 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/f97600434e3141ef3cbb9ea42cf500fba88022b7",
2322 | "reference": "f97600434e3141ef3cbb9ea42cf500fba88022b7",
2323 | "shasum": ""
2324 | },
2325 | "require": {
2326 | "php": "^7.1.3"
2327 | },
2328 | "type": "library",
2329 | "extra": {
2330 | "branch-alias": {
2331 | "dev-master": "4.0-dev"
2332 | }
2333 | },
2334 | "autoload": {
2335 | "psr-4": {
2336 | "Symfony\\Component\\CssSelector\\": ""
2337 | },
2338 | "exclude-from-classmap": [
2339 | "/Tests/"
2340 | ]
2341 | },
2342 | "notification-url": "https://packagist.org/downloads/",
2343 | "license": [
2344 | "MIT"
2345 | ],
2346 | "authors": [
2347 | {
2348 | "name": "Jean-François Simon",
2349 | "email": "jeanfrancois.simon@sensiolabs.com"
2350 | },
2351 | {
2352 | "name": "Fabien Potencier",
2353 | "email": "fabien@symfony.com"
2354 | },
2355 | {
2356 | "name": "Symfony Community",
2357 | "homepage": "https://symfony.com/contributors"
2358 | }
2359 | ],
2360 | "description": "Symfony CssSelector Component",
2361 | "homepage": "https://symfony.com",
2362 | "time": "2018-01-03T07:38:00+00:00"
2363 | },
2364 | {
2365 | "name": "symfony/dom-crawler",
2366 | "version": "v4.0.4",
2367 | "source": {
2368 | "type": "git",
2369 | "url": "https://github.com/symfony/dom-crawler.git",
2370 | "reference": "39b785e1cf28e9f21bb601a5d62c4992a8e8a290"
2371 | },
2372 | "dist": {
2373 | "type": "zip",
2374 | "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/39b785e1cf28e9f21bb601a5d62c4992a8e8a290",
2375 | "reference": "39b785e1cf28e9f21bb601a5d62c4992a8e8a290",
2376 | "shasum": ""
2377 | },
2378 | "require": {
2379 | "php": "^7.1.3",
2380 | "symfony/polyfill-mbstring": "~1.0"
2381 | },
2382 | "require-dev": {
2383 | "symfony/css-selector": "~3.4|~4.0"
2384 | },
2385 | "suggest": {
2386 | "symfony/css-selector": ""
2387 | },
2388 | "type": "library",
2389 | "extra": {
2390 | "branch-alias": {
2391 | "dev-master": "4.0-dev"
2392 | }
2393 | },
2394 | "autoload": {
2395 | "psr-4": {
2396 | "Symfony\\Component\\DomCrawler\\": ""
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 DomCrawler Component",
2417 | "homepage": "https://symfony.com",
2418 | "time": "2018-01-03T07:38:00+00:00"
2419 | },
2420 | {
2421 | "name": "symfony/event-dispatcher",
2422 | "version": "v4.0.4",
2423 | "source": {
2424 | "type": "git",
2425 | "url": "https://github.com/symfony/event-dispatcher.git",
2426 | "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb"
2427 | },
2428 | "dist": {
2429 | "type": "zip",
2430 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/74d33aac36208c4d6757807d9f598f0133a3a4eb",
2431 | "reference": "74d33aac36208c4d6757807d9f598f0133a3a4eb",
2432 | "shasum": ""
2433 | },
2434 | "require": {
2435 | "php": "^7.1.3"
2436 | },
2437 | "conflict": {
2438 | "symfony/dependency-injection": "<3.4"
2439 | },
2440 | "require-dev": {
2441 | "psr/log": "~1.0",
2442 | "symfony/config": "~3.4|~4.0",
2443 | "symfony/dependency-injection": "~3.4|~4.0",
2444 | "symfony/expression-language": "~3.4|~4.0",
2445 | "symfony/stopwatch": "~3.4|~4.0"
2446 | },
2447 | "suggest": {
2448 | "symfony/dependency-injection": "",
2449 | "symfony/http-kernel": ""
2450 | },
2451 | "type": "library",
2452 | "extra": {
2453 | "branch-alias": {
2454 | "dev-master": "4.0-dev"
2455 | }
2456 | },
2457 | "autoload": {
2458 | "psr-4": {
2459 | "Symfony\\Component\\EventDispatcher\\": ""
2460 | },
2461 | "exclude-from-classmap": [
2462 | "/Tests/"
2463 | ]
2464 | },
2465 | "notification-url": "https://packagist.org/downloads/",
2466 | "license": [
2467 | "MIT"
2468 | ],
2469 | "authors": [
2470 | {
2471 | "name": "Fabien Potencier",
2472 | "email": "fabien@symfony.com"
2473 | },
2474 | {
2475 | "name": "Symfony Community",
2476 | "homepage": "https://symfony.com/contributors"
2477 | }
2478 | ],
2479 | "description": "Symfony EventDispatcher Component",
2480 | "homepage": "https://symfony.com",
2481 | "time": "2018-01-03T07:38:00+00:00"
2482 | },
2483 | {
2484 | "name": "symfony/finder",
2485 | "version": "v4.0.4",
2486 | "source": {
2487 | "type": "git",
2488 | "url": "https://github.com/symfony/finder.git",
2489 | "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601"
2490 | },
2491 | "dist": {
2492 | "type": "zip",
2493 | "url": "https://api.github.com/repos/symfony/finder/zipball/8b08180f2b7ccb41062366b9ad91fbc4f1af8601",
2494 | "reference": "8b08180f2b7ccb41062366b9ad91fbc4f1af8601",
2495 | "shasum": ""
2496 | },
2497 | "require": {
2498 | "php": "^7.1.3"
2499 | },
2500 | "type": "library",
2501 | "extra": {
2502 | "branch-alias": {
2503 | "dev-master": "4.0-dev"
2504 | }
2505 | },
2506 | "autoload": {
2507 | "psr-4": {
2508 | "Symfony\\Component\\Finder\\": ""
2509 | },
2510 | "exclude-from-classmap": [
2511 | "/Tests/"
2512 | ]
2513 | },
2514 | "notification-url": "https://packagist.org/downloads/",
2515 | "license": [
2516 | "MIT"
2517 | ],
2518 | "authors": [
2519 | {
2520 | "name": "Fabien Potencier",
2521 | "email": "fabien@symfony.com"
2522 | },
2523 | {
2524 | "name": "Symfony Community",
2525 | "homepage": "https://symfony.com/contributors"
2526 | }
2527 | ],
2528 | "description": "Symfony Finder Component",
2529 | "homepage": "https://symfony.com",
2530 | "time": "2018-01-03T07:38:00+00:00"
2531 | },
2532 | {
2533 | "name": "symfony/polyfill-mbstring",
2534 | "version": "v1.7.0",
2535 | "source": {
2536 | "type": "git",
2537 | "url": "https://github.com/symfony/polyfill-mbstring.git",
2538 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b"
2539 | },
2540 | "dist": {
2541 | "type": "zip",
2542 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b",
2543 | "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b",
2544 | "shasum": ""
2545 | },
2546 | "require": {
2547 | "php": ">=5.3.3"
2548 | },
2549 | "suggest": {
2550 | "ext-mbstring": "For best performance"
2551 | },
2552 | "type": "library",
2553 | "extra": {
2554 | "branch-alias": {
2555 | "dev-master": "1.7-dev"
2556 | }
2557 | },
2558 | "autoload": {
2559 | "psr-4": {
2560 | "Symfony\\Polyfill\\Mbstring\\": ""
2561 | },
2562 | "files": [
2563 | "bootstrap.php"
2564 | ]
2565 | },
2566 | "notification-url": "https://packagist.org/downloads/",
2567 | "license": [
2568 | "MIT"
2569 | ],
2570 | "authors": [
2571 | {
2572 | "name": "Nicolas Grekas",
2573 | "email": "p@tchwork.com"
2574 | },
2575 | {
2576 | "name": "Symfony Community",
2577 | "homepage": "https://symfony.com/contributors"
2578 | }
2579 | ],
2580 | "description": "Symfony polyfill for the Mbstring extension",
2581 | "homepage": "https://symfony.com",
2582 | "keywords": [
2583 | "compatibility",
2584 | "mbstring",
2585 | "polyfill",
2586 | "portable",
2587 | "shim"
2588 | ],
2589 | "time": "2018-01-30T19:27:44+00:00"
2590 | },
2591 | {
2592 | "name": "symfony/process",
2593 | "version": "v4.0.4",
2594 | "source": {
2595 | "type": "git",
2596 | "url": "https://github.com/symfony/process.git",
2597 | "reference": "e1712002d81de6f39f854bc5bbd9e9f4bb6345b4"
2598 | },
2599 | "dist": {
2600 | "type": "zip",
2601 | "url": "https://api.github.com/repos/symfony/process/zipball/e1712002d81de6f39f854bc5bbd9e9f4bb6345b4",
2602 | "reference": "e1712002d81de6f39f854bc5bbd9e9f4bb6345b4",
2603 | "shasum": ""
2604 | },
2605 | "require": {
2606 | "php": "^7.1.3"
2607 | },
2608 | "type": "library",
2609 | "extra": {
2610 | "branch-alias": {
2611 | "dev-master": "4.0-dev"
2612 | }
2613 | },
2614 | "autoload": {
2615 | "psr-4": {
2616 | "Symfony\\Component\\Process\\": ""
2617 | },
2618 | "exclude-from-classmap": [
2619 | "/Tests/"
2620 | ]
2621 | },
2622 | "notification-url": "https://packagist.org/downloads/",
2623 | "license": [
2624 | "MIT"
2625 | ],
2626 | "authors": [
2627 | {
2628 | "name": "Fabien Potencier",
2629 | "email": "fabien@symfony.com"
2630 | },
2631 | {
2632 | "name": "Symfony Community",
2633 | "homepage": "https://symfony.com/contributors"
2634 | }
2635 | ],
2636 | "description": "Symfony Process Component",
2637 | "homepage": "https://symfony.com",
2638 | "time": "2018-01-29T09:06:29+00:00"
2639 | },
2640 | {
2641 | "name": "symfony/yaml",
2642 | "version": "v4.0.4",
2643 | "source": {
2644 | "type": "git",
2645 | "url": "https://github.com/symfony/yaml.git",
2646 | "reference": "ffc60bda1d4a00ec0b32eeabf39dc017bf480028"
2647 | },
2648 | "dist": {
2649 | "type": "zip",
2650 | "url": "https://api.github.com/repos/symfony/yaml/zipball/ffc60bda1d4a00ec0b32eeabf39dc017bf480028",
2651 | "reference": "ffc60bda1d4a00ec0b32eeabf39dc017bf480028",
2652 | "shasum": ""
2653 | },
2654 | "require": {
2655 | "php": "^7.1.3"
2656 | },
2657 | "conflict": {
2658 | "symfony/console": "<3.4"
2659 | },
2660 | "require-dev": {
2661 | "symfony/console": "~3.4|~4.0"
2662 | },
2663 | "suggest": {
2664 | "symfony/console": "For validating YAML files using the lint command"
2665 | },
2666 | "type": "library",
2667 | "extra": {
2668 | "branch-alias": {
2669 | "dev-master": "4.0-dev"
2670 | }
2671 | },
2672 | "autoload": {
2673 | "psr-4": {
2674 | "Symfony\\Component\\Yaml\\": ""
2675 | },
2676 | "exclude-from-classmap": [
2677 | "/Tests/"
2678 | ]
2679 | },
2680 | "notification-url": "https://packagist.org/downloads/",
2681 | "license": [
2682 | "MIT"
2683 | ],
2684 | "authors": [
2685 | {
2686 | "name": "Fabien Potencier",
2687 | "email": "fabien@symfony.com"
2688 | },
2689 | {
2690 | "name": "Symfony Community",
2691 | "homepage": "https://symfony.com/contributors"
2692 | }
2693 | ],
2694 | "description": "Symfony Yaml Component",
2695 | "homepage": "https://symfony.com",
2696 | "time": "2018-01-21T19:06:11+00:00"
2697 | },
2698 | {
2699 | "name": "theseer/tokenizer",
2700 | "version": "1.1.0",
2701 | "source": {
2702 | "type": "git",
2703 | "url": "https://github.com/theseer/tokenizer.git",
2704 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
2705 | },
2706 | "dist": {
2707 | "type": "zip",
2708 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
2709 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
2710 | "shasum": ""
2711 | },
2712 | "require": {
2713 | "ext-dom": "*",
2714 | "ext-tokenizer": "*",
2715 | "ext-xmlwriter": "*",
2716 | "php": "^7.0"
2717 | },
2718 | "type": "library",
2719 | "autoload": {
2720 | "classmap": [
2721 | "src/"
2722 | ]
2723 | },
2724 | "notification-url": "https://packagist.org/downloads/",
2725 | "license": [
2726 | "BSD-3-Clause"
2727 | ],
2728 | "authors": [
2729 | {
2730 | "name": "Arne Blankerts",
2731 | "email": "arne@blankerts.de",
2732 | "role": "Developer"
2733 | }
2734 | ],
2735 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
2736 | "time": "2017-04-07T12:08:54+00:00"
2737 | },
2738 | {
2739 | "name": "webmozart/assert",
2740 | "version": "1.3.0",
2741 | "source": {
2742 | "type": "git",
2743 | "url": "https://github.com/webmozart/assert.git",
2744 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
2745 | },
2746 | "dist": {
2747 | "type": "zip",
2748 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
2749 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
2750 | "shasum": ""
2751 | },
2752 | "require": {
2753 | "php": "^5.3.3 || ^7.0"
2754 | },
2755 | "require-dev": {
2756 | "phpunit/phpunit": "^4.6",
2757 | "sebastian/version": "^1.0.1"
2758 | },
2759 | "type": "library",
2760 | "extra": {
2761 | "branch-alias": {
2762 | "dev-master": "1.3-dev"
2763 | }
2764 | },
2765 | "autoload": {
2766 | "psr-4": {
2767 | "Webmozart\\Assert\\": "src/"
2768 | }
2769 | },
2770 | "notification-url": "https://packagist.org/downloads/",
2771 | "license": [
2772 | "MIT"
2773 | ],
2774 | "authors": [
2775 | {
2776 | "name": "Bernhard Schussek",
2777 | "email": "bschussek@gmail.com"
2778 | }
2779 | ],
2780 | "description": "Assertions to validate method input/output with nice error messages.",
2781 | "keywords": [
2782 | "assert",
2783 | "check",
2784 | "validate"
2785 | ],
2786 | "time": "2018-01-29T19:49:41+00:00"
2787 | }
2788 | ],
2789 | "aliases": [],
2790 | "minimum-stability": "stable",
2791 | "stability-flags": [],
2792 | "prefer-stable": false,
2793 | "prefer-lowest": false,
2794 | "platform": [],
2795 | "platform-dev": []
2796 | }
2797 |
--------------------------------------------------------------------------------
/src/SearchComponent.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | namespace vintage\search;
13 |
14 | use Yii;
15 | use yii\base\Component;
16 | use yii\base\InvalidConfigException;
17 | use yii\base\Model;
18 | use yii\db\BaseActiveRecord;
19 | use yii\helpers\ArrayHelper;
20 | use yii\helpers\Inflector;
21 | use vintage\search\models\SearchResult;
22 | use vintage\search\interfaces\SearchInterface;
23 | use vintage\search\interfaces\CustomSearchInterface;
24 |
25 | /**
26 | * Component for search in Active Record models.
27 | *
28 | * @author Vladimir Kuprienko
29 | * @since 1.0
30 | */
31 | class SearchComponent extends Component
32 | {
33 | /**
34 | * @var array Array with configuration of models for search.
35 | *
36 | * @example
37 | * ```php
38 | * 'models' => [
39 | * 'articles' => [
40 | * 'class' => Article::class,
41 | * 'label' => 'Articles',
42 | * ],
43 | * 'products' => [
44 | * 'class' => Product::class,
45 | * 'label' => 'Shop products',
46 | * ],
47 | * // ...
48 | * ]
49 | * ```
50 | */
51 | public $models = [];
52 |
53 | /**
54 | * @var SearchResult[] Array of the search result.
55 | */
56 | protected $result = [];
57 |
58 |
59 | /**
60 | * Method for searching.
61 | *
62 | * @example
63 | * ```php
64 | * $result = Yii::$app->get('searcher')->search('query for searching');
65 | * ```
66 | *
67 | * @param string $query Keywords for search.
68 | *
69 | * @return SearchResult[] Array of the result objects.
70 | *
71 | * @throws \Exception
72 | * @throws InvalidConfigException
73 | */
74 | public function search($query)
75 | {
76 | foreach ($this->models as $model) {
77 | /* @var BaseActiveRecord|SearchInterface $searchModel */
78 | $searchModel = Yii::createObject($model['class']);
79 |
80 | if (!$this->isSearchModel($searchModel)) {
81 | throw new InvalidConfigException(
82 | $model['class'] . 'should be instance of `\vintage\search\interfaces\SearchInterface` and `\yii\db\ActiveRecordInterface`'
83 | );
84 | }
85 |
86 | $activeQuery = $searchModel::find();
87 |
88 | foreach ($searchModel->getSearchFields() as $field) {
89 | if (!$searchModel->hasAttribute($field)) {
90 | throw new \Exception(sprintf("Field `%s` not found in `%s` model", $field, $model['class']));
91 | }
92 |
93 | $activeQuery = ($searchModel instanceof CustomSearchInterface)
94 | ? $searchModel->getQuery($activeQuery, $field, $query)
95 | : $activeQuery->orWhere(['like', $field, $query]);
96 | }
97 |
98 | $this->addToResult($activeQuery->all());
99 | }
100 |
101 | return $this->result;
102 | }
103 |
104 | /**
105 | * Getting model label by model name.
106 | *
107 | * @param string $modelName
108 | *
109 | * @return null|string
110 | */
111 | public function getModelLabel($modelName)
112 | {
113 | foreach ($this->models as $key => $model) {
114 | if ($model['class'] == $modelName) {
115 | return isset($model['label']) ? $model['label'] : Inflector::camel2words($key);
116 | }
117 | }
118 |
119 | return null;
120 | }
121 |
122 | /**
123 | * Method for adding iteration result to final result.
124 | *
125 | * @param \yii\db\ActiveRecord[] $foundModels
126 | */
127 | protected function addToResult($foundModels)
128 | {
129 | if (null !== $foundModels) {
130 | $tmp = SearchResult::buildMultiply($foundModels);
131 | $this->result = ArrayHelper::merge($tmp, $this->result);
132 | }
133 | }
134 |
135 | /**
136 | * Check whether given model is search model.
137 | *
138 | * @param Model $model
139 | *
140 | * @return bool `true` if given model is search model.
141 | *
142 | * @since 1.1
143 | */
144 | protected function isSearchModel(Model $model)
145 | {
146 | return $model instanceof BaseActiveRecord &&
147 | $model instanceof SearchInterface;
148 | }
149 | }
150 |
--------------------------------------------------------------------------------
/src/interfaces/CustomSearchInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | namespace vintage\search\interfaces;
13 |
14 | use yii\db\ActiveQueryInterface;
15 |
16 | /**
17 | * Interface for search models with custom query.
18 | *
19 | * @author Vladimir Kuprienko
20 | * @since 1.1
21 | */
22 | interface CustomSearchInterface extends SearchInterface
23 | {
24 | /**
25 | * In this method you should implement custom search query.
26 | *
27 | * @param ActiveQueryInterface $query
28 | * @param string $field Current search field.
29 | * @param string $searchQuery Search query.
30 | *
31 | * @return ActiveQueryInterface
32 | */
33 | public function getQuery(ActiveQueryInterface $query, $field, $searchQuery);
34 | }
35 |
--------------------------------------------------------------------------------
/src/interfaces/SearchInterface.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | namespace vintage\search\interfaces;
13 |
14 | /**
15 | * Interface for building the search result.
16 | *
17 | * @see \vintage\search\models\SearchResult
18 | *
19 | * You should implement this interface in your Active Record model.
20 | *
21 | * @author Vladimir Kuprienko
22 | * @since 1.0
23 | */
24 | interface SearchInterface
25 | {
26 | /**
27 | * Gets title.
28 | *
29 | * @return string This string will be inserted to the search result
30 | * to `title` field.
31 | */
32 | public function getSearchTitle();
33 |
34 | /**
35 | * Gets description.
36 | *
37 | * @return string This string will be inserted to the search result
38 | * to `description` field.
39 | */
40 | public function getSearchDescription();
41 |
42 | /**
43 | * Gets routes.
44 | *
45 | * @return string This string will be inserted to the search result
46 | * to `url` field.
47 | */
48 | public function getSearchUrl();
49 |
50 | /**
51 | * @return string[] Array of the field names
52 | * where will be implemented search in model.
53 | */
54 | public function getSearchFields();
55 | }
56 |
--------------------------------------------------------------------------------
/src/models/SearchResult.php:
--------------------------------------------------------------------------------
1 |
7 | *
8 | * For the full copyright and license information, please view the LICENSE
9 | * file that was distributed with this source code.
10 | */
11 |
12 | namespace vintage\search\models;
13 |
14 | use yii\base\BaseObject;
15 |
16 | /**
17 | * Model for store of search result.
18 | *
19 | * @property string $title
20 | * @property string $description
21 | * @property string $url
22 | *
23 | * @author Vladimir Kuprienko
24 | * @since 1.0
25 | */
26 | class SearchResult extends BaseObject
27 | {
28 | /**
29 | * @var string
30 | */
31 | public $title;
32 | /**
33 | * @var string
34 | */
35 | public $description;
36 | /**
37 | * @var string
38 | */
39 | public $url;
40 | /**
41 | * @var integer
42 | */
43 | public $modelId;
44 | /**
45 | * @var string
46 | */
47 | public $modelName;
48 |
49 |
50 | /**
51 | * Building the result from Active Record object.
52 | *
53 | * @param \yii\db\BaseActiveRecord|\vintage\search\interfaces\SearchInterface $modelObject
54 | *
55 | * @return SearchResult
56 | */
57 | public static function build($modelObject)
58 | {
59 | return new self([
60 | 'modelId' => $modelObject->getPrimaryKey(),
61 | 'modelName' => $modelObject::className(),
62 | 'title' => $modelObject->getSearchTitle(),
63 | 'description' => $modelObject->getSearchDescription(),
64 | 'url' => $modelObject->getSearchUrl(),
65 | ]);
66 | }
67 |
68 | /**
69 | * Multiply building of result from Active Record objects.
70 | *
71 | * @param \yii\db\BaseActiveRecord[]|\vintage\search\interfaces\SearchInterface[] $modelObjects
72 | *
73 | * @return SearchResult[]
74 | */
75 | public static function buildMultiply($modelObjects)
76 | {
77 | $results = [];
78 |
79 | foreach ($modelObjects as $object) {
80 | $results[] = static::build($object);
81 | }
82 |
83 | return $results;
84 | }
85 |
86 | /**
87 | * Method for sorting results of search by model name.
88 | *
89 | * @param SearchResult[] $searchResults
90 | *
91 | * @return SearchResult[]
92 | */
93 | public static function sortByModel(array $searchResults)
94 | {
95 | $sorted = [];
96 |
97 | foreach ($searchResults as $obj) {
98 | $sorted[$obj->modelName][] = $obj;
99 | }
100 |
101 | return $sorted;
102 | }
103 | }
104 |
--------------------------------------------------------------------------------