├── .gitignore ├── .syleci.yml ├── .travis.yml ├── CHANGELOG.md ├── CONTRIBUTING.md ├── LICENSE.md ├── composer.json ├── composer.lock ├── config └── reviewable.php ├── database └── migrations │ └── create_reviews_table.php.stub ├── phpunit.xml ├── readme.md ├── src ├── Contracts │ └── Review.php ├── LaravelReviewableServiceProvider.php ├── Models │ └── Review.php ├── ReviewFactory.php ├── Traits │ └── HasReviews.php └── helpers.php └── tests ├── ReviewableTest.php ├── TestCase.php └── User.php /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | /vendor -------------------------------------------------------------------------------- /.syleci.yml: -------------------------------------------------------------------------------- 1 | preset: laravel -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: php 2 | 3 | php: 4 | - 7.2 5 | - 7.3 6 | 7 | before_install: 8 | - sudo apt-get update 9 | - travis_retry composer self-update 10 | 11 | install: 12 | - travis_retry composer update --prefer-source 13 | 14 | script: 15 | - phpunit 16 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | # Change Log 2 | 3 | ## [v1.2.1](https://github.com/naoray/laravel-reviewable/tree/v1.2.1) (2019-06-10) 4 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.1.3...v1.2.1) 5 | 6 | **Implemented enhancements:** 7 | 8 | - Update for Laravel 5.8 usage [\#21](https://github.com/Naoray/laravel-reviewable/issues/21) 9 | 10 | **Merged pull requests:** 11 | 12 | - Update for laravel 5.8 usage [\#25](https://github.com/Naoray/laravel-reviewable/pull/25) ([Naoray](https://github.com/Naoray)) 13 | - Apply fixes from StyleCI [\#24](https://github.com/Naoray/laravel-reviewable/pull/24) ([Naoray](https://github.com/Naoray)) 14 | - Apply fixes from StyleCI [\#23](https://github.com/Naoray/laravel-reviewable/pull/23) ([Naoray](https://github.com/Naoray)) 15 | - bump license [\#20](https://github.com/Naoray/laravel-reviewable/pull/20) ([Naoray](https://github.com/Naoray)) 16 | 17 | ## [v1.1.3](https://github.com/naoray/laravel-reviewable/tree/v1.1.3) (2019-01-04) 18 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.0.6...v1.1.3) 19 | 20 | ## [v1.0.6](https://github.com/naoray/laravel-reviewable/tree/v1.0.6) (2019-01-04) 21 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.2.0...v1.0.6) 22 | 23 | ## [v1.2.0](https://github.com/naoray/laravel-reviewable/tree/v1.2.0) (2018-09-05) 24 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.0.4...v1.2.0) 25 | 26 | **Closed issues:** 27 | 28 | - \[How to\] Use a different custom Review model for each reviewable [\#16](https://github.com/Naoray/laravel-reviewable/issues/16) 29 | - Incorrect syntax for vendor:publish in readme [\#14](https://github.com/Naoray/laravel-reviewable/issues/14) 30 | 31 | **Merged pull requests:** 32 | 33 | - Version 1.2.0 [\#19](https://github.com/Naoray/laravel-reviewable/pull/19) ([Naoray](https://github.com/Naoray)) 34 | - Apply fixes from StyleCI [\#18](https://github.com/Naoray/laravel-reviewable/pull/18) ([Naoray](https://github.com/Naoray)) 35 | - Dev [\#17](https://github.com/Naoray/laravel-reviewable/pull/17) ([Naoray](https://github.com/Naoray)) 36 | - add missing double quotes to publish command - resolves \#14 [\#15](https://github.com/Naoray/laravel-reviewable/pull/15) ([Naoray](https://github.com/Naoray)) 37 | - Update Readme & Changelog [\#13](https://github.com/Naoray/laravel-reviewable/pull/13) ([Naoray](https://github.com/Naoray)) 38 | 39 | ## [v1.0.4](https://github.com/naoray/laravel-reviewable/tree/v1.0.4) (2018-03-13) 40 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.0.5...v1.0.4) 41 | 42 | **Merged pull requests:** 43 | 44 | - Bind Review Contract to Model [\#12](https://github.com/Naoray/laravel-reviewable/pull/12) ([Naoray](https://github.com/Naoray)) 45 | 46 | ## [v1.0.5](https://github.com/naoray/laravel-reviewable/tree/v1.0.5) (2018-03-13) 47 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.1.2...v1.0.5) 48 | 49 | ## [v1.1.2](https://github.com/naoray/laravel-reviewable/tree/v1.1.2) (2018-03-13) 50 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.1.1...v1.1.2) 51 | 52 | **Merged pull requests:** 53 | 54 | - Apply fixes from StyleCI [\#11](https://github.com/Naoray/laravel-reviewable/pull/11) ([Naoray](https://github.com/Naoray)) 55 | - Apply fixes from StyleCI [\#10](https://github.com/Naoray/laravel-reviewable/pull/10) ([Naoray](https://github.com/Naoray)) 56 | - Apply fixes from StyleCI [\#9](https://github.com/Naoray/laravel-reviewable/pull/9) ([Naoray](https://github.com/Naoray)) 57 | - fix typo in readme [\#8](https://github.com/Naoray/laravel-reviewable/pull/8) ([Naoray](https://github.com/Naoray)) 58 | - fix config publish typo [\#7](https://github.com/Naoray/laravel-reviewable/pull/7) ([Naoray](https://github.com/Naoray)) 59 | 60 | ## [v1.1.1](https://github.com/naoray/laravel-reviewable/tree/v1.1.1) (2018-02-26) 61 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.0.3...v1.1.1) 62 | 63 | ## [v1.0.3](https://github.com/naoray/laravel-reviewable/tree/v1.0.3) (2018-02-26) 64 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.0.2...v1.0.3) 65 | 66 | **Merged pull requests:** 67 | 68 | - update readme [\#6](https://github.com/Naoray/laravel-reviewable/pull/6) ([Naoray](https://github.com/Naoray)) 69 | 70 | ## [v1.0.2](https://github.com/naoray/laravel-reviewable/tree/v1.0.2) (2018-02-21) 71 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.1...v1.0.2) 72 | 73 | ## [v1.1](https://github.com/naoray/laravel-reviewable/tree/v1.1) (2018-02-20) 74 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.0.1...v1.1) 75 | 76 | **Closed issues:** 77 | 78 | - unsinged should be unsigned [\#2](https://github.com/Naoray/laravel-reviewable/issues/2) 79 | 80 | **Merged pull requests:** 81 | 82 | - \[1.0\] fixes typo in migration [\#5](https://github.com/Naoray/laravel-reviewable/pull/5) ([Naoray](https://github.com/Naoray)) 83 | - fix typo in migration - resolves \#2 [\#4](https://github.com/Naoray/laravel-reviewable/pull/4) ([Naoray](https://github.com/Naoray)) 84 | 85 | ## [v1.0.1](https://github.com/naoray/laravel-reviewable/tree/v1.0.1) (2018-02-14) 86 | [Full Changelog](https://github.com/naoray/laravel-reviewable/compare/v1.0...v1.0.1) 87 | 88 | ## [v1.0](https://github.com/naoray/laravel-reviewable/tree/v1.0) (2018-02-12) 89 | **Merged pull requests:** 90 | 91 | - Apply fixes from StyleCI [\#1](https://github.com/Naoray/laravel-reviewable/pull/1) ([Naoray](https://github.com/Naoray)) 92 | 93 | 94 | 95 | \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing 2 | 3 | Contributions are **welcome** and will be fully **credited**. 4 | 5 | We accept contributions via Pull Requests on [Github](https://github.com/naoray/laravel-rateable). 6 | 7 | 8 | ## Pull Requests 9 | 10 | - **[PSR-2 Coding Standard](https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-2-coding-style-guide.md)** - The easiest way to apply the conventions is to install [PHP Code Sniffer](http://pear.php.net/package/PHP_CodeSniffer). 11 | 12 | - **Add tests!** - Your patch won't be accepted if it doesn't have tests. 13 | 14 | - **Document any change in behaviour** - Make sure the `README.md` and any other relevant documentation are kept up-to-date. 15 | 16 | - **Consider our release cycle** - We try to follow [SemVer v2.0.0](http://semver.org/). Randomly breaking public APIs is not an option. 17 | 18 | - **Create feature branches** - Don't ask us to pull from your master branch. 19 | 20 | - **One pull request per feature** - If you want to do more than one thing, send multiple pull requests. 21 | 22 | - **Send coherent history** - Make sure each individual commit in your pull request is meaningful. If you had to make multiple intermediate commits while developing, please [squash them](http://www.git-scm.com/book/en/v2/Git-Tools-Rewriting-History#Changing-Multiple-Commit-Messages) before submitting. 23 | 24 | 25 | ## Running Tests 26 | 27 | ``` bash 28 | $ composer test 29 | ``` 30 | 31 | 32 | **Happy coding**! 33 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2019 Krishan Koenig 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "naoray/laravel-reviewable", 3 | "description": "Adds a reviewable feature to your app.", 4 | "type": "package", 5 | "license": "MIT", 6 | "keywords": [ 7 | "laravel", 8 | "reviews", 9 | "rate" 10 | ], 11 | "authors": [ 12 | { 13 | "name": "Krishan Koenig", 14 | "email": "krishan.koenig@googlemail.com" 15 | } 16 | ], 17 | "require": { 18 | "illuminate/support": "~5.7.0|~5.8.0" 19 | }, 20 | "require-dev": { 21 | "orchestra/testbench": "^3.8" 22 | }, 23 | "autoload": { 24 | "psr-4": { 25 | "Naoray\\LaravelReviewable\\": "./src" 26 | }, 27 | "files": [ 28 | "src/helpers.php" 29 | ] 30 | }, 31 | "autoload-dev": { 32 | "psr-4": { 33 | "Naoray\\LaravelReviewable\\Tests\\": "tests" 34 | } 35 | }, 36 | "scripts": { 37 | "test": "vendor/bin/phpunit" 38 | }, 39 | "extra": { 40 | "laravel": { 41 | "providers": [ 42 | "Naoray\\LaravelReviewable\\LaravelReviewableServiceProvider" 43 | ] 44 | } 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /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": "fa37703e7af477fe9086b98eafe5f573", 8 | "packages": [ 9 | { 10 | "name": "doctrine/inflector", 11 | "version": "v1.3.0", 12 | "source": { 13 | "type": "git", 14 | "url": "https://github.com/doctrine/inflector.git", 15 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a" 16 | }, 17 | "dist": { 18 | "type": "zip", 19 | "url": "https://api.github.com/repos/doctrine/inflector/zipball/5527a48b7313d15261292c149e55e26eae771b0a", 20 | "reference": "5527a48b7313d15261292c149e55e26eae771b0a", 21 | "shasum": "" 22 | }, 23 | "require": { 24 | "php": "^7.1" 25 | }, 26 | "require-dev": { 27 | "phpunit/phpunit": "^6.2" 28 | }, 29 | "type": "library", 30 | "extra": { 31 | "branch-alias": { 32 | "dev-master": "1.3.x-dev" 33 | } 34 | }, 35 | "autoload": { 36 | "psr-4": { 37 | "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" 38 | } 39 | }, 40 | "notification-url": "https://packagist.org/downloads/", 41 | "license": [ 42 | "MIT" 43 | ], 44 | "authors": [ 45 | { 46 | "name": "Roman Borschel", 47 | "email": "roman@code-factory.org" 48 | }, 49 | { 50 | "name": "Benjamin Eberlei", 51 | "email": "kontakt@beberlei.de" 52 | }, 53 | { 54 | "name": "Guilherme Blanco", 55 | "email": "guilhermeblanco@gmail.com" 56 | }, 57 | { 58 | "name": "Jonathan Wage", 59 | "email": "jonwage@gmail.com" 60 | }, 61 | { 62 | "name": "Johannes Schmitt", 63 | "email": "schmittjoh@gmail.com" 64 | } 65 | ], 66 | "description": "Common String Manipulations with regard to casing and singular/plural rules.", 67 | "homepage": "http://www.doctrine-project.org", 68 | "keywords": [ 69 | "inflection", 70 | "pluralize", 71 | "singularize", 72 | "string" 73 | ], 74 | "time": "2018-01-09T20:05:19+00:00" 75 | }, 76 | { 77 | "name": "doctrine/lexer", 78 | "version": "1.0.2", 79 | "source": { 80 | "type": "git", 81 | "url": "https://github.com/doctrine/lexer.git", 82 | "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8" 83 | }, 84 | "dist": { 85 | "type": "zip", 86 | "url": "https://api.github.com/repos/doctrine/lexer/zipball/1febd6c3ef84253d7c815bed85fc622ad207a9f8", 87 | "reference": "1febd6c3ef84253d7c815bed85fc622ad207a9f8", 88 | "shasum": "" 89 | }, 90 | "require": { 91 | "php": ">=5.3.2" 92 | }, 93 | "require-dev": { 94 | "phpunit/phpunit": "^4.5" 95 | }, 96 | "type": "library", 97 | "extra": { 98 | "branch-alias": { 99 | "dev-master": "1.0.x-dev" 100 | } 101 | }, 102 | "autoload": { 103 | "psr-4": { 104 | "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" 105 | } 106 | }, 107 | "notification-url": "https://packagist.org/downloads/", 108 | "license": [ 109 | "MIT" 110 | ], 111 | "authors": [ 112 | { 113 | "name": "Roman Borschel", 114 | "email": "roman@code-factory.org" 115 | }, 116 | { 117 | "name": "Guilherme Blanco", 118 | "email": "guilhermeblanco@gmail.com" 119 | }, 120 | { 121 | "name": "Johannes Schmitt", 122 | "email": "schmittjoh@gmail.com" 123 | } 124 | ], 125 | "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", 126 | "homepage": "https://www.doctrine-project.org/projects/lexer.html", 127 | "keywords": [ 128 | "annotations", 129 | "docblock", 130 | "lexer", 131 | "parser", 132 | "php" 133 | ], 134 | "time": "2019-06-08T11:03:04+00:00" 135 | }, 136 | { 137 | "name": "dragonmantank/cron-expression", 138 | "version": "v2.3.0", 139 | "source": { 140 | "type": "git", 141 | "url": "https://github.com/dragonmantank/cron-expression.git", 142 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" 143 | }, 144 | "dist": { 145 | "type": "zip", 146 | "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", 147 | "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", 148 | "shasum": "" 149 | }, 150 | "require": { 151 | "php": "^7.0" 152 | }, 153 | "require-dev": { 154 | "phpunit/phpunit": "^6.4|^7.0" 155 | }, 156 | "type": "library", 157 | "extra": { 158 | "branch-alias": { 159 | "dev-master": "2.3-dev" 160 | } 161 | }, 162 | "autoload": { 163 | "psr-4": { 164 | "Cron\\": "src/Cron/" 165 | } 166 | }, 167 | "notification-url": "https://packagist.org/downloads/", 168 | "license": [ 169 | "MIT" 170 | ], 171 | "authors": [ 172 | { 173 | "name": "Michael Dowling", 174 | "email": "mtdowling@gmail.com", 175 | "homepage": "https://github.com/mtdowling" 176 | }, 177 | { 178 | "name": "Chris Tankersley", 179 | "email": "chris@ctankersley.com", 180 | "homepage": "https://github.com/dragonmantank" 181 | } 182 | ], 183 | "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", 184 | "keywords": [ 185 | "cron", 186 | "schedule" 187 | ], 188 | "time": "2019-03-31T00:38:28+00:00" 189 | }, 190 | { 191 | "name": "egulias/email-validator", 192 | "version": "2.1.8", 193 | "source": { 194 | "type": "git", 195 | "url": "https://github.com/egulias/EmailValidator.git", 196 | "reference": "c26463ff9241f27907112fbcd0c86fa670cfef98" 197 | }, 198 | "dist": { 199 | "type": "zip", 200 | "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/c26463ff9241f27907112fbcd0c86fa670cfef98", 201 | "reference": "c26463ff9241f27907112fbcd0c86fa670cfef98", 202 | "shasum": "" 203 | }, 204 | "require": { 205 | "doctrine/lexer": "^1.0.1", 206 | "php": ">= 5.5" 207 | }, 208 | "require-dev": { 209 | "dominicsayers/isemail": "dev-master", 210 | "phpunit/phpunit": "^4.8.35||^5.7||^6.0", 211 | "satooshi/php-coveralls": "^1.0.1" 212 | }, 213 | "suggest": { 214 | "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" 215 | }, 216 | "type": "library", 217 | "extra": { 218 | "branch-alias": { 219 | "dev-master": "2.0.x-dev" 220 | } 221 | }, 222 | "autoload": { 223 | "psr-4": { 224 | "Egulias\\EmailValidator\\": "EmailValidator" 225 | } 226 | }, 227 | "notification-url": "https://packagist.org/downloads/", 228 | "license": [ 229 | "MIT" 230 | ], 231 | "authors": [ 232 | { 233 | "name": "Eduardo Gulias Davis" 234 | } 235 | ], 236 | "description": "A library for validating emails against several RFCs", 237 | "homepage": "https://github.com/egulias/EmailValidator", 238 | "keywords": [ 239 | "email", 240 | "emailvalidation", 241 | "emailvalidator", 242 | "validation", 243 | "validator" 244 | ], 245 | "time": "2019-05-16T22:02:54+00:00" 246 | }, 247 | { 248 | "name": "erusev/parsedown", 249 | "version": "1.7.3", 250 | "source": { 251 | "type": "git", 252 | "url": "https://github.com/erusev/parsedown.git", 253 | "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7" 254 | }, 255 | "dist": { 256 | "type": "zip", 257 | "url": "https://api.github.com/repos/erusev/parsedown/zipball/6d893938171a817f4e9bc9e86f2da1e370b7bcd7", 258 | "reference": "6d893938171a817f4e9bc9e86f2da1e370b7bcd7", 259 | "shasum": "" 260 | }, 261 | "require": { 262 | "ext-mbstring": "*", 263 | "php": ">=5.3.0" 264 | }, 265 | "require-dev": { 266 | "phpunit/phpunit": "^4.8.35" 267 | }, 268 | "type": "library", 269 | "autoload": { 270 | "psr-0": { 271 | "Parsedown": "" 272 | } 273 | }, 274 | "notification-url": "https://packagist.org/downloads/", 275 | "license": [ 276 | "MIT" 277 | ], 278 | "authors": [ 279 | { 280 | "name": "Emanuil Rusev", 281 | "email": "hello@erusev.com", 282 | "homepage": "http://erusev.com" 283 | } 284 | ], 285 | "description": "Parser for Markdown.", 286 | "homepage": "http://parsedown.org", 287 | "keywords": [ 288 | "markdown", 289 | "parser" 290 | ], 291 | "time": "2019-03-17T18:48:37+00:00" 292 | }, 293 | { 294 | "name": "laravel/framework", 295 | "version": "v5.8.21", 296 | "source": { 297 | "type": "git", 298 | "url": "https://github.com/laravel/framework.git", 299 | "reference": "c78796cc1159c8dc63c45a2011ddc4af17059cb4" 300 | }, 301 | "dist": { 302 | "type": "zip", 303 | "url": "https://api.github.com/repos/laravel/framework/zipball/c78796cc1159c8dc63c45a2011ddc4af17059cb4", 304 | "reference": "c78796cc1159c8dc63c45a2011ddc4af17059cb4", 305 | "shasum": "" 306 | }, 307 | "require": { 308 | "doctrine/inflector": "^1.1", 309 | "dragonmantank/cron-expression": "^2.0", 310 | "egulias/email-validator": "^2.0", 311 | "erusev/parsedown": "^1.7", 312 | "ext-json": "*", 313 | "ext-mbstring": "*", 314 | "ext-openssl": "*", 315 | "league/flysystem": "^1.0.8", 316 | "monolog/monolog": "^1.12", 317 | "nesbot/carbon": "^1.26.3 || ^2.0", 318 | "opis/closure": "^3.1", 319 | "php": "^7.1.3", 320 | "psr/container": "^1.0", 321 | "psr/simple-cache": "^1.0", 322 | "ramsey/uuid": "^3.7", 323 | "swiftmailer/swiftmailer": "^6.0", 324 | "symfony/console": "^4.2", 325 | "symfony/debug": "^4.2", 326 | "symfony/finder": "^4.2", 327 | "symfony/http-foundation": "^4.2", 328 | "symfony/http-kernel": "^4.2", 329 | "symfony/process": "^4.2", 330 | "symfony/routing": "^4.2", 331 | "symfony/var-dumper": "^4.2", 332 | "tijsverkoyen/css-to-inline-styles": "^2.2.1", 333 | "vlucas/phpdotenv": "^3.3" 334 | }, 335 | "conflict": { 336 | "tightenco/collect": "<5.5.33" 337 | }, 338 | "replace": { 339 | "illuminate/auth": "self.version", 340 | "illuminate/broadcasting": "self.version", 341 | "illuminate/bus": "self.version", 342 | "illuminate/cache": "self.version", 343 | "illuminate/config": "self.version", 344 | "illuminate/console": "self.version", 345 | "illuminate/container": "self.version", 346 | "illuminate/contracts": "self.version", 347 | "illuminate/cookie": "self.version", 348 | "illuminate/database": "self.version", 349 | "illuminate/encryption": "self.version", 350 | "illuminate/events": "self.version", 351 | "illuminate/filesystem": "self.version", 352 | "illuminate/hashing": "self.version", 353 | "illuminate/http": "self.version", 354 | "illuminate/log": "self.version", 355 | "illuminate/mail": "self.version", 356 | "illuminate/notifications": "self.version", 357 | "illuminate/pagination": "self.version", 358 | "illuminate/pipeline": "self.version", 359 | "illuminate/queue": "self.version", 360 | "illuminate/redis": "self.version", 361 | "illuminate/routing": "self.version", 362 | "illuminate/session": "self.version", 363 | "illuminate/support": "self.version", 364 | "illuminate/translation": "self.version", 365 | "illuminate/validation": "self.version", 366 | "illuminate/view": "self.version" 367 | }, 368 | "require-dev": { 369 | "aws/aws-sdk-php": "^3.0", 370 | "doctrine/dbal": "^2.6", 371 | "filp/whoops": "^2.1.4", 372 | "guzzlehttp/guzzle": "^6.3", 373 | "league/flysystem-cached-adapter": "^1.0", 374 | "mockery/mockery": "^1.0", 375 | "moontoast/math": "^1.1", 376 | "orchestra/testbench-core": "3.8.*", 377 | "pda/pheanstalk": "^4.0", 378 | "phpunit/phpunit": "^7.5|^8.0", 379 | "predis/predis": "^1.1.1", 380 | "symfony/css-selector": "^4.2", 381 | "symfony/dom-crawler": "^4.2", 382 | "true/punycode": "^2.1" 383 | }, 384 | "suggest": { 385 | "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", 386 | "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", 387 | "ext-pcntl": "Required to use all features of the queue worker.", 388 | "ext-posix": "Required to use all features of the queue worker.", 389 | "filp/whoops": "Required for friendly error pages in development (^2.1.4).", 390 | "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", 391 | "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", 392 | "laravel/tinker": "Required to use the tinker console command (^1.0).", 393 | "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", 394 | "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", 395 | "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", 396 | "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", 397 | "moontoast/math": "Required to use ordered UUIDs (^1.1).", 398 | "nexmo/client": "Required to use the Nexmo transport (^1.0).", 399 | "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", 400 | "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", 401 | "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", 402 | "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", 403 | "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", 404 | "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", 405 | "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." 406 | }, 407 | "type": "library", 408 | "extra": { 409 | "branch-alias": { 410 | "dev-master": "5.8-dev" 411 | } 412 | }, 413 | "autoload": { 414 | "files": [ 415 | "src/Illuminate/Foundation/helpers.php", 416 | "src/Illuminate/Support/helpers.php" 417 | ], 418 | "psr-4": { 419 | "Illuminate\\": "src/Illuminate/" 420 | } 421 | }, 422 | "notification-url": "https://packagist.org/downloads/", 423 | "license": [ 424 | "MIT" 425 | ], 426 | "authors": [ 427 | { 428 | "name": "Taylor Otwell", 429 | "email": "taylor@laravel.com" 430 | } 431 | ], 432 | "description": "The Laravel Framework.", 433 | "homepage": "https://laravel.com", 434 | "keywords": [ 435 | "framework", 436 | "laravel" 437 | ], 438 | "time": "2019-06-05T00:13:05+00:00" 439 | }, 440 | { 441 | "name": "league/flysystem", 442 | "version": "1.0.52", 443 | "source": { 444 | "type": "git", 445 | "url": "https://github.com/thephpleague/flysystem.git", 446 | "reference": "c5a5097156387970e6f0ccfcdf03f752856f3391" 447 | }, 448 | "dist": { 449 | "type": "zip", 450 | "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/c5a5097156387970e6f0ccfcdf03f752856f3391", 451 | "reference": "c5a5097156387970e6f0ccfcdf03f752856f3391", 452 | "shasum": "" 453 | }, 454 | "require": { 455 | "ext-fileinfo": "*", 456 | "php": ">=5.5.9" 457 | }, 458 | "conflict": { 459 | "league/flysystem-sftp": "<1.0.6" 460 | }, 461 | "require-dev": { 462 | "phpspec/phpspec": "^3.4", 463 | "phpunit/phpunit": "^5.7.10" 464 | }, 465 | "suggest": { 466 | "ext-fileinfo": "Required for MimeType", 467 | "ext-ftp": "Allows you to use FTP server storage", 468 | "ext-openssl": "Allows you to use FTPS server storage", 469 | "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", 470 | "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", 471 | "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", 472 | "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", 473 | "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", 474 | "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", 475 | "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", 476 | "league/flysystem-webdav": "Allows you to use WebDAV storage", 477 | "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", 478 | "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", 479 | "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" 480 | }, 481 | "type": "library", 482 | "extra": { 483 | "branch-alias": { 484 | "dev-master": "1.1-dev" 485 | } 486 | }, 487 | "autoload": { 488 | "psr-4": { 489 | "League\\Flysystem\\": "src/" 490 | } 491 | }, 492 | "notification-url": "https://packagist.org/downloads/", 493 | "license": [ 494 | "MIT" 495 | ], 496 | "authors": [ 497 | { 498 | "name": "Frank de Jonge", 499 | "email": "info@frenky.net" 500 | } 501 | ], 502 | "description": "Filesystem abstraction: Many filesystems, one API.", 503 | "keywords": [ 504 | "Cloud Files", 505 | "WebDAV", 506 | "abstraction", 507 | "aws", 508 | "cloud", 509 | "copy.com", 510 | "dropbox", 511 | "file systems", 512 | "files", 513 | "filesystem", 514 | "filesystems", 515 | "ftp", 516 | "rackspace", 517 | "remote", 518 | "s3", 519 | "sftp", 520 | "storage" 521 | ], 522 | "time": "2019-05-20T20:21:14+00:00" 523 | }, 524 | { 525 | "name": "monolog/monolog", 526 | "version": "1.24.0", 527 | "source": { 528 | "type": "git", 529 | "url": "https://github.com/Seldaek/monolog.git", 530 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266" 531 | }, 532 | "dist": { 533 | "type": "zip", 534 | "url": "https://api.github.com/repos/Seldaek/monolog/zipball/bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", 535 | "reference": "bfc9ebb28f97e7a24c45bdc3f0ff482e47bb0266", 536 | "shasum": "" 537 | }, 538 | "require": { 539 | "php": ">=5.3.0", 540 | "psr/log": "~1.0" 541 | }, 542 | "provide": { 543 | "psr/log-implementation": "1.0.0" 544 | }, 545 | "require-dev": { 546 | "aws/aws-sdk-php": "^2.4.9 || ^3.0", 547 | "doctrine/couchdb": "~1.0@dev", 548 | "graylog2/gelf-php": "~1.0", 549 | "jakub-onderka/php-parallel-lint": "0.9", 550 | "php-amqplib/php-amqplib": "~2.4", 551 | "php-console/php-console": "^3.1.3", 552 | "phpunit/phpunit": "~4.5", 553 | "phpunit/phpunit-mock-objects": "2.3.0", 554 | "ruflin/elastica": ">=0.90 <3.0", 555 | "sentry/sentry": "^0.13", 556 | "swiftmailer/swiftmailer": "^5.3|^6.0" 557 | }, 558 | "suggest": { 559 | "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", 560 | "doctrine/couchdb": "Allow sending log messages to a CouchDB server", 561 | "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", 562 | "ext-mongo": "Allow sending log messages to a MongoDB server", 563 | "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", 564 | "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", 565 | "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", 566 | "php-console/php-console": "Allow sending log messages to Google Chrome", 567 | "rollbar/rollbar": "Allow sending log messages to Rollbar", 568 | "ruflin/elastica": "Allow sending log messages to an Elastic Search server", 569 | "sentry/sentry": "Allow sending log messages to a Sentry server" 570 | }, 571 | "type": "library", 572 | "extra": { 573 | "branch-alias": { 574 | "dev-master": "2.0.x-dev" 575 | } 576 | }, 577 | "autoload": { 578 | "psr-4": { 579 | "Monolog\\": "src/Monolog" 580 | } 581 | }, 582 | "notification-url": "https://packagist.org/downloads/", 583 | "license": [ 584 | "MIT" 585 | ], 586 | "authors": [ 587 | { 588 | "name": "Jordi Boggiano", 589 | "email": "j.boggiano@seld.be", 590 | "homepage": "http://seld.be" 591 | } 592 | ], 593 | "description": "Sends your logs to files, sockets, inboxes, databases and various web services", 594 | "homepage": "http://github.com/Seldaek/monolog", 595 | "keywords": [ 596 | "log", 597 | "logging", 598 | "psr-3" 599 | ], 600 | "time": "2018-11-05T09:00:11+00:00" 601 | }, 602 | { 603 | "name": "nesbot/carbon", 604 | "version": "2.19.1", 605 | "source": { 606 | "type": "git", 607 | "url": "https://github.com/briannesbitt/Carbon.git", 608 | "reference": "5cf102d1476fdf92f1f991bd1a1a0d93c65755ca" 609 | }, 610 | "dist": { 611 | "type": "zip", 612 | "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/5cf102d1476fdf92f1f991bd1a1a0d93c65755ca", 613 | "reference": "5cf102d1476fdf92f1f991bd1a1a0d93c65755ca", 614 | "shasum": "" 615 | }, 616 | "require": { 617 | "ext-json": "*", 618 | "php": "^7.1.8 || ^8.0", 619 | "symfony/translation": "^3.4 || ^4.0" 620 | }, 621 | "require-dev": { 622 | "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", 623 | "kylekatarnls/multi-tester": "^1.1", 624 | "phpmd/phpmd": "^2.6", 625 | "phpstan/phpstan": "^0.11", 626 | "phpunit/phpunit": "^7.5 || ^8.0", 627 | "squizlabs/php_codesniffer": "^3.4" 628 | }, 629 | "type": "library", 630 | "extra": { 631 | "laravel": { 632 | "providers": [ 633 | "Carbon\\Laravel\\ServiceProvider" 634 | ] 635 | } 636 | }, 637 | "autoload": { 638 | "psr-4": { 639 | "Carbon\\": "src/Carbon/" 640 | } 641 | }, 642 | "notification-url": "https://packagist.org/downloads/", 643 | "license": [ 644 | "MIT" 645 | ], 646 | "authors": [ 647 | { 648 | "name": "Brian Nesbitt", 649 | "email": "brian@nesbot.com", 650 | "homepage": "http://nesbot.com" 651 | } 652 | ], 653 | "description": "A simple API extension for DateTime.", 654 | "homepage": "http://carbon.nesbot.com", 655 | "keywords": [ 656 | "date", 657 | "datetime", 658 | "time" 659 | ], 660 | "time": "2019-06-04T20:07:46+00:00" 661 | }, 662 | { 663 | "name": "opis/closure", 664 | "version": "3.3.0", 665 | "source": { 666 | "type": "git", 667 | "url": "https://github.com/opis/closure.git", 668 | "reference": "f846725591203098246276b2e7b9e8b7814c4965" 669 | }, 670 | "dist": { 671 | "type": "zip", 672 | "url": "https://api.github.com/repos/opis/closure/zipball/f846725591203098246276b2e7b9e8b7814c4965", 673 | "reference": "f846725591203098246276b2e7b9e8b7814c4965", 674 | "shasum": "" 675 | }, 676 | "require": { 677 | "php": "^5.4 || ^7.0" 678 | }, 679 | "require-dev": { 680 | "jeremeamia/superclosure": "^2.0", 681 | "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" 682 | }, 683 | "type": "library", 684 | "extra": { 685 | "branch-alias": { 686 | "dev-master": "3.3.x-dev" 687 | } 688 | }, 689 | "autoload": { 690 | "psr-4": { 691 | "Opis\\Closure\\": "src/" 692 | }, 693 | "files": [ 694 | "functions.php" 695 | ] 696 | }, 697 | "notification-url": "https://packagist.org/downloads/", 698 | "license": [ 699 | "MIT" 700 | ], 701 | "authors": [ 702 | { 703 | "name": "Marius Sarca", 704 | "email": "marius.sarca@gmail.com" 705 | }, 706 | { 707 | "name": "Sorin Sarca", 708 | "email": "sarca_sorin@hotmail.com" 709 | } 710 | ], 711 | "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", 712 | "homepage": "https://opis.io/closure", 713 | "keywords": [ 714 | "anonymous functions", 715 | "closure", 716 | "function", 717 | "serializable", 718 | "serialization", 719 | "serialize" 720 | ], 721 | "time": "2019-05-31T20:04:32+00:00" 722 | }, 723 | { 724 | "name": "paragonie/random_compat", 725 | "version": "v9.99.99", 726 | "source": { 727 | "type": "git", 728 | "url": "https://github.com/paragonie/random_compat.git", 729 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" 730 | }, 731 | "dist": { 732 | "type": "zip", 733 | "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 734 | "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", 735 | "shasum": "" 736 | }, 737 | "require": { 738 | "php": "^7" 739 | }, 740 | "require-dev": { 741 | "phpunit/phpunit": "4.*|5.*", 742 | "vimeo/psalm": "^1" 743 | }, 744 | "suggest": { 745 | "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." 746 | }, 747 | "type": "library", 748 | "notification-url": "https://packagist.org/downloads/", 749 | "license": [ 750 | "MIT" 751 | ], 752 | "authors": [ 753 | { 754 | "name": "Paragon Initiative Enterprises", 755 | "email": "security@paragonie.com", 756 | "homepage": "https://paragonie.com" 757 | } 758 | ], 759 | "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", 760 | "keywords": [ 761 | "csprng", 762 | "polyfill", 763 | "pseudorandom", 764 | "random" 765 | ], 766 | "time": "2018-07-02T15:55:56+00:00" 767 | }, 768 | { 769 | "name": "phpoption/phpoption", 770 | "version": "1.5.0", 771 | "source": { 772 | "type": "git", 773 | "url": "https://github.com/schmittjoh/php-option.git", 774 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed" 775 | }, 776 | "dist": { 777 | "type": "zip", 778 | "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed", 779 | "reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed", 780 | "shasum": "" 781 | }, 782 | "require": { 783 | "php": ">=5.3.0" 784 | }, 785 | "require-dev": { 786 | "phpunit/phpunit": "4.7.*" 787 | }, 788 | "type": "library", 789 | "extra": { 790 | "branch-alias": { 791 | "dev-master": "1.3-dev" 792 | } 793 | }, 794 | "autoload": { 795 | "psr-0": { 796 | "PhpOption\\": "src/" 797 | } 798 | }, 799 | "notification-url": "https://packagist.org/downloads/", 800 | "license": [ 801 | "Apache2" 802 | ], 803 | "authors": [ 804 | { 805 | "name": "Johannes M. Schmitt", 806 | "email": "schmittjoh@gmail.com" 807 | } 808 | ], 809 | "description": "Option Type for PHP", 810 | "keywords": [ 811 | "language", 812 | "option", 813 | "php", 814 | "type" 815 | ], 816 | "time": "2015-07-25T16:39:46+00:00" 817 | }, 818 | { 819 | "name": "psr/container", 820 | "version": "1.0.0", 821 | "source": { 822 | "type": "git", 823 | "url": "https://github.com/php-fig/container.git", 824 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" 825 | }, 826 | "dist": { 827 | "type": "zip", 828 | "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 829 | "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", 830 | "shasum": "" 831 | }, 832 | "require": { 833 | "php": ">=5.3.0" 834 | }, 835 | "type": "library", 836 | "extra": { 837 | "branch-alias": { 838 | "dev-master": "1.0.x-dev" 839 | } 840 | }, 841 | "autoload": { 842 | "psr-4": { 843 | "Psr\\Container\\": "src/" 844 | } 845 | }, 846 | "notification-url": "https://packagist.org/downloads/", 847 | "license": [ 848 | "MIT" 849 | ], 850 | "authors": [ 851 | { 852 | "name": "PHP-FIG", 853 | "homepage": "http://www.php-fig.org/" 854 | } 855 | ], 856 | "description": "Common Container Interface (PHP FIG PSR-11)", 857 | "homepage": "https://github.com/php-fig/container", 858 | "keywords": [ 859 | "PSR-11", 860 | "container", 861 | "container-interface", 862 | "container-interop", 863 | "psr" 864 | ], 865 | "time": "2017-02-14T16:28:37+00:00" 866 | }, 867 | { 868 | "name": "psr/log", 869 | "version": "1.1.0", 870 | "source": { 871 | "type": "git", 872 | "url": "https://github.com/php-fig/log.git", 873 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" 874 | }, 875 | "dist": { 876 | "type": "zip", 877 | "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 878 | "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", 879 | "shasum": "" 880 | }, 881 | "require": { 882 | "php": ">=5.3.0" 883 | }, 884 | "type": "library", 885 | "extra": { 886 | "branch-alias": { 887 | "dev-master": "1.0.x-dev" 888 | } 889 | }, 890 | "autoload": { 891 | "psr-4": { 892 | "Psr\\Log\\": "Psr/Log/" 893 | } 894 | }, 895 | "notification-url": "https://packagist.org/downloads/", 896 | "license": [ 897 | "MIT" 898 | ], 899 | "authors": [ 900 | { 901 | "name": "PHP-FIG", 902 | "homepage": "http://www.php-fig.org/" 903 | } 904 | ], 905 | "description": "Common interface for logging libraries", 906 | "homepage": "https://github.com/php-fig/log", 907 | "keywords": [ 908 | "log", 909 | "psr", 910 | "psr-3" 911 | ], 912 | "time": "2018-11-20T15:27:04+00:00" 913 | }, 914 | { 915 | "name": "psr/simple-cache", 916 | "version": "1.0.1", 917 | "source": { 918 | "type": "git", 919 | "url": "https://github.com/php-fig/simple-cache.git", 920 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" 921 | }, 922 | "dist": { 923 | "type": "zip", 924 | "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 925 | "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", 926 | "shasum": "" 927 | }, 928 | "require": { 929 | "php": ">=5.3.0" 930 | }, 931 | "type": "library", 932 | "extra": { 933 | "branch-alias": { 934 | "dev-master": "1.0.x-dev" 935 | } 936 | }, 937 | "autoload": { 938 | "psr-4": { 939 | "Psr\\SimpleCache\\": "src/" 940 | } 941 | }, 942 | "notification-url": "https://packagist.org/downloads/", 943 | "license": [ 944 | "MIT" 945 | ], 946 | "authors": [ 947 | { 948 | "name": "PHP-FIG", 949 | "homepage": "http://www.php-fig.org/" 950 | } 951 | ], 952 | "description": "Common interfaces for simple caching", 953 | "keywords": [ 954 | "cache", 955 | "caching", 956 | "psr", 957 | "psr-16", 958 | "simple-cache" 959 | ], 960 | "time": "2017-10-23T01:57:42+00:00" 961 | }, 962 | { 963 | "name": "ramsey/uuid", 964 | "version": "3.8.0", 965 | "source": { 966 | "type": "git", 967 | "url": "https://github.com/ramsey/uuid.git", 968 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" 969 | }, 970 | "dist": { 971 | "type": "zip", 972 | "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", 973 | "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", 974 | "shasum": "" 975 | }, 976 | "require": { 977 | "paragonie/random_compat": "^1.0|^2.0|9.99.99", 978 | "php": "^5.4 || ^7.0", 979 | "symfony/polyfill-ctype": "^1.8" 980 | }, 981 | "replace": { 982 | "rhumsaa/uuid": "self.version" 983 | }, 984 | "require-dev": { 985 | "codeception/aspect-mock": "^1.0 | ~2.0.0", 986 | "doctrine/annotations": "~1.2.0", 987 | "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", 988 | "ircmaxell/random-lib": "^1.1", 989 | "jakub-onderka/php-parallel-lint": "^0.9.0", 990 | "mockery/mockery": "^0.9.9", 991 | "moontoast/math": "^1.1", 992 | "php-mock/php-mock-phpunit": "^0.3|^1.1", 993 | "phpunit/phpunit": "^4.7|^5.0|^6.5", 994 | "squizlabs/php_codesniffer": "^2.3" 995 | }, 996 | "suggest": { 997 | "ext-ctype": "Provides support for PHP Ctype functions", 998 | "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", 999 | "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", 1000 | "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", 1001 | "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", 1002 | "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", 1003 | "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." 1004 | }, 1005 | "type": "library", 1006 | "extra": { 1007 | "branch-alias": { 1008 | "dev-master": "3.x-dev" 1009 | } 1010 | }, 1011 | "autoload": { 1012 | "psr-4": { 1013 | "Ramsey\\Uuid\\": "src/" 1014 | } 1015 | }, 1016 | "notification-url": "https://packagist.org/downloads/", 1017 | "license": [ 1018 | "MIT" 1019 | ], 1020 | "authors": [ 1021 | { 1022 | "name": "Marijn Huizendveld", 1023 | "email": "marijn.huizendveld@gmail.com" 1024 | }, 1025 | { 1026 | "name": "Thibaud Fabre", 1027 | "email": "thibaud@aztech.io" 1028 | }, 1029 | { 1030 | "name": "Ben Ramsey", 1031 | "email": "ben@benramsey.com", 1032 | "homepage": "https://benramsey.com" 1033 | } 1034 | ], 1035 | "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", 1036 | "homepage": "https://github.com/ramsey/uuid", 1037 | "keywords": [ 1038 | "guid", 1039 | "identifier", 1040 | "uuid" 1041 | ], 1042 | "time": "2018-07-19T23:38:55+00:00" 1043 | }, 1044 | { 1045 | "name": "swiftmailer/swiftmailer", 1046 | "version": "v6.2.1", 1047 | "source": { 1048 | "type": "git", 1049 | "url": "https://github.com/swiftmailer/swiftmailer.git", 1050 | "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a" 1051 | }, 1052 | "dist": { 1053 | "type": "zip", 1054 | "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", 1055 | "reference": "5397cd05b0a0f7937c47b0adcb4c60e5ab936b6a", 1056 | "shasum": "" 1057 | }, 1058 | "require": { 1059 | "egulias/email-validator": "~2.0", 1060 | "php": ">=7.0.0", 1061 | "symfony/polyfill-iconv": "^1.0", 1062 | "symfony/polyfill-intl-idn": "^1.10", 1063 | "symfony/polyfill-mbstring": "^1.0" 1064 | }, 1065 | "require-dev": { 1066 | "mockery/mockery": "~0.9.1", 1067 | "symfony/phpunit-bridge": "^3.4.19|^4.1.8" 1068 | }, 1069 | "suggest": { 1070 | "ext-intl": "Needed to support internationalized email addresses", 1071 | "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" 1072 | }, 1073 | "type": "library", 1074 | "extra": { 1075 | "branch-alias": { 1076 | "dev-master": "6.2-dev" 1077 | } 1078 | }, 1079 | "autoload": { 1080 | "files": [ 1081 | "lib/swift_required.php" 1082 | ] 1083 | }, 1084 | "notification-url": "https://packagist.org/downloads/", 1085 | "license": [ 1086 | "MIT" 1087 | ], 1088 | "authors": [ 1089 | { 1090 | "name": "Chris Corbyn" 1091 | }, 1092 | { 1093 | "name": "Fabien Potencier", 1094 | "email": "fabien@symfony.com" 1095 | } 1096 | ], 1097 | "description": "Swiftmailer, free feature-rich PHP mailer", 1098 | "homepage": "https://swiftmailer.symfony.com", 1099 | "keywords": [ 1100 | "email", 1101 | "mail", 1102 | "mailer" 1103 | ], 1104 | "time": "2019-04-21T09:21:45+00:00" 1105 | }, 1106 | { 1107 | "name": "symfony/console", 1108 | "version": "v4.3.1", 1109 | "source": { 1110 | "type": "git", 1111 | "url": "https://github.com/symfony/console.git", 1112 | "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64" 1113 | }, 1114 | "dist": { 1115 | "type": "zip", 1116 | "url": "https://api.github.com/repos/symfony/console/zipball/d50bbeeb0e17e6dd4124ea391eff235e932cbf64", 1117 | "reference": "d50bbeeb0e17e6dd4124ea391eff235e932cbf64", 1118 | "shasum": "" 1119 | }, 1120 | "require": { 1121 | "php": "^7.1.3", 1122 | "symfony/polyfill-mbstring": "~1.0", 1123 | "symfony/polyfill-php73": "^1.8", 1124 | "symfony/service-contracts": "^1.1" 1125 | }, 1126 | "conflict": { 1127 | "symfony/dependency-injection": "<3.4", 1128 | "symfony/event-dispatcher": "<4.3", 1129 | "symfony/process": "<3.3" 1130 | }, 1131 | "provide": { 1132 | "psr/log-implementation": "1.0" 1133 | }, 1134 | "require-dev": { 1135 | "psr/log": "~1.0", 1136 | "symfony/config": "~3.4|~4.0", 1137 | "symfony/dependency-injection": "~3.4|~4.0", 1138 | "symfony/event-dispatcher": "^4.3", 1139 | "symfony/lock": "~3.4|~4.0", 1140 | "symfony/process": "~3.4|~4.0", 1141 | "symfony/var-dumper": "^4.3" 1142 | }, 1143 | "suggest": { 1144 | "psr/log": "For using the console logger", 1145 | "symfony/event-dispatcher": "", 1146 | "symfony/lock": "", 1147 | "symfony/process": "" 1148 | }, 1149 | "type": "library", 1150 | "extra": { 1151 | "branch-alias": { 1152 | "dev-master": "4.3-dev" 1153 | } 1154 | }, 1155 | "autoload": { 1156 | "psr-4": { 1157 | "Symfony\\Component\\Console\\": "" 1158 | }, 1159 | "exclude-from-classmap": [ 1160 | "/Tests/" 1161 | ] 1162 | }, 1163 | "notification-url": "https://packagist.org/downloads/", 1164 | "license": [ 1165 | "MIT" 1166 | ], 1167 | "authors": [ 1168 | { 1169 | "name": "Fabien Potencier", 1170 | "email": "fabien@symfony.com" 1171 | }, 1172 | { 1173 | "name": "Symfony Community", 1174 | "homepage": "https://symfony.com/contributors" 1175 | } 1176 | ], 1177 | "description": "Symfony Console Component", 1178 | "homepage": "https://symfony.com", 1179 | "time": "2019-06-05T13:25:51+00:00" 1180 | }, 1181 | { 1182 | "name": "symfony/css-selector", 1183 | "version": "v4.3.1", 1184 | "source": { 1185 | "type": "git", 1186 | "url": "https://github.com/symfony/css-selector.git", 1187 | "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d" 1188 | }, 1189 | "dist": { 1190 | "type": "zip", 1191 | "url": "https://api.github.com/repos/symfony/css-selector/zipball/105c98bb0c5d8635bea056135304bd8edcc42b4d", 1192 | "reference": "105c98bb0c5d8635bea056135304bd8edcc42b4d", 1193 | "shasum": "" 1194 | }, 1195 | "require": { 1196 | "php": "^7.1.3" 1197 | }, 1198 | "type": "library", 1199 | "extra": { 1200 | "branch-alias": { 1201 | "dev-master": "4.3-dev" 1202 | } 1203 | }, 1204 | "autoload": { 1205 | "psr-4": { 1206 | "Symfony\\Component\\CssSelector\\": "" 1207 | }, 1208 | "exclude-from-classmap": [ 1209 | "/Tests/" 1210 | ] 1211 | }, 1212 | "notification-url": "https://packagist.org/downloads/", 1213 | "license": [ 1214 | "MIT" 1215 | ], 1216 | "authors": [ 1217 | { 1218 | "name": "Jean-François Simon", 1219 | "email": "jeanfrancois.simon@sensiolabs.com" 1220 | }, 1221 | { 1222 | "name": "Fabien Potencier", 1223 | "email": "fabien@symfony.com" 1224 | }, 1225 | { 1226 | "name": "Symfony Community", 1227 | "homepage": "https://symfony.com/contributors" 1228 | } 1229 | ], 1230 | "description": "Symfony CssSelector Component", 1231 | "homepage": "https://symfony.com", 1232 | "time": "2019-01-16T21:53:39+00:00" 1233 | }, 1234 | { 1235 | "name": "symfony/debug", 1236 | "version": "v4.3.1", 1237 | "source": { 1238 | "type": "git", 1239 | "url": "https://github.com/symfony/debug.git", 1240 | "reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6" 1241 | }, 1242 | "dist": { 1243 | "type": "zip", 1244 | "url": "https://api.github.com/repos/symfony/debug/zipball/4e025104f1f9adb1f7a2d14fb102c9986d6e97c6", 1245 | "reference": "4e025104f1f9adb1f7a2d14fb102c9986d6e97c6", 1246 | "shasum": "" 1247 | }, 1248 | "require": { 1249 | "php": "^7.1.3", 1250 | "psr/log": "~1.0" 1251 | }, 1252 | "conflict": { 1253 | "symfony/http-kernel": "<3.4" 1254 | }, 1255 | "require-dev": { 1256 | "symfony/http-kernel": "~3.4|~4.0" 1257 | }, 1258 | "type": "library", 1259 | "extra": { 1260 | "branch-alias": { 1261 | "dev-master": "4.3-dev" 1262 | } 1263 | }, 1264 | "autoload": { 1265 | "psr-4": { 1266 | "Symfony\\Component\\Debug\\": "" 1267 | }, 1268 | "exclude-from-classmap": [ 1269 | "/Tests/" 1270 | ] 1271 | }, 1272 | "notification-url": "https://packagist.org/downloads/", 1273 | "license": [ 1274 | "MIT" 1275 | ], 1276 | "authors": [ 1277 | { 1278 | "name": "Fabien Potencier", 1279 | "email": "fabien@symfony.com" 1280 | }, 1281 | { 1282 | "name": "Symfony Community", 1283 | "homepage": "https://symfony.com/contributors" 1284 | } 1285 | ], 1286 | "description": "Symfony Debug Component", 1287 | "homepage": "https://symfony.com", 1288 | "time": "2019-05-30T16:10:05+00:00" 1289 | }, 1290 | { 1291 | "name": "symfony/event-dispatcher", 1292 | "version": "v4.3.1", 1293 | "source": { 1294 | "type": "git", 1295 | "url": "https://github.com/symfony/event-dispatcher.git", 1296 | "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f" 1297 | }, 1298 | "dist": { 1299 | "type": "zip", 1300 | "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4e6c670af81c4fb0b6c08b035530a9915d0b691f", 1301 | "reference": "4e6c670af81c4fb0b6c08b035530a9915d0b691f", 1302 | "shasum": "" 1303 | }, 1304 | "require": { 1305 | "php": "^7.1.3", 1306 | "symfony/event-dispatcher-contracts": "^1.1" 1307 | }, 1308 | "conflict": { 1309 | "symfony/dependency-injection": "<3.4" 1310 | }, 1311 | "provide": { 1312 | "psr/event-dispatcher-implementation": "1.0", 1313 | "symfony/event-dispatcher-implementation": "1.1" 1314 | }, 1315 | "require-dev": { 1316 | "psr/log": "~1.0", 1317 | "symfony/config": "~3.4|~4.0", 1318 | "symfony/dependency-injection": "~3.4|~4.0", 1319 | "symfony/expression-language": "~3.4|~4.0", 1320 | "symfony/http-foundation": "^3.4|^4.0", 1321 | "symfony/service-contracts": "^1.1", 1322 | "symfony/stopwatch": "~3.4|~4.0" 1323 | }, 1324 | "suggest": { 1325 | "symfony/dependency-injection": "", 1326 | "symfony/http-kernel": "" 1327 | }, 1328 | "type": "library", 1329 | "extra": { 1330 | "branch-alias": { 1331 | "dev-master": "4.3-dev" 1332 | } 1333 | }, 1334 | "autoload": { 1335 | "psr-4": { 1336 | "Symfony\\Component\\EventDispatcher\\": "" 1337 | }, 1338 | "exclude-from-classmap": [ 1339 | "/Tests/" 1340 | ] 1341 | }, 1342 | "notification-url": "https://packagist.org/downloads/", 1343 | "license": [ 1344 | "MIT" 1345 | ], 1346 | "authors": [ 1347 | { 1348 | "name": "Fabien Potencier", 1349 | "email": "fabien@symfony.com" 1350 | }, 1351 | { 1352 | "name": "Symfony Community", 1353 | "homepage": "https://symfony.com/contributors" 1354 | } 1355 | ], 1356 | "description": "Symfony EventDispatcher Component", 1357 | "homepage": "https://symfony.com", 1358 | "time": "2019-05-30T16:10:05+00:00" 1359 | }, 1360 | { 1361 | "name": "symfony/event-dispatcher-contracts", 1362 | "version": "v1.1.1", 1363 | "source": { 1364 | "type": "git", 1365 | "url": "https://github.com/symfony/event-dispatcher-contracts.git", 1366 | "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69" 1367 | }, 1368 | "dist": { 1369 | "type": "zip", 1370 | "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8fa2cf2177083dd59cf8e44ea4b6541764fbda69", 1371 | "reference": "8fa2cf2177083dd59cf8e44ea4b6541764fbda69", 1372 | "shasum": "" 1373 | }, 1374 | "require": { 1375 | "php": "^7.1.3" 1376 | }, 1377 | "suggest": { 1378 | "psr/event-dispatcher": "", 1379 | "symfony/event-dispatcher-implementation": "" 1380 | }, 1381 | "type": "library", 1382 | "extra": { 1383 | "branch-alias": { 1384 | "dev-master": "1.1-dev" 1385 | } 1386 | }, 1387 | "autoload": { 1388 | "psr-4": { 1389 | "Symfony\\Contracts\\EventDispatcher\\": "" 1390 | } 1391 | }, 1392 | "notification-url": "https://packagist.org/downloads/", 1393 | "license": [ 1394 | "MIT" 1395 | ], 1396 | "authors": [ 1397 | { 1398 | "name": "Nicolas Grekas", 1399 | "email": "p@tchwork.com" 1400 | }, 1401 | { 1402 | "name": "Symfony Community", 1403 | "homepage": "https://symfony.com/contributors" 1404 | } 1405 | ], 1406 | "description": "Generic abstractions related to dispatching event", 1407 | "homepage": "https://symfony.com", 1408 | "keywords": [ 1409 | "abstractions", 1410 | "contracts", 1411 | "decoupling", 1412 | "interfaces", 1413 | "interoperability", 1414 | "standards" 1415 | ], 1416 | "time": "2019-05-22T12:23:29+00:00" 1417 | }, 1418 | { 1419 | "name": "symfony/finder", 1420 | "version": "v4.3.1", 1421 | "source": { 1422 | "type": "git", 1423 | "url": "https://github.com/symfony/finder.git", 1424 | "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176" 1425 | }, 1426 | "dist": { 1427 | "type": "zip", 1428 | "url": "https://api.github.com/repos/symfony/finder/zipball/b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", 1429 | "reference": "b3d4f4c0e4eadfdd8b296af9ca637cfbf51d8176", 1430 | "shasum": "" 1431 | }, 1432 | "require": { 1433 | "php": "^7.1.3" 1434 | }, 1435 | "type": "library", 1436 | "extra": { 1437 | "branch-alias": { 1438 | "dev-master": "4.3-dev" 1439 | } 1440 | }, 1441 | "autoload": { 1442 | "psr-4": { 1443 | "Symfony\\Component\\Finder\\": "" 1444 | }, 1445 | "exclude-from-classmap": [ 1446 | "/Tests/" 1447 | ] 1448 | }, 1449 | "notification-url": "https://packagist.org/downloads/", 1450 | "license": [ 1451 | "MIT" 1452 | ], 1453 | "authors": [ 1454 | { 1455 | "name": "Fabien Potencier", 1456 | "email": "fabien@symfony.com" 1457 | }, 1458 | { 1459 | "name": "Symfony Community", 1460 | "homepage": "https://symfony.com/contributors" 1461 | } 1462 | ], 1463 | "description": "Symfony Finder Component", 1464 | "homepage": "https://symfony.com", 1465 | "time": "2019-05-26T20:47:49+00:00" 1466 | }, 1467 | { 1468 | "name": "symfony/http-foundation", 1469 | "version": "v4.4.1", 1470 | "source": { 1471 | "type": "git", 1472 | "url": "https://github.com/symfony/http-foundation.git", 1473 | "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5" 1474 | }, 1475 | "dist": { 1476 | "type": "zip", 1477 | "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8bccc59e61b41963d14c3dbdb23181e5c932a1d5", 1478 | "reference": "8bccc59e61b41963d14c3dbdb23181e5c932a1d5", 1479 | "shasum": "" 1480 | }, 1481 | "require": { 1482 | "php": "^7.1.3", 1483 | "symfony/mime": "^4.3|^5.0", 1484 | "symfony/polyfill-mbstring": "~1.1" 1485 | }, 1486 | "require-dev": { 1487 | "predis/predis": "~1.0", 1488 | "symfony/expression-language": "^3.4|^4.0|^5.0" 1489 | }, 1490 | "type": "library", 1491 | "extra": { 1492 | "branch-alias": { 1493 | "dev-master": "4.4-dev" 1494 | } 1495 | }, 1496 | "autoload": { 1497 | "psr-4": { 1498 | "Symfony\\Component\\HttpFoundation\\": "" 1499 | }, 1500 | "exclude-from-classmap": [ 1501 | "/Tests/" 1502 | ] 1503 | }, 1504 | "notification-url": "https://packagist.org/downloads/", 1505 | "license": [ 1506 | "MIT" 1507 | ], 1508 | "authors": [ 1509 | { 1510 | "name": "Fabien Potencier", 1511 | "email": "fabien@symfony.com" 1512 | }, 1513 | { 1514 | "name": "Symfony Community", 1515 | "homepage": "https://symfony.com/contributors" 1516 | } 1517 | ], 1518 | "description": "Symfony HttpFoundation Component", 1519 | "homepage": "https://symfony.com", 1520 | "time": "2019-11-28T13:33:56+00:00" 1521 | }, 1522 | { 1523 | "name": "symfony/http-kernel", 1524 | "version": "v4.3.1", 1525 | "source": { 1526 | "type": "git", 1527 | "url": "https://github.com/symfony/http-kernel.git", 1528 | "reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429" 1529 | }, 1530 | "dist": { 1531 | "type": "zip", 1532 | "url": "https://api.github.com/repos/symfony/http-kernel/zipball/738ad561cd6a8d1c44ee1da941b2e628e264c429", 1533 | "reference": "738ad561cd6a8d1c44ee1da941b2e628e264c429", 1534 | "shasum": "" 1535 | }, 1536 | "require": { 1537 | "php": "^7.1.3", 1538 | "psr/log": "~1.0", 1539 | "symfony/debug": "~3.4|~4.0", 1540 | "symfony/event-dispatcher": "^4.3", 1541 | "symfony/http-foundation": "^4.1.1", 1542 | "symfony/polyfill-ctype": "~1.8", 1543 | "symfony/polyfill-php73": "^1.9" 1544 | }, 1545 | "conflict": { 1546 | "symfony/browser-kit": "<4.3", 1547 | "symfony/config": "<3.4", 1548 | "symfony/dependency-injection": "<4.3", 1549 | "symfony/translation": "<4.2", 1550 | "symfony/var-dumper": "<4.1.1", 1551 | "twig/twig": "<1.34|<2.4,>=2" 1552 | }, 1553 | "provide": { 1554 | "psr/log-implementation": "1.0" 1555 | }, 1556 | "require-dev": { 1557 | "psr/cache": "~1.0", 1558 | "symfony/browser-kit": "^4.3", 1559 | "symfony/config": "~3.4|~4.0", 1560 | "symfony/console": "~3.4|~4.0", 1561 | "symfony/css-selector": "~3.4|~4.0", 1562 | "symfony/dependency-injection": "^4.3", 1563 | "symfony/dom-crawler": "~3.4|~4.0", 1564 | "symfony/expression-language": "~3.4|~4.0", 1565 | "symfony/finder": "~3.4|~4.0", 1566 | "symfony/process": "~3.4|~4.0", 1567 | "symfony/routing": "~3.4|~4.0", 1568 | "symfony/stopwatch": "~3.4|~4.0", 1569 | "symfony/templating": "~3.4|~4.0", 1570 | "symfony/translation": "~4.2", 1571 | "symfony/translation-contracts": "^1.1", 1572 | "symfony/var-dumper": "^4.1.1", 1573 | "twig/twig": "^1.34|^2.4" 1574 | }, 1575 | "suggest": { 1576 | "symfony/browser-kit": "", 1577 | "symfony/config": "", 1578 | "symfony/console": "", 1579 | "symfony/dependency-injection": "", 1580 | "symfony/var-dumper": "" 1581 | }, 1582 | "type": "library", 1583 | "extra": { 1584 | "branch-alias": { 1585 | "dev-master": "4.3-dev" 1586 | } 1587 | }, 1588 | "autoload": { 1589 | "psr-4": { 1590 | "Symfony\\Component\\HttpKernel\\": "" 1591 | }, 1592 | "exclude-from-classmap": [ 1593 | "/Tests/" 1594 | ] 1595 | }, 1596 | "notification-url": "https://packagist.org/downloads/", 1597 | "license": [ 1598 | "MIT" 1599 | ], 1600 | "authors": [ 1601 | { 1602 | "name": "Fabien Potencier", 1603 | "email": "fabien@symfony.com" 1604 | }, 1605 | { 1606 | "name": "Symfony Community", 1607 | "homepage": "https://symfony.com/contributors" 1608 | } 1609 | ], 1610 | "description": "Symfony HttpKernel Component", 1611 | "homepage": "https://symfony.com", 1612 | "time": "2019-06-06T13:23:34+00:00" 1613 | }, 1614 | { 1615 | "name": "symfony/mime", 1616 | "version": "v5.0.1", 1617 | "source": { 1618 | "type": "git", 1619 | "url": "https://github.com/symfony/mime.git", 1620 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79" 1621 | }, 1622 | "dist": { 1623 | "type": "zip", 1624 | "url": "https://api.github.com/repos/symfony/mime/zipball/0e6a4ced216e49d457eddcefb61132173a876d79", 1625 | "reference": "0e6a4ced216e49d457eddcefb61132173a876d79", 1626 | "shasum": "" 1627 | }, 1628 | "require": { 1629 | "php": "^7.2.5", 1630 | "symfony/polyfill-intl-idn": "^1.10", 1631 | "symfony/polyfill-mbstring": "^1.0" 1632 | }, 1633 | "conflict": { 1634 | "symfony/mailer": "<4.4" 1635 | }, 1636 | "require-dev": { 1637 | "egulias/email-validator": "^2.1.10", 1638 | "symfony/dependency-injection": "^4.4|^5.0" 1639 | }, 1640 | "type": "library", 1641 | "extra": { 1642 | "branch-alias": { 1643 | "dev-master": "5.0-dev" 1644 | } 1645 | }, 1646 | "autoload": { 1647 | "psr-4": { 1648 | "Symfony\\Component\\Mime\\": "" 1649 | }, 1650 | "exclude-from-classmap": [ 1651 | "/Tests/" 1652 | ] 1653 | }, 1654 | "notification-url": "https://packagist.org/downloads/", 1655 | "license": [ 1656 | "MIT" 1657 | ], 1658 | "authors": [ 1659 | { 1660 | "name": "Fabien Potencier", 1661 | "email": "fabien@symfony.com" 1662 | }, 1663 | { 1664 | "name": "Symfony Community", 1665 | "homepage": "https://symfony.com/contributors" 1666 | } 1667 | ], 1668 | "description": "A library to manipulate MIME messages", 1669 | "homepage": "https://symfony.com", 1670 | "keywords": [ 1671 | "mime", 1672 | "mime-type" 1673 | ], 1674 | "time": "2019-11-30T14:12:50+00:00" 1675 | }, 1676 | { 1677 | "name": "symfony/polyfill-ctype", 1678 | "version": "v1.11.0", 1679 | "source": { 1680 | "type": "git", 1681 | "url": "https://github.com/symfony/polyfill-ctype.git", 1682 | "reference": "82ebae02209c21113908c229e9883c419720738a" 1683 | }, 1684 | "dist": { 1685 | "type": "zip", 1686 | "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", 1687 | "reference": "82ebae02209c21113908c229e9883c419720738a", 1688 | "shasum": "" 1689 | }, 1690 | "require": { 1691 | "php": ">=5.3.3" 1692 | }, 1693 | "suggest": { 1694 | "ext-ctype": "For best performance" 1695 | }, 1696 | "type": "library", 1697 | "extra": { 1698 | "branch-alias": { 1699 | "dev-master": "1.11-dev" 1700 | } 1701 | }, 1702 | "autoload": { 1703 | "psr-4": { 1704 | "Symfony\\Polyfill\\Ctype\\": "" 1705 | }, 1706 | "files": [ 1707 | "bootstrap.php" 1708 | ] 1709 | }, 1710 | "notification-url": "https://packagist.org/downloads/", 1711 | "license": [ 1712 | "MIT" 1713 | ], 1714 | "authors": [ 1715 | { 1716 | "name": "Symfony Community", 1717 | "homepage": "https://symfony.com/contributors" 1718 | }, 1719 | { 1720 | "name": "Gert de Pagter", 1721 | "email": "BackEndTea@gmail.com" 1722 | } 1723 | ], 1724 | "description": "Symfony polyfill for ctype functions", 1725 | "homepage": "https://symfony.com", 1726 | "keywords": [ 1727 | "compatibility", 1728 | "ctype", 1729 | "polyfill", 1730 | "portable" 1731 | ], 1732 | "time": "2019-02-06T07:57:58+00:00" 1733 | }, 1734 | { 1735 | "name": "symfony/polyfill-iconv", 1736 | "version": "v1.11.0", 1737 | "source": { 1738 | "type": "git", 1739 | "url": "https://github.com/symfony/polyfill-iconv.git", 1740 | "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7" 1741 | }, 1742 | "dist": { 1743 | "type": "zip", 1744 | "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", 1745 | "reference": "f037ea22acfaee983e271dd9c3b8bb4150bd8ad7", 1746 | "shasum": "" 1747 | }, 1748 | "require": { 1749 | "php": ">=5.3.3" 1750 | }, 1751 | "suggest": { 1752 | "ext-iconv": "For best performance" 1753 | }, 1754 | "type": "library", 1755 | "extra": { 1756 | "branch-alias": { 1757 | "dev-master": "1.11-dev" 1758 | } 1759 | }, 1760 | "autoload": { 1761 | "psr-4": { 1762 | "Symfony\\Polyfill\\Iconv\\": "" 1763 | }, 1764 | "files": [ 1765 | "bootstrap.php" 1766 | ] 1767 | }, 1768 | "notification-url": "https://packagist.org/downloads/", 1769 | "license": [ 1770 | "MIT" 1771 | ], 1772 | "authors": [ 1773 | { 1774 | "name": "Nicolas Grekas", 1775 | "email": "p@tchwork.com" 1776 | }, 1777 | { 1778 | "name": "Symfony Community", 1779 | "homepage": "https://symfony.com/contributors" 1780 | } 1781 | ], 1782 | "description": "Symfony polyfill for the Iconv extension", 1783 | "homepage": "https://symfony.com", 1784 | "keywords": [ 1785 | "compatibility", 1786 | "iconv", 1787 | "polyfill", 1788 | "portable", 1789 | "shim" 1790 | ], 1791 | "time": "2019-02-06T07:57:58+00:00" 1792 | }, 1793 | { 1794 | "name": "symfony/polyfill-intl-idn", 1795 | "version": "v1.13.1", 1796 | "source": { 1797 | "type": "git", 1798 | "url": "https://github.com/symfony/polyfill-intl-idn.git", 1799 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46" 1800 | }, 1801 | "dist": { 1802 | "type": "zip", 1803 | "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 1804 | "reference": "6f9c239e61e1b0c9229a28ff89a812dc449c3d46", 1805 | "shasum": "" 1806 | }, 1807 | "require": { 1808 | "php": ">=5.3.3", 1809 | "symfony/polyfill-mbstring": "^1.3", 1810 | "symfony/polyfill-php72": "^1.9" 1811 | }, 1812 | "suggest": { 1813 | "ext-intl": "For best performance" 1814 | }, 1815 | "type": "library", 1816 | "extra": { 1817 | "branch-alias": { 1818 | "dev-master": "1.13-dev" 1819 | } 1820 | }, 1821 | "autoload": { 1822 | "psr-4": { 1823 | "Symfony\\Polyfill\\Intl\\Idn\\": "" 1824 | }, 1825 | "files": [ 1826 | "bootstrap.php" 1827 | ] 1828 | }, 1829 | "notification-url": "https://packagist.org/downloads/", 1830 | "license": [ 1831 | "MIT" 1832 | ], 1833 | "authors": [ 1834 | { 1835 | "name": "Laurent Bassin", 1836 | "email": "laurent@bassin.info" 1837 | }, 1838 | { 1839 | "name": "Symfony Community", 1840 | "homepage": "https://symfony.com/contributors" 1841 | } 1842 | ], 1843 | "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", 1844 | "homepage": "https://symfony.com", 1845 | "keywords": [ 1846 | "compatibility", 1847 | "idn", 1848 | "intl", 1849 | "polyfill", 1850 | "portable", 1851 | "shim" 1852 | ], 1853 | "time": "2019-11-27T13:56:44+00:00" 1854 | }, 1855 | { 1856 | "name": "symfony/polyfill-mbstring", 1857 | "version": "v1.13.1", 1858 | "source": { 1859 | "type": "git", 1860 | "url": "https://github.com/symfony/polyfill-mbstring.git", 1861 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f" 1862 | }, 1863 | "dist": { 1864 | "type": "zip", 1865 | "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/7b4aab9743c30be783b73de055d24a39cf4b954f", 1866 | "reference": "7b4aab9743c30be783b73de055d24a39cf4b954f", 1867 | "shasum": "" 1868 | }, 1869 | "require": { 1870 | "php": ">=5.3.3" 1871 | }, 1872 | "suggest": { 1873 | "ext-mbstring": "For best performance" 1874 | }, 1875 | "type": "library", 1876 | "extra": { 1877 | "branch-alias": { 1878 | "dev-master": "1.13-dev" 1879 | } 1880 | }, 1881 | "autoload": { 1882 | "psr-4": { 1883 | "Symfony\\Polyfill\\Mbstring\\": "" 1884 | }, 1885 | "files": [ 1886 | "bootstrap.php" 1887 | ] 1888 | }, 1889 | "notification-url": "https://packagist.org/downloads/", 1890 | "license": [ 1891 | "MIT" 1892 | ], 1893 | "authors": [ 1894 | { 1895 | "name": "Nicolas Grekas", 1896 | "email": "p@tchwork.com" 1897 | }, 1898 | { 1899 | "name": "Symfony Community", 1900 | "homepage": "https://symfony.com/contributors" 1901 | } 1902 | ], 1903 | "description": "Symfony polyfill for the Mbstring extension", 1904 | "homepage": "https://symfony.com", 1905 | "keywords": [ 1906 | "compatibility", 1907 | "mbstring", 1908 | "polyfill", 1909 | "portable", 1910 | "shim" 1911 | ], 1912 | "time": "2019-11-27T14:18:11+00:00" 1913 | }, 1914 | { 1915 | "name": "symfony/polyfill-php72", 1916 | "version": "v1.13.1", 1917 | "source": { 1918 | "type": "git", 1919 | "url": "https://github.com/symfony/polyfill-php72.git", 1920 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038" 1921 | }, 1922 | "dist": { 1923 | "type": "zip", 1924 | "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/66fea50f6cb37a35eea048d75a7d99a45b586038", 1925 | "reference": "66fea50f6cb37a35eea048d75a7d99a45b586038", 1926 | "shasum": "" 1927 | }, 1928 | "require": { 1929 | "php": ">=5.3.3" 1930 | }, 1931 | "type": "library", 1932 | "extra": { 1933 | "branch-alias": { 1934 | "dev-master": "1.13-dev" 1935 | } 1936 | }, 1937 | "autoload": { 1938 | "psr-4": { 1939 | "Symfony\\Polyfill\\Php72\\": "" 1940 | }, 1941 | "files": [ 1942 | "bootstrap.php" 1943 | ] 1944 | }, 1945 | "notification-url": "https://packagist.org/downloads/", 1946 | "license": [ 1947 | "MIT" 1948 | ], 1949 | "authors": [ 1950 | { 1951 | "name": "Nicolas Grekas", 1952 | "email": "p@tchwork.com" 1953 | }, 1954 | { 1955 | "name": "Symfony Community", 1956 | "homepage": "https://symfony.com/contributors" 1957 | } 1958 | ], 1959 | "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", 1960 | "homepage": "https://symfony.com", 1961 | "keywords": [ 1962 | "compatibility", 1963 | "polyfill", 1964 | "portable", 1965 | "shim" 1966 | ], 1967 | "time": "2019-11-27T13:56:44+00:00" 1968 | }, 1969 | { 1970 | "name": "symfony/polyfill-php73", 1971 | "version": "v1.11.0", 1972 | "source": { 1973 | "type": "git", 1974 | "url": "https://github.com/symfony/polyfill-php73.git", 1975 | "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd" 1976 | }, 1977 | "dist": { 1978 | "type": "zip", 1979 | "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", 1980 | "reference": "d1fb4abcc0c47be136208ad9d68bf59f1ee17abd", 1981 | "shasum": "" 1982 | }, 1983 | "require": { 1984 | "php": ">=5.3.3" 1985 | }, 1986 | "type": "library", 1987 | "extra": { 1988 | "branch-alias": { 1989 | "dev-master": "1.11-dev" 1990 | } 1991 | }, 1992 | "autoload": { 1993 | "psr-4": { 1994 | "Symfony\\Polyfill\\Php73\\": "" 1995 | }, 1996 | "files": [ 1997 | "bootstrap.php" 1998 | ], 1999 | "classmap": [ 2000 | "Resources/stubs" 2001 | ] 2002 | }, 2003 | "notification-url": "https://packagist.org/downloads/", 2004 | "license": [ 2005 | "MIT" 2006 | ], 2007 | "authors": [ 2008 | { 2009 | "name": "Nicolas Grekas", 2010 | "email": "p@tchwork.com" 2011 | }, 2012 | { 2013 | "name": "Symfony Community", 2014 | "homepage": "https://symfony.com/contributors" 2015 | } 2016 | ], 2017 | "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", 2018 | "homepage": "https://symfony.com", 2019 | "keywords": [ 2020 | "compatibility", 2021 | "polyfill", 2022 | "portable", 2023 | "shim" 2024 | ], 2025 | "time": "2019-02-06T07:57:58+00:00" 2026 | }, 2027 | { 2028 | "name": "symfony/process", 2029 | "version": "v4.3.1", 2030 | "source": { 2031 | "type": "git", 2032 | "url": "https://github.com/symfony/process.git", 2033 | "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c" 2034 | }, 2035 | "dist": { 2036 | "type": "zip", 2037 | "url": "https://api.github.com/repos/symfony/process/zipball/856d35814cf287480465bb7a6c413bb7f5f5e69c", 2038 | "reference": "856d35814cf287480465bb7a6c413bb7f5f5e69c", 2039 | "shasum": "" 2040 | }, 2041 | "require": { 2042 | "php": "^7.1.3" 2043 | }, 2044 | "type": "library", 2045 | "extra": { 2046 | "branch-alias": { 2047 | "dev-master": "4.3-dev" 2048 | } 2049 | }, 2050 | "autoload": { 2051 | "psr-4": { 2052 | "Symfony\\Component\\Process\\": "" 2053 | }, 2054 | "exclude-from-classmap": [ 2055 | "/Tests/" 2056 | ] 2057 | }, 2058 | "notification-url": "https://packagist.org/downloads/", 2059 | "license": [ 2060 | "MIT" 2061 | ], 2062 | "authors": [ 2063 | { 2064 | "name": "Fabien Potencier", 2065 | "email": "fabien@symfony.com" 2066 | }, 2067 | { 2068 | "name": "Symfony Community", 2069 | "homepage": "https://symfony.com/contributors" 2070 | } 2071 | ], 2072 | "description": "Symfony Process Component", 2073 | "homepage": "https://symfony.com", 2074 | "time": "2019-05-30T16:10:05+00:00" 2075 | }, 2076 | { 2077 | "name": "symfony/routing", 2078 | "version": "v4.3.1", 2079 | "source": { 2080 | "type": "git", 2081 | "url": "https://github.com/symfony/routing.git", 2082 | "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465" 2083 | }, 2084 | "dist": { 2085 | "type": "zip", 2086 | "url": "https://api.github.com/repos/symfony/routing/zipball/9b31cd24f6ad2cebde6845f6daa9c6d69efe2465", 2087 | "reference": "9b31cd24f6ad2cebde6845f6daa9c6d69efe2465", 2088 | "shasum": "" 2089 | }, 2090 | "require": { 2091 | "php": "^7.1.3" 2092 | }, 2093 | "conflict": { 2094 | "symfony/config": "<4.2", 2095 | "symfony/dependency-injection": "<3.4", 2096 | "symfony/yaml": "<3.4" 2097 | }, 2098 | "require-dev": { 2099 | "doctrine/annotations": "~1.2", 2100 | "psr/log": "~1.0", 2101 | "symfony/config": "~4.2", 2102 | "symfony/dependency-injection": "~3.4|~4.0", 2103 | "symfony/expression-language": "~3.4|~4.0", 2104 | "symfony/http-foundation": "~3.4|~4.0", 2105 | "symfony/yaml": "~3.4|~4.0" 2106 | }, 2107 | "suggest": { 2108 | "doctrine/annotations": "For using the annotation loader", 2109 | "symfony/config": "For using the all-in-one router or any loader", 2110 | "symfony/expression-language": "For using expression matching", 2111 | "symfony/http-foundation": "For using a Symfony Request object", 2112 | "symfony/yaml": "For using the YAML loader" 2113 | }, 2114 | "type": "library", 2115 | "extra": { 2116 | "branch-alias": { 2117 | "dev-master": "4.3-dev" 2118 | } 2119 | }, 2120 | "autoload": { 2121 | "psr-4": { 2122 | "Symfony\\Component\\Routing\\": "" 2123 | }, 2124 | "exclude-from-classmap": [ 2125 | "/Tests/" 2126 | ] 2127 | }, 2128 | "notification-url": "https://packagist.org/downloads/", 2129 | "license": [ 2130 | "MIT" 2131 | ], 2132 | "authors": [ 2133 | { 2134 | "name": "Fabien Potencier", 2135 | "email": "fabien@symfony.com" 2136 | }, 2137 | { 2138 | "name": "Symfony Community", 2139 | "homepage": "https://symfony.com/contributors" 2140 | } 2141 | ], 2142 | "description": "Symfony Routing Component", 2143 | "homepage": "https://symfony.com", 2144 | "keywords": [ 2145 | "router", 2146 | "routing", 2147 | "uri", 2148 | "url" 2149 | ], 2150 | "time": "2019-06-05T09:16:20+00:00" 2151 | }, 2152 | { 2153 | "name": "symfony/service-contracts", 2154 | "version": "v1.1.2", 2155 | "source": { 2156 | "type": "git", 2157 | "url": "https://github.com/symfony/service-contracts.git", 2158 | "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0" 2159 | }, 2160 | "dist": { 2161 | "type": "zip", 2162 | "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0", 2163 | "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0", 2164 | "shasum": "" 2165 | }, 2166 | "require": { 2167 | "php": "^7.1.3" 2168 | }, 2169 | "suggest": { 2170 | "psr/container": "", 2171 | "symfony/service-implementation": "" 2172 | }, 2173 | "type": "library", 2174 | "extra": { 2175 | "branch-alias": { 2176 | "dev-master": "1.1-dev" 2177 | } 2178 | }, 2179 | "autoload": { 2180 | "psr-4": { 2181 | "Symfony\\Contracts\\Service\\": "" 2182 | } 2183 | }, 2184 | "notification-url": "https://packagist.org/downloads/", 2185 | "license": [ 2186 | "MIT" 2187 | ], 2188 | "authors": [ 2189 | { 2190 | "name": "Nicolas Grekas", 2191 | "email": "p@tchwork.com" 2192 | }, 2193 | { 2194 | "name": "Symfony Community", 2195 | "homepage": "https://symfony.com/contributors" 2196 | } 2197 | ], 2198 | "description": "Generic abstractions related to writing services", 2199 | "homepage": "https://symfony.com", 2200 | "keywords": [ 2201 | "abstractions", 2202 | "contracts", 2203 | "decoupling", 2204 | "interfaces", 2205 | "interoperability", 2206 | "standards" 2207 | ], 2208 | "time": "2019-05-28T07:50:59+00:00" 2209 | }, 2210 | { 2211 | "name": "symfony/translation", 2212 | "version": "v4.3.1", 2213 | "source": { 2214 | "type": "git", 2215 | "url": "https://github.com/symfony/translation.git", 2216 | "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa" 2217 | }, 2218 | "dist": { 2219 | "type": "zip", 2220 | "url": "https://api.github.com/repos/symfony/translation/zipball/5dda505e5f65d759741dfaf4e54b36010a4b57aa", 2221 | "reference": "5dda505e5f65d759741dfaf4e54b36010a4b57aa", 2222 | "shasum": "" 2223 | }, 2224 | "require": { 2225 | "php": "^7.1.3", 2226 | "symfony/polyfill-mbstring": "~1.0", 2227 | "symfony/translation-contracts": "^1.1.2" 2228 | }, 2229 | "conflict": { 2230 | "symfony/config": "<3.4", 2231 | "symfony/dependency-injection": "<3.4", 2232 | "symfony/yaml": "<3.4" 2233 | }, 2234 | "provide": { 2235 | "symfony/translation-implementation": "1.0" 2236 | }, 2237 | "require-dev": { 2238 | "psr/log": "~1.0", 2239 | "symfony/config": "~3.4|~4.0", 2240 | "symfony/console": "~3.4|~4.0", 2241 | "symfony/dependency-injection": "~3.4|~4.0", 2242 | "symfony/finder": "~2.8|~3.0|~4.0", 2243 | "symfony/http-kernel": "~3.4|~4.0", 2244 | "symfony/intl": "~3.4|~4.0", 2245 | "symfony/service-contracts": "^1.1.2", 2246 | "symfony/var-dumper": "~3.4|~4.0", 2247 | "symfony/yaml": "~3.4|~4.0" 2248 | }, 2249 | "suggest": { 2250 | "psr/log-implementation": "To use logging capability in translator", 2251 | "symfony/config": "", 2252 | "symfony/yaml": "" 2253 | }, 2254 | "type": "library", 2255 | "extra": { 2256 | "branch-alias": { 2257 | "dev-master": "4.3-dev" 2258 | } 2259 | }, 2260 | "autoload": { 2261 | "psr-4": { 2262 | "Symfony\\Component\\Translation\\": "" 2263 | }, 2264 | "exclude-from-classmap": [ 2265 | "/Tests/" 2266 | ] 2267 | }, 2268 | "notification-url": "https://packagist.org/downloads/", 2269 | "license": [ 2270 | "MIT" 2271 | ], 2272 | "authors": [ 2273 | { 2274 | "name": "Fabien Potencier", 2275 | "email": "fabien@symfony.com" 2276 | }, 2277 | { 2278 | "name": "Symfony Community", 2279 | "homepage": "https://symfony.com/contributors" 2280 | } 2281 | ], 2282 | "description": "Symfony Translation Component", 2283 | "homepage": "https://symfony.com", 2284 | "time": "2019-06-03T20:27:40+00:00" 2285 | }, 2286 | { 2287 | "name": "symfony/translation-contracts", 2288 | "version": "v1.1.2", 2289 | "source": { 2290 | "type": "git", 2291 | "url": "https://github.com/symfony/translation-contracts.git", 2292 | "reference": "93597ce975d91c52ebfaca1253343cd9ccb7916d" 2293 | }, 2294 | "dist": { 2295 | "type": "zip", 2296 | "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/93597ce975d91c52ebfaca1253343cd9ccb7916d", 2297 | "reference": "93597ce975d91c52ebfaca1253343cd9ccb7916d", 2298 | "shasum": "" 2299 | }, 2300 | "require": { 2301 | "php": "^7.1.3" 2302 | }, 2303 | "suggest": { 2304 | "symfony/translation-implementation": "" 2305 | }, 2306 | "type": "library", 2307 | "extra": { 2308 | "branch-alias": { 2309 | "dev-master": "1.1-dev" 2310 | } 2311 | }, 2312 | "autoload": { 2313 | "psr-4": { 2314 | "Symfony\\Contracts\\Translation\\": "" 2315 | } 2316 | }, 2317 | "notification-url": "https://packagist.org/downloads/", 2318 | "license": [ 2319 | "MIT" 2320 | ], 2321 | "authors": [ 2322 | { 2323 | "name": "Nicolas Grekas", 2324 | "email": "p@tchwork.com" 2325 | }, 2326 | { 2327 | "name": "Symfony Community", 2328 | "homepage": "https://symfony.com/contributors" 2329 | } 2330 | ], 2331 | "description": "Generic abstractions related to translation", 2332 | "homepage": "https://symfony.com", 2333 | "keywords": [ 2334 | "abstractions", 2335 | "contracts", 2336 | "decoupling", 2337 | "interfaces", 2338 | "interoperability", 2339 | "standards" 2340 | ], 2341 | "time": "2019-05-27T08:16:38+00:00" 2342 | }, 2343 | { 2344 | "name": "symfony/var-dumper", 2345 | "version": "v4.3.1", 2346 | "source": { 2347 | "type": "git", 2348 | "url": "https://github.com/symfony/var-dumper.git", 2349 | "reference": "f974f448154928d2b5fb7c412bd23b81d063f34b" 2350 | }, 2351 | "dist": { 2352 | "type": "zip", 2353 | "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f974f448154928d2b5fb7c412bd23b81d063f34b", 2354 | "reference": "f974f448154928d2b5fb7c412bd23b81d063f34b", 2355 | "shasum": "" 2356 | }, 2357 | "require": { 2358 | "php": "^7.1.3", 2359 | "symfony/polyfill-mbstring": "~1.0", 2360 | "symfony/polyfill-php72": "~1.5" 2361 | }, 2362 | "conflict": { 2363 | "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", 2364 | "symfony/console": "<3.4" 2365 | }, 2366 | "require-dev": { 2367 | "ext-iconv": "*", 2368 | "symfony/console": "~3.4|~4.0", 2369 | "symfony/process": "~3.4|~4.0", 2370 | "twig/twig": "~1.34|~2.4" 2371 | }, 2372 | "suggest": { 2373 | "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", 2374 | "ext-intl": "To show region name in time zone dump", 2375 | "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" 2376 | }, 2377 | "bin": [ 2378 | "Resources/bin/var-dump-server" 2379 | ], 2380 | "type": "library", 2381 | "extra": { 2382 | "branch-alias": { 2383 | "dev-master": "4.3-dev" 2384 | } 2385 | }, 2386 | "autoload": { 2387 | "files": [ 2388 | "Resources/functions/dump.php" 2389 | ], 2390 | "psr-4": { 2391 | "Symfony\\Component\\VarDumper\\": "" 2392 | }, 2393 | "exclude-from-classmap": [ 2394 | "/Tests/" 2395 | ] 2396 | }, 2397 | "notification-url": "https://packagist.org/downloads/", 2398 | "license": [ 2399 | "MIT" 2400 | ], 2401 | "authors": [ 2402 | { 2403 | "name": "Nicolas Grekas", 2404 | "email": "p@tchwork.com" 2405 | }, 2406 | { 2407 | "name": "Symfony Community", 2408 | "homepage": "https://symfony.com/contributors" 2409 | } 2410 | ], 2411 | "description": "Symfony mechanism for exploring and dumping PHP variables", 2412 | "homepage": "https://symfony.com", 2413 | "keywords": [ 2414 | "debug", 2415 | "dump" 2416 | ], 2417 | "time": "2019-06-05T02:08:12+00:00" 2418 | }, 2419 | { 2420 | "name": "tijsverkoyen/css-to-inline-styles", 2421 | "version": "2.2.1", 2422 | "source": { 2423 | "type": "git", 2424 | "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", 2425 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" 2426 | }, 2427 | "dist": { 2428 | "type": "zip", 2429 | "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 2430 | "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", 2431 | "shasum": "" 2432 | }, 2433 | "require": { 2434 | "php": "^5.5 || ^7.0", 2435 | "symfony/css-selector": "^2.7 || ^3.0 || ^4.0" 2436 | }, 2437 | "require-dev": { 2438 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" 2439 | }, 2440 | "type": "library", 2441 | "extra": { 2442 | "branch-alias": { 2443 | "dev-master": "2.2.x-dev" 2444 | } 2445 | }, 2446 | "autoload": { 2447 | "psr-4": { 2448 | "TijsVerkoyen\\CssToInlineStyles\\": "src" 2449 | } 2450 | }, 2451 | "notification-url": "https://packagist.org/downloads/", 2452 | "license": [ 2453 | "BSD-3-Clause" 2454 | ], 2455 | "authors": [ 2456 | { 2457 | "name": "Tijs Verkoyen", 2458 | "email": "css_to_inline_styles@verkoyen.eu", 2459 | "role": "Developer" 2460 | } 2461 | ], 2462 | "description": "CssToInlineStyles is a class that enables you to convert HTML-pages/files into HTML-pages/files with inline styles. This is very useful when you're sending emails.", 2463 | "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", 2464 | "time": "2017-11-27T11:13:29+00:00" 2465 | }, 2466 | { 2467 | "name": "vlucas/phpdotenv", 2468 | "version": "v3.3.3", 2469 | "source": { 2470 | "type": "git", 2471 | "url": "https://github.com/vlucas/phpdotenv.git", 2472 | "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde" 2473 | }, 2474 | "dist": { 2475 | "type": "zip", 2476 | "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/dbcc609971dd9b55f48b8008b553d79fd372ddde", 2477 | "reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde", 2478 | "shasum": "" 2479 | }, 2480 | "require": { 2481 | "php": "^5.4 || ^7.0", 2482 | "phpoption/phpoption": "^1.5", 2483 | "symfony/polyfill-ctype": "^1.9" 2484 | }, 2485 | "require-dev": { 2486 | "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0" 2487 | }, 2488 | "type": "library", 2489 | "extra": { 2490 | "branch-alias": { 2491 | "dev-master": "3.3-dev" 2492 | } 2493 | }, 2494 | "autoload": { 2495 | "psr-4": { 2496 | "Dotenv\\": "src/" 2497 | } 2498 | }, 2499 | "notification-url": "https://packagist.org/downloads/", 2500 | "license": [ 2501 | "BSD-3-Clause" 2502 | ], 2503 | "authors": [ 2504 | { 2505 | "name": "Vance Lucas", 2506 | "email": "vance@vancelucas.com", 2507 | "homepage": "http://www.vancelucas.com" 2508 | } 2509 | ], 2510 | "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", 2511 | "keywords": [ 2512 | "dotenv", 2513 | "env", 2514 | "environment" 2515 | ], 2516 | "time": "2019-03-06T09:39:45+00:00" 2517 | } 2518 | ], 2519 | "packages-dev": [ 2520 | { 2521 | "name": "doctrine/instantiator", 2522 | "version": "1.2.0", 2523 | "source": { 2524 | "type": "git", 2525 | "url": "https://github.com/doctrine/instantiator.git", 2526 | "reference": "a2c590166b2133a4633738648b6b064edae0814a" 2527 | }, 2528 | "dist": { 2529 | "type": "zip", 2530 | "url": "https://api.github.com/repos/doctrine/instantiator/zipball/a2c590166b2133a4633738648b6b064edae0814a", 2531 | "reference": "a2c590166b2133a4633738648b6b064edae0814a", 2532 | "shasum": "" 2533 | }, 2534 | "require": { 2535 | "php": "^7.1" 2536 | }, 2537 | "require-dev": { 2538 | "doctrine/coding-standard": "^6.0", 2539 | "ext-pdo": "*", 2540 | "ext-phar": "*", 2541 | "phpbench/phpbench": "^0.13", 2542 | "phpstan/phpstan-phpunit": "^0.11", 2543 | "phpstan/phpstan-shim": "^0.11", 2544 | "phpunit/phpunit": "^7.0" 2545 | }, 2546 | "type": "library", 2547 | "extra": { 2548 | "branch-alias": { 2549 | "dev-master": "1.2.x-dev" 2550 | } 2551 | }, 2552 | "autoload": { 2553 | "psr-4": { 2554 | "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" 2555 | } 2556 | }, 2557 | "notification-url": "https://packagist.org/downloads/", 2558 | "license": [ 2559 | "MIT" 2560 | ], 2561 | "authors": [ 2562 | { 2563 | "name": "Marco Pivetta", 2564 | "email": "ocramius@gmail.com", 2565 | "homepage": "http://ocramius.github.com/" 2566 | } 2567 | ], 2568 | "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", 2569 | "homepage": "https://www.doctrine-project.org/projects/instantiator.html", 2570 | "keywords": [ 2571 | "constructor", 2572 | "instantiate" 2573 | ], 2574 | "time": "2019-03-17T17:37:11+00:00" 2575 | }, 2576 | { 2577 | "name": "fzaninotto/faker", 2578 | "version": "v1.8.0", 2579 | "source": { 2580 | "type": "git", 2581 | "url": "https://github.com/fzaninotto/Faker.git", 2582 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" 2583 | }, 2584 | "dist": { 2585 | "type": "zip", 2586 | "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", 2587 | "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", 2588 | "shasum": "" 2589 | }, 2590 | "require": { 2591 | "php": "^5.3.3 || ^7.0" 2592 | }, 2593 | "require-dev": { 2594 | "ext-intl": "*", 2595 | "phpunit/phpunit": "^4.8.35 || ^5.7", 2596 | "squizlabs/php_codesniffer": "^1.5" 2597 | }, 2598 | "type": "library", 2599 | "extra": { 2600 | "branch-alias": { 2601 | "dev-master": "1.8-dev" 2602 | } 2603 | }, 2604 | "autoload": { 2605 | "psr-4": { 2606 | "Faker\\": "src/Faker/" 2607 | } 2608 | }, 2609 | "notification-url": "https://packagist.org/downloads/", 2610 | "license": [ 2611 | "MIT" 2612 | ], 2613 | "authors": [ 2614 | { 2615 | "name": "François Zaninotto" 2616 | } 2617 | ], 2618 | "description": "Faker is a PHP library that generates fake data for you.", 2619 | "keywords": [ 2620 | "data", 2621 | "faker", 2622 | "fixtures" 2623 | ], 2624 | "time": "2018-07-12T10:23:15+00:00" 2625 | }, 2626 | { 2627 | "name": "hamcrest/hamcrest-php", 2628 | "version": "v2.0.0", 2629 | "source": { 2630 | "type": "git", 2631 | "url": "https://github.com/hamcrest/hamcrest-php.git", 2632 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" 2633 | }, 2634 | "dist": { 2635 | "type": "zip", 2636 | "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", 2637 | "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", 2638 | "shasum": "" 2639 | }, 2640 | "require": { 2641 | "php": "^5.3|^7.0" 2642 | }, 2643 | "replace": { 2644 | "cordoval/hamcrest-php": "*", 2645 | "davedevelopment/hamcrest-php": "*", 2646 | "kodova/hamcrest-php": "*" 2647 | }, 2648 | "require-dev": { 2649 | "phpunit/php-file-iterator": "1.3.3", 2650 | "phpunit/phpunit": "~4.0", 2651 | "satooshi/php-coveralls": "^1.0" 2652 | }, 2653 | "type": "library", 2654 | "extra": { 2655 | "branch-alias": { 2656 | "dev-master": "2.0-dev" 2657 | } 2658 | }, 2659 | "autoload": { 2660 | "classmap": [ 2661 | "hamcrest" 2662 | ] 2663 | }, 2664 | "notification-url": "https://packagist.org/downloads/", 2665 | "license": [ 2666 | "BSD" 2667 | ], 2668 | "description": "This is the PHP port of Hamcrest Matchers", 2669 | "keywords": [ 2670 | "test" 2671 | ], 2672 | "time": "2016-01-20T08:20:44+00:00" 2673 | }, 2674 | { 2675 | "name": "mockery/mockery", 2676 | "version": "1.2.2", 2677 | "source": { 2678 | "type": "git", 2679 | "url": "https://github.com/mockery/mockery.git", 2680 | "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2" 2681 | }, 2682 | "dist": { 2683 | "type": "zip", 2684 | "url": "https://api.github.com/repos/mockery/mockery/zipball/0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", 2685 | "reference": "0eb0b48c3f07b3b89f5169ce005b7d05b18cf1d2", 2686 | "shasum": "" 2687 | }, 2688 | "require": { 2689 | "hamcrest/hamcrest-php": "~2.0", 2690 | "lib-pcre": ">=7.0", 2691 | "php": ">=5.6.0" 2692 | }, 2693 | "require-dev": { 2694 | "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" 2695 | }, 2696 | "type": "library", 2697 | "extra": { 2698 | "branch-alias": { 2699 | "dev-master": "1.0.x-dev" 2700 | } 2701 | }, 2702 | "autoload": { 2703 | "psr-0": { 2704 | "Mockery": "library/" 2705 | } 2706 | }, 2707 | "notification-url": "https://packagist.org/downloads/", 2708 | "license": [ 2709 | "BSD-3-Clause" 2710 | ], 2711 | "authors": [ 2712 | { 2713 | "name": "Pádraic Brady", 2714 | "email": "padraic.brady@gmail.com", 2715 | "homepage": "http://blog.astrumfutura.com" 2716 | }, 2717 | { 2718 | "name": "Dave Marshall", 2719 | "email": "dave.marshall@atstsolutions.co.uk", 2720 | "homepage": "http://davedevelopment.co.uk" 2721 | } 2722 | ], 2723 | "description": "Mockery is a simple yet flexible PHP mock object framework", 2724 | "homepage": "https://github.com/mockery/mockery", 2725 | "keywords": [ 2726 | "BDD", 2727 | "TDD", 2728 | "library", 2729 | "mock", 2730 | "mock objects", 2731 | "mockery", 2732 | "stub", 2733 | "test", 2734 | "test double", 2735 | "testing" 2736 | ], 2737 | "time": "2019-02-13T09:37:52+00:00" 2738 | }, 2739 | { 2740 | "name": "myclabs/deep-copy", 2741 | "version": "1.9.1", 2742 | "source": { 2743 | "type": "git", 2744 | "url": "https://github.com/myclabs/DeepCopy.git", 2745 | "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72" 2746 | }, 2747 | "dist": { 2748 | "type": "zip", 2749 | "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", 2750 | "reference": "e6828efaba2c9b79f4499dae1d66ef8bfa7b2b72", 2751 | "shasum": "" 2752 | }, 2753 | "require": { 2754 | "php": "^7.1" 2755 | }, 2756 | "replace": { 2757 | "myclabs/deep-copy": "self.version" 2758 | }, 2759 | "require-dev": { 2760 | "doctrine/collections": "^1.0", 2761 | "doctrine/common": "^2.6", 2762 | "phpunit/phpunit": "^7.1" 2763 | }, 2764 | "type": "library", 2765 | "autoload": { 2766 | "psr-4": { 2767 | "DeepCopy\\": "src/DeepCopy/" 2768 | }, 2769 | "files": [ 2770 | "src/DeepCopy/deep_copy.php" 2771 | ] 2772 | }, 2773 | "notification-url": "https://packagist.org/downloads/", 2774 | "license": [ 2775 | "MIT" 2776 | ], 2777 | "description": "Create deep copies (clones) of your objects", 2778 | "keywords": [ 2779 | "clone", 2780 | "copy", 2781 | "duplicate", 2782 | "object", 2783 | "object graph" 2784 | ], 2785 | "time": "2019-04-07T13:18:21+00:00" 2786 | }, 2787 | { 2788 | "name": "orchestra/testbench", 2789 | "version": "v3.8.3", 2790 | "source": { 2791 | "type": "git", 2792 | "url": "https://github.com/orchestral/testbench.git", 2793 | "reference": "171b29bb9dbd754dc1eb8d9ba0ff05b914b8db1d" 2794 | }, 2795 | "dist": { 2796 | "type": "zip", 2797 | "url": "https://api.github.com/repos/orchestral/testbench/zipball/171b29bb9dbd754dc1eb8d9ba0ff05b914b8db1d", 2798 | "reference": "171b29bb9dbd754dc1eb8d9ba0ff05b914b8db1d", 2799 | "shasum": "" 2800 | }, 2801 | "require": { 2802 | "laravel/framework": "~5.8.19", 2803 | "mockery/mockery": "^1.0", 2804 | "orchestra/testbench-core": "~3.8.4", 2805 | "php": ">=7.1", 2806 | "phpunit/phpunit": "^7.5 || ^8.0" 2807 | }, 2808 | "type": "library", 2809 | "extra": { 2810 | "branch-alias": { 2811 | "dev-master": "3.8-dev" 2812 | } 2813 | }, 2814 | "notification-url": "https://packagist.org/downloads/", 2815 | "license": [ 2816 | "MIT" 2817 | ], 2818 | "authors": [ 2819 | { 2820 | "name": "Mior Muhammad Zaki", 2821 | "email": "crynobone@gmail.com", 2822 | "homepage": "https://github.com/crynobone" 2823 | } 2824 | ], 2825 | "description": "Laravel Testing Helper for Packages Development", 2826 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 2827 | "keywords": [ 2828 | "BDD", 2829 | "TDD", 2830 | "laravel", 2831 | "orchestra-platform", 2832 | "orchestral", 2833 | "testing" 2834 | ], 2835 | "time": "2019-05-29T23:14:15+00:00" 2836 | }, 2837 | { 2838 | "name": "orchestra/testbench-core", 2839 | "version": "v3.8.5", 2840 | "source": { 2841 | "type": "git", 2842 | "url": "https://github.com/orchestral/testbench-core.git", 2843 | "reference": "b81c24ef1036cb1f8ff0ca711535cea3f0281848" 2844 | }, 2845 | "dist": { 2846 | "type": "zip", 2847 | "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/b81c24ef1036cb1f8ff0ca711535cea3f0281848", 2848 | "reference": "b81c24ef1036cb1f8ff0ca711535cea3f0281848", 2849 | "shasum": "" 2850 | }, 2851 | "require": { 2852 | "fzaninotto/faker": "^1.4", 2853 | "php": ">=7.1" 2854 | }, 2855 | "require-dev": { 2856 | "laravel/framework": "~5.8.3", 2857 | "laravel/laravel": "dev-master", 2858 | "mockery/mockery": "^1.0", 2859 | "phpunit/phpunit": "^7.5 || ^8.0" 2860 | }, 2861 | "suggest": { 2862 | "laravel/framework": "Required for testing (~5.8.19).", 2863 | "mockery/mockery": "Allow to use Mockery for testing (^1.0).", 2864 | "orchestra/testbench-browser-kit": "Allow to use legacy Laravel BrowserKit for testing (^3.8).", 2865 | "orchestra/testbench-dusk": "Allow to use Laravel Dusk for testing (^3.8).", 2866 | "phpunit/phpunit": "Allow to use PHPUnit for testing (^7.5 || ^8.0)." 2867 | }, 2868 | "type": "library", 2869 | "extra": { 2870 | "branch-alias": { 2871 | "dev-master": "3.8-dev" 2872 | } 2873 | }, 2874 | "autoload": { 2875 | "psr-4": { 2876 | "Orchestra\\Testbench\\": "src/" 2877 | } 2878 | }, 2879 | "notification-url": "https://packagist.org/downloads/", 2880 | "license": [ 2881 | "MIT" 2882 | ], 2883 | "authors": [ 2884 | { 2885 | "name": "Mior Muhammad Zaki", 2886 | "email": "crynobone@gmail.com", 2887 | "homepage": "https://github.com/crynobone" 2888 | } 2889 | ], 2890 | "description": "Testing Helper for Laravel Development", 2891 | "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", 2892 | "keywords": [ 2893 | "BDD", 2894 | "TDD", 2895 | "laravel", 2896 | "orchestra-platform", 2897 | "orchestral", 2898 | "testing" 2899 | ], 2900 | "time": "2019-06-10T08:29:56+00:00" 2901 | }, 2902 | { 2903 | "name": "phar-io/manifest", 2904 | "version": "1.0.3", 2905 | "source": { 2906 | "type": "git", 2907 | "url": "https://github.com/phar-io/manifest.git", 2908 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" 2909 | }, 2910 | "dist": { 2911 | "type": "zip", 2912 | "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 2913 | "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", 2914 | "shasum": "" 2915 | }, 2916 | "require": { 2917 | "ext-dom": "*", 2918 | "ext-phar": "*", 2919 | "phar-io/version": "^2.0", 2920 | "php": "^5.6 || ^7.0" 2921 | }, 2922 | "type": "library", 2923 | "extra": { 2924 | "branch-alias": { 2925 | "dev-master": "1.0.x-dev" 2926 | } 2927 | }, 2928 | "autoload": { 2929 | "classmap": [ 2930 | "src/" 2931 | ] 2932 | }, 2933 | "notification-url": "https://packagist.org/downloads/", 2934 | "license": [ 2935 | "BSD-3-Clause" 2936 | ], 2937 | "authors": [ 2938 | { 2939 | "name": "Arne Blankerts", 2940 | "email": "arne@blankerts.de", 2941 | "role": "Developer" 2942 | }, 2943 | { 2944 | "name": "Sebastian Heuer", 2945 | "email": "sebastian@phpeople.de", 2946 | "role": "Developer" 2947 | }, 2948 | { 2949 | "name": "Sebastian Bergmann", 2950 | "email": "sebastian@phpunit.de", 2951 | "role": "Developer" 2952 | } 2953 | ], 2954 | "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", 2955 | "time": "2018-07-08T19:23:20+00:00" 2956 | }, 2957 | { 2958 | "name": "phar-io/version", 2959 | "version": "2.0.1", 2960 | "source": { 2961 | "type": "git", 2962 | "url": "https://github.com/phar-io/version.git", 2963 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" 2964 | }, 2965 | "dist": { 2966 | "type": "zip", 2967 | "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", 2968 | "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", 2969 | "shasum": "" 2970 | }, 2971 | "require": { 2972 | "php": "^5.6 || ^7.0" 2973 | }, 2974 | "type": "library", 2975 | "autoload": { 2976 | "classmap": [ 2977 | "src/" 2978 | ] 2979 | }, 2980 | "notification-url": "https://packagist.org/downloads/", 2981 | "license": [ 2982 | "BSD-3-Clause" 2983 | ], 2984 | "authors": [ 2985 | { 2986 | "name": "Arne Blankerts", 2987 | "email": "arne@blankerts.de", 2988 | "role": "Developer" 2989 | }, 2990 | { 2991 | "name": "Sebastian Heuer", 2992 | "email": "sebastian@phpeople.de", 2993 | "role": "Developer" 2994 | }, 2995 | { 2996 | "name": "Sebastian Bergmann", 2997 | "email": "sebastian@phpunit.de", 2998 | "role": "Developer" 2999 | } 3000 | ], 3001 | "description": "Library for handling version information and constraints", 3002 | "time": "2018-07-08T19:19:57+00:00" 3003 | }, 3004 | { 3005 | "name": "phpdocumentor/reflection-common", 3006 | "version": "1.0.1", 3007 | "source": { 3008 | "type": "git", 3009 | "url": "https://github.com/phpDocumentor/ReflectionCommon.git", 3010 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" 3011 | }, 3012 | "dist": { 3013 | "type": "zip", 3014 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 3015 | "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", 3016 | "shasum": "" 3017 | }, 3018 | "require": { 3019 | "php": ">=5.5" 3020 | }, 3021 | "require-dev": { 3022 | "phpunit/phpunit": "^4.6" 3023 | }, 3024 | "type": "library", 3025 | "extra": { 3026 | "branch-alias": { 3027 | "dev-master": "1.0.x-dev" 3028 | } 3029 | }, 3030 | "autoload": { 3031 | "psr-4": { 3032 | "phpDocumentor\\Reflection\\": [ 3033 | "src" 3034 | ] 3035 | } 3036 | }, 3037 | "notification-url": "https://packagist.org/downloads/", 3038 | "license": [ 3039 | "MIT" 3040 | ], 3041 | "authors": [ 3042 | { 3043 | "name": "Jaap van Otterdijk", 3044 | "email": "opensource@ijaap.nl" 3045 | } 3046 | ], 3047 | "description": "Common reflection classes used by phpdocumentor to reflect the code structure", 3048 | "homepage": "http://www.phpdoc.org", 3049 | "keywords": [ 3050 | "FQSEN", 3051 | "phpDocumentor", 3052 | "phpdoc", 3053 | "reflection", 3054 | "static analysis" 3055 | ], 3056 | "time": "2017-09-11T18:02:19+00:00" 3057 | }, 3058 | { 3059 | "name": "phpdocumentor/reflection-docblock", 3060 | "version": "4.3.1", 3061 | "source": { 3062 | "type": "git", 3063 | "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", 3064 | "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" 3065 | }, 3066 | "dist": { 3067 | "type": "zip", 3068 | "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", 3069 | "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", 3070 | "shasum": "" 3071 | }, 3072 | "require": { 3073 | "php": "^7.0", 3074 | "phpdocumentor/reflection-common": "^1.0.0", 3075 | "phpdocumentor/type-resolver": "^0.4.0", 3076 | "webmozart/assert": "^1.0" 3077 | }, 3078 | "require-dev": { 3079 | "doctrine/instantiator": "~1.0.5", 3080 | "mockery/mockery": "^1.0", 3081 | "phpunit/phpunit": "^6.4" 3082 | }, 3083 | "type": "library", 3084 | "extra": { 3085 | "branch-alias": { 3086 | "dev-master": "4.x-dev" 3087 | } 3088 | }, 3089 | "autoload": { 3090 | "psr-4": { 3091 | "phpDocumentor\\Reflection\\": [ 3092 | "src/" 3093 | ] 3094 | } 3095 | }, 3096 | "notification-url": "https://packagist.org/downloads/", 3097 | "license": [ 3098 | "MIT" 3099 | ], 3100 | "authors": [ 3101 | { 3102 | "name": "Mike van Riel", 3103 | "email": "me@mikevanriel.com" 3104 | } 3105 | ], 3106 | "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", 3107 | "time": "2019-04-30T17:48:53+00:00" 3108 | }, 3109 | { 3110 | "name": "phpdocumentor/type-resolver", 3111 | "version": "0.4.0", 3112 | "source": { 3113 | "type": "git", 3114 | "url": "https://github.com/phpDocumentor/TypeResolver.git", 3115 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" 3116 | }, 3117 | "dist": { 3118 | "type": "zip", 3119 | "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", 3120 | "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", 3121 | "shasum": "" 3122 | }, 3123 | "require": { 3124 | "php": "^5.5 || ^7.0", 3125 | "phpdocumentor/reflection-common": "^1.0" 3126 | }, 3127 | "require-dev": { 3128 | "mockery/mockery": "^0.9.4", 3129 | "phpunit/phpunit": "^5.2||^4.8.24" 3130 | }, 3131 | "type": "library", 3132 | "extra": { 3133 | "branch-alias": { 3134 | "dev-master": "1.0.x-dev" 3135 | } 3136 | }, 3137 | "autoload": { 3138 | "psr-4": { 3139 | "phpDocumentor\\Reflection\\": [ 3140 | "src/" 3141 | ] 3142 | } 3143 | }, 3144 | "notification-url": "https://packagist.org/downloads/", 3145 | "license": [ 3146 | "MIT" 3147 | ], 3148 | "authors": [ 3149 | { 3150 | "name": "Mike van Riel", 3151 | "email": "me@mikevanriel.com" 3152 | } 3153 | ], 3154 | "time": "2017-07-14T14:27:02+00:00" 3155 | }, 3156 | { 3157 | "name": "phpspec/prophecy", 3158 | "version": "1.8.0", 3159 | "source": { 3160 | "type": "git", 3161 | "url": "https://github.com/phpspec/prophecy.git", 3162 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" 3163 | }, 3164 | "dist": { 3165 | "type": "zip", 3166 | "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 3167 | "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", 3168 | "shasum": "" 3169 | }, 3170 | "require": { 3171 | "doctrine/instantiator": "^1.0.2", 3172 | "php": "^5.3|^7.0", 3173 | "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", 3174 | "sebastian/comparator": "^1.1|^2.0|^3.0", 3175 | "sebastian/recursion-context": "^1.0|^2.0|^3.0" 3176 | }, 3177 | "require-dev": { 3178 | "phpspec/phpspec": "^2.5|^3.2", 3179 | "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" 3180 | }, 3181 | "type": "library", 3182 | "extra": { 3183 | "branch-alias": { 3184 | "dev-master": "1.8.x-dev" 3185 | } 3186 | }, 3187 | "autoload": { 3188 | "psr-0": { 3189 | "Prophecy\\": "src/" 3190 | } 3191 | }, 3192 | "notification-url": "https://packagist.org/downloads/", 3193 | "license": [ 3194 | "MIT" 3195 | ], 3196 | "authors": [ 3197 | { 3198 | "name": "Konstantin Kudryashov", 3199 | "email": "ever.zet@gmail.com", 3200 | "homepage": "http://everzet.com" 3201 | }, 3202 | { 3203 | "name": "Marcello Duarte", 3204 | "email": "marcello.duarte@gmail.com" 3205 | } 3206 | ], 3207 | "description": "Highly opinionated mocking framework for PHP 5.3+", 3208 | "homepage": "https://github.com/phpspec/prophecy", 3209 | "keywords": [ 3210 | "Double", 3211 | "Dummy", 3212 | "fake", 3213 | "mock", 3214 | "spy", 3215 | "stub" 3216 | ], 3217 | "time": "2018-08-05T17:53:17+00:00" 3218 | }, 3219 | { 3220 | "name": "phpunit/php-code-coverage", 3221 | "version": "7.0.5", 3222 | "source": { 3223 | "type": "git", 3224 | "url": "https://github.com/sebastianbergmann/php-code-coverage.git", 3225 | "reference": "aed67b57d459dcab93e84a5c9703d3deb5025dff" 3226 | }, 3227 | "dist": { 3228 | "type": "zip", 3229 | "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/aed67b57d459dcab93e84a5c9703d3deb5025dff", 3230 | "reference": "aed67b57d459dcab93e84a5c9703d3deb5025dff", 3231 | "shasum": "" 3232 | }, 3233 | "require": { 3234 | "ext-dom": "*", 3235 | "ext-xmlwriter": "*", 3236 | "php": "^7.2", 3237 | "phpunit/php-file-iterator": "^2.0.2", 3238 | "phpunit/php-text-template": "^1.2.1", 3239 | "phpunit/php-token-stream": "^3.0.1", 3240 | "sebastian/code-unit-reverse-lookup": "^1.0.1", 3241 | "sebastian/environment": "^4.1", 3242 | "sebastian/version": "^2.0.1", 3243 | "theseer/tokenizer": "^1.1" 3244 | }, 3245 | "require-dev": { 3246 | "phpunit/phpunit": "^8.0" 3247 | }, 3248 | "suggest": { 3249 | "ext-xdebug": "^2.6.1" 3250 | }, 3251 | "type": "library", 3252 | "extra": { 3253 | "branch-alias": { 3254 | "dev-master": "7.0-dev" 3255 | } 3256 | }, 3257 | "autoload": { 3258 | "classmap": [ 3259 | "src/" 3260 | ] 3261 | }, 3262 | "notification-url": "https://packagist.org/downloads/", 3263 | "license": [ 3264 | "BSD-3-Clause" 3265 | ], 3266 | "authors": [ 3267 | { 3268 | "name": "Sebastian Bergmann", 3269 | "email": "sebastian@phpunit.de", 3270 | "role": "lead" 3271 | } 3272 | ], 3273 | "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", 3274 | "homepage": "https://github.com/sebastianbergmann/php-code-coverage", 3275 | "keywords": [ 3276 | "coverage", 3277 | "testing", 3278 | "xunit" 3279 | ], 3280 | "time": "2019-06-06T12:28:18+00:00" 3281 | }, 3282 | { 3283 | "name": "phpunit/php-file-iterator", 3284 | "version": "2.0.2", 3285 | "source": { 3286 | "type": "git", 3287 | "url": "https://github.com/sebastianbergmann/php-file-iterator.git", 3288 | "reference": "050bedf145a257b1ff02746c31894800e5122946" 3289 | }, 3290 | "dist": { 3291 | "type": "zip", 3292 | "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", 3293 | "reference": "050bedf145a257b1ff02746c31894800e5122946", 3294 | "shasum": "" 3295 | }, 3296 | "require": { 3297 | "php": "^7.1" 3298 | }, 3299 | "require-dev": { 3300 | "phpunit/phpunit": "^7.1" 3301 | }, 3302 | "type": "library", 3303 | "extra": { 3304 | "branch-alias": { 3305 | "dev-master": "2.0.x-dev" 3306 | } 3307 | }, 3308 | "autoload": { 3309 | "classmap": [ 3310 | "src/" 3311 | ] 3312 | }, 3313 | "notification-url": "https://packagist.org/downloads/", 3314 | "license": [ 3315 | "BSD-3-Clause" 3316 | ], 3317 | "authors": [ 3318 | { 3319 | "name": "Sebastian Bergmann", 3320 | "email": "sebastian@phpunit.de", 3321 | "role": "lead" 3322 | } 3323 | ], 3324 | "description": "FilterIterator implementation that filters files based on a list of suffixes.", 3325 | "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", 3326 | "keywords": [ 3327 | "filesystem", 3328 | "iterator" 3329 | ], 3330 | "time": "2018-09-13T20:33:42+00:00" 3331 | }, 3332 | { 3333 | "name": "phpunit/php-text-template", 3334 | "version": "1.2.1", 3335 | "source": { 3336 | "type": "git", 3337 | "url": "https://github.com/sebastianbergmann/php-text-template.git", 3338 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686" 3339 | }, 3340 | "dist": { 3341 | "type": "zip", 3342 | "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 3343 | "reference": "31f8b717e51d9a2afca6c9f046f5d69fc27c8686", 3344 | "shasum": "" 3345 | }, 3346 | "require": { 3347 | "php": ">=5.3.3" 3348 | }, 3349 | "type": "library", 3350 | "autoload": { 3351 | "classmap": [ 3352 | "src/" 3353 | ] 3354 | }, 3355 | "notification-url": "https://packagist.org/downloads/", 3356 | "license": [ 3357 | "BSD-3-Clause" 3358 | ], 3359 | "authors": [ 3360 | { 3361 | "name": "Sebastian Bergmann", 3362 | "email": "sebastian@phpunit.de", 3363 | "role": "lead" 3364 | } 3365 | ], 3366 | "description": "Simple template engine.", 3367 | "homepage": "https://github.com/sebastianbergmann/php-text-template/", 3368 | "keywords": [ 3369 | "template" 3370 | ], 3371 | "time": "2015-06-21T13:50:34+00:00" 3372 | }, 3373 | { 3374 | "name": "phpunit/php-timer", 3375 | "version": "2.1.2", 3376 | "source": { 3377 | "type": "git", 3378 | "url": "https://github.com/sebastianbergmann/php-timer.git", 3379 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" 3380 | }, 3381 | "dist": { 3382 | "type": "zip", 3383 | "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", 3384 | "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", 3385 | "shasum": "" 3386 | }, 3387 | "require": { 3388 | "php": "^7.1" 3389 | }, 3390 | "require-dev": { 3391 | "phpunit/phpunit": "^7.0" 3392 | }, 3393 | "type": "library", 3394 | "extra": { 3395 | "branch-alias": { 3396 | "dev-master": "2.1-dev" 3397 | } 3398 | }, 3399 | "autoload": { 3400 | "classmap": [ 3401 | "src/" 3402 | ] 3403 | }, 3404 | "notification-url": "https://packagist.org/downloads/", 3405 | "license": [ 3406 | "BSD-3-Clause" 3407 | ], 3408 | "authors": [ 3409 | { 3410 | "name": "Sebastian Bergmann", 3411 | "email": "sebastian@phpunit.de", 3412 | "role": "lead" 3413 | } 3414 | ], 3415 | "description": "Utility class for timing", 3416 | "homepage": "https://github.com/sebastianbergmann/php-timer/", 3417 | "keywords": [ 3418 | "timer" 3419 | ], 3420 | "time": "2019-06-07T04:22:29+00:00" 3421 | }, 3422 | { 3423 | "name": "phpunit/php-token-stream", 3424 | "version": "3.0.1", 3425 | "source": { 3426 | "type": "git", 3427 | "url": "https://github.com/sebastianbergmann/php-token-stream.git", 3428 | "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18" 3429 | }, 3430 | "dist": { 3431 | "type": "zip", 3432 | "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/c99e3be9d3e85f60646f152f9002d46ed7770d18", 3433 | "reference": "c99e3be9d3e85f60646f152f9002d46ed7770d18", 3434 | "shasum": "" 3435 | }, 3436 | "require": { 3437 | "ext-tokenizer": "*", 3438 | "php": "^7.1" 3439 | }, 3440 | "require-dev": { 3441 | "phpunit/phpunit": "^7.0" 3442 | }, 3443 | "type": "library", 3444 | "extra": { 3445 | "branch-alias": { 3446 | "dev-master": "3.0-dev" 3447 | } 3448 | }, 3449 | "autoload": { 3450 | "classmap": [ 3451 | "src/" 3452 | ] 3453 | }, 3454 | "notification-url": "https://packagist.org/downloads/", 3455 | "license": [ 3456 | "BSD-3-Clause" 3457 | ], 3458 | "authors": [ 3459 | { 3460 | "name": "Sebastian Bergmann", 3461 | "email": "sebastian@phpunit.de" 3462 | } 3463 | ], 3464 | "description": "Wrapper around PHP's tokenizer extension.", 3465 | "homepage": "https://github.com/sebastianbergmann/php-token-stream/", 3466 | "keywords": [ 3467 | "tokenizer" 3468 | ], 3469 | "time": "2018-10-30T05:52:18+00:00" 3470 | }, 3471 | { 3472 | "name": "phpunit/phpunit", 3473 | "version": "8.2.1", 3474 | "source": { 3475 | "type": "git", 3476 | "url": "https://github.com/sebastianbergmann/phpunit.git", 3477 | "reference": "047f771e34dccacb6c432a1a70e9980e087eac92" 3478 | }, 3479 | "dist": { 3480 | "type": "zip", 3481 | "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/047f771e34dccacb6c432a1a70e9980e087eac92", 3482 | "reference": "047f771e34dccacb6c432a1a70e9980e087eac92", 3483 | "shasum": "" 3484 | }, 3485 | "require": { 3486 | "doctrine/instantiator": "^1.2.0", 3487 | "ext-dom": "*", 3488 | "ext-json": "*", 3489 | "ext-libxml": "*", 3490 | "ext-mbstring": "*", 3491 | "ext-xml": "*", 3492 | "ext-xmlwriter": "*", 3493 | "myclabs/deep-copy": "^1.9.1", 3494 | "phar-io/manifest": "^1.0.3", 3495 | "phar-io/version": "^2.0.1", 3496 | "php": "^7.2", 3497 | "phpspec/prophecy": "^1.8.0", 3498 | "phpunit/php-code-coverage": "^7.0.5", 3499 | "phpunit/php-file-iterator": "^2.0.2", 3500 | "phpunit/php-text-template": "^1.2.1", 3501 | "phpunit/php-timer": "^2.1.2", 3502 | "sebastian/comparator": "^3.0.2", 3503 | "sebastian/diff": "^3.0.2", 3504 | "sebastian/environment": "^4.2.2", 3505 | "sebastian/exporter": "^3.1.0", 3506 | "sebastian/global-state": "^3.0.0", 3507 | "sebastian/object-enumerator": "^3.0.3", 3508 | "sebastian/resource-operations": "^2.0.1", 3509 | "sebastian/type": "^1.1.0", 3510 | "sebastian/version": "^2.0.1" 3511 | }, 3512 | "require-dev": { 3513 | "ext-pdo": "*" 3514 | }, 3515 | "suggest": { 3516 | "ext-soap": "*", 3517 | "ext-xdebug": "*", 3518 | "phpunit/php-invoker": "^2.0.0" 3519 | }, 3520 | "bin": [ 3521 | "phpunit" 3522 | ], 3523 | "type": "library", 3524 | "extra": { 3525 | "branch-alias": { 3526 | "dev-master": "8.2-dev" 3527 | } 3528 | }, 3529 | "autoload": { 3530 | "classmap": [ 3531 | "src/" 3532 | ] 3533 | }, 3534 | "notification-url": "https://packagist.org/downloads/", 3535 | "license": [ 3536 | "BSD-3-Clause" 3537 | ], 3538 | "authors": [ 3539 | { 3540 | "name": "Sebastian Bergmann", 3541 | "email": "sebastian@phpunit.de", 3542 | "role": "lead" 3543 | } 3544 | ], 3545 | "description": "The PHP Unit Testing framework.", 3546 | "homepage": "https://phpunit.de/", 3547 | "keywords": [ 3548 | "phpunit", 3549 | "testing", 3550 | "xunit" 3551 | ], 3552 | "time": "2019-06-07T14:04:13+00:00" 3553 | }, 3554 | { 3555 | "name": "sebastian/code-unit-reverse-lookup", 3556 | "version": "1.0.1", 3557 | "source": { 3558 | "type": "git", 3559 | "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", 3560 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" 3561 | }, 3562 | "dist": { 3563 | "type": "zip", 3564 | "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3565 | "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", 3566 | "shasum": "" 3567 | }, 3568 | "require": { 3569 | "php": "^5.6 || ^7.0" 3570 | }, 3571 | "require-dev": { 3572 | "phpunit/phpunit": "^5.7 || ^6.0" 3573 | }, 3574 | "type": "library", 3575 | "extra": { 3576 | "branch-alias": { 3577 | "dev-master": "1.0.x-dev" 3578 | } 3579 | }, 3580 | "autoload": { 3581 | "classmap": [ 3582 | "src/" 3583 | ] 3584 | }, 3585 | "notification-url": "https://packagist.org/downloads/", 3586 | "license": [ 3587 | "BSD-3-Clause" 3588 | ], 3589 | "authors": [ 3590 | { 3591 | "name": "Sebastian Bergmann", 3592 | "email": "sebastian@phpunit.de" 3593 | } 3594 | ], 3595 | "description": "Looks up which function or method a line of code belongs to", 3596 | "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", 3597 | "time": "2017-03-04T06:30:41+00:00" 3598 | }, 3599 | { 3600 | "name": "sebastian/comparator", 3601 | "version": "3.0.2", 3602 | "source": { 3603 | "type": "git", 3604 | "url": "https://github.com/sebastianbergmann/comparator.git", 3605 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" 3606 | }, 3607 | "dist": { 3608 | "type": "zip", 3609 | "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 3610 | "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", 3611 | "shasum": "" 3612 | }, 3613 | "require": { 3614 | "php": "^7.1", 3615 | "sebastian/diff": "^3.0", 3616 | "sebastian/exporter": "^3.1" 3617 | }, 3618 | "require-dev": { 3619 | "phpunit/phpunit": "^7.1" 3620 | }, 3621 | "type": "library", 3622 | "extra": { 3623 | "branch-alias": { 3624 | "dev-master": "3.0-dev" 3625 | } 3626 | }, 3627 | "autoload": { 3628 | "classmap": [ 3629 | "src/" 3630 | ] 3631 | }, 3632 | "notification-url": "https://packagist.org/downloads/", 3633 | "license": [ 3634 | "BSD-3-Clause" 3635 | ], 3636 | "authors": [ 3637 | { 3638 | "name": "Jeff Welch", 3639 | "email": "whatthejeff@gmail.com" 3640 | }, 3641 | { 3642 | "name": "Volker Dusch", 3643 | "email": "github@wallbash.com" 3644 | }, 3645 | { 3646 | "name": "Bernhard Schussek", 3647 | "email": "bschussek@2bepublished.at" 3648 | }, 3649 | { 3650 | "name": "Sebastian Bergmann", 3651 | "email": "sebastian@phpunit.de" 3652 | } 3653 | ], 3654 | "description": "Provides the functionality to compare PHP values for equality", 3655 | "homepage": "https://github.com/sebastianbergmann/comparator", 3656 | "keywords": [ 3657 | "comparator", 3658 | "compare", 3659 | "equality" 3660 | ], 3661 | "time": "2018-07-12T15:12:46+00:00" 3662 | }, 3663 | { 3664 | "name": "sebastian/diff", 3665 | "version": "3.0.2", 3666 | "source": { 3667 | "type": "git", 3668 | "url": "https://github.com/sebastianbergmann/diff.git", 3669 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" 3670 | }, 3671 | "dist": { 3672 | "type": "zip", 3673 | "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 3674 | "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", 3675 | "shasum": "" 3676 | }, 3677 | "require": { 3678 | "php": "^7.1" 3679 | }, 3680 | "require-dev": { 3681 | "phpunit/phpunit": "^7.5 || ^8.0", 3682 | "symfony/process": "^2 || ^3.3 || ^4" 3683 | }, 3684 | "type": "library", 3685 | "extra": { 3686 | "branch-alias": { 3687 | "dev-master": "3.0-dev" 3688 | } 3689 | }, 3690 | "autoload": { 3691 | "classmap": [ 3692 | "src/" 3693 | ] 3694 | }, 3695 | "notification-url": "https://packagist.org/downloads/", 3696 | "license": [ 3697 | "BSD-3-Clause" 3698 | ], 3699 | "authors": [ 3700 | { 3701 | "name": "Kore Nordmann", 3702 | "email": "mail@kore-nordmann.de" 3703 | }, 3704 | { 3705 | "name": "Sebastian Bergmann", 3706 | "email": "sebastian@phpunit.de" 3707 | } 3708 | ], 3709 | "description": "Diff implementation", 3710 | "homepage": "https://github.com/sebastianbergmann/diff", 3711 | "keywords": [ 3712 | "diff", 3713 | "udiff", 3714 | "unidiff", 3715 | "unified diff" 3716 | ], 3717 | "time": "2019-02-04T06:01:07+00:00" 3718 | }, 3719 | { 3720 | "name": "sebastian/environment", 3721 | "version": "4.2.2", 3722 | "source": { 3723 | "type": "git", 3724 | "url": "https://github.com/sebastianbergmann/environment.git", 3725 | "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404" 3726 | }, 3727 | "dist": { 3728 | "type": "zip", 3729 | "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/f2a2c8e1c97c11ace607a7a667d73d47c19fe404", 3730 | "reference": "f2a2c8e1c97c11ace607a7a667d73d47c19fe404", 3731 | "shasum": "" 3732 | }, 3733 | "require": { 3734 | "php": "^7.1" 3735 | }, 3736 | "require-dev": { 3737 | "phpunit/phpunit": "^7.5" 3738 | }, 3739 | "suggest": { 3740 | "ext-posix": "*" 3741 | }, 3742 | "type": "library", 3743 | "extra": { 3744 | "branch-alias": { 3745 | "dev-master": "4.2-dev" 3746 | } 3747 | }, 3748 | "autoload": { 3749 | "classmap": [ 3750 | "src/" 3751 | ] 3752 | }, 3753 | "notification-url": "https://packagist.org/downloads/", 3754 | "license": [ 3755 | "BSD-3-Clause" 3756 | ], 3757 | "authors": [ 3758 | { 3759 | "name": "Sebastian Bergmann", 3760 | "email": "sebastian@phpunit.de" 3761 | } 3762 | ], 3763 | "description": "Provides functionality to handle HHVM/PHP environments", 3764 | "homepage": "http://www.github.com/sebastianbergmann/environment", 3765 | "keywords": [ 3766 | "Xdebug", 3767 | "environment", 3768 | "hhvm" 3769 | ], 3770 | "time": "2019-05-05T09:05:15+00:00" 3771 | }, 3772 | { 3773 | "name": "sebastian/exporter", 3774 | "version": "3.1.0", 3775 | "source": { 3776 | "type": "git", 3777 | "url": "https://github.com/sebastianbergmann/exporter.git", 3778 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937" 3779 | }, 3780 | "dist": { 3781 | "type": "zip", 3782 | "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/234199f4528de6d12aaa58b612e98f7d36adb937", 3783 | "reference": "234199f4528de6d12aaa58b612e98f7d36adb937", 3784 | "shasum": "" 3785 | }, 3786 | "require": { 3787 | "php": "^7.0", 3788 | "sebastian/recursion-context": "^3.0" 3789 | }, 3790 | "require-dev": { 3791 | "ext-mbstring": "*", 3792 | "phpunit/phpunit": "^6.0" 3793 | }, 3794 | "type": "library", 3795 | "extra": { 3796 | "branch-alias": { 3797 | "dev-master": "3.1.x-dev" 3798 | } 3799 | }, 3800 | "autoload": { 3801 | "classmap": [ 3802 | "src/" 3803 | ] 3804 | }, 3805 | "notification-url": "https://packagist.org/downloads/", 3806 | "license": [ 3807 | "BSD-3-Clause" 3808 | ], 3809 | "authors": [ 3810 | { 3811 | "name": "Jeff Welch", 3812 | "email": "whatthejeff@gmail.com" 3813 | }, 3814 | { 3815 | "name": "Volker Dusch", 3816 | "email": "github@wallbash.com" 3817 | }, 3818 | { 3819 | "name": "Bernhard Schussek", 3820 | "email": "bschussek@2bepublished.at" 3821 | }, 3822 | { 3823 | "name": "Sebastian Bergmann", 3824 | "email": "sebastian@phpunit.de" 3825 | }, 3826 | { 3827 | "name": "Adam Harvey", 3828 | "email": "aharvey@php.net" 3829 | } 3830 | ], 3831 | "description": "Provides the functionality to export PHP variables for visualization", 3832 | "homepage": "http://www.github.com/sebastianbergmann/exporter", 3833 | "keywords": [ 3834 | "export", 3835 | "exporter" 3836 | ], 3837 | "time": "2017-04-03T13:19:02+00:00" 3838 | }, 3839 | { 3840 | "name": "sebastian/global-state", 3841 | "version": "3.0.0", 3842 | "source": { 3843 | "type": "git", 3844 | "url": "https://github.com/sebastianbergmann/global-state.git", 3845 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" 3846 | }, 3847 | "dist": { 3848 | "type": "zip", 3849 | "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 3850 | "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", 3851 | "shasum": "" 3852 | }, 3853 | "require": { 3854 | "php": "^7.2", 3855 | "sebastian/object-reflector": "^1.1.1", 3856 | "sebastian/recursion-context": "^3.0" 3857 | }, 3858 | "require-dev": { 3859 | "ext-dom": "*", 3860 | "phpunit/phpunit": "^8.0" 3861 | }, 3862 | "suggest": { 3863 | "ext-uopz": "*" 3864 | }, 3865 | "type": "library", 3866 | "extra": { 3867 | "branch-alias": { 3868 | "dev-master": "3.0-dev" 3869 | } 3870 | }, 3871 | "autoload": { 3872 | "classmap": [ 3873 | "src/" 3874 | ] 3875 | }, 3876 | "notification-url": "https://packagist.org/downloads/", 3877 | "license": [ 3878 | "BSD-3-Clause" 3879 | ], 3880 | "authors": [ 3881 | { 3882 | "name": "Sebastian Bergmann", 3883 | "email": "sebastian@phpunit.de" 3884 | } 3885 | ], 3886 | "description": "Snapshotting of global state", 3887 | "homepage": "http://www.github.com/sebastianbergmann/global-state", 3888 | "keywords": [ 3889 | "global state" 3890 | ], 3891 | "time": "2019-02-01T05:30:01+00:00" 3892 | }, 3893 | { 3894 | "name": "sebastian/object-enumerator", 3895 | "version": "3.0.3", 3896 | "source": { 3897 | "type": "git", 3898 | "url": "https://github.com/sebastianbergmann/object-enumerator.git", 3899 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" 3900 | }, 3901 | "dist": { 3902 | "type": "zip", 3903 | "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", 3904 | "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", 3905 | "shasum": "" 3906 | }, 3907 | "require": { 3908 | "php": "^7.0", 3909 | "sebastian/object-reflector": "^1.1.1", 3910 | "sebastian/recursion-context": "^3.0" 3911 | }, 3912 | "require-dev": { 3913 | "phpunit/phpunit": "^6.0" 3914 | }, 3915 | "type": "library", 3916 | "extra": { 3917 | "branch-alias": { 3918 | "dev-master": "3.0.x-dev" 3919 | } 3920 | }, 3921 | "autoload": { 3922 | "classmap": [ 3923 | "src/" 3924 | ] 3925 | }, 3926 | "notification-url": "https://packagist.org/downloads/", 3927 | "license": [ 3928 | "BSD-3-Clause" 3929 | ], 3930 | "authors": [ 3931 | { 3932 | "name": "Sebastian Bergmann", 3933 | "email": "sebastian@phpunit.de" 3934 | } 3935 | ], 3936 | "description": "Traverses array structures and object graphs to enumerate all referenced objects", 3937 | "homepage": "https://github.com/sebastianbergmann/object-enumerator/", 3938 | "time": "2017-08-03T12:35:26+00:00" 3939 | }, 3940 | { 3941 | "name": "sebastian/object-reflector", 3942 | "version": "1.1.1", 3943 | "source": { 3944 | "type": "git", 3945 | "url": "https://github.com/sebastianbergmann/object-reflector.git", 3946 | "reference": "773f97c67f28de00d397be301821b06708fca0be" 3947 | }, 3948 | "dist": { 3949 | "type": "zip", 3950 | "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", 3951 | "reference": "773f97c67f28de00d397be301821b06708fca0be", 3952 | "shasum": "" 3953 | }, 3954 | "require": { 3955 | "php": "^7.0" 3956 | }, 3957 | "require-dev": { 3958 | "phpunit/phpunit": "^6.0" 3959 | }, 3960 | "type": "library", 3961 | "extra": { 3962 | "branch-alias": { 3963 | "dev-master": "1.1-dev" 3964 | } 3965 | }, 3966 | "autoload": { 3967 | "classmap": [ 3968 | "src/" 3969 | ] 3970 | }, 3971 | "notification-url": "https://packagist.org/downloads/", 3972 | "license": [ 3973 | "BSD-3-Clause" 3974 | ], 3975 | "authors": [ 3976 | { 3977 | "name": "Sebastian Bergmann", 3978 | "email": "sebastian@phpunit.de" 3979 | } 3980 | ], 3981 | "description": "Allows reflection of object attributes, including inherited and non-public ones", 3982 | "homepage": "https://github.com/sebastianbergmann/object-reflector/", 3983 | "time": "2017-03-29T09:07:27+00:00" 3984 | }, 3985 | { 3986 | "name": "sebastian/recursion-context", 3987 | "version": "3.0.0", 3988 | "source": { 3989 | "type": "git", 3990 | "url": "https://github.com/sebastianbergmann/recursion-context.git", 3991 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" 3992 | }, 3993 | "dist": { 3994 | "type": "zip", 3995 | "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3996 | "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", 3997 | "shasum": "" 3998 | }, 3999 | "require": { 4000 | "php": "^7.0" 4001 | }, 4002 | "require-dev": { 4003 | "phpunit/phpunit": "^6.0" 4004 | }, 4005 | "type": "library", 4006 | "extra": { 4007 | "branch-alias": { 4008 | "dev-master": "3.0.x-dev" 4009 | } 4010 | }, 4011 | "autoload": { 4012 | "classmap": [ 4013 | "src/" 4014 | ] 4015 | }, 4016 | "notification-url": "https://packagist.org/downloads/", 4017 | "license": [ 4018 | "BSD-3-Clause" 4019 | ], 4020 | "authors": [ 4021 | { 4022 | "name": "Jeff Welch", 4023 | "email": "whatthejeff@gmail.com" 4024 | }, 4025 | { 4026 | "name": "Sebastian Bergmann", 4027 | "email": "sebastian@phpunit.de" 4028 | }, 4029 | { 4030 | "name": "Adam Harvey", 4031 | "email": "aharvey@php.net" 4032 | } 4033 | ], 4034 | "description": "Provides functionality to recursively process PHP variables", 4035 | "homepage": "http://www.github.com/sebastianbergmann/recursion-context", 4036 | "time": "2017-03-03T06:23:57+00:00" 4037 | }, 4038 | { 4039 | "name": "sebastian/resource-operations", 4040 | "version": "2.0.1", 4041 | "source": { 4042 | "type": "git", 4043 | "url": "https://github.com/sebastianbergmann/resource-operations.git", 4044 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" 4045 | }, 4046 | "dist": { 4047 | "type": "zip", 4048 | "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 4049 | "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", 4050 | "shasum": "" 4051 | }, 4052 | "require": { 4053 | "php": "^7.1" 4054 | }, 4055 | "type": "library", 4056 | "extra": { 4057 | "branch-alias": { 4058 | "dev-master": "2.0-dev" 4059 | } 4060 | }, 4061 | "autoload": { 4062 | "classmap": [ 4063 | "src/" 4064 | ] 4065 | }, 4066 | "notification-url": "https://packagist.org/downloads/", 4067 | "license": [ 4068 | "BSD-3-Clause" 4069 | ], 4070 | "authors": [ 4071 | { 4072 | "name": "Sebastian Bergmann", 4073 | "email": "sebastian@phpunit.de" 4074 | } 4075 | ], 4076 | "description": "Provides a list of PHP built-in functions that operate on resources", 4077 | "homepage": "https://www.github.com/sebastianbergmann/resource-operations", 4078 | "time": "2018-10-04T04:07:39+00:00" 4079 | }, 4080 | { 4081 | "name": "sebastian/type", 4082 | "version": "1.1.1", 4083 | "source": { 4084 | "type": "git", 4085 | "url": "https://github.com/sebastianbergmann/type.git", 4086 | "reference": "b2a7f9aac51ce18cd7ac8b31e37c8ce5646fc741" 4087 | }, 4088 | "dist": { 4089 | "type": "zip", 4090 | "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b2a7f9aac51ce18cd7ac8b31e37c8ce5646fc741", 4091 | "reference": "b2a7f9aac51ce18cd7ac8b31e37c8ce5646fc741", 4092 | "shasum": "" 4093 | }, 4094 | "require": { 4095 | "php": "^7.2" 4096 | }, 4097 | "require-dev": { 4098 | "phpunit/phpunit": "^8.2" 4099 | }, 4100 | "type": "library", 4101 | "extra": { 4102 | "branch-alias": { 4103 | "dev-master": "1.1-dev" 4104 | } 4105 | }, 4106 | "autoload": { 4107 | "classmap": [ 4108 | "src/" 4109 | ] 4110 | }, 4111 | "notification-url": "https://packagist.org/downloads/", 4112 | "license": [ 4113 | "BSD-3-Clause" 4114 | ], 4115 | "authors": [ 4116 | { 4117 | "name": "Sebastian Bergmann", 4118 | "email": "sebastian@phpunit.de", 4119 | "role": "lead" 4120 | } 4121 | ], 4122 | "description": "Collection of value objects that represent the types of the PHP type system", 4123 | "homepage": "https://github.com/sebastianbergmann/type", 4124 | "time": "2019-06-08T04:53:27+00:00" 4125 | }, 4126 | { 4127 | "name": "sebastian/version", 4128 | "version": "2.0.1", 4129 | "source": { 4130 | "type": "git", 4131 | "url": "https://github.com/sebastianbergmann/version.git", 4132 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" 4133 | }, 4134 | "dist": { 4135 | "type": "zip", 4136 | "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", 4137 | "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", 4138 | "shasum": "" 4139 | }, 4140 | "require": { 4141 | "php": ">=5.6" 4142 | }, 4143 | "type": "library", 4144 | "extra": { 4145 | "branch-alias": { 4146 | "dev-master": "2.0.x-dev" 4147 | } 4148 | }, 4149 | "autoload": { 4150 | "classmap": [ 4151 | "src/" 4152 | ] 4153 | }, 4154 | "notification-url": "https://packagist.org/downloads/", 4155 | "license": [ 4156 | "BSD-3-Clause" 4157 | ], 4158 | "authors": [ 4159 | { 4160 | "name": "Sebastian Bergmann", 4161 | "email": "sebastian@phpunit.de", 4162 | "role": "lead" 4163 | } 4164 | ], 4165 | "description": "Library that helps with managing the version number of Git-hosted PHP projects", 4166 | "homepage": "https://github.com/sebastianbergmann/version", 4167 | "time": "2016-10-03T07:35:21+00:00" 4168 | }, 4169 | { 4170 | "name": "theseer/tokenizer", 4171 | "version": "1.1.2", 4172 | "source": { 4173 | "type": "git", 4174 | "url": "https://github.com/theseer/tokenizer.git", 4175 | "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" 4176 | }, 4177 | "dist": { 4178 | "type": "zip", 4179 | "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", 4180 | "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", 4181 | "shasum": "" 4182 | }, 4183 | "require": { 4184 | "ext-dom": "*", 4185 | "ext-tokenizer": "*", 4186 | "ext-xmlwriter": "*", 4187 | "php": "^7.0" 4188 | }, 4189 | "type": "library", 4190 | "autoload": { 4191 | "classmap": [ 4192 | "src/" 4193 | ] 4194 | }, 4195 | "notification-url": "https://packagist.org/downloads/", 4196 | "license": [ 4197 | "BSD-3-Clause" 4198 | ], 4199 | "authors": [ 4200 | { 4201 | "name": "Arne Blankerts", 4202 | "email": "arne@blankerts.de", 4203 | "role": "Developer" 4204 | } 4205 | ], 4206 | "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", 4207 | "time": "2019-04-04T09:56:43+00:00" 4208 | }, 4209 | { 4210 | "name": "webmozart/assert", 4211 | "version": "1.4.0", 4212 | "source": { 4213 | "type": "git", 4214 | "url": "https://github.com/webmozart/assert.git", 4215 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" 4216 | }, 4217 | "dist": { 4218 | "type": "zip", 4219 | "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", 4220 | "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", 4221 | "shasum": "" 4222 | }, 4223 | "require": { 4224 | "php": "^5.3.3 || ^7.0", 4225 | "symfony/polyfill-ctype": "^1.8" 4226 | }, 4227 | "require-dev": { 4228 | "phpunit/phpunit": "^4.6", 4229 | "sebastian/version": "^1.0.1" 4230 | }, 4231 | "type": "library", 4232 | "extra": { 4233 | "branch-alias": { 4234 | "dev-master": "1.3-dev" 4235 | } 4236 | }, 4237 | "autoload": { 4238 | "psr-4": { 4239 | "Webmozart\\Assert\\": "src/" 4240 | } 4241 | }, 4242 | "notification-url": "https://packagist.org/downloads/", 4243 | "license": [ 4244 | "MIT" 4245 | ], 4246 | "authors": [ 4247 | { 4248 | "name": "Bernhard Schussek", 4249 | "email": "bschussek@gmail.com" 4250 | } 4251 | ], 4252 | "description": "Assertions to validate method input/output with nice error messages.", 4253 | "keywords": [ 4254 | "assert", 4255 | "check", 4256 | "validate" 4257 | ], 4258 | "time": "2018-12-25T11:19:39+00:00" 4259 | } 4260 | ], 4261 | "aliases": [], 4262 | "minimum-stability": "stable", 4263 | "stability-flags": [], 4264 | "prefer-stable": false, 4265 | "prefer-lowest": false, 4266 | "platform": [], 4267 | "platform-dev": [] 4268 | } 4269 | -------------------------------------------------------------------------------- /config/reviewable.php: -------------------------------------------------------------------------------- 1 | [ 6 | 7 | /* 8 | * Specifies which model should serve as the 9 | * author. By default the standard user model is used. 10 | */ 11 | 12 | 'author' => \App\User::class, 13 | 14 | /* 15 | * When using the 'hasReviews' the model specified in here 16 | * is used to retrieve your reviews. You may use any model you like. 17 | * 18 | * Note: your own model needs to implement 19 | * the `Naoray\LaravelRateable\Contracts\Review' contract. 20 | */ 21 | 22 | 'review' => \Naoray\LaravelReviewable\Models\Review::class, 23 | ], 24 | 25 | /* 26 | * Specifies which table name will be used to store scores. 27 | */ 28 | 29 | 'reviews_table_name' => 'reviews', 30 | ]; 31 | -------------------------------------------------------------------------------- /database/migrations/create_reviews_table.php.stub: -------------------------------------------------------------------------------- 1 | increments('id'); 20 | $table->integer('author_id')->unsigned(); 21 | $table->morphs('reviewable'); 22 | $table->integer('score'); 23 | $table->text('body')->nullable(); 24 | $table->timestamps(); 25 | }); 26 | } 27 | 28 | /** 29 | * Reverse the migrations. 30 | * 31 | * @return void 32 | */ 33 | public function down() 34 | { 35 | $tableName = config('rateable.reviews_table_name'); 36 | 37 | Schema::drop($tableName); 38 | } 39 | } -------------------------------------------------------------------------------- /phpunit.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 13 | 14 | tests 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | src/ 24 | 25 | 26 | -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # laravel-reviewable 2 | 3 | [![Software License](https://img.shields.io/badge/license-MIT-brightgreen.svg?style=flat-square)](LICENSE.md) 4 | [![Travis](https://travis-ci.org/Naoray/laravel-reviewable.svg?branch=master&style=flat-square)]() 5 | [![StyleCI](https://styleci.io/repos/121157590/shield?branch=master)](https://styleci.io/repos/121157590) 6 | [![Total Downloads](https://img.shields.io/packagist/dt/naoray/laravel-reviewable.svg?style=flat-square)](https://packagist.org/packages/naoray/laravel-reviewable) 7 | 8 | This package adds a reviewable feature to your app. 9 | 10 | ## Install 11 | #### Laravel Version 5.7+ 12 | `composer require naoray/laravel-reviewable` 13 | 14 | #### Laravel Version 5.6+ 15 | `composer require naoray/laravel-reviewable:1.1.*` 16 | 17 | #### Laravel Version 5.5 18 | `composer require naoray/laravel-reviewable:1.0.*` 19 | 20 | *publish config:* `php artisan vendor:publish --provider="Naoray\LaravelReviewable\LaravelReviewableServiceProvider"` 21 | 22 | ## Usage 23 | First, add the `Naoray\LaravelReviewable\Traits\HasReviews` trait to your model you want to add reviews to. 24 | ```php 25 | use Naoray\LaravelReviewable\Traits\HasReviews; 26 | 27 | class Post extends Model 28 | { 29 | use HasReviews; 30 | 31 | // ... 32 | } 33 | ``` 34 | 35 | Now you can create a review by: 36 | ```php 37 | // from reviewable entity 38 | Post::first()->createReview(5, 'Example review text', $author); 39 | 40 | // author is assumed to be logged in and executing this operation 41 | Post::first()->createReview(10); 42 | 43 | // with helper 44 | review($post, 5, 'Example Text', $author); 45 | ``` 46 | 47 | and receive review scores by: 48 | ```php 49 | // summarizes all scores 50 | Post::first()->score; 51 | 52 | // gives the average of all scores 53 | Post::first()->avg_score; 54 | ``` 55 | 56 | ### Using your own Review-Model 57 | If you just want to change the global configuration to use your own Review-Model, just create a new Model and reference it in the `reviewable.models.review` config. 58 | 59 | If you do not want to change the global `review` Model you can take a look at [this issue](https://github.com/Naoray/laravel-reviewable/issues/16) for an example configuration. 60 | 61 | ## Testing 62 | Run the tests with: 63 | 64 | ``` bash 65 | vendor/bin/phpunit 66 | ``` 67 | 68 | ## Changelog 69 | Please see [CHANGELOG](CHANGELOG.md) for more information what has changed recently. 70 | 71 | ## Contributing 72 | Please see [CONTRIBUTING](CONTRIBUTING.md) for details. 73 | 74 | ## Security 75 | If you discover any security-related issues, please email krishan.koenig@googlemail.com instead of using the issue tracker. 76 | 77 | ## License 78 | The MIT License (MIT). Please see [License File](/LICENSE.md) for more information. 79 | -------------------------------------------------------------------------------- /src/Contracts/Review.php: -------------------------------------------------------------------------------- 1 | publishes([ 18 | __DIR__.'/../config/reviewable.php' => config_path('reviewable.php'), 19 | ]); 20 | 21 | if (!class_exists('CreateReviewsTable')) { 22 | $timestamp = date('Y_m_d_His', time()); 23 | $migrationName = 'create_reviews_table.php'; 24 | 25 | $this->publishes([ 26 | __DIR__."/../database/migrations/{$migrationName}.stub" => $this->app->databasePath()."/migrations/{$timestamp}_{$migrationName}", 27 | ], 'migrations'); 28 | } 29 | 30 | $this->registerModelBindings(); 31 | } 32 | 33 | /** 34 | * Register the application services. 35 | * 36 | * @return void 37 | */ 38 | public function register() 39 | { 40 | $this->mergeConfigFrom( 41 | __DIR__.'/../config/reviewable.php', 'reviewable' 42 | ); 43 | } 44 | 45 | /** 46 | * Register Model bindings. 47 | */ 48 | protected function registerModelBindings() 49 | { 50 | $config = $this->app->config['reviewable.models']; 51 | 52 | $this->app->bind(ReviewContract::class, $config['review']); 53 | } 54 | } 55 | -------------------------------------------------------------------------------- /src/Models/Review.php: -------------------------------------------------------------------------------- 1 | belongsTo( 29 | config('reviewable.models.author') 30 | ); 31 | } 32 | 33 | /** 34 | * Get the reviewable item. 35 | *Model $model, $score, $body = null, Model $author = null 36 | * return \Illuminate\Database\Eloquent\Relations\MorphTo. 37 | */ 38 | public function reviewable() 39 | { 40 | return $this->morphTo(); 41 | } 42 | 43 | /** 44 | * Writes a review to the database. 45 | * 46 | * @param Model $model 47 | * @param int $score 48 | * @param string $body 49 | * @param Model|null $author 50 | */ 51 | public static function write(Model $model, $score, $body = null, Model $author = null) 52 | { 53 | ReviewFactory::create($model, $score, $body, $author); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/ReviewFactory.php: -------------------------------------------------------------------------------- 1 | $score, 28 | 'body' => $body, 29 | ]); 30 | 31 | $review->author()->associate($author); 32 | $review->reviewable()->associate($model); 33 | $review->save(); 34 | 35 | return $review; 36 | } 37 | } 38 | -------------------------------------------------------------------------------- /src/Traits/HasReviews.php: -------------------------------------------------------------------------------- 1 | morphMany( 18 | config('reviewable.models.review'), 'reviewable' 19 | ); 20 | } 21 | 22 | /** 23 | * Get the summerized score value. 24 | * 25 | * @return int 26 | */ 27 | public function getScoreAttribute() 28 | { 29 | return $this->reviews->sum('score'); 30 | } 31 | 32 | /** 33 | * Get the average score value. 34 | * 35 | * @return int 36 | */ 37 | public function getAvgScoreAttribute() 38 | { 39 | return $this->reviews()->avg('score'); 40 | } 41 | 42 | /** 43 | * Create a review for this model. 44 | * 45 | * @param int $score 46 | * @param string $body 47 | * @param model $author 48 | * 49 | * @return Review 50 | */ 51 | public function createReview($score, $body = null, $author = null) 52 | { 53 | return ReviewFactory::create($this, $score, $body, $author); 54 | } 55 | } 56 | -------------------------------------------------------------------------------- /src/helpers.php: -------------------------------------------------------------------------------- 1 | userToReview = User::create(['email' => 'reviewed@test.com']); 14 | } 15 | 16 | /** @test */ 17 | public function it_can_review_models() 18 | { 19 | review($this->userToReview, 10, '', $this->testUser); 20 | 21 | $review = Review::first(); 22 | $this->assertNotNull($review); 23 | $this->assertEquals(10, $review->score); 24 | $this->assertEquals($this->testUser, $review->author); 25 | $this->assertEquals($this->userToReview->fresh(), $review->reviewable); 26 | } 27 | 28 | /** @test */ 29 | public function it_can_get_reviewed_by_loged_in_users() 30 | { 31 | \Auth::login($this->testUser); 32 | 33 | $this->userToReview->createReview(5, 'Example review text'); 34 | 35 | $firstReview = Review::find(1); 36 | $this->assertNotNull($firstReview); 37 | $this->assertEquals('Example review text', $firstReview->body); 38 | $this->assertEquals($this->testUser, $firstReview->author); 39 | $this->assertEquals($this->userToReview->fresh(), $firstReview->reviewable); 40 | } 41 | 42 | /** @test */ 43 | public function it_can_get_the_total_score_of_all_reviews() 44 | { 45 | review($this->userToReview, 10, '', $this->testUser); 46 | review($this->userToReview, 1, '', $this->testUser); 47 | review($this->userToReview, 5, '', $this->testUser); 48 | review($this->userToReview, 8, '', $this->testUser); 49 | 50 | $this->assertEquals(24, $this->userToReview->fresh()->score); 51 | } 52 | 53 | /** @test */ 54 | public function it_can_get_the_average_score_of_all_reviews() 55 | { 56 | review($this->userToReview, 10, '', $this->testUser); 57 | review($this->userToReview, 1, '', $this->testUser); 58 | review($this->userToReview, 5, '', $this->testUser); 59 | review($this->userToReview, 8, '', $this->testUser); 60 | 61 | $this->assertEquals(6, $this->userToReview->fresh()->avg_score); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /tests/TestCase.php: -------------------------------------------------------------------------------- 1 | setUpDatabase($this->app); 20 | $this->testUser = User::first(); 21 | } 22 | 23 | /** 24 | * Set up the environment. 25 | * 26 | * @param \Illuminate\Foundation\Application $app 27 | */ 28 | protected function getEnvironmentSetUp($app) 29 | { 30 | $app['config']->set('database.default', 'sqlite'); 31 | $app['config']->set('database.connections.sqlite', [ 32 | 'driver' => 'sqlite', 33 | 'database' => ':memory:', 34 | 'prefix' => '', 35 | ]); 36 | 37 | $app['config']->set('reviewable.models.author', User::class); 38 | $app['config']->set('auth.providers.users.model', User::class); 39 | } 40 | 41 | /** 42 | * Set up the database. 43 | * 44 | * @param \Illuminate\Foundation\Application $app 45 | */ 46 | protected function setUpDatabase($app) 47 | { 48 | $app['db']->connection()->getSchemaBuilder()->create('users', function (Blueprint $table) { 49 | $table->increments('id'); 50 | $table->string('email'); 51 | $table->softDeletes(); 52 | }); 53 | 54 | include_once __DIR__.'/../database/migrations/create_reviews_table.php.stub'; 55 | (new \CreateReviewsTable())->up(); 56 | 57 | User::create(['email' => 'test@user.com']); 58 | } 59 | 60 | /** 61 | * Get package providers. 62 | * 63 | * @param \Illuminate\Foundation\Application $app 64 | * 65 | * @return array 66 | */ 67 | protected function getPackageProviders($app) 68 | { 69 | return [ 70 | \Naoray\LaravelReviewable\LaravelReviewableServiceProvider::class, 71 | ]; 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /tests/User.php: -------------------------------------------------------------------------------- 1 |