├── messages
├── zh-CN
│ └── messages.php
├── ar
│ └── messages.php
├── es
│ └── messages.php
├── fa-IR
│ └── messages.php
├── fr-CH
│ └── messages.php
├── de-CH
│ └── messages.php
├── ru-RU
│ └── messages.php
└── message.php
├── phpunit.xml.dist
├── tests
├── AtLeastValidatorTestPHP56.php
├── AtLeastValidatorTestPHP7.php
├── bootstrap.php
├── FakeModel.php
└── TemporaryTraitsForTests.php
├── .gitignore
├── NOTICE
├── .github
└── ISSUE_TEMPLATE
│ ├── Feature_request.md
│ └── Bug_report.md
├── .travis.yml
├── composer.json
├── README.md
├── AtLeastValidator.php
├── LICENSE
└── composer.lock
/messages/zh-CN/messages.php:
--------------------------------------------------------------------------------
1 | '在 {attributes} 这些字段中 你必须至少填 {min} 个属性的值.',
5 | ' or ' => ' 或者 ',
6 | ];
7 |
--------------------------------------------------------------------------------
/phpunit.xml.dist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | tests
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/messages/ar/messages.php:
--------------------------------------------------------------------------------
1 | 'يجب عليك ملء {min} من الحفول التالية {attributes} على الأقل',
5 | ' or ' => ' أو ',
6 | ];
7 |
8 |
--------------------------------------------------------------------------------
/messages/es/messages.php:
--------------------------------------------------------------------------------
1 | 'Se debe completar al menos {min} de los campos {attributes}.',
5 | ' or ' => ' o ',
6 | ];
7 |
8 |
--------------------------------------------------------------------------------
/messages/fa-IR/messages.php:
--------------------------------------------------------------------------------
1 | 'لازم است حداقل {min} از گزینه های {attributes} پر شود.',
5 | ' or ' => ' یا ',
6 | ];
7 |
8 |
--------------------------------------------------------------------------------
/messages/fr-CH/messages.php:
--------------------------------------------------------------------------------
1 | 'Au moins {min} des attributs {attributes} doit être rempli.',
5 | ' or ' => ' ou ',
6 | ];
7 |
8 |
--------------------------------------------------------------------------------
/messages/de-CH/messages.php:
--------------------------------------------------------------------------------
1 | 'Mindestens {min} der Attribute {attributes} müssen ausgefüllt werden.',
5 | ' or ' => ' oder ',
6 | ];
7 |
8 |
--------------------------------------------------------------------------------
/messages/ru-RU/messages.php:
--------------------------------------------------------------------------------
1 | 'Вы должны заполнить хотя бы {min} из следующих полей: {attributes}.',
5 | ' or ' => ' или ',
6 | ];
7 |
8 |
--------------------------------------------------------------------------------
/tests/AtLeastValidatorTestPHP56.php:
--------------------------------------------------------------------------------
1 | 'testing-app', 'basePath' => dirname(__DIR__)]);
11 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # yii console command
2 | /yii
3 |
4 | # phpstorm project files
5 | .idea
6 |
7 | # netbeans project files
8 | nbproject
9 |
10 | # zend studio for eclipse project files
11 | .buildpath
12 | .project
13 | .settings
14 |
15 | # windows thumbnail cache
16 | Thumbs.db
17 |
18 | # composer vendor dir
19 | /vendor
20 |
21 | # composer itself is not needed
22 | composer.phar
23 |
24 | # Mac DS_Store Files
25 | .DS_Store
26 |
27 | # phpunit itself is not needed
28 | phpunit.phar
29 | # local phpunit config
30 | /phpunit.xml
31 |
--------------------------------------------------------------------------------
/tests/FakeModel.php:
--------------------------------------------------------------------------------
1 | $attr = null;
25 | }
26 | }
27 | }
--------------------------------------------------------------------------------
/messages/message.php:
--------------------------------------------------------------------------------
1 | __DIR__ . '/../',
5 | 'messagePath' => __DIR__,
6 | 'languages' => [
7 | 'es',
8 | 'zh-CN',
9 | ],
10 | 'translator' => 'Yii::t',
11 | 'sort' => false,
12 | 'overwrite' => true,
13 | 'removeUnused' => false,
14 | 'only' => ['*.php'],
15 | 'except' => [
16 | '.svn',
17 | '.git',
18 | '.gitignore',
19 | '.gitkeep',
20 | '.hgignore',
21 | '.hgkeep',
22 | '/messages',
23 | '/tests',
24 | '/vendor',
25 | ],
26 | 'format' => 'php',
27 | ];
28 |
--------------------------------------------------------------------------------
/NOTICE:
--------------------------------------------------------------------------------
1 | Copyright 2016 Sidney da Silva Lins slinstj@gmail.com
2 |
3 | Licensed under the Apache License, Version 2.0 (the "License");
4 | you may not use this file except in compliance with the License.
5 | You may obtain a copy of the License at
6 |
7 | http://www.apache.org/licenses/LICENSE-2.0
8 |
9 | Unless required by applicable law or agreed to in writing, software
10 | distributed under the License is distributed on an "AS IS" BASIS,
11 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 | See the License for the specific language governing permissions and
13 | limitations under the License.
14 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/Feature_request.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Feature request
3 | about: Suggest an idea for this project
4 |
5 | ---
6 |
7 | **Is your feature request related to a problem? Please describe.**
8 | [A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]]
9 |
10 | **Describe the solution you'd like**
11 | [A clear and concise description of what you want to happen.]
12 |
13 | **Describe alternatives you've considered**
14 | [A clear and concise description of any alternative solutions or features you've considered.]
15 |
16 | **Additional context**
17 | [Add any other context or screenshots about the feature request here.]
18 |
--------------------------------------------------------------------------------
/.github/ISSUE_TEMPLATE/Bug_report.md:
--------------------------------------------------------------------------------
1 | ---
2 | name: Bug report
3 | about: Create a report to help us improve
4 |
5 | ---
6 |
7 | **Describe the bug**
8 | [A clear and concise description of what the bug is.]
9 |
10 | **To Reproduce**
11 | [Steps to reproduce the behavior:]
12 | 1. Go to '...'
13 | 2. Click on '....'
14 | 3. Scroll down to '....'
15 | 4. See error
16 |
17 | **Expected behavior**
18 | [A clear and concise description of what you expected to happen.]
19 |
20 | **Screenshots**
21 | [If applicable, add screenshots to help explain your problem.]
22 |
23 | **Additional Information (please complete the following information):**
24 | - Extension version [e.g. 1.2.4]
25 | - Yii version [e.g. 2.0.15.1]
26 |
--------------------------------------------------------------------------------
/.travis.yml:
--------------------------------------------------------------------------------
1 | language: php
2 |
3 | matrix:
4 | include:
5 | - php: 5.6
6 | env:
7 | - COMPOSERARGS="require --dev phpunit/phpunit:5.7.27"
8 | - TESTFILE="tests/AtLeastValidatorTestPHP56.php"
9 | - php: 7.0
10 | env:
11 | - COMPOSERARGS="require --dev phpunit/phpunit:5.7.27"
12 | - TESTFILE="tests/AtLeastValidatorTestPHP56.php"
13 | - php: 7.1
14 | env:
15 | - COMPOSERARGS="install"
16 | - TESTFILE="tests/AtLeastValidatorTestPHP7.php"
17 | - php: 7.2
18 | env:
19 | - COMPOSERARGS="install"
20 | - TESTFILE="tests/AtLeastValidatorTestPHP7.php"
21 |
22 | install:
23 | - rm -f composer.lock
24 | - composer self-update
25 | - composer $COMPOSERARGS
26 |
27 | script:
28 | - composer show yiisoft/yii2
29 | - ./vendor/phpunit/phpunit/phpunit --version
30 | - ./vendor/phpunit/phpunit/phpunit $TESTFILE
31 |
--------------------------------------------------------------------------------
/composer.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "codeonyii/yii2-at-least-validator",
3 | "description": "Validates at least one (or more) attributes.",
4 | "type": "yii2-extension",
5 | "keywords": ["yii2","validator","at least","validation"],
6 | "homepage": "https://github.com/code-on-yii/yii2-at-least-validator",
7 | "license": "Apache-2.0",
8 | "authors": [
9 | {
10 | "name": "Sidney Lins",
11 | "email": "slinstj@gmail.com"
12 | }
13 | ],
14 | "require": {
15 | "php": ">=5.6",
16 | "yiisoft/yii2": "~2.0.5"
17 | },
18 | "require-dev": {
19 | "phpunit/phpunit": "6.5.8"
20 | },
21 | "repositories": [
22 | {
23 | "type": "composer",
24 | "url": "https://asset-packagist.org"
25 | }
26 | ],
27 | "autoload": {
28 | "psr-4": {
29 | "codeonyii\\yii2validators\\": ""
30 | }
31 | }
32 | }
33 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Yii 2 - AtLeastValidator
2 |
3 | [](https://packagist.org/packages/codeonyii/yii2-at-least-validator)
4 | [](https://packagist.org/packages/codeonyii/yii2-at-least-validator)
5 | [](https://travis-ci.org/slinstj/yii2-at-least-validator)
6 | [](https://scrutinizer-ci.com/g/slinstj/yii2-at-least-validator/?branch=master)
7 | [](https://www.codefactor.io/repository/github/slinstj/yii2-at-least-validator)
8 |
9 | Sometimes, in a set of fields, you need to make at least one of them
10 | (sometimes two, or more) be filled. For example, phone OR e-mail,
11 | (facebook OR linkedin) OR (linkedin OR instagram) and so on. You can do
12 | it using required validator with a bunch of conditional rules. Or you can
13 | use AtLeastValidator.
14 |
15 | ## Installation
16 |
17 | Use composer:
18 |
19 | ```php
20 | composer require "codeonyii/yii2-at-least-validator"
21 | ```
22 | In your Model, import the validator:
23 | ```php
24 | use codeonyii\yii2validators\AtLeastValidator;
25 |
26 | class MyModel extends Model
27 | {
28 | ...
29 | public function rules()
30 | {
31 | // see examples below
32 | }
33 | ...
34 | ```
35 |
36 | ## Examples
37 |
38 | In the following example, the `phone` and `email` attributes will
39 | be verified. If none of them are filled `phone` will receive an error.
40 | Please, note that `in` param is always mandatory.
41 |
42 | ```php
43 | // in rules()
44 | return [
45 | ['phone', AtLeastValidator::className(), 'in' => ['phone', 'email']],
46 | ];
47 | ```
48 |
49 | Here, `facebook`, `linkedin` and `instagram` attributes will
50 | be verified. If at least 2 (note the `min` param) of them are not filled,
51 | `facebook` and `instagram` will receive an error:
52 |
53 | ```php
54 | // in rules()
55 | return [
56 | [['facebook', 'instagram'], AtLeastValidator::className(), 'in' => ['facebook', 'linkedin', 'instagram'], 'min' => 2],
57 | ];
58 | ```
59 |
60 | ### Showing errors in summary
61 |
62 | If you want to show errors in a summary instead in the own attributes, you can do this:
63 |
64 | *Note that summary will **not** work for client-side validation. If you want
65 | to use it, you should disable the client-side validation for your fields
66 | or for your entire form.*
67 |
68 | ```php
69 | // in the rules()
70 | // please note the exclamation mark. It will avoid the pk attribute to be massively assigned.
71 | return [
72 | ['!id', AtLeastValidator::className(), 'in' => ['attr1', 'attr2', 'attr3']], // where `id` is the pk
73 | ];
74 |
75 | // in the view, show all errors in the summary:
76 | ...
77 | echo yii\helpers\Html::errorSummary($model, ['class' => ['text-danger']]);
78 |
79 | // OR, to show only `id` errors:
80 | echo yii\helpers\Html::error($model, 'id', ['class' => ['text-danger']]);
81 | ```
82 |
83 | ## Changelog
84 |
85 | Please, access [Releases](https://github.com/code-on-yii/yii2-at-least-validator/releases) to see versions with a some description.
86 |
--------------------------------------------------------------------------------
/tests/TemporaryTraitsForTests.php:
--------------------------------------------------------------------------------
1 | assertInstanceOf('yii\base\InvalidConfigException', $e, 'Parameter `in` is required.');
28 | }
29 |
30 | try {
31 | new AtLeastValidator(['in' => 'attr1']);
32 | } catch (\Exception $e) {
33 | $this->assertInstanceOf('yii\base\InvalidConfigException', $e, 'Parameter `in` should have at least 2 attributes.');
34 | }
35 | }
36 |
37 | public function testWrongData()
38 | {
39 | $v = new AtLeastValidator(['in' => 'attr1, attr2, attr3']);
40 | $m = new FakeModel();
41 |
42 | $v->validateAttribute($m, 'attr1');
43 | $this->assertCount(1, $m->getErrors());
44 | $this->assertTrue($m->hasErrors('attr1'));
45 | $this->assertFalse($m->hasErrors('attr2'));
46 | $this->assertFalse($m->hasErrors('attr3'));
47 |
48 | $v->validateAttribute($m, 'attr1, attr2');
49 | $this->assertCount(2, $m->getErrors());
50 | }
51 |
52 | public function testProperData()
53 | {
54 | $v = new AtLeastValidator(['in' => 'attr1, attr2, attr3']);
55 | $m = new FakeModel();
56 |
57 | $m->attr1 = 'something';
58 | $v->validateAttribute($m, 'attr1');
59 | $this->assertCount(0, $m->getErrors(), 'Should not exist errors in attr1');
60 |
61 | $m->resetData();
62 | $m->attr2 = 'something';
63 | $v->validateAttribute($m, 'attr1');
64 | $this->assertCount(0, $m->getErrors(), 'Should not exist errors in attr1');
65 |
66 | $m->resetData();
67 | $m->attr3 = 'something';
68 | $v->validateAttribute($m, 'attr1');
69 | $this->assertCount(0, $m->getErrors(), 'Should not exist errors in attr1');
70 |
71 | $m->resetData();
72 | $m->attr1 = 'something';
73 | $m->attr2 = 'something';
74 | $v->validateAttribute($m, 'attr1');
75 | $this->assertCount(0, $m->getErrors(), 'Should not exist errors in attr1');
76 |
77 | $m->resetData();
78 | $m->attr2 = 'something';
79 | $m->attr3 = 'something';
80 | $v->validateAttribute($m, 'attr1');
81 | $this->assertCount(0, $m->getErrors(), 'Should not exist errors in attr1');
82 | }
83 |
84 | public function testErrorMessages()
85 | {
86 | $v = new AtLeastValidator(['in' => 'attr1, attr2, attr3']);
87 | $m = new FakeModel();
88 |
89 | $v->validateAttribute($m, 'attr1');
90 | $this->assertEquals('You must fill at least 1 of the attributes "Attr1", "Attr2", "Attr3".', $m->getFirstError('attr1'));
91 |
92 | $m->clearErrors();
93 | $v->min = 2;
94 | $v->validateAttribute($m, 'attr1');
95 | $this->assertEquals('You must fill at least 2 of the attributes "Attr1", "Attr2", "Attr3".', $m->getFirstError('attr1'));
96 | }
97 |
98 | public function testMinParam()
99 | {
100 | $v = new AtLeastValidator(['in' => 'attr1, attr2, attr3']);
101 | $m = new FakeModel();
102 |
103 | // min = 1;
104 | $v->validateAttribute($m, 'attr1');
105 | $this->assertCount(1, $m->getErrors());
106 |
107 | $m->clearErrors();
108 | $v->min = 2;
109 | $m->attr1 = 'something';
110 | $v->validateAttribute($m, 'attr1');
111 | $this->assertCount(1, $m->getErrors(), 'Should have an error since min = 2');
112 | }
113 | }
--------------------------------------------------------------------------------
/AtLeastValidator.php:
--------------------------------------------------------------------------------
1 | ['attr1', 'attr2']],
20 | * ];
21 | * ~~~
22 | *
23 | * In the following example, the `attr1`, `attr2` and `attr3` attributes will
24 | * be verified. If at least 2 (`min`) of them are not filled, `attr1` will
25 | * receive an error:
26 | *
27 | * ~~~[php]
28 | * // in rules()
29 | * return [
30 | * ['attr1', AtLeastValidator::className(), 'min' => 2, 'in' => ['attr1', 'attr2', 'attr3']],
31 | * ];
32 | * ~~~
33 | *
34 | * If you want to show errors in a summary instead in the own attributes, you can do this:
35 | * ~~~[php]
36 | * // in rules()
37 | * return [
38 | * ['!id', AtLeastValidator::className(), 'in' => ['attr1', 'attr2', 'attr3']], // where `id` is the pk
39 | * ];
40 | *
41 | * // view:
42 | * ...
43 | * echo yii\helpers\Html::errorSummary($model, ['class' => ['text-danger']]);
44 | * // OR, to show only `id` errors:
45 | * echo yii\helpers\Html::error($model, 'id', ['class' => ['text-danger']]);
46 | * ~~~
47 | *
48 | *
49 | * @author Sidney Lins
50 | */
51 | class AtLeastValidator extends Validator
52 | {
53 | /**
54 | * @var integer the minimun required quantity of attributes that must to be filled.
55 | * Defaults to 1.
56 | */
57 | public $min = 1;
58 |
59 | /**
60 | * @var string|array the list of attributes that should receive the error message. Required.
61 | */
62 | public $in;
63 |
64 | /**
65 | * @inheritdoc
66 | */
67 | public $skipOnEmpty = false;
68 |
69 | /**
70 | * @inheritdoc
71 | */
72 | public $skipOnError = false;
73 |
74 | /**
75 | * @inheritdoc
76 | */
77 | public function init()
78 | {
79 | parent::init();
80 | if ($this->in === null) {
81 | throw new InvalidConfigException('The `in` parameter is required.');
82 | } elseif (! is_array($this->in) && count(preg_split('/\s*,\s*/', $this->in, -1, PREG_SPLIT_NO_EMPTY)) <= 1) {
83 | throw new InvalidConfigException('The `in` parameter must have at least 2 attributes.');
84 | }
85 | if (!isset(Yii::$app->get('i18n')->translations['message*'])) {
86 | Yii::$app->get('i18n')->translations['message*'] = [
87 | 'class' => PhpMessageSource::className(),
88 | 'basePath' => __DIR__ . '/messages',
89 | 'sourceLanguage' => 'en-US'
90 | ];
91 | }
92 | if ($this->message === null) {
93 | $this->message = Yii::t('messages', 'You must fill at least {min} of the attributes {attributes}.');
94 | }
95 | }
96 |
97 | /**
98 | * @inheritdoc
99 | */
100 | public function validateAttribute($model, $attribute)
101 | {
102 | $attributes = is_array($this->in) ? $this->in : preg_split('/\s*,\s*/', $this->in, -1, PREG_SPLIT_NO_EMPTY);
103 | $chosen = 0;
104 |
105 | foreach ($attributes as $attributeName) {
106 | $value = $model->$attributeName;
107 | $attributesListLabels[] = '"' . $model->getAttributeLabel($attributeName). '"';
108 | $chosen += !empty($value) ? 1 : 0;
109 | }
110 |
111 | if (!$chosen || $chosen < $this->min) {
112 | $attributesList = implode(', ', $attributesListLabels);
113 | $message = strtr($this->message, [
114 | '{min}' => $this->min,
115 | '{attributes}' => $attributesList,
116 | ]);
117 | $model->addError($attribute, $message);
118 | }
119 | }
120 |
121 | /**
122 | * @inheritdoc
123 | * @since: 1.1
124 | */
125 | public function clientValidateAttribute($model, $attribute, $view)
126 | {
127 | $attributes = is_array($this->in) ? $this->in : preg_split('/\s*,\s*/', $this->in, -1, PREG_SPLIT_NO_EMPTY);
128 | $attributes = array_map('strtolower',$attributes); // yii lowercases attributes
129 | $attributesJson = json_encode($attributes);
130 |
131 | $attributesLabels = [];
132 | foreach ($attributes as $attr) {
133 | $attributesLabels[] = '"' . addcslashes($model->getAttributeLabel($attr), "'") . '"';
134 | }
135 | $message = strtr($this->message, [
136 | '{min}' => $this->min,
137 | '{attributes}' => implode(Yii::t('messages', ' or '), $attributesLabels),
138 | ]);
139 |
140 | $form = $model->formName();
141 |
142 | return <<min) {
157 | messages.push('$message');
158 | } else {
159 | $.each(atributes, function(key, attr){
160 | var attrId = formName.toLowerCase() + '-' + attr;
161 | if($('#' + attrId).length == 0){
162 | attrId = $("[name=\""+formName + '[' + attr + ']'+"\"]").attr('id');
163 | }
164 |
165 | \$form.yiiActiveForm('updateAttribute', attrId, '');
166 | });
167 | }
168 | }
169 | atLeastValidator();
170 | JS;
171 | }
172 | }
173 |
174 |
--------------------------------------------------------------------------------
/LICENSE:
--------------------------------------------------------------------------------
1 | Apache License
2 | Version 2.0, January 2004
3 | http://www.apache.org/licenses/
4 |
5 | TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
6 |
7 | 1. Definitions.
8 |
9 | "License" shall mean the terms and conditions for use, reproduction,
10 | and distribution as defined by Sections 1 through 9 of this document.
11 |
12 | "Licensor" shall mean the copyright owner or entity authorized by
13 | the copyright owner that is granting the License.
14 |
15 | "Legal Entity" shall mean the union of the acting entity and all
16 | other entities that control, are controlled by, or are under common
17 | control with that entity. For the purposes of this definition,
18 | "control" means (i) the power, direct or indirect, to cause the
19 | direction or management of such entity, whether by contract or
20 | otherwise, or (ii) ownership of fifty percent (50%) or more of the
21 | outstanding shares, or (iii) beneficial ownership of such entity.
22 |
23 | "You" (or "Your") shall mean an individual or Legal Entity
24 | exercising permissions granted by this License.
25 |
26 | "Source" form shall mean the preferred form for making modifications,
27 | including but not limited to software source code, documentation
28 | source, and configuration files.
29 |
30 | "Object" form shall mean any form resulting from mechanical
31 | transformation or translation of a Source form, including but
32 | not limited to compiled object code, generated documentation,
33 | and conversions to other media types.
34 |
35 | "Work" shall mean the work of authorship, whether in Source or
36 | Object form, made available under the License, as indicated by a
37 | copyright notice that is included in or attached to the work
38 | (an example is provided in the Appendix below).
39 |
40 | "Derivative Works" shall mean any work, whether in Source or Object
41 | form, that is based on (or derived from) the Work and for which the
42 | editorial revisions, annotations, elaborations, or other modifications
43 | represent, as a whole, an original work of authorship. For the purposes
44 | of this License, Derivative Works shall not include works that remain
45 | separable from, or merely link (or bind by name) to the interfaces of,
46 | the Work and Derivative Works thereof.
47 |
48 | "Contribution" shall mean any work of authorship, including
49 | the original version of the Work and any modifications or additions
50 | to that Work or Derivative Works thereof, that is intentionally
51 | submitted to Licensor for inclusion in the Work by the copyright owner
52 | or by an individual or Legal Entity authorized to submit on behalf of
53 | the copyright owner. For the purposes of this definition, "submitted"
54 | means any form of electronic, verbal, or written communication sent
55 | to the Licensor or its representatives, including but not limited to
56 | communication on electronic mailing lists, source code control systems,
57 | and issue tracking systems that are managed by, or on behalf of, the
58 | Licensor for the purpose of discussing and improving the Work, but
59 | excluding communication that is conspicuously marked or otherwise
60 | designated in writing by the copyright owner as "Not a Contribution."
61 |
62 | "Contributor" shall mean Licensor and any individual or Legal Entity
63 | on behalf of whom a Contribution has been received by Licensor and
64 | subsequently incorporated within the Work.
65 |
66 | 2. Grant of Copyright License. Subject to the terms and conditions of
67 | this License, each Contributor hereby grants to You a perpetual,
68 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
69 | copyright license to reproduce, prepare Derivative Works of,
70 | publicly display, publicly perform, sublicense, and distribute the
71 | Work and such Derivative Works in Source or Object form.
72 |
73 | 3. Grant of Patent License. Subject to the terms and conditions of
74 | this License, each Contributor hereby grants to You a perpetual,
75 | worldwide, non-exclusive, no-charge, royalty-free, irrevocable
76 | (except as stated in this section) patent license to make, have made,
77 | use, offer to sell, sell, import, and otherwise transfer the Work,
78 | where such license applies only to those patent claims licensable
79 | by such Contributor that are necessarily infringed by their
80 | Contribution(s) alone or by combination of their Contribution(s)
81 | with the Work to which such Contribution(s) was submitted. If You
82 | institute patent litigation against any entity (including a
83 | cross-claim or counterclaim in a lawsuit) alleging that the Work
84 | or a Contribution incorporated within the Work constitutes direct
85 | or contributory patent infringement, then any patent licenses
86 | granted to You under this License for that Work shall terminate
87 | as of the date such litigation is filed.
88 |
89 | 4. Redistribution. You may reproduce and distribute copies of the
90 | Work or Derivative Works thereof in any medium, with or without
91 | modifications, and in Source or Object form, provided that You
92 | meet the following conditions:
93 |
94 | (a) You must give any other recipients of the Work or
95 | Derivative Works a copy of this License; and
96 |
97 | (b) You must cause any modified files to carry prominent notices
98 | stating that You changed the files; and
99 |
100 | (c) You must retain, in the Source form of any Derivative Works
101 | that You distribute, all copyright, patent, trademark, and
102 | attribution notices from the Source form of the Work,
103 | excluding those notices that do not pertain to any part of
104 | the Derivative Works; and
105 |
106 | (d) If the Work includes a "NOTICE" text file as part of its
107 | distribution, then any Derivative Works that You distribute must
108 | include a readable copy of the attribution notices contained
109 | within such NOTICE file, excluding those notices that do not
110 | pertain to any part of the Derivative Works, in at least one
111 | of the following places: within a NOTICE text file distributed
112 | as part of the Derivative Works; within the Source form or
113 | documentation, if provided along with the Derivative Works; or,
114 | within a display generated by the Derivative Works, if and
115 | wherever such third-party notices normally appear. The contents
116 | of the NOTICE file are for informational purposes only and
117 | do not modify the License. You may add Your own attribution
118 | notices within Derivative Works that You distribute, alongside
119 | or as an addendum to the NOTICE text from the Work, provided
120 | that such additional attribution notices cannot be construed
121 | as modifying the License.
122 |
123 | You may add Your own copyright statement to Your modifications and
124 | may provide additional or different license terms and conditions
125 | for use, reproduction, or distribution of Your modifications, or
126 | for any such Derivative Works as a whole, provided Your use,
127 | reproduction, and distribution of the Work otherwise complies with
128 | the conditions stated in this License.
129 |
130 | 5. Submission of Contributions. Unless You explicitly state otherwise,
131 | any Contribution intentionally submitted for inclusion in the Work
132 | by You to the Licensor shall be under the terms and conditions of
133 | this License, without any additional terms or conditions.
134 | Notwithstanding the above, nothing herein shall supersede or modify
135 | the terms of any separate license agreement you may have executed
136 | with Licensor regarding such Contributions.
137 |
138 | 6. Trademarks. This License does not grant permission to use the trade
139 | names, trademarks, service marks, or product names of the Licensor,
140 | except as required for reasonable and customary use in describing the
141 | origin of the Work and reproducing the content of the NOTICE file.
142 |
143 | 7. Disclaimer of Warranty. Unless required by applicable law or
144 | agreed to in writing, Licensor provides the Work (and each
145 | Contributor provides its Contributions) on an "AS IS" BASIS,
146 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
147 | implied, including, without limitation, any warranties or conditions
148 | of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
149 | PARTICULAR PURPOSE. You are solely responsible for determining the
150 | appropriateness of using or redistributing the Work and assume any
151 | risks associated with Your exercise of permissions under this License.
152 |
153 | 8. Limitation of Liability. In no event and under no legal theory,
154 | whether in tort (including negligence), contract, or otherwise,
155 | unless required by applicable law (such as deliberate and grossly
156 | negligent acts) or agreed to in writing, shall any Contributor be
157 | liable to You for damages, including any direct, indirect, special,
158 | incidental, or consequential damages of any character arising as a
159 | result of this License or out of the use or inability to use the
160 | Work (including but not limited to damages for loss of goodwill,
161 | work stoppage, computer failure or malfunction, or any and all
162 | other commercial damages or losses), even if such Contributor
163 | has been advised of the possibility of such damages.
164 |
165 | 9. Accepting Warranty or Additional Liability. While redistributing
166 | the Work or Derivative Works thereof, You may choose to offer,
167 | and charge a fee for, acceptance of support, warranty, indemnity,
168 | or other liability obligations and/or rights consistent with this
169 | License. However, in accepting such obligations, You may act only
170 | on Your own behalf and on Your sole responsibility, not on behalf
171 | of any other Contributor, and only if You agree to indemnify,
172 | defend, and hold each Contributor harmless for any liability
173 | incurred by, or claims asserted against, such Contributor by reason
174 | of your accepting any such warranty or additional liability.
175 |
176 | END OF TERMS AND CONDITIONS
177 |
--------------------------------------------------------------------------------
/composer.lock:
--------------------------------------------------------------------------------
1 | {
2 | "_readme": [
3 | "This file locks the dependencies of your project to a known state",
4 | "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
5 | "This file is @generated automatically"
6 | ],
7 | "content-hash": "f7e90e61a777e2e01be35ab0380d1004",
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.10.0",
151 | "source": {
152 | "type": "git",
153 | "url": "https://github.com/ezyang/htmlpurifier.git",
154 | "reference": "d85d39da4576a6934b72480be6978fb10c860021"
155 | },
156 | "dist": {
157 | "type": "zip",
158 | "url": "https://api.github.com/repos/ezyang/htmlpurifier/zipball/d85d39da4576a6934b72480be6978fb10c860021",
159 | "reference": "d85d39da4576a6934b72480be6978fb10c860021",
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": "2018-02-23T01:58:20+00:00"
194 | },
195 | {
196 | "name": "yiisoft/yii2",
197 | "version": "2.0.15.1",
198 | "source": {
199 | "type": "git",
200 | "url": "https://github.com/yiisoft/yii2-framework.git",
201 | "reference": "ed3a9e1c4abe206e1c3ce48a6b3624119b79850d"
202 | },
203 | "dist": {
204 | "type": "zip",
205 | "url": "https://api.github.com/repos/yiisoft/yii2-framework/zipball/ed3a9e1c4abe206e1c3ce48a6b3624119b79850d",
206 | "reference": "ed3a9e1c4abe206e1c3ce48a6b3624119b79850d",
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": "2018-03-21T18:36:53+00:00"
294 | },
295 | {
296 | "name": "yiisoft/yii2-composer",
297 | "version": "2.0.6",
298 | "source": {
299 | "type": "git",
300 | "url": "https://github.com/yiisoft/yii2-composer.git",
301 | "reference": "163419f1f197e02f015713b0d4f85598d8f8aa80"
302 | },
303 | "dist": {
304 | "type": "zip",
305 | "url": "https://api.github.com/repos/yiisoft/yii2-composer/zipball/163419f1f197e02f015713b0d4f85598d8f8aa80",
306 | "reference": "163419f1f197e02f015713b0d4f85598d8f8aa80",
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 | "name": "Carsten Brandt",
338 | "email": "mail@cebe.cc"
339 | }
340 | ],
341 | "description": "The composer plugin for Yii extension installer",
342 | "keywords": [
343 | "composer",
344 | "extension installer",
345 | "yii2"
346 | ],
347 | "time": "2018-03-21T16:15:55+00:00"
348 | }
349 | ],
350 | "packages-dev": [
351 | {
352 | "name": "doctrine/instantiator",
353 | "version": "1.1.0",
354 | "source": {
355 | "type": "git",
356 | "url": "https://github.com/doctrine/instantiator.git",
357 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda"
358 | },
359 | "dist": {
360 | "type": "zip",
361 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
362 | "reference": "185b8868aa9bf7159f5f953ed5afb2d7fcdc3bda",
363 | "shasum": ""
364 | },
365 | "require": {
366 | "php": "^7.1"
367 | },
368 | "require-dev": {
369 | "athletic/athletic": "~0.1.8",
370 | "ext-pdo": "*",
371 | "ext-phar": "*",
372 | "phpunit/phpunit": "^6.2.3",
373 | "squizlabs/php_codesniffer": "^3.0.2"
374 | },
375 | "type": "library",
376 | "extra": {
377 | "branch-alias": {
378 | "dev-master": "1.2.x-dev"
379 | }
380 | },
381 | "autoload": {
382 | "psr-4": {
383 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/"
384 | }
385 | },
386 | "notification-url": "https://packagist.org/downloads/",
387 | "license": [
388 | "MIT"
389 | ],
390 | "authors": [
391 | {
392 | "name": "Marco Pivetta",
393 | "email": "ocramius@gmail.com",
394 | "homepage": "http://ocramius.github.com/"
395 | }
396 | ],
397 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
398 | "homepage": "https://github.com/doctrine/instantiator",
399 | "keywords": [
400 | "constructor",
401 | "instantiate"
402 | ],
403 | "time": "2017-07-22T11:58:36+00:00"
404 | },
405 | {
406 | "name": "myclabs/deep-copy",
407 | "version": "1.7.0",
408 | "source": {
409 | "type": "git",
410 | "url": "https://github.com/myclabs/DeepCopy.git",
411 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e"
412 | },
413 | "dist": {
414 | "type": "zip",
415 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
416 | "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e",
417 | "shasum": ""
418 | },
419 | "require": {
420 | "php": "^5.6 || ^7.0"
421 | },
422 | "require-dev": {
423 | "doctrine/collections": "^1.0",
424 | "doctrine/common": "^2.6",
425 | "phpunit/phpunit": "^4.1"
426 | },
427 | "type": "library",
428 | "autoload": {
429 | "psr-4": {
430 | "DeepCopy\\": "src/DeepCopy/"
431 | },
432 | "files": [
433 | "src/DeepCopy/deep_copy.php"
434 | ]
435 | },
436 | "notification-url": "https://packagist.org/downloads/",
437 | "license": [
438 | "MIT"
439 | ],
440 | "description": "Create deep copies (clones) of your objects",
441 | "keywords": [
442 | "clone",
443 | "copy",
444 | "duplicate",
445 | "object",
446 | "object graph"
447 | ],
448 | "time": "2017-10-19T19:58:43+00:00"
449 | },
450 | {
451 | "name": "phar-io/manifest",
452 | "version": "1.0.1",
453 | "source": {
454 | "type": "git",
455 | "url": "https://github.com/phar-io/manifest.git",
456 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0"
457 | },
458 | "dist": {
459 | "type": "zip",
460 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/2df402786ab5368a0169091f61a7c1e0eb6852d0",
461 | "reference": "2df402786ab5368a0169091f61a7c1e0eb6852d0",
462 | "shasum": ""
463 | },
464 | "require": {
465 | "ext-dom": "*",
466 | "ext-phar": "*",
467 | "phar-io/version": "^1.0.1",
468 | "php": "^5.6 || ^7.0"
469 | },
470 | "type": "library",
471 | "extra": {
472 | "branch-alias": {
473 | "dev-master": "1.0.x-dev"
474 | }
475 | },
476 | "autoload": {
477 | "classmap": [
478 | "src/"
479 | ]
480 | },
481 | "notification-url": "https://packagist.org/downloads/",
482 | "license": [
483 | "BSD-3-Clause"
484 | ],
485 | "authors": [
486 | {
487 | "name": "Arne Blankerts",
488 | "email": "arne@blankerts.de",
489 | "role": "Developer"
490 | },
491 | {
492 | "name": "Sebastian Heuer",
493 | "email": "sebastian@phpeople.de",
494 | "role": "Developer"
495 | },
496 | {
497 | "name": "Sebastian Bergmann",
498 | "email": "sebastian@phpunit.de",
499 | "role": "Developer"
500 | }
501 | ],
502 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)",
503 | "time": "2017-03-05T18:14:27+00:00"
504 | },
505 | {
506 | "name": "phar-io/version",
507 | "version": "1.0.1",
508 | "source": {
509 | "type": "git",
510 | "url": "https://github.com/phar-io/version.git",
511 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df"
512 | },
513 | "dist": {
514 | "type": "zip",
515 | "url": "https://api.github.com/repos/phar-io/version/zipball/a70c0ced4be299a63d32fa96d9281d03e94041df",
516 | "reference": "a70c0ced4be299a63d32fa96d9281d03e94041df",
517 | "shasum": ""
518 | },
519 | "require": {
520 | "php": "^5.6 || ^7.0"
521 | },
522 | "type": "library",
523 | "autoload": {
524 | "classmap": [
525 | "src/"
526 | ]
527 | },
528 | "notification-url": "https://packagist.org/downloads/",
529 | "license": [
530 | "BSD-3-Clause"
531 | ],
532 | "authors": [
533 | {
534 | "name": "Arne Blankerts",
535 | "email": "arne@blankerts.de",
536 | "role": "Developer"
537 | },
538 | {
539 | "name": "Sebastian Heuer",
540 | "email": "sebastian@phpeople.de",
541 | "role": "Developer"
542 | },
543 | {
544 | "name": "Sebastian Bergmann",
545 | "email": "sebastian@phpunit.de",
546 | "role": "Developer"
547 | }
548 | ],
549 | "description": "Library for handling version information and constraints",
550 | "time": "2017-03-05T17:38:23+00:00"
551 | },
552 | {
553 | "name": "phpdocumentor/reflection-common",
554 | "version": "1.0.1",
555 | "source": {
556 | "type": "git",
557 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git",
558 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6"
559 | },
560 | "dist": {
561 | "type": "zip",
562 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
563 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6",
564 | "shasum": ""
565 | },
566 | "require": {
567 | "php": ">=5.5"
568 | },
569 | "require-dev": {
570 | "phpunit/phpunit": "^4.6"
571 | },
572 | "type": "library",
573 | "extra": {
574 | "branch-alias": {
575 | "dev-master": "1.0.x-dev"
576 | }
577 | },
578 | "autoload": {
579 | "psr-4": {
580 | "phpDocumentor\\Reflection\\": [
581 | "src"
582 | ]
583 | }
584 | },
585 | "notification-url": "https://packagist.org/downloads/",
586 | "license": [
587 | "MIT"
588 | ],
589 | "authors": [
590 | {
591 | "name": "Jaap van Otterdijk",
592 | "email": "opensource@ijaap.nl"
593 | }
594 | ],
595 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure",
596 | "homepage": "http://www.phpdoc.org",
597 | "keywords": [
598 | "FQSEN",
599 | "phpDocumentor",
600 | "phpdoc",
601 | "reflection",
602 | "static analysis"
603 | ],
604 | "time": "2017-09-11T18:02:19+00:00"
605 | },
606 | {
607 | "name": "phpdocumentor/reflection-docblock",
608 | "version": "4.3.0",
609 | "source": {
610 | "type": "git",
611 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
612 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08"
613 | },
614 | "dist": {
615 | "type": "zip",
616 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08",
617 | "reference": "94fd0001232e47129dd3504189fa1c7225010d08",
618 | "shasum": ""
619 | },
620 | "require": {
621 | "php": "^7.0",
622 | "phpdocumentor/reflection-common": "^1.0.0",
623 | "phpdocumentor/type-resolver": "^0.4.0",
624 | "webmozart/assert": "^1.0"
625 | },
626 | "require-dev": {
627 | "doctrine/instantiator": "~1.0.5",
628 | "mockery/mockery": "^1.0",
629 | "phpunit/phpunit": "^6.4"
630 | },
631 | "type": "library",
632 | "extra": {
633 | "branch-alias": {
634 | "dev-master": "4.x-dev"
635 | }
636 | },
637 | "autoload": {
638 | "psr-4": {
639 | "phpDocumentor\\Reflection\\": [
640 | "src/"
641 | ]
642 | }
643 | },
644 | "notification-url": "https://packagist.org/downloads/",
645 | "license": [
646 | "MIT"
647 | ],
648 | "authors": [
649 | {
650 | "name": "Mike van Riel",
651 | "email": "me@mikevanriel.com"
652 | }
653 | ],
654 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
655 | "time": "2017-11-30T07:14:17+00:00"
656 | },
657 | {
658 | "name": "phpdocumentor/type-resolver",
659 | "version": "0.4.0",
660 | "source": {
661 | "type": "git",
662 | "url": "https://github.com/phpDocumentor/TypeResolver.git",
663 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7"
664 | },
665 | "dist": {
666 | "type": "zip",
667 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7",
668 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7",
669 | "shasum": ""
670 | },
671 | "require": {
672 | "php": "^5.5 || ^7.0",
673 | "phpdocumentor/reflection-common": "^1.0"
674 | },
675 | "require-dev": {
676 | "mockery/mockery": "^0.9.4",
677 | "phpunit/phpunit": "^5.2||^4.8.24"
678 | },
679 | "type": "library",
680 | "extra": {
681 | "branch-alias": {
682 | "dev-master": "1.0.x-dev"
683 | }
684 | },
685 | "autoload": {
686 | "psr-4": {
687 | "phpDocumentor\\Reflection\\": [
688 | "src/"
689 | ]
690 | }
691 | },
692 | "notification-url": "https://packagist.org/downloads/",
693 | "license": [
694 | "MIT"
695 | ],
696 | "authors": [
697 | {
698 | "name": "Mike van Riel",
699 | "email": "me@mikevanriel.com"
700 | }
701 | ],
702 | "time": "2017-07-14T14:27:02+00:00"
703 | },
704 | {
705 | "name": "phpspec/prophecy",
706 | "version": "1.7.6",
707 | "source": {
708 | "type": "git",
709 | "url": "https://github.com/phpspec/prophecy.git",
710 | "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712"
711 | },
712 | "dist": {
713 | "type": "zip",
714 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
715 | "reference": "33a7e3c4fda54e912ff6338c48823bd5c0f0b712",
716 | "shasum": ""
717 | },
718 | "require": {
719 | "doctrine/instantiator": "^1.0.2",
720 | "php": "^5.3|^7.0",
721 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0",
722 | "sebastian/comparator": "^1.1|^2.0|^3.0",
723 | "sebastian/recursion-context": "^1.0|^2.0|^3.0"
724 | },
725 | "require-dev": {
726 | "phpspec/phpspec": "^2.5|^3.2",
727 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5"
728 | },
729 | "type": "library",
730 | "extra": {
731 | "branch-alias": {
732 | "dev-master": "1.7.x-dev"
733 | }
734 | },
735 | "autoload": {
736 | "psr-0": {
737 | "Prophecy\\": "src/"
738 | }
739 | },
740 | "notification-url": "https://packagist.org/downloads/",
741 | "license": [
742 | "MIT"
743 | ],
744 | "authors": [
745 | {
746 | "name": "Konstantin Kudryashov",
747 | "email": "ever.zet@gmail.com",
748 | "homepage": "http://everzet.com"
749 | },
750 | {
751 | "name": "Marcello Duarte",
752 | "email": "marcello.duarte@gmail.com"
753 | }
754 | ],
755 | "description": "Highly opinionated mocking framework for PHP 5.3+",
756 | "homepage": "https://github.com/phpspec/prophecy",
757 | "keywords": [
758 | "Double",
759 | "Dummy",
760 | "fake",
761 | "mock",
762 | "spy",
763 | "stub"
764 | ],
765 | "time": "2018-04-18T13:57:24+00:00"
766 | },
767 | {
768 | "name": "phpunit/php-code-coverage",
769 | "version": "5.3.2",
770 | "source": {
771 | "type": "git",
772 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
773 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac"
774 | },
775 | "dist": {
776 | "type": "zip",
777 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac",
778 | "reference": "c89677919c5dd6d3b3852f230a663118762218ac",
779 | "shasum": ""
780 | },
781 | "require": {
782 | "ext-dom": "*",
783 | "ext-xmlwriter": "*",
784 | "php": "^7.0",
785 | "phpunit/php-file-iterator": "^1.4.2",
786 | "phpunit/php-text-template": "^1.2.1",
787 | "phpunit/php-token-stream": "^2.0.1",
788 | "sebastian/code-unit-reverse-lookup": "^1.0.1",
789 | "sebastian/environment": "^3.0",
790 | "sebastian/version": "^2.0.1",
791 | "theseer/tokenizer": "^1.1"
792 | },
793 | "require-dev": {
794 | "phpunit/phpunit": "^6.0"
795 | },
796 | "suggest": {
797 | "ext-xdebug": "^2.5.5"
798 | },
799 | "type": "library",
800 | "extra": {
801 | "branch-alias": {
802 | "dev-master": "5.3.x-dev"
803 | }
804 | },
805 | "autoload": {
806 | "classmap": [
807 | "src/"
808 | ]
809 | },
810 | "notification-url": "https://packagist.org/downloads/",
811 | "license": [
812 | "BSD-3-Clause"
813 | ],
814 | "authors": [
815 | {
816 | "name": "Sebastian Bergmann",
817 | "email": "sebastian@phpunit.de",
818 | "role": "lead"
819 | }
820 | ],
821 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.",
822 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage",
823 | "keywords": [
824 | "coverage",
825 | "testing",
826 | "xunit"
827 | ],
828 | "time": "2018-04-06T15:36:58+00:00"
829 | },
830 | {
831 | "name": "phpunit/php-file-iterator",
832 | "version": "1.4.5",
833 | "source": {
834 | "type": "git",
835 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
836 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4"
837 | },
838 | "dist": {
839 | "type": "zip",
840 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4",
841 | "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4",
842 | "shasum": ""
843 | },
844 | "require": {
845 | "php": ">=5.3.3"
846 | },
847 | "type": "library",
848 | "extra": {
849 | "branch-alias": {
850 | "dev-master": "1.4.x-dev"
851 | }
852 | },
853 | "autoload": {
854 | "classmap": [
855 | "src/"
856 | ]
857 | },
858 | "notification-url": "https://packagist.org/downloads/",
859 | "license": [
860 | "BSD-3-Clause"
861 | ],
862 | "authors": [
863 | {
864 | "name": "Sebastian Bergmann",
865 | "email": "sb@sebastian-bergmann.de",
866 | "role": "lead"
867 | }
868 | ],
869 | "description": "FilterIterator implementation that filters files based on a list of suffixes.",
870 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
871 | "keywords": [
872 | "filesystem",
873 | "iterator"
874 | ],
875 | "time": "2017-11-27T13:52:08+00:00"
876 | },
877 | {
878 | "name": "phpunit/php-text-template",
879 | "version": "1.2.1",
880 | "source": {
881 | "type": "git",
882 | "url": "https://github.com/sebastianbergmann/php-text-template.git",
883 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686"
884 | },
885 | "dist": {
886 | "type": "zip",
887 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
888 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686",
889 | "shasum": ""
890 | },
891 | "require": {
892 | "php": ">=5.3.3"
893 | },
894 | "type": "library",
895 | "autoload": {
896 | "classmap": [
897 | "src/"
898 | ]
899 | },
900 | "notification-url": "https://packagist.org/downloads/",
901 | "license": [
902 | "BSD-3-Clause"
903 | ],
904 | "authors": [
905 | {
906 | "name": "Sebastian Bergmann",
907 | "email": "sebastian@phpunit.de",
908 | "role": "lead"
909 | }
910 | ],
911 | "description": "Simple template engine.",
912 | "homepage": "https://github.com/sebastianbergmann/php-text-template/",
913 | "keywords": [
914 | "template"
915 | ],
916 | "time": "2015-06-21T13:50:34+00:00"
917 | },
918 | {
919 | "name": "phpunit/php-timer",
920 | "version": "1.0.9",
921 | "source": {
922 | "type": "git",
923 | "url": "https://github.com/sebastianbergmann/php-timer.git",
924 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f"
925 | },
926 | "dist": {
927 | "type": "zip",
928 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
929 | "reference": "3dcf38ca72b158baf0bc245e9184d3fdffa9c46f",
930 | "shasum": ""
931 | },
932 | "require": {
933 | "php": "^5.3.3 || ^7.0"
934 | },
935 | "require-dev": {
936 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0"
937 | },
938 | "type": "library",
939 | "extra": {
940 | "branch-alias": {
941 | "dev-master": "1.0-dev"
942 | }
943 | },
944 | "autoload": {
945 | "classmap": [
946 | "src/"
947 | ]
948 | },
949 | "notification-url": "https://packagist.org/downloads/",
950 | "license": [
951 | "BSD-3-Clause"
952 | ],
953 | "authors": [
954 | {
955 | "name": "Sebastian Bergmann",
956 | "email": "sb@sebastian-bergmann.de",
957 | "role": "lead"
958 | }
959 | ],
960 | "description": "Utility class for timing",
961 | "homepage": "https://github.com/sebastianbergmann/php-timer/",
962 | "keywords": [
963 | "timer"
964 | ],
965 | "time": "2017-02-26T11:10:40+00:00"
966 | },
967 | {
968 | "name": "phpunit/php-token-stream",
969 | "version": "2.0.2",
970 | "source": {
971 | "type": "git",
972 | "url": "https://github.com/sebastianbergmann/php-token-stream.git",
973 | "reference": "791198a2c6254db10131eecfe8c06670700904db"
974 | },
975 | "dist": {
976 | "type": "zip",
977 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db",
978 | "reference": "791198a2c6254db10131eecfe8c06670700904db",
979 | "shasum": ""
980 | },
981 | "require": {
982 | "ext-tokenizer": "*",
983 | "php": "^7.0"
984 | },
985 | "require-dev": {
986 | "phpunit/phpunit": "^6.2.4"
987 | },
988 | "type": "library",
989 | "extra": {
990 | "branch-alias": {
991 | "dev-master": "2.0-dev"
992 | }
993 | },
994 | "autoload": {
995 | "classmap": [
996 | "src/"
997 | ]
998 | },
999 | "notification-url": "https://packagist.org/downloads/",
1000 | "license": [
1001 | "BSD-3-Clause"
1002 | ],
1003 | "authors": [
1004 | {
1005 | "name": "Sebastian Bergmann",
1006 | "email": "sebastian@phpunit.de"
1007 | }
1008 | ],
1009 | "description": "Wrapper around PHP's tokenizer extension.",
1010 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
1011 | "keywords": [
1012 | "tokenizer"
1013 | ],
1014 | "time": "2017-11-27T05:48:46+00:00"
1015 | },
1016 | {
1017 | "name": "phpunit/phpunit",
1018 | "version": "6.5.8",
1019 | "source": {
1020 | "type": "git",
1021 | "url": "https://github.com/sebastianbergmann/phpunit.git",
1022 | "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b"
1023 | },
1024 | "dist": {
1025 | "type": "zip",
1026 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
1027 | "reference": "4f21a3c6b97c42952fd5c2837bb354ec0199b97b",
1028 | "shasum": ""
1029 | },
1030 | "require": {
1031 | "ext-dom": "*",
1032 | "ext-json": "*",
1033 | "ext-libxml": "*",
1034 | "ext-mbstring": "*",
1035 | "ext-xml": "*",
1036 | "myclabs/deep-copy": "^1.6.1",
1037 | "phar-io/manifest": "^1.0.1",
1038 | "phar-io/version": "^1.0",
1039 | "php": "^7.0",
1040 | "phpspec/prophecy": "^1.7",
1041 | "phpunit/php-code-coverage": "^5.3",
1042 | "phpunit/php-file-iterator": "^1.4.3",
1043 | "phpunit/php-text-template": "^1.2.1",
1044 | "phpunit/php-timer": "^1.0.9",
1045 | "phpunit/phpunit-mock-objects": "^5.0.5",
1046 | "sebastian/comparator": "^2.1",
1047 | "sebastian/diff": "^2.0",
1048 | "sebastian/environment": "^3.1",
1049 | "sebastian/exporter": "^3.1",
1050 | "sebastian/global-state": "^2.0",
1051 | "sebastian/object-enumerator": "^3.0.3",
1052 | "sebastian/resource-operations": "^1.0",
1053 | "sebastian/version": "^2.0.1"
1054 | },
1055 | "conflict": {
1056 | "phpdocumentor/reflection-docblock": "3.0.2",
1057 | "phpunit/dbunit": "<3.0"
1058 | },
1059 | "require-dev": {
1060 | "ext-pdo": "*"
1061 | },
1062 | "suggest": {
1063 | "ext-xdebug": "*",
1064 | "phpunit/php-invoker": "^1.1"
1065 | },
1066 | "bin": [
1067 | "phpunit"
1068 | ],
1069 | "type": "library",
1070 | "extra": {
1071 | "branch-alias": {
1072 | "dev-master": "6.5.x-dev"
1073 | }
1074 | },
1075 | "autoload": {
1076 | "classmap": [
1077 | "src/"
1078 | ]
1079 | },
1080 | "notification-url": "https://packagist.org/downloads/",
1081 | "license": [
1082 | "BSD-3-Clause"
1083 | ],
1084 | "authors": [
1085 | {
1086 | "name": "Sebastian Bergmann",
1087 | "email": "sebastian@phpunit.de",
1088 | "role": "lead"
1089 | }
1090 | ],
1091 | "description": "The PHP Unit Testing framework.",
1092 | "homepage": "https://phpunit.de/",
1093 | "keywords": [
1094 | "phpunit",
1095 | "testing",
1096 | "xunit"
1097 | ],
1098 | "time": "2018-04-10T11:38:34+00:00"
1099 | },
1100 | {
1101 | "name": "phpunit/phpunit-mock-objects",
1102 | "version": "5.0.6",
1103 | "source": {
1104 | "type": "git",
1105 | "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
1106 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf"
1107 | },
1108 | "dist": {
1109 | "type": "zip",
1110 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
1111 | "reference": "33fd41a76e746b8fa96d00b49a23dadfa8334cdf",
1112 | "shasum": ""
1113 | },
1114 | "require": {
1115 | "doctrine/instantiator": "^1.0.5",
1116 | "php": "^7.0",
1117 | "phpunit/php-text-template": "^1.2.1",
1118 | "sebastian/exporter": "^3.1"
1119 | },
1120 | "conflict": {
1121 | "phpunit/phpunit": "<6.0"
1122 | },
1123 | "require-dev": {
1124 | "phpunit/phpunit": "^6.5"
1125 | },
1126 | "suggest": {
1127 | "ext-soap": "*"
1128 | },
1129 | "type": "library",
1130 | "extra": {
1131 | "branch-alias": {
1132 | "dev-master": "5.0.x-dev"
1133 | }
1134 | },
1135 | "autoload": {
1136 | "classmap": [
1137 | "src/"
1138 | ]
1139 | },
1140 | "notification-url": "https://packagist.org/downloads/",
1141 | "license": [
1142 | "BSD-3-Clause"
1143 | ],
1144 | "authors": [
1145 | {
1146 | "name": "Sebastian Bergmann",
1147 | "email": "sebastian@phpunit.de",
1148 | "role": "lead"
1149 | }
1150 | ],
1151 | "description": "Mock Object library for PHPUnit",
1152 | "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
1153 | "keywords": [
1154 | "mock",
1155 | "xunit"
1156 | ],
1157 | "time": "2018-01-06T05:45:45+00:00"
1158 | },
1159 | {
1160 | "name": "sebastian/code-unit-reverse-lookup",
1161 | "version": "1.0.1",
1162 | "source": {
1163 | "type": "git",
1164 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
1165 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18"
1166 | },
1167 | "dist": {
1168 | "type": "zip",
1169 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1170 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18",
1171 | "shasum": ""
1172 | },
1173 | "require": {
1174 | "php": "^5.6 || ^7.0"
1175 | },
1176 | "require-dev": {
1177 | "phpunit/phpunit": "^5.7 || ^6.0"
1178 | },
1179 | "type": "library",
1180 | "extra": {
1181 | "branch-alias": {
1182 | "dev-master": "1.0.x-dev"
1183 | }
1184 | },
1185 | "autoload": {
1186 | "classmap": [
1187 | "src/"
1188 | ]
1189 | },
1190 | "notification-url": "https://packagist.org/downloads/",
1191 | "license": [
1192 | "BSD-3-Clause"
1193 | ],
1194 | "authors": [
1195 | {
1196 | "name": "Sebastian Bergmann",
1197 | "email": "sebastian@phpunit.de"
1198 | }
1199 | ],
1200 | "description": "Looks up which function or method a line of code belongs to",
1201 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/",
1202 | "time": "2017-03-04T06:30:41+00:00"
1203 | },
1204 | {
1205 | "name": "sebastian/comparator",
1206 | "version": "2.1.3",
1207 | "source": {
1208 | "type": "git",
1209 | "url": "https://github.com/sebastianbergmann/comparator.git",
1210 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9"
1211 | },
1212 | "dist": {
1213 | "type": "zip",
1214 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9",
1215 | "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9",
1216 | "shasum": ""
1217 | },
1218 | "require": {
1219 | "php": "^7.0",
1220 | "sebastian/diff": "^2.0 || ^3.0",
1221 | "sebastian/exporter": "^3.1"
1222 | },
1223 | "require-dev": {
1224 | "phpunit/phpunit": "^6.4"
1225 | },
1226 | "type": "library",
1227 | "extra": {
1228 | "branch-alias": {
1229 | "dev-master": "2.1.x-dev"
1230 | }
1231 | },
1232 | "autoload": {
1233 | "classmap": [
1234 | "src/"
1235 | ]
1236 | },
1237 | "notification-url": "https://packagist.org/downloads/",
1238 | "license": [
1239 | "BSD-3-Clause"
1240 | ],
1241 | "authors": [
1242 | {
1243 | "name": "Jeff Welch",
1244 | "email": "whatthejeff@gmail.com"
1245 | },
1246 | {
1247 | "name": "Volker Dusch",
1248 | "email": "github@wallbash.com"
1249 | },
1250 | {
1251 | "name": "Bernhard Schussek",
1252 | "email": "bschussek@2bepublished.at"
1253 | },
1254 | {
1255 | "name": "Sebastian Bergmann",
1256 | "email": "sebastian@phpunit.de"
1257 | }
1258 | ],
1259 | "description": "Provides the functionality to compare PHP values for equality",
1260 | "homepage": "https://github.com/sebastianbergmann/comparator",
1261 | "keywords": [
1262 | "comparator",
1263 | "compare",
1264 | "equality"
1265 | ],
1266 | "time": "2018-02-01T13:46:46+00:00"
1267 | },
1268 | {
1269 | "name": "sebastian/diff",
1270 | "version": "2.0.1",
1271 | "source": {
1272 | "type": "git",
1273 | "url": "https://github.com/sebastianbergmann/diff.git",
1274 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd"
1275 | },
1276 | "dist": {
1277 | "type": "zip",
1278 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1279 | "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd",
1280 | "shasum": ""
1281 | },
1282 | "require": {
1283 | "php": "^7.0"
1284 | },
1285 | "require-dev": {
1286 | "phpunit/phpunit": "^6.2"
1287 | },
1288 | "type": "library",
1289 | "extra": {
1290 | "branch-alias": {
1291 | "dev-master": "2.0-dev"
1292 | }
1293 | },
1294 | "autoload": {
1295 | "classmap": [
1296 | "src/"
1297 | ]
1298 | },
1299 | "notification-url": "https://packagist.org/downloads/",
1300 | "license": [
1301 | "BSD-3-Clause"
1302 | ],
1303 | "authors": [
1304 | {
1305 | "name": "Kore Nordmann",
1306 | "email": "mail@kore-nordmann.de"
1307 | },
1308 | {
1309 | "name": "Sebastian Bergmann",
1310 | "email": "sebastian@phpunit.de"
1311 | }
1312 | ],
1313 | "description": "Diff implementation",
1314 | "homepage": "https://github.com/sebastianbergmann/diff",
1315 | "keywords": [
1316 | "diff"
1317 | ],
1318 | "time": "2017-08-03T08:09:46+00:00"
1319 | },
1320 | {
1321 | "name": "sebastian/environment",
1322 | "version": "3.1.0",
1323 | "source": {
1324 | "type": "git",
1325 | "url": "https://github.com/sebastianbergmann/environment.git",
1326 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5"
1327 | },
1328 | "dist": {
1329 | "type": "zip",
1330 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1331 | "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5",
1332 | "shasum": ""
1333 | },
1334 | "require": {
1335 | "php": "^7.0"
1336 | },
1337 | "require-dev": {
1338 | "phpunit/phpunit": "^6.1"
1339 | },
1340 | "type": "library",
1341 | "extra": {
1342 | "branch-alias": {
1343 | "dev-master": "3.1.x-dev"
1344 | }
1345 | },
1346 | "autoload": {
1347 | "classmap": [
1348 | "src/"
1349 | ]
1350 | },
1351 | "notification-url": "https://packagist.org/downloads/",
1352 | "license": [
1353 | "BSD-3-Clause"
1354 | ],
1355 | "authors": [
1356 | {
1357 | "name": "Sebastian Bergmann",
1358 | "email": "sebastian@phpunit.de"
1359 | }
1360 | ],
1361 | "description": "Provides functionality to handle HHVM/PHP environments",
1362 | "homepage": "http://www.github.com/sebastianbergmann/environment",
1363 | "keywords": [
1364 | "Xdebug",
1365 | "environment",
1366 | "hhvm"
1367 | ],
1368 | "time": "2017-07-01T08:51:00+00:00"
1369 | },
1370 | {
1371 | "name": "sebastian/exporter",
1372 | "version": "3.1.0",
1373 | "source": {
1374 | "type": "git",
1375 | "url": "https://github.com/sebastianbergmann/exporter.git",
1376 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937"
1377 | },
1378 | "dist": {
1379 | "type": "zip",
1380 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937",
1381 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937",
1382 | "shasum": ""
1383 | },
1384 | "require": {
1385 | "php": "^7.0",
1386 | "sebastian/recursion-context": "^3.0"
1387 | },
1388 | "require-dev": {
1389 | "ext-mbstring": "*",
1390 | "phpunit/phpunit": "^6.0"
1391 | },
1392 | "type": "library",
1393 | "extra": {
1394 | "branch-alias": {
1395 | "dev-master": "3.1.x-dev"
1396 | }
1397 | },
1398 | "autoload": {
1399 | "classmap": [
1400 | "src/"
1401 | ]
1402 | },
1403 | "notification-url": "https://packagist.org/downloads/",
1404 | "license": [
1405 | "BSD-3-Clause"
1406 | ],
1407 | "authors": [
1408 | {
1409 | "name": "Jeff Welch",
1410 | "email": "whatthejeff@gmail.com"
1411 | },
1412 | {
1413 | "name": "Volker Dusch",
1414 | "email": "github@wallbash.com"
1415 | },
1416 | {
1417 | "name": "Bernhard Schussek",
1418 | "email": "bschussek@2bepublished.at"
1419 | },
1420 | {
1421 | "name": "Sebastian Bergmann",
1422 | "email": "sebastian@phpunit.de"
1423 | },
1424 | {
1425 | "name": "Adam Harvey",
1426 | "email": "aharvey@php.net"
1427 | }
1428 | ],
1429 | "description": "Provides the functionality to export PHP variables for visualization",
1430 | "homepage": "http://www.github.com/sebastianbergmann/exporter",
1431 | "keywords": [
1432 | "export",
1433 | "exporter"
1434 | ],
1435 | "time": "2017-04-03T13:19:02+00:00"
1436 | },
1437 | {
1438 | "name": "sebastian/global-state",
1439 | "version": "2.0.0",
1440 | "source": {
1441 | "type": "git",
1442 | "url": "https://github.com/sebastianbergmann/global-state.git",
1443 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4"
1444 | },
1445 | "dist": {
1446 | "type": "zip",
1447 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1448 | "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4",
1449 | "shasum": ""
1450 | },
1451 | "require": {
1452 | "php": "^7.0"
1453 | },
1454 | "require-dev": {
1455 | "phpunit/phpunit": "^6.0"
1456 | },
1457 | "suggest": {
1458 | "ext-uopz": "*"
1459 | },
1460 | "type": "library",
1461 | "extra": {
1462 | "branch-alias": {
1463 | "dev-master": "2.0-dev"
1464 | }
1465 | },
1466 | "autoload": {
1467 | "classmap": [
1468 | "src/"
1469 | ]
1470 | },
1471 | "notification-url": "https://packagist.org/downloads/",
1472 | "license": [
1473 | "BSD-3-Clause"
1474 | ],
1475 | "authors": [
1476 | {
1477 | "name": "Sebastian Bergmann",
1478 | "email": "sebastian@phpunit.de"
1479 | }
1480 | ],
1481 | "description": "Snapshotting of global state",
1482 | "homepage": "http://www.github.com/sebastianbergmann/global-state",
1483 | "keywords": [
1484 | "global state"
1485 | ],
1486 | "time": "2017-04-27T15:39:26+00:00"
1487 | },
1488 | {
1489 | "name": "sebastian/object-enumerator",
1490 | "version": "3.0.3",
1491 | "source": {
1492 | "type": "git",
1493 | "url": "https://github.com/sebastianbergmann/object-enumerator.git",
1494 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5"
1495 | },
1496 | "dist": {
1497 | "type": "zip",
1498 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1499 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5",
1500 | "shasum": ""
1501 | },
1502 | "require": {
1503 | "php": "^7.0",
1504 | "sebastian/object-reflector": "^1.1.1",
1505 | "sebastian/recursion-context": "^3.0"
1506 | },
1507 | "require-dev": {
1508 | "phpunit/phpunit": "^6.0"
1509 | },
1510 | "type": "library",
1511 | "extra": {
1512 | "branch-alias": {
1513 | "dev-master": "3.0.x-dev"
1514 | }
1515 | },
1516 | "autoload": {
1517 | "classmap": [
1518 | "src/"
1519 | ]
1520 | },
1521 | "notification-url": "https://packagist.org/downloads/",
1522 | "license": [
1523 | "BSD-3-Clause"
1524 | ],
1525 | "authors": [
1526 | {
1527 | "name": "Sebastian Bergmann",
1528 | "email": "sebastian@phpunit.de"
1529 | }
1530 | ],
1531 | "description": "Traverses array structures and object graphs to enumerate all referenced objects",
1532 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/",
1533 | "time": "2017-08-03T12:35:26+00:00"
1534 | },
1535 | {
1536 | "name": "sebastian/object-reflector",
1537 | "version": "1.1.1",
1538 | "source": {
1539 | "type": "git",
1540 | "url": "https://github.com/sebastianbergmann/object-reflector.git",
1541 | "reference": "773f97c67f28de00d397be301821b06708fca0be"
1542 | },
1543 | "dist": {
1544 | "type": "zip",
1545 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be",
1546 | "reference": "773f97c67f28de00d397be301821b06708fca0be",
1547 | "shasum": ""
1548 | },
1549 | "require": {
1550 | "php": "^7.0"
1551 | },
1552 | "require-dev": {
1553 | "phpunit/phpunit": "^6.0"
1554 | },
1555 | "type": "library",
1556 | "extra": {
1557 | "branch-alias": {
1558 | "dev-master": "1.1-dev"
1559 | }
1560 | },
1561 | "autoload": {
1562 | "classmap": [
1563 | "src/"
1564 | ]
1565 | },
1566 | "notification-url": "https://packagist.org/downloads/",
1567 | "license": [
1568 | "BSD-3-Clause"
1569 | ],
1570 | "authors": [
1571 | {
1572 | "name": "Sebastian Bergmann",
1573 | "email": "sebastian@phpunit.de"
1574 | }
1575 | ],
1576 | "description": "Allows reflection of object attributes, including inherited and non-public ones",
1577 | "homepage": "https://github.com/sebastianbergmann/object-reflector/",
1578 | "time": "2017-03-29T09:07:27+00:00"
1579 | },
1580 | {
1581 | "name": "sebastian/recursion-context",
1582 | "version": "3.0.0",
1583 | "source": {
1584 | "type": "git",
1585 | "url": "https://github.com/sebastianbergmann/recursion-context.git",
1586 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8"
1587 | },
1588 | "dist": {
1589 | "type": "zip",
1590 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1591 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8",
1592 | "shasum": ""
1593 | },
1594 | "require": {
1595 | "php": "^7.0"
1596 | },
1597 | "require-dev": {
1598 | "phpunit/phpunit": "^6.0"
1599 | },
1600 | "type": "library",
1601 | "extra": {
1602 | "branch-alias": {
1603 | "dev-master": "3.0.x-dev"
1604 | }
1605 | },
1606 | "autoload": {
1607 | "classmap": [
1608 | "src/"
1609 | ]
1610 | },
1611 | "notification-url": "https://packagist.org/downloads/",
1612 | "license": [
1613 | "BSD-3-Clause"
1614 | ],
1615 | "authors": [
1616 | {
1617 | "name": "Jeff Welch",
1618 | "email": "whatthejeff@gmail.com"
1619 | },
1620 | {
1621 | "name": "Sebastian Bergmann",
1622 | "email": "sebastian@phpunit.de"
1623 | },
1624 | {
1625 | "name": "Adam Harvey",
1626 | "email": "aharvey@php.net"
1627 | }
1628 | ],
1629 | "description": "Provides functionality to recursively process PHP variables",
1630 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context",
1631 | "time": "2017-03-03T06:23:57+00:00"
1632 | },
1633 | {
1634 | "name": "sebastian/resource-operations",
1635 | "version": "1.0.0",
1636 | "source": {
1637 | "type": "git",
1638 | "url": "https://github.com/sebastianbergmann/resource-operations.git",
1639 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52"
1640 | },
1641 | "dist": {
1642 | "type": "zip",
1643 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1644 | "reference": "ce990bb21759f94aeafd30209e8cfcdfa8bc3f52",
1645 | "shasum": ""
1646 | },
1647 | "require": {
1648 | "php": ">=5.6.0"
1649 | },
1650 | "type": "library",
1651 | "extra": {
1652 | "branch-alias": {
1653 | "dev-master": "1.0.x-dev"
1654 | }
1655 | },
1656 | "autoload": {
1657 | "classmap": [
1658 | "src/"
1659 | ]
1660 | },
1661 | "notification-url": "https://packagist.org/downloads/",
1662 | "license": [
1663 | "BSD-3-Clause"
1664 | ],
1665 | "authors": [
1666 | {
1667 | "name": "Sebastian Bergmann",
1668 | "email": "sebastian@phpunit.de"
1669 | }
1670 | ],
1671 | "description": "Provides a list of PHP built-in functions that operate on resources",
1672 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations",
1673 | "time": "2015-07-28T20:34:47+00:00"
1674 | },
1675 | {
1676 | "name": "sebastian/version",
1677 | "version": "2.0.1",
1678 | "source": {
1679 | "type": "git",
1680 | "url": "https://github.com/sebastianbergmann/version.git",
1681 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019"
1682 | },
1683 | "dist": {
1684 | "type": "zip",
1685 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019",
1686 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019",
1687 | "shasum": ""
1688 | },
1689 | "require": {
1690 | "php": ">=5.6"
1691 | },
1692 | "type": "library",
1693 | "extra": {
1694 | "branch-alias": {
1695 | "dev-master": "2.0.x-dev"
1696 | }
1697 | },
1698 | "autoload": {
1699 | "classmap": [
1700 | "src/"
1701 | ]
1702 | },
1703 | "notification-url": "https://packagist.org/downloads/",
1704 | "license": [
1705 | "BSD-3-Clause"
1706 | ],
1707 | "authors": [
1708 | {
1709 | "name": "Sebastian Bergmann",
1710 | "email": "sebastian@phpunit.de",
1711 | "role": "lead"
1712 | }
1713 | ],
1714 | "description": "Library that helps with managing the version number of Git-hosted PHP projects",
1715 | "homepage": "https://github.com/sebastianbergmann/version",
1716 | "time": "2016-10-03T07:35:21+00:00"
1717 | },
1718 | {
1719 | "name": "theseer/tokenizer",
1720 | "version": "1.1.0",
1721 | "source": {
1722 | "type": "git",
1723 | "url": "https://github.com/theseer/tokenizer.git",
1724 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b"
1725 | },
1726 | "dist": {
1727 | "type": "zip",
1728 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b",
1729 | "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b",
1730 | "shasum": ""
1731 | },
1732 | "require": {
1733 | "ext-dom": "*",
1734 | "ext-tokenizer": "*",
1735 | "ext-xmlwriter": "*",
1736 | "php": "^7.0"
1737 | },
1738 | "type": "library",
1739 | "autoload": {
1740 | "classmap": [
1741 | "src/"
1742 | ]
1743 | },
1744 | "notification-url": "https://packagist.org/downloads/",
1745 | "license": [
1746 | "BSD-3-Clause"
1747 | ],
1748 | "authors": [
1749 | {
1750 | "name": "Arne Blankerts",
1751 | "email": "arne@blankerts.de",
1752 | "role": "Developer"
1753 | }
1754 | ],
1755 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats",
1756 | "time": "2017-04-07T12:08:54+00:00"
1757 | },
1758 | {
1759 | "name": "webmozart/assert",
1760 | "version": "1.3.0",
1761 | "source": {
1762 | "type": "git",
1763 | "url": "https://github.com/webmozart/assert.git",
1764 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a"
1765 | },
1766 | "dist": {
1767 | "type": "zip",
1768 | "url": "https://api.github.com/repos/webmozart/assert/zipball/0df1908962e7a3071564e857d86874dad1ef204a",
1769 | "reference": "0df1908962e7a3071564e857d86874dad1ef204a",
1770 | "shasum": ""
1771 | },
1772 | "require": {
1773 | "php": "^5.3.3 || ^7.0"
1774 | },
1775 | "require-dev": {
1776 | "phpunit/phpunit": "^4.6",
1777 | "sebastian/version": "^1.0.1"
1778 | },
1779 | "type": "library",
1780 | "extra": {
1781 | "branch-alias": {
1782 | "dev-master": "1.3-dev"
1783 | }
1784 | },
1785 | "autoload": {
1786 | "psr-4": {
1787 | "Webmozart\\Assert\\": "src/"
1788 | }
1789 | },
1790 | "notification-url": "https://packagist.org/downloads/",
1791 | "license": [
1792 | "MIT"
1793 | ],
1794 | "authors": [
1795 | {
1796 | "name": "Bernhard Schussek",
1797 | "email": "bschussek@gmail.com"
1798 | }
1799 | ],
1800 | "description": "Assertions to validate method input/output with nice error messages.",
1801 | "keywords": [
1802 | "assert",
1803 | "check",
1804 | "validate"
1805 | ],
1806 | "time": "2018-01-29T19:49:41+00:00"
1807 | }
1808 | ],
1809 | "aliases": [],
1810 | "minimum-stability": "stable",
1811 | "stability-flags": [],
1812 | "prefer-stable": false,
1813 | "prefer-lowest": false,
1814 | "platform": {
1815 | "php": ">=5.6"
1816 | },
1817 | "platform-dev": []
1818 | }
1819 |
--------------------------------------------------------------------------------