From a600437b502595c2e192e13276f25005ccabab25 Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Fri, 20 Mar 2020 17:31:45 -0500 Subject: [PATCH 01/12] Upgrade to Laravel 5.8 --- .env.example | 1 - .phpunit.result.cache | 1 + CODE_OF_CONDUCT.md | 73 + CONTRIBUTING.md | 3 + LICENSE | 21 + .../Controllers/ReservationController.php | 21 +- app/Http/Kernel.php | 59 +- .../Middleware/CheckForMaintenanceMode.php | 17 + app/Http/Middleware/TrimStrings.php | 18 + app/Http/Middleware/TrustProxies.php | 23 + app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 33 - app/Providers/RouteServiceProvider.php | 49 +- composer.json | 48 +- composer.lock | 3150 ++++++++++++----- config/app.php | 8 +- config/auth.php | 86 +- config/database.php | 8 +- phpunit.xml | 14 +- readme.md | 30 +- routes/api.php | 14 + routes/channels.php | 16 + routes/console.php | 18 + app/Http/routes.php => routes/web.php | 23 +- tests/ReservationControllerTest.php | 12 +- tests/UserControllerTest.php | 4 +- tests/VacationPropertyControllerTest.php | 6 +- webhook.png | Bin 0 -> 83032 bytes 28 files changed, 2784 insertions(+), 993 deletions(-) create mode 100644 .phpunit.result.cache create mode 100644 CODE_OF_CONDUCT.md create mode 100644 CONTRIBUTING.md create mode 100644 LICENSE create mode 100644 app/Http/Middleware/CheckForMaintenanceMode.php create mode 100644 app/Http/Middleware/TrimStrings.php create mode 100644 app/Http/Middleware/TrustProxies.php create mode 100644 app/Providers/BroadcastServiceProvider.php delete mode 100644 app/Providers/EventServiceProvider.php create mode 100644 routes/api.php create mode 100644 routes/channels.php create mode 100644 routes/console.php rename app/Http/routes.php => routes/web.php (81%) create mode 100644 webhook.png diff --git a/.env.example b/.env.example index 39dacb4..fdd81dd 100644 --- a/.env.example +++ b/.env.example @@ -1,7 +1,6 @@ APP_ENV=local APP_DEBUG=true APP_KEY=SomeRandomStringSomeRandomString -DB_DATABASE=airtng # Twilio API credentials # Found at https://www.twilio.com/user/account/voice diff --git a/.phpunit.result.cache b/.phpunit.result.cache new file mode 100644 index 0000000..1c82cfc --- /dev/null +++ b/.phpunit.result.cache @@ -0,0 +1 @@ +C:37:"PHPUnit\Runner\DefaultTestResultCache":880:{a:2:{s:7:"defects";a:7:{s:37:"ReservationControllerTest::testCreate";i:4;s:50:"ReservationControllerTest::testAcceptRejectConfirm";i:4;s:49:"ReservationControllerTest::testAcceptRejectReject";i:4;s:52:"ReservationControllerTest::testAcceptRejectNoPending";i:4;s:31:"UserControllerTest::testNewUser";i:4;s:53:"VacationPropertyControllerTest::testCreateNewProperty";i:4;s:48:"VacationPropertyControllerTest::testEditProperty";i:4;}s:5:"times";a:7:{s:37:"ReservationControllerTest::testCreate";d:0.098;s:50:"ReservationControllerTest::testAcceptRejectConfirm";d:0.002;s:49:"ReservationControllerTest::testAcceptRejectReject";d:0.002;s:52:"ReservationControllerTest::testAcceptRejectNoPending";d:0.002;s:31:"UserControllerTest::testNewUser";d:0.002;s:53:"VacationPropertyControllerTest::testCreateNewProperty";d:0.002;s:48:"VacationPropertyControllerTest::testEditProperty";d:0.002;}}} \ No newline at end of file diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..2f0727e --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,73 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +- Using welcoming and inclusive language +- Being respectful of differing viewpoints and experiences +- Gracefully accepting constructive criticism +- Focusing on what is best for the community +- Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +- The use of sexualized language or imagery and unwelcome sexual attention or + advances +- Trolling, insulting/derogatory comments, and personal or political attacks +- Public or private harassment +- Publishing others' private information, such as a physical or electronic + address, without explicit permission +- Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at open-source@twilio.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..ad3257e --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,3 @@ +# Contributing to Twilio + +All third party contributors acknowledge that any contributions they provide will be made under the same open source license that the open source project is provided under. diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..20edada --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2020 Twilio Labs + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/app/Http/Controllers/ReservationController.php b/app/Http/Controllers/ReservationController.php index bcfa84a..75d0280 100644 --- a/app/Http/Controllers/ReservationController.php +++ b/app/Http/Controllers/ReservationController.php @@ -9,7 +9,7 @@ use App\VacationProperty; use DB; use Twilio\Rest\Client; -use Twilio\Twiml; +use Twilio\TwiML\MessagingResponse; class ReservationController extends Controller { @@ -46,11 +46,22 @@ public function acceptReject(Request $request) { $hostNumber = $request->input('From'); $smsInput = strtolower($request->input('Body')); - $host = User::where(DB::raw("CONCAT('+',country_code::text, phone_number::text)"), 'LIKE', "%".$hostNumber."%") - ->get() - ->first(); + + $connection = config('database.default'); + $driver = config("database.connections.{$connection}.driver"); + if ($driver === 'sqlite') { + $concat_string = DB::raw("'+' || country_code || phone_number"); + } else { + $concat_string = DB::raw("CONCAT('+',country_code::text, phone_number::text)"); + } + + $host = User::where($concat_string, 'LIKE', "%".$hostNumber."%") + ->get() + ->first(); $reservation = $host->pendingReservations()->first(); + $smsResponse = null; + if (!is_null($reservation)) { if (strpos($smsInput, 'yes') !== false || strpos($smsInput, 'accept') !== false) @@ -74,7 +85,7 @@ public function acceptReject(Request $request) private function respond($smsResponse, $reservation) { - $response = new Twiml(); + $response = new MessagingResponse(); $response->message($smsResponse); if (!is_null($reservation)) diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index ceea60a..6ee2f77 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -9,25 +9,72 @@ class Kernel extends HttpKernel /** * The application's global HTTP middleware stack. * + * These middleware are run during every request to your application. + * * @var array */ protected $middleware = [ - \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class, - \App\Http\Middleware\EncryptCookies::class, - \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, - \Illuminate\Session\Middleware\StartSession::class, - \Illuminate\View\Middleware\ShareErrorsFromSession::class, - \App\Http\Middleware\VerifyCsrfToken::class, + \App\Http\Middleware\TrustProxies::class, + \App\Http\Middleware\CheckForMaintenanceMode::class, + \Illuminate\Foundation\Http\Middleware\ValidatePostSize::class, + \App\Http\Middleware\TrimStrings::class, + \Illuminate\Foundation\Http\Middleware\ConvertEmptyStringsToNull::class, + ]; + + /** + * The application's route middleware groups. + * + * @var array + */ + protected $middlewareGroups = [ + 'web' => [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:60,1', + 'bindings', + ], ]; /** * The application's route middleware. * + * These middleware may be assigned to groups or used individually. + * * @var array */ protected $routeMiddleware = [ 'auth' => \App\Http\Middleware\Authenticate::class, 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'bindings' => \Illuminate\Routing\Middleware\SubstituteBindings::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; + + /** + * The priority-sorted list of middleware. + * + * This forces non-global middleware to always be in the given order. + * + * @var array + */ + protected $middlewarePriority = [ + \Illuminate\Session\Middleware\StartSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\Authenticate::class, + \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + \Illuminate\Auth\Middleware\Authorize::class, ]; } diff --git a/app/Http/Middleware/CheckForMaintenanceMode.php b/app/Http/Middleware/CheckForMaintenanceMode.php new file mode 100644 index 0000000..35b9824 --- /dev/null +++ b/app/Http/Middleware/CheckForMaintenanceMode.php @@ -0,0 +1,17 @@ + [ - 'App\Listeners\EventListener', - ], - ]; - - /** - * Register any other events for your application. - * - * @param \Illuminate\Contracts\Events\Dispatcher $events - * @return void - */ - public function boot(DispatcherContract $events) - { - parent::boot($events); - - // - } -} diff --git a/app/Providers/RouteServiceProvider.php b/app/Providers/RouteServiceProvider.php index d50b1c0..5ea48d3 100644 --- a/app/Providers/RouteServiceProvider.php +++ b/app/Providers/RouteServiceProvider.php @@ -2,13 +2,13 @@ namespace App\Providers; -use Illuminate\Routing\Router; +use Illuminate\Support\Facades\Route; use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider; class RouteServiceProvider extends ServiceProvider { /** - * This namespace is applied to the controller routes in your routes file. + * This namespace is applied to your controller routes. * * In addition, it is set as the URL generator's root namespace. * @@ -19,26 +19,55 @@ class RouteServiceProvider extends ServiceProvider /** * Define your route model bindings, pattern filters, etc. * - * @param \Illuminate\Routing\Router $router * @return void */ - public function boot(Router $router) + public function boot() { // - parent::boot($router); + parent::boot(); } /** * Define the routes for the application. * - * @param \Illuminate\Routing\Router $router * @return void */ - public function map(Router $router) + public function map() { - $router->group(['namespace' => $this->namespace], function ($router) { - require app_path('Http/routes.php'); - }); + $this->mapApiRoutes(); + + $this->mapWebRoutes(); + + // + } + + /** + * Define the "web" routes for the application. + * + * These routes all receive session state, CSRF protection, etc. + * + * @return void + */ + protected function mapWebRoutes() + { + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + } + + /** + * Define the "api" routes for the application. + * + * These routes are typically stateless. + * + * @return void + */ + protected function mapApiRoutes() + { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); } } diff --git a/composer.json b/composer.json index 82a3cc8..ff22a43 100644 --- a/composer.json +++ b/composer.json @@ -5,24 +5,32 @@ "license": "MIT", "type": "project", "require": { - "php": ">=5.5.9", - "laravel/framework": "5.1.*", + "php": ">=7.2", + "fideloper/proxy": "^4.0", + "laravel/framework": "5.8.*", + "laravel/tinker": "^1.0", "twilio/sdk": "^5.0", - "laravelcollective/html": "5.1.*" + "laravelcollective/html": "5.8.*" }, "require-dev": { "fzaninotto/faker": "~1.4", "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0", - "phpspec/phpspec": "~2.1" + "phpunit/phpunit": "^7.5", + "phpspec/phpspec": "~6.1" + }, + "extra": { + "laravel": { + "dont-discover": [] + } }, "autoload": { - "classmap": [ - "database" - ], "psr-4": { "App\\": "app/" - } + }, + "classmap": [ + "database/seeds", + "database/factories" + ] }, "autoload-dev": { "classmap": [ @@ -30,24 +38,22 @@ ] }, "scripts": { - "post-install-cmd": [ - "php artisan clear-compiled", - "php artisan optimize" - ], - "pre-update-cmd": [ - "php artisan clear-compiled" - ], - "post-update-cmd": [ - "php artisan optimize" + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" ], "post-root-package-install": [ - "php -r \"copy('.env.example', '.env');\"" + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" ], "post-create-project-cmd": [ - "php artisan key:generate" + "@php artisan key:generate --ansi" ] }, + "minimum-stability": "dev", + "prefer-stable": true, "config": { - "preferred-install": "dist" + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true } } diff --git a/composer.lock b/composer.lock index 696daef..b174c0a 100644 --- a/composer.lock +++ b/composer.lock @@ -1,42 +1,73 @@ { "_readme": [ "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", + "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "hash": "511c791ed7df95915f0faa11ecd726de", - "content-hash": "f02344ec5c5d240fd097dd63bbf26e4f", + "content-hash": "fb8b26b5ef3c14e129a46130f82fa5dc", "packages": [ { - "name": "classpreloader/classpreloader", - "version": "3.0.0", + "name": "dnoegel/php-xdg-base-dir", + "version": "v0.1.1", "source": { "type": "git", - "url": "https://github.com/ClassPreloader/ClassPreloader.git", - "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a" + "url": "https://github.com/dnoegel/php-xdg-base-dir.git", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/9b10b913c2bdf90c3d2e0d726b454fb7f77c552a", - "reference": "9b10b913c2bdf90c3d2e0d726b454fb7f77c552a", + "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", + "reference": "8f8a6e48c5ecb0f991c2fdcf5f154a47d85f9ffd", "shasum": "" }, "require": { - "nikic/php-parser": "^1.0|^2.0", - "php": ">=5.5.9" + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~7.0|~6.0|~5.0|~4.8.35" + }, + "type": "library", + "autoload": { + "psr-4": { + "XdgBaseDir\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "implementation of xdg base directory specification for php", + "time": "2019-12-04T15:06:13+00:00" + }, + { + "name": "doctrine/inflector", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/doctrine/inflector.git", + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "shasum": "" + }, + "require": { + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "^4.8|^5.0" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { "psr-4": { - "ClassPreloader\\": "src/" + "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -45,51 +76,68 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" }, { - "name": "Graham Campbell", - "email": "graham@alt-three.com" + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Benjamin Eberlei", + "email": "kontakt@beberlei.de" + }, + { + "name": "Jonathan Wage", + "email": "jonwage@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "Helps class loading performance by generating a single PHP file containing all of the autoloaded files for a specific use case", + "description": "Common String Manipulations with regard to casing and singular/plural rules.", + "homepage": "http://www.doctrine-project.org", "keywords": [ - "autoload", - "class", - "preload" + "inflection", + "pluralize", + "singularize", + "string" ], - "time": "2015-11-09 22:51:51" + "time": "2019-10-30T19:59:35+00:00" }, { - "name": "danielstjules/stringy", - "version": "1.10.0", + "name": "doctrine/lexer", + "version": "1.2.0", "source": { "type": "git", - "url": "https://github.com/danielstjules/Stringy.git", - "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b" + "url": "https://github.com/doctrine/lexer.git", + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/danielstjules/Stringy/zipball/4749c205db47ee5b32e8d1adf6d9aff8db6caf3b", - "reference": "4749c205db47ee5b32e8d1adf6d9aff8db6caf3b", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" + "php": "^7.2" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "doctrine/coding-standard": "^6.0", + "phpstan/phpstan": "^0.11.8", + "phpunit/phpunit": "^8.2" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, "autoload": { "psr-4": { - "Stringy\\": "src/" - }, - "files": [ - "src/Create.php" - ] + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -97,88 +145,119 @@ ], "authors": [ { - "name": "Daniel St. Jules", - "email": "danielst.jules@gmail.com", - "homepage": "http://www.danielstjules.com" + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" } ], - "description": "A string manipulation library with multibyte support", - "homepage": "https://github.com/danielstjules/Stringy", + "description": "PHP Doctrine Lexer parser library that can be used in Top-Down, Recursive Descent Parsers.", + "homepage": "https://www.doctrine-project.org/projects/lexer.html", "keywords": [ - "UTF", - "helpers", - "manipulation", - "methods", - "multibyte", - "string", - "utf-8", - "utility", - "utils" + "annotations", + "docblock", + "lexer", + "parser", + "php" ], - "time": "2015-07-23 00:54:12" + "time": "2019-10-30T14:39:59+00:00" }, { - "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", + "name": "dragonmantank/cron-expression", + "version": "v2.3.0", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/72b6fbf76adb3cf5bc0db68559b33d41219aba27", + "reference": "72b6fbf76adb3cf5bc0db68559b33d41219aba27", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "@stable" + "phpunit/phpunit": "^6.4|^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } }, - "type": "project", "autoload": { "psr-4": { - "XdgBaseDir\\": "src/" + "Cron\\": "src/Cron/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "implementation of xdg base directory specification for php", - "time": "2014-10-24 07:27:01" + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" + } + ], + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "keywords": [ + "cron", + "schedule" + ], + "time": "2019-03-31T00:38:28+00:00" }, { - "name": "doctrine/inflector", - "version": "v1.1.0", + "name": "egulias/email-validator", + "version": "2.1.17", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "ade6887fd9bd74177769645ab5c474824f8a418a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/ade6887fd9bd74177769645ab5c474824f8a418a", + "reference": "ade6887fd9bd74177769645ab5c474824f8a418a", "shasum": "" }, "require": { - "php": ">=5.3.2" + "doctrine/lexer": "^1.0.1", + "php": ">=5.5", + "symfony/polyfill-intl-idn": "^1.10" }, "require-dev": { - "phpunit/phpunit": "4.*" + "dominicsayers/isemail": "^3.0.7", + "phpunit/phpunit": "^4.8.36|^7.5.15", + "satooshi/php-coveralls": "^1.0.1" + }, + "suggest": { + "ext-intl": "PHP Internationalization Libraries are required to use the SpoofChecking validation" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "psr-4": { + "Egulias\\EmailValidator\\": "EmailValidator" } }, "notification-url": "https://packagist.org/downloads/", @@ -187,108 +266,100 @@ ], "authors": [ { - "name": "Roman Borschel", - "email": "roman@code-factory.org" - }, - { - "name": "Benjamin Eberlei", - "email": "kontakt@beberlei.de" - }, - { - "name": "Guilherme Blanco", - "email": "guilhermeblanco@gmail.com" - }, - { - "name": "Jonathan Wage", - "email": "jonwage@gmail.com" - }, - { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Eduardo Gulias Davis" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" ], - "time": "2015-11-06 14:35:42" + "time": "2020-02-13T22:36:52+00:00" }, { - "name": "jakub-onderka/php-console-color", - "version": "0.1", + "name": "erusev/parsedown", + "version": "1.7.4", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1" + "url": "https://github.com/erusev/parsedown.git", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", + "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", "shasum": "" }, "require": { - "php": ">=5.3.2" + "ext-mbstring": "*", + "php": ">=5.3.0" }, "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "0.*", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "3.7.*", - "squizlabs/php_codesniffer": "1.*" + "phpunit/phpunit": "^4.8.35" }, "type": "library", "autoload": { "psr-0": { - "JakubOnderka\\PhpConsoleColor": "src/" + "Parsedown": "" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-2-Clause" + "MIT" ], "authors": [ { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com", - "homepage": "http://www.acci.cz" + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" } ], - "time": "2014-04-08 15:00:19" + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2019-12-30T22:54:17+00:00" }, { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.3.2", + "name": "fideloper/proxy", + "version": "4.3.0", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" + "url": "https://github.com/fideloper/TrustedProxy.git", + "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "url": "https://api.github.com/repos/fideloper/TrustedProxy/zipball/ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", + "reference": "ec38ad69ee378a1eec04fb0e417a97cfaf7ed11a", "shasum": "" }, "require": { - "jakub-onderka/php-console-color": "~0.1", - "php": ">=5.3.0" + "illuminate/contracts": "^5.0|^6.0|^7.0|^8.0", + "php": ">=5.4.0" }, "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~0.5", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" + "illuminate/http": "^5.0|^6.0|^7.0|^8.0", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.0" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Fideloper\\Proxy\\TrustedProxyServiceProvider" + ] + } + }, "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleHighlighter": "src/" + "psr-4": { + "Fideloper\\Proxy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -297,44 +368,90 @@ ], "authors": [ { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" + "name": "Chris Fidao", + "email": "fideloper@gmail.com" } ], - "time": "2015-04-20 18:58:01" + "description": "Set trusted proxies for Laravel", + "keywords": [ + "load balancing", + "proxy", + "trusted proxy" + ], + "time": "2020-02-22T01:51:47+00:00" }, { - "name": "jeremeamia/SuperClosure", - "version": "2.2.0", + "name": "jakub-onderka/php-console-color", + "version": "v0.2", "source": { "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938" + "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/29a88be2a4846d27c1613aed0c9071dfad7b5938", - "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", "shasum": "" }, "require": { - "nikic/php-parser": "^1.2|^2.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" + "php": ">=5.4.0" }, "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" + "jakub-onderka/php-code-style": "1.0", + "jakub-onderka/php-parallel-lint": "1.0", + "jakub-onderka/php-var-dump-check": "0.*", + "phpunit/phpunit": "~4.3", + "squizlabs/php_codesniffer": "1.*" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.2-dev" + "autoload": { + "psr-4": { + "JakubOnderka\\PhpConsoleColor\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "authors": [ + { + "name": "Jakub Onderka", + "email": "jakub.onderka@gmail.com" } + ], + "time": "2018-09-29T17:23:10+00:00" + }, + { + "name": "jakub-onderka/php-console-highlighter", + "version": "v0.4", + "source": { + "type": "git", + "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", + "shasum": "" + }, + "require": { + "ext-tokenizer": "*", + "jakub-onderka/php-console-color": "~0.2", + "php": ">=5.4.0" }, + "require-dev": { + "jakub-onderka/php-code-style": "~1.0", + "jakub-onderka/php-parallel-lint": "~1.0", + "jakub-onderka/php-var-dump-check": "~0.1", + "phpunit/phpunit": "~4.0", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", "autoload": { "psr-4": { - "SuperClosure\\": "src/" + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -343,66 +460,58 @@ ], "authors": [ { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" + "name": "Jakub Onderka", + "email": "acci@acci.cz", + "homepage": "http://www.acci.cz/" } ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", - "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" - ], - "time": "2015-12-05 17:17:57" + "description": "Highlight PHP code in terminal", + "time": "2018-09-29T18:48:56+00:00" }, { "name": "laravel/framework", - "version": "v5.1.41", + "version": "v5.8.37", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "4f338f494ee2fffe6605f70a7cb8a36c93da95b6" + "reference": "ce08aaee3a0b8bb58b459b2decf7f25ba7b10fa4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/4f338f494ee2fffe6605f70a7cb8a36c93da95b6", - "reference": "4f338f494ee2fffe6605f70a7cb8a36c93da95b6", + "url": "https://api.github.com/repos/laravel/framework/zipball/ce08aaee3a0b8bb58b459b2decf7f25ba7b10fa4", + "reference": "ce08aaee3a0b8bb58b459b2decf7f25ba7b10fa4", "shasum": "" }, "require": { - "classpreloader/classpreloader": "~2.0|~3.0", - "danielstjules/stringy": "~1.8", - "doctrine/inflector": "~1.0", + "doctrine/inflector": "^1.1", + "dragonmantank/cron-expression": "^2.0", + "egulias/email-validator": "^2.0", + "erusev/parsedown": "^1.7", + "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", - "jeremeamia/superclosure": "~2.0", - "league/flysystem": "~1.0", - "monolog/monolog": "~1.11", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.19", - "paragonie/random_compat": "~1.4", - "php": ">=5.5.9", - "psy/psysh": "0.7.*", - "swiftmailer/swiftmailer": "~5.1", - "symfony/console": "2.7.*", - "symfony/css-selector": "2.7.*", - "symfony/debug": "2.7.*", - "symfony/dom-crawler": "2.7.*", - "symfony/finder": "2.7.*", - "symfony/http-foundation": "2.7.*", - "symfony/http-kernel": "2.7.*", - "symfony/process": "2.7.*", - "symfony/routing": "2.7.*", - "symfony/translation": "2.7.*", - "symfony/var-dumper": "2.7.*", - "vlucas/phpdotenv": "~1.0" + "league/flysystem": "^1.0.8", + "monolog/monolog": "^1.12", + "nesbot/carbon": "^1.26.3 || ^2.0", + "opis/closure": "^3.1", + "php": "^7.1.3", + "psr/container": "^1.0", + "psr/simple-cache": "^1.0", + "ramsey/uuid": "^3.7", + "swiftmailer/swiftmailer": "^6.0", + "symfony/console": "^4.2", + "symfony/debug": "^4.2", + "symfony/finder": "^4.2", + "symfony/http-foundation": "^4.2", + "symfony/http-kernel": "^4.2", + "symfony/process": "^4.2", + "symfony/routing": "^4.2", + "symfony/var-dumper": "^4.2", + "tijsverkoyen/css-to-inline-styles": "^2.2.1", + "vlucas/phpdotenv": "^3.3" + }, + "conflict": { + "tightenco/collect": "<5.5.33" }, "replace": { "illuminate/auth": "self.version", @@ -417,12 +526,12 @@ "illuminate/database": "self.version", "illuminate/encryption": "self.version", "illuminate/events": "self.version", - "illuminate/exception": "self.version", "illuminate/filesystem": "self.version", "illuminate/hashing": "self.version", "illuminate/http": "self.version", "illuminate/log": "self.version", "illuminate/mail": "self.version", + "illuminate/notifications": "self.version", "illuminate/pagination": "self.version", "illuminate/pipeline": "self.version", "illuminate/queue": "self.version", @@ -435,36 +544,52 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "iron-io/iron_mq": "~2.0", - "mockery/mockery": "~0.9.4", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~4.0", - "predis/predis": "~1.0" + "aws/aws-sdk-php": "^3.0", + "doctrine/dbal": "^2.6", + "filp/whoops": "^2.1.4", + "guzzlehttp/guzzle": "^6.3", + "league/flysystem-cached-adapter": "^1.0", + "mockery/mockery": "^1.0", + "moontoast/math": "^1.1", + "orchestra/testbench-core": "3.8.*", + "pda/pheanstalk": "^4.0", + "phpunit/phpunit": "^7.5|^8.0", + "predis/predis": "^1.1.1", + "symfony/css-selector": "^4.2", + "symfony/dom-crawler": "^4.2", + "true/punycode": "^2.1" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (~3.0).", - "doctrine/dbal": "Required to rename columns and drop SQLite columns (~2.4).", - "fzaninotto/faker": "Required to use the eloquent factory builder (~1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (~5.3|~6.0).", - "iron-io/iron_mq": "Required to use the iron queue driver (~2.0).", - "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (~1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (~1.0).", - "pda/pheanstalk": "Required to use the beanstalk queue driver (~3.0).", - "predis/predis": "Required to use the redis cache and queue drivers (~1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", - "symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." + "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", + "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-pcntl": "Required to use all features of the queue worker.", + "ext-posix": "Required to use all features of the queue worker.", + "filp/whoops": "Required for friendly error pages in development (^2.1.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", + "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", + "laravel/tinker": "Required to use the tinker console command (^1.0).", + "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", + "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", + "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", + "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "moontoast/math": "Required to use ordered UUIDs (^1.1).", + "nexmo/client": "Required to use the Nexmo transport (^1.0).", + "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", + "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", + "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.1-dev" + "dev-master": "5.8-dev" } }, "autoload": { - "classmap": [ - "src/Illuminate/Queue/IlluminateQueueClosure.php" - ], "files": [ "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" @@ -480,50 +605,60 @@ "authors": [ { "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" + "email": "taylor@laravel.com" } ], "description": "The Laravel Framework.", - "homepage": "http://laravel.com", + "homepage": "https://laravel.com", "keywords": [ "framework", "laravel" ], - "time": "2016-08-10 12:23:27" + "time": "2020-02-14T14:29:11+00:00" }, { - "name": "laravelcollective/html", - "version": "v5.1.9", + "name": "laravel/tinker", + "version": "v1.0.10", "source": { "type": "git", - "url": "https://github.com/LaravelCollective/html.git", - "reference": "f62269629b2a1093039733517bd7e75b3f98dffb" + "url": "https://github.com/laravel/tinker.git", + "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/f62269629b2a1093039733517bd7e75b3f98dffb", - "reference": "f62269629b2a1093039733517bd7e75b3f98dffb", + "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", "shasum": "" }, "require": { - "illuminate/http": "5.1.*", - "illuminate/routing": "5.1.*", - "illuminate/session": "5.1.*", - "illuminate/support": "5.1.*", - "php": ">=5.5.9" + "illuminate/console": "~5.1|^6.0", + "illuminate/contracts": "~5.1|^6.0", + "illuminate/support": "~5.1|^6.0", + "php": ">=5.5.9", + "psy/psysh": "0.7.*|0.8.*|0.9.*", + "symfony/var-dumper": "~3.0|~4.0" }, "require-dev": { - "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~4.0|~5.0" + }, + "suggest": { + "illuminate/database": "The Illuminate Database package (~5.1)." }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Laravel\\Tinker\\TinkerServiceProvider" + ] + } + }, "autoload": { "psr-4": { - "Collective\\Html\\": "src/" - }, - "files": [ - "src/helpers.php" - ] + "Laravel\\Tinker\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -532,54 +667,126 @@ "authors": [ { "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com" + "email": "taylor@laravel.com" + } + ], + "description": "Powerful REPL for the Laravel framework.", + "keywords": [ + "REPL", + "Tinker", + "laravel", + "psysh" + ], + "time": "2019-08-07T15:10:45+00:00" + }, + { + "name": "laravelcollective/html", + "version": "v5.8.1", + "source": { + "type": "git", + "url": "https://github.com/LaravelCollective/html.git", + "reference": "3a1c9974ea629eed96e101a24e3852ced382eb29" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/3a1c9974ea629eed96e101a24e3852ced382eb29", + "reference": "3a1c9974ea629eed96e101a24e3852ced382eb29", + "shasum": "" + }, + "require": { + "illuminate/http": "5.8.*", + "illuminate/routing": "5.8.*", + "illuminate/session": "5.8.*", + "illuminate/support": "5.8.*", + "illuminate/view": "5.8.*", + "php": ">=7.1.3" + }, + "require-dev": { + "illuminate/database": "5.8.*", + "mockery/mockery": "~1.0", + "phpunit/phpunit": "~7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.8-dev" + }, + "laravel": { + "providers": [ + "Collective\\Html\\HtmlServiceProvider" + ], + "aliases": { + "Form": "Collective\\Html\\FormFacade", + "Html": "Collective\\Html\\HtmlFacade" + } + } + }, + "autoload": { + "psr-4": { + "Collective\\Html\\": "src/" }, + "files": [ + "src/helpers.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ { "name": "Adam Engebretson", "email": "adam@laravelcollective.com" + }, + { + "name": "Taylor Otwell", + "email": "taylorotwell@gmail.com" } ], - "time": "2015-11-28 08:27:09" + "description": "HTML and Form Builders for the Laravel Framework", + "homepage": "https://laravelcollective.com", + "time": "2019-09-05T12:32:25+00:00" }, { "name": "league/flysystem", - "version": "1.0.27", + "version": "1.0.66", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9" + "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/50e2045ed70a7e75a5e30bc3662904f3b67af8a9", - "reference": "50e2045ed70a7e75a5e30bc3662904f3b67af8a9", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/021569195e15f8209b1c4bebb78bd66aa4f08c21", + "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21", "shasum": "" }, "require": { - "php": ">=5.4.0" + "ext-fileinfo": "*", + "php": ">=5.5.9" }, "conflict": { "league/flysystem-sftp": "<1.0.6" }, "require-dev": { - "ext-fileinfo": "*", - "mockery/mockery": "~0.9", - "phpspec/phpspec": "^2.2", - "phpunit/phpunit": "~4.8" + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7.26" }, "suggest": { "ext-fileinfo": "Required for MimeType", + "ext-ftp": "Allows you to use FTP server storage", + "ext-openssl": "Allows you to use FTPS server storage", "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-copy": "Allows you to use Copy.com storage", - "league/flysystem-dropbox": "Allows you to use Dropbox storage", "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter" + "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", + "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", + "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" }, "type": "library", "extra": { @@ -622,20 +829,20 @@ "sftp", "storage" ], - "time": "2016-08-10 08:55:11" + "time": "2020-03-17T18:58:12+00:00" }, { "name": "monolog/monolog", - "version": "1.21.0", + "version": "1.25.3", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952" + "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f42fbdfd53e306bda545845e4dbfd3e72edb4952", - "reference": "f42fbdfd53e306bda545845e4dbfd3e72edb4952", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1", + "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1", "shasum": "" }, "require": { @@ -646,7 +853,7 @@ "psr/log-implementation": "1.0.0" }, "require-dev": { - "aws/aws-sdk-php": "^2.4.9", + "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", "graylog2/gelf-php": "~1.0", "jakub-onderka/php-parallel-lint": "0.9", @@ -656,7 +863,7 @@ "phpunit/phpunit-mock-objects": "2.3.0", "ruflin/elastica": ">=0.90 <3.0", "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "~5.3" + "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -700,32 +907,52 @@ "logging", "psr-3" ], - "time": "2016-07-29 03:23:52" + "time": "2019-12-20T14:15:16+00:00" }, { - "name": "mtdowling/cron-expression", - "version": "v1.1.0", + "name": "nesbot/carbon", + "version": "2.31.0", "source": { "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5" + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/c9ee7886f5a12902b225a1a12f36bb45f9ab89e5", - "reference": "c9ee7886f5a12902b225a1a12f36bb45f9ab89e5", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", + "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", "shasum": "" }, "require": { - "php": ">=5.3.2" + "ext-json": "*", + "php": "^7.1.8 || ^8.0", + "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", + "kylekatarnls/multi-tester": "^1.1", + "phpmd/phpmd": "^2.8", + "phpstan/phpstan": "^0.11", + "phpunit/phpunit": "^7.5 || ^8.0", + "squizlabs/php_codesniffer": "^3.4" }, + "bin": [ + "bin/carbon" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.x-dev" + }, + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, "autoload": { - "psr-0": { - "Cron": "src/" + "psr-4": { + "Carbon\\": "src/Carbon/" } }, "notification-url": "https://packagist.org/downloads/", @@ -734,145 +961,162 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" + }, + { + "name": "kylekatarnls", + "homepage": "http://github.com/kylekatarnls" } ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "description": "An API extension for DateTime that supports 281 different languages.", + "homepage": "http://carbon.nesbot.com", "keywords": [ - "cron", - "schedule" + "date", + "datetime", + "time" ], - "time": "2016-01-26 21:23:30" + "time": "2020-03-01T11:11:58+00:00" }, { - "name": "nesbot/carbon", - "version": "1.21.0", + "name": "nikic/php-parser", + "version": "v4.3.0", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7", - "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc", + "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/translation": "~2.6|~3.0" + "ext-tokenizer": "*", + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "ircmaxell/php-yacc": "0.0.5", + "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, "autoload": { "psr-4": { - "Carbon\\": "src/Carbon/" + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "name": "Nikita Popov" } ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", + "description": "A PHP parser written in PHP", "keywords": [ - "date", - "datetime", - "time" + "parser", + "php" ], - "time": "2015-11-04 20:07:17" + "time": "2019-11-08T13:50:10+00:00" }, { - "name": "nikic/php-parser", - "version": "v2.1.0", + "name": "opis/closure", + "version": "3.5.1", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3" + "url": "https://github.com/opis/closure.git", + "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/47b254ea51f1d6d5dc04b9b299e88346bf2369e3", - "reference": "47b254ea51f1d6d5dc04b9b299e88346bf2369e3", + "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969", + "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.4" + "php": "^5.4 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "jeremeamia/superclosure": "^2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "3.5.x-dev" } }, "autoload": { "psr-4": { - "PhpParser\\": "lib/PhpParser" - } + "Opis\\Closure\\": "src/" + }, + "files": [ + "functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Nikita Popov" + "name": "Marius Sarca", + "email": "marius.sarca@gmail.com" + }, + { + "name": "Sorin Sarca", + "email": "sarca_sorin@hotmail.com" } ], - "description": "A PHP parser written in PHP", + "description": "A library that can be used to serialize closures (anonymous functions) and arbitrary objects.", + "homepage": "https://opis.io/closure", "keywords": [ - "parser", - "php" + "anonymous functions", + "closure", + "function", + "serializable", + "serialization", + "serialize" ], - "time": "2016-04-19 13:41:41" + "time": "2019-11-29T22:36:02+00:00" }, { "name": "paragonie/random_compat", - "version": "v1.4.1", + "version": "v9.99.99", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "c7e26a21ba357863de030f0b9e701c7d04593774" + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/c7e26a21ba357863de030f0b9e701c7d04593774", - "reference": "c7e26a21ba357863de030f0b9e701c7d04593774", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", "shasum": "" }, "require": { - "php": ">=5.2.0" + "php": "^7" }, "require-dev": { - "phpunit/phpunit": "4.*|5.*" + "phpunit/phpunit": "4.*|5.*", + "vimeo/psalm": "^1" }, "suggest": { "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." }, "type": "library", - "autoload": { - "files": [ - "lib/random.php" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" @@ -887,29 +1131,142 @@ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", + "polyfill", "pseudorandom", "random" ], - "time": "2016-03-18 20:34:03" + "time": "2018-07-02T15:55:56+00:00" }, { - "name": "psr/log", + "name": "phpoption/phpoption", + "version": "1.7.2", + "source": { + "type": "git", + "url": "https://github.com/schmittjoh/php-option.git", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "shasum": "" + }, + "require": { + "php": "^5.5.9 || ^7.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.7-dev" + } + }, + "autoload": { + "psr-4": { + "PhpOption\\": "src/PhpOption/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "Apache-2.0" + ], + "authors": [ + { + "name": "Johannes M. Schmitt", + "email": "schmittjoh@gmail.com" + }, + { + "name": "Graham Campbell", + "email": "graham@alt-three.com" + } + ], + "description": "Option Type for PHP", + "keywords": [ + "language", + "option", + "php", + "type" + ], + "time": "2019-12-15T19:35:24+00:00" + }, + { + "name": "psr/container", "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/container.git", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/container/zipball/b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "reference": "b7ce3b176482dbbc1245ebf52b181af44c2cf55f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Container\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common Container Interface (PHP FIG PSR-11)", + "homepage": "https://github.com/php-fig/container", + "keywords": [ + "PSR-11", + "container", + "container-interface", + "container-interop", + "psr" + ], + "time": "2017-02-14T16:28:37+00:00" + }, + { + "name": "psr/log", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", + "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", "shasum": "" }, + "require": { + "php": ">=5.3.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1.x-dev" + } + }, "autoload": { - "psr-0": { - "Psr\\Log\\": "" + "psr-4": { + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -923,46 +1280,97 @@ } ], "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", "keywords": [ "log", "psr", "psr-3" ], - "time": "2012-12-21 11:40:51" + "time": "2019-11-01T11:05:21+00:00" + }, + { + "name": "psr/simple-cache", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\SimpleCache\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" }, { "name": "psy/psysh", - "version": "v0.7.2", + "version": "v0.9.12", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280" + "reference": "90da7f37568aee36b116a030c5f99c915267edd4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/e64e10b20f8d229cac76399e1f3edddb57a0f280", - "reference": "e64e10b20f8d229cac76399e1f3edddb57a0f280", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", + "reference": "90da7f37568aee36b116a030c5f99c915267edd4", "shasum": "" }, "require": { - "dnoegel/php-xdg-base-dir": "0.1", - "jakub-onderka/php-console-highlighter": "0.3.*", - "nikic/php-parser": "^1.2.1|~2.0", - "php": ">=5.3.9", - "symfony/console": "~2.3.10|^2.4.2|~3.0", - "symfony/var-dumper": "~2.7|~3.0" + "dnoegel/php-xdg-base-dir": "0.1.*", + "ext-json": "*", + "ext-tokenizer": "*", + "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", + "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", + "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" }, "require-dev": { - "fabpot/php-cs-fixer": "~1.5", - "phpunit/phpunit": "~3.7|~4.0|~5.0", - "squizlabs/php_codesniffer": "~2.0", - "symfony/finder": "~2.1|~3.0" + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", "ext-pdo-sqlite": "The doc command requires SQLite to work.", "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well.", - "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history." + "ext-readline": "Enables support for arrow-key history navigation, and showing and manipulating command history.", + "hoa/console": "A pure PHP readline implementation. You'll want this if your PHP install doesn't already support readline or libedit." }, "bin": [ "bin/psysh" @@ -970,16 +1378,96 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.8.x-dev" + "dev-develop": "0.9.x-dev" } }, "autoload": { "files": [ - "src/Psy/functions.php" + "src/functions.php" ], "psr-4": { - "Psy\\": "src/Psy/" + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "time": "2019-12-06T14:19:43+00:00" + }, + { + "name": "ramsey/uuid", + "version": "3.9.3", + "source": { + "type": "git", + "url": "https://github.com/ramsey/uuid.git", + "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", + "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", + "shasum": "" + }, + "require": { + "ext-json": "*", + "paragonie/random_compat": "^1 | ^2 | 9.99.99", + "php": "^5.4 | ^7 | ^8", + "symfony/polyfill-ctype": "^1.8" + }, + "replace": { + "rhumsaa/uuid": "self.version" + }, + "require-dev": { + "codeception/aspect-mock": "^1 | ^2", + "doctrine/annotations": "^1.2", + "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", + "jakub-onderka/php-parallel-lint": "^1", + "mockery/mockery": "^0.9.11 | ^1", + "moontoast/math": "^1.1", + "paragonie/random-lib": "^2", + "php-mock/php-mock-phpunit": "^0.3 | ^1.1", + "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", + "squizlabs/php_codesniffer": "^3.5" + }, + "suggest": { + "ext-ctype": "Provides support for PHP Ctype functions", + "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", + "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", + "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", + "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", + "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, + "autoload": { + "psr-4": { + "Ramsey\\Uuid\\": "src/" + }, + "files": [ + "src/functions.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -987,45 +1475,61 @@ ], "authors": [ { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + }, + { + "name": "Marijn Huizendveld", + "email": "marijn.huizendveld@gmail.com" + }, + { + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" } ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", + "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "homepage": "https://github.com/ramsey/uuid", "keywords": [ - "REPL", - "console", - "interactive", - "shell" + "guid", + "identifier", + "uuid" ], - "time": "2016-03-09 05:03:14" + "time": "2020-02-21T04:36:14+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.3", + "version": "v6.2.3", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153" + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/4cc92842069c2bbc1f28daaaf1d2576ec4dfe153", - "reference": "4cc92842069c2bbc1f28daaaf1d2576ec4dfe153", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/149cfdf118b169f7840bbe3ef0d4bc795d1780c9", + "reference": "149cfdf118b169f7840bbe3ef0d4bc795d1780c9", "shasum": "" }, "require": { - "php": ">=5.3.3" + "egulias/email-validator": "~2.0", + "php": ">=7.0.0", + "symfony/polyfill-iconv": "^1.0", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" }, "require-dev": { - "mockery/mockery": "~0.9.1" + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" + }, + "suggest": { + "ext-intl": "Needed to support internationalized email addresses", + "true/punycode": "Needed to support internationalized email addresses, if ext-intl is not installed" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "6.2-dev" } }, "autoload": { @@ -1047,45 +1551,62 @@ } ], "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "http://swiftmailer.org", + "homepage": "https://swiftmailer.symfony.com", "keywords": [ "email", "mail", "mailer" ], - "time": "2016-07-08 11:51:25" + "time": "2019-11-12T09:31:26+00:00" }, { "name": "symfony/console", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "61a73eabb2cf16681eda784b8755c587a869ec42" + "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/61a73eabb2cf16681eda784b8755c587a869ec42", - "reference": "61a73eabb2cf16681eda784b8755c587a869ec42", + "url": "https://api.github.com/repos/symfony/console/zipball/4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", + "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.8", + "symfony/service-contracts": "^1.1|^2" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/event-dispatcher": "<4.3|>=5", + "symfony/lock": "<4.4", + "symfony/process": "<3.3" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/process": "~2.1" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/event-dispatcher": "^4.3", + "symfony/lock": "^4.4|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/var-dumper": "^4.3|^5.0" }, "suggest": { "psr/log": "For using the console logger", "symfony/event-dispatcher": "", + "symfony/lock": "", "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1112,29 +1633,29 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2016-07-30 07:17:26" + "time": "2020-02-24T13:10:00+00:00" }, { "name": "symfony/css-selector", - "version": "v2.7.16", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "f2cc2c55a9982db7bc167385dbf549c640e8cc01" + "reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/f2cc2c55a9982db7bc167385dbf549c640e8cc01", - "reference": "f2cc2c55a9982db7bc167385dbf549c640e8cc01", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/a0b51ba9938ccc206d9284de7eb527c2d4550b44", + "reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1150,14 +1671,14 @@ "MIT" ], "authors": [ - { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" }, + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" @@ -1165,37 +1686,36 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2016-06-28 06:24:06" + "time": "2020-02-04T09:41:09+00:00" }, { "name": "symfony/debug", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "31106b58d530025c26d7c99004cbf72065a227a4" + "reference": "a980d87a659648980d89193fd8b7a7ca89d97d21" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/31106b58d530025c26d7c99004cbf72065a227a4", - "reference": "31106b58d530025c26d7c99004cbf72065a227a4", + "url": "https://api.github.com/repos/symfony/debug/zipball/a980d87a659648980d89193fd8b7a7ca89d97d21", + "reference": "a980d87a659648980d89193fd8b7a7ca89d97d21", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": "^7.1.3", "psr/log": "~1.0" }, "conflict": { - "symfony/http-kernel": ">=2.3,<2.3.24|~2.4.0|>=2.5,<2.5.9|>=2.6,<2.6.2" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "symfony/class-loader": "~2.2", - "symfony/http-kernel": "~2.3.24|~2.5.9|~2.6,>=2.6.2" + "symfony/http-kernel": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1222,40 +1742,41 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2016-07-30 07:17:26" + "time": "2020-02-23T14:41:43+00:00" }, { - "name": "symfony/dom-crawler", - "version": "v2.7.16", + "name": "symfony/error-handler", + "version": "v4.4.5", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "fb36832c2917a18b189635abd6d4ab5c2ffd0830" + "url": "https://github.com/symfony/error-handler.git", + "reference": "89aa4b9ac6f1f35171b8621b24f60477312085be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/fb36832c2917a18b189635abd6d4ab5c2ffd0830", - "reference": "fb36832c2917a18b189635abd6d4ab5c2ffd0830", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/89aa4b9ac6f1f35171b8621b24f60477312085be", + "reference": "89aa4b9ac6f1f35171b8621b24f60477312085be", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3", + "psr/log": "~1.0", + "symfony/debug": "^4.4.5", + "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { - "symfony/css-selector": "~2.3" - }, - "suggest": { - "symfony/css-selector": "" + "symfony/http-kernel": "^4.4|^5.0", + "symfony/serializer": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" + "Symfony\\Component\\ErrorHandler\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1275,33 +1796,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony DomCrawler Component", + "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", - "time": "2016-07-30 07:17:26" + "time": "2020-02-26T11:45:31+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v2.8.9", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8" + "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/889983a79a043dfda68f38c38b6dba092dd49cd8", - "reference": "889983a79a043dfda68f38c38b6dba092dd49cd8", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4ad8e149799d3128621a3a1f70e92b9897a8930d", + "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3", + "symfony/event-dispatcher-contracts": "^1.1" + }, + "conflict": { + "symfony/dependency-injection": "<3.4" + }, + "provide": { + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "1.1" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5|~3.0.0", - "symfony/dependency-injection": "~2.6|~3.0.0", - "symfony/expression-language": "~2.6|~3.0.0", - "symfony/stopwatch": "~2.3|~3.0.0" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1|^2", + "symfony/stopwatch": "^3.4|^4.0|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -1310,7 +1841,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.8-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1337,29 +1868,87 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2016-07-28 16:56:28" + "time": "2020-02-04T09:32:40+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v1.1.7", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "suggest": { + "psr/event-dispatcher": "", + "symfony/event-dispatcher-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-09-17T09:54:03+00:00" }, { "name": "symfony/finder", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "864a73cc1b5f7a597ce8f74ae31851ffc83d7353" + "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/864a73cc1b5f7a597ce8f74ae31851ffc83d7353", - "reference": "864a73cc1b5f7a597ce8f74ae31851ffc83d7353", + "url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357", + "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1386,42 +1975,41 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2016-07-26 04:40:54" + "time": "2020-02-14T07:42:58+00:00" }, { "name": "symfony/http-foundation", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "8ea4e8784404851b18c828e92140eaaab1f61719" + "reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/8ea4e8784404851b18c828e92140eaaab1f61719", - "reference": "8ea4e8784404851b18c828e92140eaaab1f61719", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7e41b4fcad4619535f45f8bfa7744c4f384e1648", + "reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": "^7.1.3", + "symfony/mime": "^4.3|^5.0", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "symfony/expression-language": "~2.4" + "predis/predis": "~1.0", + "symfony/expression-language": "^3.4|^4.0|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { "psr-4": { "Symfony\\Component\\HttpFoundation\\": "" }, - "classmap": [ - "Resources/stubs" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -1442,62 +2030,70 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2016-07-30 07:17:26" + "time": "2020-02-13T19:40:01+00:00" }, { "name": "symfony/http-kernel", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "58c8d796a51996cd604d6a737dd386846f96c5a3" + "reference": "8c8734486dada83a6041ab744709bdc1651a8462" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/58c8d796a51996cd604d6a737dd386846f96c5a3", - "reference": "58c8d796a51996cd604d6a737dd386846f96c5a3", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8c8734486dada83a6041ab744709bdc1651a8462", + "reference": "8c8734486dada83a6041ab744709bdc1651a8462", "shasum": "" }, "require": { - "php": ">=5.3.9", + "php": "^7.1.3", "psr/log": "~1.0", - "symfony/debug": "~2.6,>=2.6.2", - "symfony/event-dispatcher": "~2.6,>=2.6.7", - "symfony/http-foundation": "~2.7.15|~2.8.8" + "symfony/error-handler": "^4.4", + "symfony/event-dispatcher": "^4.4", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9" }, "conflict": { - "symfony/config": "<2.7" + "symfony/browser-kit": "<4.3", + "symfony/config": "<3.4", + "symfony/console": ">=5", + "symfony/dependency-injection": "<4.3", + "symfony/translation": "<4.2", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { - "symfony/browser-kit": "~2.3", - "symfony/class-loader": "~2.1", - "symfony/config": "~2.7", - "symfony/console": "~2.3", - "symfony/css-selector": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.2", - "symfony/dom-crawler": "~2.0,>=2.0.5", - "symfony/expression-language": "~2.4", - "symfony/finder": "~2.0,>=2.0.5", - "symfony/process": "~2.0,>=2.0.5", - "symfony/routing": "~2.2", - "symfony/stopwatch": "~2.3", - "symfony/templating": "~2.2", - "symfony/translation": "~2.0,>=2.0.5", - "symfony/var-dumper": "~2.6" + "psr/cache": "~1.0", + "symfony/browser-kit": "^4.3|^5.0", + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0", + "symfony/css-selector": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^4.3|^5.0", + "symfony/dom-crawler": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/finder": "^3.4|^4.0|^5.0", + "symfony/process": "^3.4|^4.0|^5.0", + "symfony/routing": "^3.4|^4.0|^5.0", + "symfony/stopwatch": "^3.4|^4.0|^5.0", + "symfony/templating": "^3.4|^4.0|^5.0", + "symfony/translation": "^4.2|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "twig/twig": "^1.34|^2.4|^3.0" }, "suggest": { "symfony/browser-kit": "", - "symfony/class-loader": "", "symfony/config": "", "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" + "symfony/dependency-injection": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1514,30 +2110,271 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2020-02-29T10:31:38+00:00" + }, + { + "name": "symfony/mime", + "version": "v5.0.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/mime.git", + "reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/mime/zipball/9b3e5b5e58c56bbd76628c952d2b78556d305f3c", + "reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "symfony/polyfill-intl-idn": "^1.10", + "symfony/polyfill-mbstring": "^1.0" + }, + "conflict": { + "symfony/mailer": "<4.4" + }, + "require-dev": { + "egulias/email-validator": "^2.1.10", + "symfony/dependency-injection": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Mime\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A library to manipulate MIME messages", + "homepage": "https://symfony.com", + "keywords": [ + "mime", + "mime-type" + ], + "time": "2020-02-04T09:41:09+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.14.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2020-01-13T11:15:53+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.14.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/926832ce51059bb58211b7b2080a88e0c3b5328e", + "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Iconv extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "iconv", + "polyfill", + "portable", + "shim" + ], + "time": "2020-01-13T11:15:53+00:00" + }, + { + "name": "symfony/polyfill-intl-idn", + "version": "v1.14.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-idn.git", + "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a", + "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.10" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.14-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Idn\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Laurent Bassin", + "email": "laurent@bassin.info" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony HttpKernel Component", + "description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions", "homepage": "https://symfony.com", - "time": "2016-07-30 08:15:38" + "keywords": [ + "compatibility", + "idn", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2020-01-17T12:01:36+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.2.0", + "version": "v1.14.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "dff51f72b0706335131b00a7f49606168c582594" + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/dff51f72b0706335131b00a7f49606168c582594", - "reference": "dff51f72b0706335131b00a7f49606168c582594", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2", + "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2", "shasum": "" }, "require": { @@ -1549,7 +2386,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.14-dev" } }, "autoload": { @@ -1583,35 +2420,34 @@ "portable", "shim" ], - "time": "2016-05-18 14:26:46" + "time": "2020-01-13T11:15:53+00:00" }, { - "name": "symfony/polyfill-php56", - "version": "v1.2.0", + "name": "symfony/polyfill-php72", + "version": "v1.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/3edf57a8fbf9a927533344cef65ad7e1cf31030a", - "reference": "3edf57a8fbf9a927533344cef65ad7e1cf31030a", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", + "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" + "Symfony\\Polyfill\\Php72\\": "" }, "files": [ "bootstrap.php" @@ -1631,7 +2467,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ "compatibility", @@ -1639,20 +2475,20 @@ "portable", "shim" ], - "time": "2016-05-18 14:26:46" + "time": "2020-01-13T11:15:53+00:00" }, { - "name": "symfony/polyfill-util", - "version": "v1.2.0", + "name": "symfony/polyfill-php73", + "version": "v1.14.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99" + "url": "https://github.com/symfony/polyfill-php73.git", + "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/ef830ce3d218e622b221d6bfad42c751d974bf99", - "reference": "ef830ce3d218e622b221d6bfad42c751d974bf99", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675", + "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675", "shasum": "" }, "require": { @@ -1661,13 +2497,19 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2-dev" + "dev-master": "1.14-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } + "Symfony\\Polyfill\\Php73\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1683,37 +2525,37 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony utilities for portability of PHP codes", + "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", "homepage": "https://symfony.com", "keywords": [ - "compat", "compatibility", "polyfill", + "portable", "shim" ], - "time": "2016-05-18 14:26:46" + "time": "2020-01-13T11:15:53+00:00" }, { "name": "symfony/process", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "5ac3a487982f1b4bf99c7277b73e05539d7504fa" + "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5ac3a487982f1b4bf99c7277b73e05539d7504fa", - "reference": "5ac3a487982f1b4bf99c7277b73e05539d7504fa", + "url": "https://api.github.com/repos/symfony/process/zipball/bf9166bac906c9e69fb7a11d94875e7ced97bcd7", + "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1740,36 +2582,38 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2016-07-28 06:53:02" + "time": "2020-02-07T20:06:44+00:00" }, { "name": "symfony/routing", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "8b64559584e9b580a777b8706863b8815f891bc9" + "reference": "4124d621d0e445732520037f888a0456951bde8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/8b64559584e9b580a777b8706863b8815f891bc9", - "reference": "8b64559584e9b580a777b8706863b8815f891bc9", + "url": "https://api.github.com/repos/symfony/routing/zipball/4124d621d0e445732520037f888a0456951bde8c", + "reference": "4124d621d0e445732520037f888a0456951bde8c", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3" }, "conflict": { - "symfony/config": "<2.7" + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", + "doctrine/annotations": "~1.2", "psr/log": "~1.0", - "symfony/config": "~2.7", - "symfony/expression-language": "~2.4", - "symfony/http-foundation": "~2.3", - "symfony/yaml": "~2.0,>=2.0.5" + "symfony/config": "^4.2|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/expression-language": "^3.4|^4.0|^5.0", + "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", @@ -1781,7 +2625,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1814,43 +2658,114 @@ "uri", "url" ], - "time": "2016-06-28 06:24:06" + "time": "2020-02-25T12:41:09+00:00" + }, + { + "name": "symfony/service-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/service-contracts.git", + "reference": "144c5e51266b281231e947b51223ba14acf1a749" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", + "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "shasum": "" + }, + "require": { + "php": "^7.2.5", + "psr/container": "^1.0" + }, + "suggest": { + "symfony/service-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Service\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to writing services", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/translation", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "7dfe708755d2d11c87c49eb82465ae6fa3c331b1" + "reference": "0a19a77fba20818a969ef03fdaf1602de0546353" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/7dfe708755d2d11c87c49eb82465ae6fa3c331b1", - "reference": "7dfe708755d2d11c87c49eb82465ae6fa3c331b1", + "url": "https://api.github.com/repos/symfony/translation/zipball/0a19a77fba20818a969ef03fdaf1602de0546353", + "reference": "0a19a77fba20818a969ef03fdaf1602de0546353", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/translation-contracts": "^1.1.6|^2" }, "conflict": { - "symfony/config": "<2.7" + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/http-kernel": "<4.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.7", - "symfony/intl": "~2.4", - "symfony/yaml": "~2.2" + "symfony/config": "^3.4|^4.0|^5.0", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/dependency-injection": "^3.4|^4.0|^5.0", + "symfony/finder": "~2.8|~3.0|~4.0|^5.0", + "symfony/http-kernel": "^4.4", + "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/service-contracts": "^1.1.2|^2", + "symfony/yaml": "^3.4|^4.0|^5.0" }, "suggest": { - "psr/log": "To use logging capability in translator", + "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1877,32 +2792,106 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2016-07-30 07:17:26" + "time": "2020-02-04T09:32:40+00:00" + }, + { + "name": "symfony/translation-contracts", + "version": "v2.0.1", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation-contracts.git", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "shasum": "" + }, + "require": { + "php": "^7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\Translation\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Generic abstractions related to translation", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/var-dumper", - "version": "v2.7.16", + "version": "v4.4.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b3184011cdc4a2a781b990c69ece4d452c9c8276" + "reference": "2572839911702b0405479410ea7a1334bfab0b96" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b3184011cdc4a2a781b990c69ece4d452c9c8276", - "reference": "b3184011cdc4a2a781b990c69ece4d452c9c8276", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2572839911702b0405479410ea7a1334bfab0b96", + "reference": "2572839911702b0405479410ea7a1334bfab0b96", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php72": "~1.5" + }, + "conflict": { + "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", + "symfony/console": "<3.4" + }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^3.4|^4.0|^5.0", + "symfony/process": "^4.4|^5.0", + "twig/twig": "^1.34|^2.4|^3.0" }, "suggest": { - "ext-symfony_debug": "" + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.7-dev" + "dev-master": "4.4-dev" } }, "autoload": { @@ -1936,33 +2925,86 @@ "debug", "dump" ], - "time": "2016-07-26 04:40:54" + "time": "2020-02-24T13:10:00+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "2.2.2", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/dda2ee426acd6d801d5b7fd1001cde9b5f790e15", + "reference": "dda2ee426acd6d801d5b7fd1001cde9b5f790e15", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "php": "^5.5 || ^7.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.0 || ^5.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "TijsVerkoyen\\CssToInlineStyles\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Tijs Verkoyen", + "email": "css_to_inline_styles@verkoyen.eu", + "role": "Developer" + } + ], + "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.", + "homepage": "https://github.com/tijsverkoyen/CssToInlineStyles", + "time": "2019-10-24T08:53:34+00:00" }, { "name": "twilio/sdk", - "version": "5.0.1", + "version": "5.42.2", "source": { "type": "git", "url": "https://github.com/twilio/twilio-php.git", - "reference": "c735e12e3c82679b7864888c992ae9bfb1b8ae80" + "reference": "0cfcb871b18a9c427dd9e8f0ed7458d43009b48a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twilio/twilio-php/zipball/c735e12e3c82679b7864888c992ae9bfb1b8ae80", - "reference": "c735e12e3c82679b7864888c992ae9bfb1b8ae80", + "url": "https://api.github.com/repos/twilio/twilio-php/zipball/0cfcb871b18a9c427dd9e8f0ed7458d43009b48a", + "reference": "0cfcb871b18a9c427dd9e8f0ed7458d43009b48a", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=5.5.0" }, "require-dev": { "apigen/apigen": "^4.1", - "phpunit/phpunit": "4.5.*" + "guzzlehttp/guzzle": "^6.3", + "phpunit/phpunit": ">=4.5" + }, + "suggest": { + "guzzlehttp/guzzle": "An HTTP client to execute the API requests" }, "type": "library", "autoload": { "psr-4": { - "Twilio\\": "Twilio/" + "Twilio\\": "src/Twilio/" } }, "notification-url": "https://packagist.org/downloads/", @@ -1982,84 +3024,101 @@ "sms", "twilio" ], - "time": "2016-08-15 20:45:49" + "time": "2020-02-05T19:55:13+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v1.1.1", + "version": "v3.6.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa" + "reference": "8f7961f7b9deb3b432452c18093cf16f88205902" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa", - "reference": "0cac554ce06277e33ddf9f0b7ade4b8bbf2af3fa", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8f7961f7b9deb3b432452c18093cf16f88205902", + "reference": "8f7961f7b9deb3b432452c18093cf16f88205902", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^5.4 || ^7.0", + "phpoption/phpoption": "^1.5", + "symfony/polyfill-ctype": "^1.9" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "ext-filter": "*", + "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + }, + "suggest": { + "ext-filter": "Required to use the boolean validator." }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.6-dev" + } + }, "autoload": { - "psr-0": { - "Dotenv": "src/" + "psr-4": { + "Dotenv\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "BSD-3-Clause" ], "authors": [ + { + "name": "Graham Campbell", + "email": "graham@alt-three.com", + "homepage": "https://gjcampbell.co.uk/" + }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "homepage": "https://vancelucas.com/" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "homepage": "http://github.com/vlucas/phpdotenv", "keywords": [ "dotenv", "env", "environment" ], - "time": "2015-05-30 15:59:26" + "time": "2020-03-12T13:44:00+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.0.5", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", + "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1" }, "require-dev": { - "athletic/athletic": "~0.1.8", + "doctrine/coding-standard": "^6.0", "ext-pdo": "*", "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-shim": "^0.11", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2.x-dev" } }, "autoload": { @@ -2079,38 +3138,40 @@ } ], "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2019-10-21T16:45:58+00:00" }, { "name": "fzaninotto/faker", - "version": "v1.6.0", + "version": "v1.9.1", "source": { "type": "git", "url": "https://github.com/fzaninotto/Faker.git", - "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123" + "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/44f9a286a04b80c76a4e5fb7aad8bb539b920123", - "reference": "44f9a286a04b80c76a4e5fb7aad8bb539b920123", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/fc10d778e4b84d5bd315dad194661e091d307c6f", + "reference": "fc10d778e4b84d5bd315dad194661e091d307c6f", "shasum": "" }, "require": { - "php": "^5.3.3|^7.0" + "php": "^5.3.3 || ^7.0" }, "require-dev": { "ext-intl": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^2.9.2" }, "type": "library", "extra": { - "branch-alias": [] + "branch-alias": { + "dev-master": "1.9-dev" + } }, "autoload": { "psr-4": { @@ -2132,7 +3193,7 @@ "faker", "fixtures" ], - "time": "2016-04-29 12:21:54" + "time": "2019-12-12T13:22:17+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -2177,20 +3238,20 @@ "keywords": [ "test" ], - "time": "2015-05-11 14:41:42" + "time": "2015-05-11T14:41:42+00:00" }, { "name": "mockery/mockery", - "version": "0.9.5", + "version": "0.9.11", "source": { "type": "git", - "url": "https://github.com/padraic/mockery.git", - "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2" + "url": "https://github.com/mockery/mockery.git", + "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/padraic/mockery/zipball/4db079511a283e5aba1b3c2fb19037c645e70fc2", - "reference": "4db079511a283e5aba1b3c2fb19037c645e70fc2", + "url": "https://api.github.com/repos/mockery/mockery/zipball/be9bf28d8e57d67883cba9fcadfcff8caab667f8", + "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8", "shasum": "" }, "require": { @@ -2242,39 +3303,187 @@ "test double", "testing" ], - "time": "2016-05-22 21:52:33" + "time": "2019-02-12T16:07:13+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.9.5", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/b2c28789e80a97badd14145fda39b545d83ca3ef", + "reference": "b2c28789e80a97badd14145fda39b545d83ca3ef", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" + }, + "require-dev": { + "doctrine/collections": "^1.0", + "doctrine/common": "^2.6", + "phpunit/phpunit": "^7.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" + }, + "files": [ + "src/DeepCopy/deep_copy.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "time": "2020-01-17T21:11:47+00:00" + }, + { + "name": "phar-io/manifest", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/phar-io/manifest.git", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "reference": "7761fcacf03b4d4f16e7ccb606d4879ca431fcf4", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-phar": "*", + "phar-io/version": "^2.0", + "php": "^5.6 || ^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "time": "2018-07-08T19:23:20+00:00" + }, + { + "name": "phar-io/version", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/phar-io/version.git", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phar-io/version/zipball/45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "reference": "45a2ec53a73c70ce41d55cedef9063630abaf1b6", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" + } + ], + "description": "Library for handling version information and constraints", + "time": "2018-07-08T19:19:57+00:00" }, { "name": "phpdocumentor/reflection-common", - "version": "1.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", + "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", "shasum": "" }, "require": { - "php": ">=5.5" + "php": ">=7.1" }, "require-dev": { - "phpunit/phpunit": "^4.6" + "phpunit/phpunit": "~6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src" - ] + "phpDocumentor\\Reflection\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2296,38 +3505,42 @@ "reflection", "static analysis" ], - "time": "2015-12-27 11:43:31" + "time": "2018-08-07T13:53:10+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.0", + "version": "5.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "9270140b940ff02e58ec577c237274e92cd40cdd" + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9270140b940ff02e58ec577c237274e92cd40cdd", - "reference": "9270140b940ff02e58ec577c237274e92cd40cdd", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", + "reference": "cd72d394ca794d3466a3b2fc09d5a6c1dc86b47e", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.0", - "webmozart/assert": "^1.0" + "ext-filter": "^7.1", + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0", + "phpdocumentor/type-resolver": "^1.0", + "webmozart/assert": "^1" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "^1", + "mockery/mockery": "^1" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.x-dev" + } + }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2338,44 +3551,46 @@ { "name": "Mike van Riel", "email": "me@mikevanriel.com" + }, + { + "name": "Jaap van Otterdijk", + "email": "account@ijaap.nl" } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-06-10 09:48:41" + "time": "2020-02-22T12:28:44+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443" + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b39c7a5b194f9ed7bd0dd345c751007a41862443", - "reference": "b39c7a5b194f9ed7bd0dd345c751007a41862443", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/7462d5f123dfc080dfdf26897032a6513644fc95", + "reference": "7462d5f123dfc080dfdf26897032a6513644fc95", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0" + "php": "^7.2", + "phpdocumentor/reflection-common": "^2.0" }, "require-dev": { - "mockery/mockery": "^0.9.4", - "phpunit/phpunit": "^5.2||^4.8.24" + "ext-tokenizer": "^7.2", + "mockery/mockery": "~1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.x-dev" } }, "autoload": { "psr-4": { - "phpDocumentor\\Reflection\\": [ - "src/" - ] + "phpDocumentor\\Reflection\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2388,23 +3603,29 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-06-10 07:14:17" + "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "time": "2020-02-18T18:59:58+00:00" }, { "name": "phpspec/php-diff", - "version": "v1.0.2", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/phpspec/php-diff.git", - "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a" + "reference": "0464787bfa7cd13576c5a1e318709768798bec6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/php-diff/zipball/30e103d19519fe678ae64a60d77884ef3d71b28a", - "reference": "30e103d19519fe678ae64a60d77884ef3d71b28a", + "url": "https://api.github.com/repos/phpspec/php-diff/zipball/0464787bfa7cd13576c5a1e318709768798bec6a", + "reference": "0464787bfa7cd13576c5a1e318709768798bec6a", "shasum": "" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, "autoload": { "psr-0": { "Diff": "lib/" @@ -2417,48 +3638,49 @@ "authors": [ { "name": "Chris Boulton", - "homepage": "http://github.com/chrisboulton", - "role": "Original developer" + "homepage": "http://github.com/chrisboulton" } ], "description": "A comprehensive library for generating differences between two hashable objects (strings or arrays).", - "time": "2013-11-01 13:02:21" + "time": "2016-04-07T12:29:16+00:00" }, { "name": "phpspec/phpspec", - "version": "2.5.1", + "version": "6.1.1", "source": { "type": "git", "url": "https://github.com/phpspec/phpspec.git", - "reference": "531d00ee76e9ae98279ed4dbb2419e5e0f7fb82d" + "reference": "486aaa736e9e24f3e22a6545f6affb88f98e2602" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/531d00ee76e9ae98279ed4dbb2419e5e0f7fb82d", - "reference": "531d00ee76e9ae98279ed4dbb2419e5e0f7fb82d", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/486aaa736e9e24f3e22a6545f6affb88f98e2602", + "reference": "486aaa736e9e24f3e22a6545f6affb88f98e2602", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.1", + "doctrine/instantiator": "^1.0.5", "ext-tokenizer": "*", - "php": ">=5.3.3", - "phpspec/php-diff": "~1.0.0", - "phpspec/prophecy": "~1.4", - "sebastian/exporter": "~1.0", - "symfony/console": "~2.3|~3.0", - "symfony/event-dispatcher": "~2.1|~3.0", - "symfony/finder": "~2.1|~3.0", - "symfony/process": "^2.6|~3.0", - "symfony/yaml": "~2.1|~3.0" + "php": "^7.2, <7.5", + "phpspec/php-diff": "^1.0.0", + "phpspec/prophecy": "^1.9", + "sebastian/exporter": "^1.0 || ^2.0 || ^3.0", + "symfony/console": "^3.4 || ^4.0 || ^5.0", + "symfony/event-dispatcher": "^3.4 || ^4.0 || ^5.0", + "symfony/finder": "^3.4 || ^4.0 || ^5.0", + "symfony/process": "^3.4 || ^4.0 || ^5.0", + "symfony/yaml": "^3.4 || ^4.0 || ^5.0" + }, + "conflict": { + "sebastian/comparator": "<1.2.4" }, "require-dev": { - "behat/behat": "^3.0.11", - "ciaranmcnulty/versionbasedtestskipper": "^0.2.1", - "phpunit/phpunit": "~4.4", - "symfony/filesystem": "~2.1|~3.0" + "behat/behat": "^3.3", + "phpunit/phpunit": "^7.0", + "symfony/filesystem": "^3.4 || ^4.0 || ^5.0" }, "suggest": { - "phpspec/nyan-formatters": "~1.0 – Adds Nyan formatters" + "phpspec/nyan-formatters": "Adds Nyan formatters" }, "bin": [ "bin/phpspec" @@ -2466,7 +3688,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.5.x-dev" + "dev-master": "6.1.x-dev" } }, "autoload": { @@ -2487,9 +3709,13 @@ { "name": "Marcello Duarte", "homepage": "http://marcelloduarte.net/" + }, + { + "name": "Ciaran McNulty", + "homepage": "https://ciaranmcnulty.com/" } ], - "description": "Specification-oriented BDD framework for PHP 5.3+", + "description": "Specification-oriented BDD framework for PHP 7.1+", "homepage": "http://phpspec.net/", "keywords": [ "BDD", @@ -2500,41 +3726,42 @@ "testing", "tests" ], - "time": "2016-07-16 08:34:07" + "time": "2019-12-17T10:23:12+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.6.1", + "version": "v1.10.3", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "58a8137754bc24b25740d4281399a4a3596058e0" + "reference": "451c3cd1418cf640de218914901e51b064abb093" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/58a8137754bc24b25740d4281399a4a3596058e0", - "reference": "58a8137754bc24b25740d4281399a4a3596058e0", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/451c3cd1418cf640de218914901e51b064abb093", + "reference": "451c3cd1418cf640de218914901e51b064abb093", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", - "phpdocumentor/reflection-docblock": "^2.0|^3.0.2", - "sebastian/comparator": "^1.1", - "sebastian/recursion-context": "^1.0" + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0|^5.0", + "sebastian/comparator": "^1.2.3|^2.0|^3.0|^4.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.0|^4.0" }, "require-dev": { - "phpspec/phpspec": "^2.0" + "phpspec/phpspec": "^2.5 || ^3.2", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.10.x-dev" } }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" + "psr-4": { + "Prophecy\\": "src/Prophecy" } }, "notification-url": "https://packagist.org/downloads/", @@ -2562,43 +3789,44 @@ "spy", "stub" ], - "time": "2016-06-07 08:13:47" + "time": "2020-03-05T15:02:03+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "2.2.4", + "version": "6.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/eabf68b476ac7d0f73793aada060f1c1a9bf8979", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "^1.3.2", - "sebastian/version": "~1.0" + "ext-dom": "*", + "ext-xmlwriter": "*", + "php": "^7.1", + "phpunit/php-file-iterator": "^2.0", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^3.1 || ^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" + "phpunit/phpunit": "^7.0" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-xdebug": "^2.6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -2613,7 +3841,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2624,29 +3852,32 @@ "testing", "xunit" ], - "time": "2015-10-06 15:47:00" + "time": "2018-10-31T16:06:48+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.1", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + "reference": "050bedf145a257b1ff02746c31894800e5122946" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/6150bf2c35d3fc379e50c7602b75caceaa39dbf0", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/050bedf145a257b1ff02746c31894800e5122946", + "reference": "050bedf145a257b1ff02746c31894800e5122946", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -2661,7 +3892,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2671,7 +3902,7 @@ "filesystem", "iterator" ], - "time": "2015-06-21 13:08:43" + "time": "2018-09-13T20:33:42+00:00" }, { "name": "phpunit/php-text-template", @@ -2712,29 +3943,34 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", - "version": "1.0.8", + "version": "2.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260" + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/38e9124049cf1a164f1e4537caf19c99bf1eb260", - "reference": "38e9124049cf1a164f1e4537caf19c99bf1eb260", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/1038454804406b0b5f5f520358e78c1c2f71501e", + "reference": "1038454804406b0b5f5f520358e78c1c2f71501e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4|~5" + "phpunit/phpunit": "^7.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2747,7 +3983,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2756,33 +3992,33 @@ "keywords": [ "timer" ], - "time": "2016-05-12 18:03:57" + "time": "2019-06-07T04:22:29+00:00" }, { "name": "phpunit/php-token-stream", - "version": "1.4.8", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da" + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", - "reference": "3144ae21711fb6cac0b1ab4cbe63b75ce3d4e8da", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/995192df77f63a59e47f025390d2d1fdf8f425ff", + "reference": "995192df77f63a59e47f025390d2d1fdf8f425ff", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -2805,45 +4041,57 @@ "keywords": [ "tokenizer" ], - "time": "2015-09-15 10:49:45" + "time": "2019-09-17T06:23:10+00:00" }, { "name": "phpunit/phpunit", - "version": "4.8.27", + "version": "7.5.20", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90" + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c062dddcb68e44b563f66ee319ddae2b5a322a90", - "reference": "c062dddcb68e44b563f66ee319ddae2b5a322a90", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", + "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.1", "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "^1.3.1", - "phpunit/php-code-coverage": "~2.1", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "^1.0.6", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.3", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "myclabs/deep-copy": "^1.7", + "phar-io/manifest": "^1.0.2", + "phar-io/version": "^2.0", + "php": "^7.1", + "phpspec/prophecy": "^1.7", + "phpunit/php-code-coverage": "^6.0.7", + "phpunit/php-file-iterator": "^2.0.1", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-timer": "^2.1", + "sebastian/comparator": "^3.0", + "sebastian/diff": "^3.0", + "sebastian/environment": "^4.0", + "sebastian/exporter": "^3.1", + "sebastian/global-state": "^2.0", + "sebastian/object-enumerator": "^3.0.3", + "sebastian/resource-operations": "^2.0", + "sebastian/version": "^2.0.1" + }, + "conflict": { + "phpunit/phpunit-mock-objects": "*" + }, + "require-dev": { + "ext-pdo": "*" }, "suggest": { - "phpunit/php-invoker": "~1.1" + "ext-soap": "*", + "ext-xdebug": "*", + "phpunit/php-invoker": "^2.0" }, "bin": [ "phpunit" @@ -2851,7 +4099,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.8.x-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -2877,38 +4125,32 @@ "testing", "xunit" ], - "time": "2016-07-21 06:48:14" + "time": "2020-01-08T08:45:45+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.8", + "name": "sebastian/code-unit-reverse-lookup", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/ac8e7a3db35738d56ee9a76e78a4e03d97628983", - "reference": "ac8e7a3db35738d56ee9a76e78a4e03d97628983", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", + "reference": "4419fcdb5eabb9caa61a27c7a1db532a6b55dd18", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2", - "sebastian/exporter": "~1.2" + "php": "^5.6 || ^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" - }, - "suggest": { - "ext-soap": "*" + "phpunit/phpunit": "^5.7 || ^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -2923,44 +4165,39 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2015-10-02 06:51:40" + "description": "Looks up which function or method a line of code belongs to", + "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "time": "2017-03-04T06:30:41+00:00" }, { "name": "sebastian/comparator", - "version": "1.2.0", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/5de4fc177adf9bce8df98d8d141a7559d7ccf6da", + "reference": "5de4fc177adf9bce8df98d8d141a7559d7ccf6da", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" + "php": "^7.1", + "sebastian/diff": "^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2991,38 +4228,39 @@ } ], "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ "comparator", "compare", "equality" ], - "time": "2015-07-26 15:48:44" + "time": "2018-07-12T15:12:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.1", + "version": "3.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/720fcc7e9b5cf384ea68d9d930d480907a0c1a29", + "reference": "720fcc7e9b5cf384ea68d9d930d480907a0c1a29", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.8" + "phpunit/phpunit": "^7.5 || ^8.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -3047,34 +4285,40 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2015-12-08 07:14:41" + "time": "2019-02-04T06:01:07+00:00" }, { "name": "sebastian/environment", - "version": "1.3.7", + "version": "4.2.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716" + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716", - "reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/464c90d7bdf5ad4e8a6aea15c091fec0603d4368", + "reference": "464c90d7bdf5ad4e8a6aea15c091fec0603d4368", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^7.5" + }, + "suggest": { + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -3099,34 +4343,34 @@ "environment", "hhvm" ], - "time": "2016-05-17 03:18:57" + "time": "2019-11-20T08:46:58+00:00" }, { "name": "sebastian/exporter", - "version": "1.2.2", + "version": "3.1.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4" + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/42c4c2eec485ee3e159ec9884f95b431287edde4", - "reference": "42c4c2eec485ee3e159ec9884f95b431287edde4", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/68609e1261d215ea5b21b7987539cbfbe156ec3e", + "reference": "68609e1261d215ea5b21b7987539cbfbe156ec3e", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "php": "^7.0", + "sebastian/recursion-context": "^3.0" }, "require-dev": { "ext-mbstring": "*", - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -3139,6 +4383,10 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" @@ -3147,17 +4395,13 @@ "name": "Volker Dusch", "email": "github@wallbash.com" }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], "description": "Provides the functionality to export PHP variables for visualization", @@ -3166,27 +4410,27 @@ "export", "exporter" ], - "time": "2016-06-17 09:04:28" + "time": "2019-09-14T09:02:43+00:00" }, { "name": "sebastian/global-state", - "version": "1.1.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4" + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bc37d50fea7d017d3d340f230811c9f1d7280af4", - "reference": "bc37d50fea7d017d3d340f230811c9f1d7280af4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.0" }, "suggest": { "ext-uopz": "*" @@ -3194,7 +4438,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -3217,32 +4461,124 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "reference": "7cfd9e65d11ffb5af41198476395774d4c8a84c5", + "shasum": "" + }, + "require": { + "php": "^7.0", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0.x-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "time": "2017-08-03T12:35:26+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "1.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "773f97c67f28de00d397be301821b06708fca0be" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/773f97c67f28de00d397be301821b06708fca0be", + "reference": "773f97c67f28de00d397be301821b06708fca0be", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "time": "2017-03-29T09:07:27+00:00" }, { "name": "sebastian/recursion-context", - "version": "1.0.2", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "913401df809e99e4f47b27cdd781f4a258d58791" + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/913401df809e99e4f47b27cdd781f4a258d58791", - "reference": "913401df809e99e4f47b27cdd781f4a258d58791", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", + "reference": "5b0cd723502bac3b006cbf3dbf7a1e3fcefe4fa8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^6.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "3.0.x-dev" } }, "autoload": { @@ -3270,23 +4606,73 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-11-11 19:50:13" + "time": "2017-03-03T06:23:57+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "2.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "time": "2018-10-04T04:07:39+00:00" }, { "name": "sebastian/version", - "version": "1.0.6", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, + "require": { + "php": ">=5.6" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -3305,29 +4691,39 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21 13:59:46" + "time": "2016-10-03T07:35:21+00:00" }, { "name": "symfony/yaml", - "version": "v3.1.3", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "1819adf2066880c7967df7180f4f662b6f0567ac" + "reference": "a4b613d7e44f62941adff5a802cff70adee57d3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/1819adf2066880c7967df7180f4f662b6f0567ac", - "reference": "1819adf2066880c7967df7180f4f662b6f0567ac", + "url": "https://api.github.com/repos/symfony/yaml/zipball/a4b613d7e44f62941adff5a802cff70adee57d3f", + "reference": "a4b613d7e44f62941adff5a802cff70adee57d3f", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.2.5", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/console": "<4.4" + }, + "require-dev": { + "symfony/console": "^4.4|^5.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -3354,35 +4750,73 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-07-17 14:02:08" + "time": "2020-02-03T13:51:17+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "reference": "11336f6f84e16a720dae9d8e6ed5019efa85a0f9", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2019-06-13T22:48:21+00:00" }, { "name": "webmozart/assert", - "version": "1.1.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "bb2d123231c095735130cc8f6d31385a44c7b308" + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/bb2d123231c095735130cc8f6d31385a44c7b308", - "reference": "bb2d123231c095735130cc8f6d31385a44c7b308", + "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", + "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", "shasum": "" }, "require": { - "php": "^5.3.3|^7.0" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" + }, + "conflict": { + "vimeo/psalm": "<3.6.0" }, "require-dev": { - "phpunit/phpunit": "^4.6", - "sebastian/version": "^1.0.1" + "phpunit/phpunit": "^4.8.36 || ^7.5.13" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.2-dev" - } - }, "autoload": { "psr-4": { "Webmozart\\Assert\\": "src/" @@ -3404,16 +4838,16 @@ "check", "validate" ], - "time": "2016-08-09 15:02:57" + "time": "2020-02-14T12:15:55+00:00" } ], "aliases": [], - "minimum-stability": "stable", + "minimum-stability": "dev", "stability-flags": [], - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=5.5.9" + "php": ">=7.2" }, "platform-dev": [] } diff --git a/config/app.php b/config/app.php index 848e371..a2eb60d 100644 --- a/config/app.php +++ b/config/app.php @@ -113,13 +113,13 @@ /* * Laravel Framework Service Providers... */ - Illuminate\Foundation\Providers\ArtisanServiceProvider::class, + // Illuminate\Foundation\Providers\ArtisanServiceProvider::class, Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, Illuminate\Cache\CacheServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - Illuminate\Routing\ControllerServiceProvider::class, + // Illuminate\Routing\ControllerServiceProvider::class, Illuminate\Cookie\CookieServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, @@ -136,14 +136,14 @@ Illuminate\Translation\TranslationServiceProvider::class, Illuminate\Validation\ValidationServiceProvider::class, Illuminate\View\ViewServiceProvider::class, + Illuminate\Foundation\Support\Providers\EventServiceProvider::class, /* * Application Service Providers... */ App\Providers\AppServiceProvider::class, - App\Providers\AuthServiceProvider::class, - App\Providers\EventServiceProvider::class, App\Providers\RouteServiceProvider::class, + App\Providers\AuthServiceProvider::class, App\Providers\TwilioRestClientProvider::class, ], diff --git a/config/auth.php b/config/auth.php index 7f4a87f..3fa7f49 100644 --- a/config/auth.php +++ b/config/auth.php @@ -4,64 +4,104 @@ /* |-------------------------------------------------------------------------- - | Default Authentication Driver + | Authentication Defaults |-------------------------------------------------------------------------- | - | This option controls the authentication driver that will be utilized. - | This driver manages the retrieval and authentication of the users - | attempting to get access to protected areas of your application. - | - | Supported: "database", "eloquent" + | This option controls the default authentication "guard" and password + | reset options for your application. You may change these defaults + | as required, but they're a perfect start for most applications. | */ - 'driver' => 'eloquent', + 'defaults' => [ + 'guard' => 'web', + 'passwords' => 'users', + ], /* |-------------------------------------------------------------------------- - | Authentication Model + | Authentication Guards |-------------------------------------------------------------------------- | - | When using the "Eloquent" authentication driver, we need to know which - | Eloquent model should be used to retrieve your users. Of course, it - | is often just the "User" model but you may use whatever you like. + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" | */ - 'model' => App\User::class, + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + ], + ], /* |-------------------------------------------------------------------------- - | Authentication Table + | User Providers |-------------------------------------------------------------------------- | - | When using the "Database" authentication driver, we need to know which - | table should be used to retrieve your users. We have chosen a basic - | default value but you may easily change it to any table you like. + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" | */ - 'table' => 'users', + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], /* |-------------------------------------------------------------------------- - | Password Reset Settings + | Resetting Passwords |-------------------------------------------------------------------------- | | Here you may set the options for resetting passwords including the view - | that is your password reset e-mail. You can also set the name of the + | that is your password reset e-mail. You may also set the name of the | table that maintains all of the reset tokens for your application. | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | | The expire time is the number of minutes that the reset token should be | considered valid. This security feature keeps tokens short-lived so | they have less time to be guessed. You may change this as needed. | */ - 'password' => [ - 'email' => 'emails.password', - 'table' => 'password_resets', - 'expire' => 60, + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'email' => 'auth.emails.password', + 'table' => 'password_resets', + 'expire' => 60, + ], ], ]; diff --git a/config/database.php b/config/database.php index 21890de..7c48fa1 100644 --- a/config/database.php +++ b/config/database.php @@ -26,7 +26,7 @@ | */ - 'default' => env('DB_CONNECTION', 'pgsql'), + 'default' => env('DB_CONNECTION', 'sqlite'), /* |-------------------------------------------------------------------------- @@ -52,6 +52,12 @@ 'prefix' => '', ], + 'testing' => [ + 'driver' => 'sqlite', + 'database' => database_path('database-test.sqlite'), + 'prefix' => '', + ], + 'mysql' => [ 'driver' => 'mysql', 'host' => env('DB_HOST', 'localhost'), diff --git a/phpunit.xml b/phpunit.xml index cc0841c..1fd80f8 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -14,14 +14,16 @@ - - app/ + + ./app - - - - + + + + + + diff --git a/readme.md b/readme.md index bfbf5e7..aaae792 100644 --- a/readme.md +++ b/readme.md @@ -17,14 +17,13 @@ Learn how to automate your workflow using Twilio's REST API and Twilio SMS. This ```bash $ composer install ``` -1. The application uses PostgreSQL as the persistence layer. If you - don't have it already, you should install it. The easiest way is by - using [Postgres.app](http://postgresapp.com/). +1. The application uses [sqlite3](https://www.sqlite.org/) as the persistence layer. If you + don't have it already, you should install it. -1. Create a database. +1. Create an empty database file. ```bash - $ createdb airtng + $ touch database/database.sqlite ``` 1. Copy the sample configuration file and edit it to match your configuration. @@ -85,7 +84,7 @@ Learn how to automate your workflow using Twilio's REST API and Twilio SMS. This Remember that the number where you change the sms webhooks must be the same one you set on the `TWILIO_NUMBER` environment variable. - ![Configure Voice](http://howtodocs.s3.amazonaws.com/twilio-number-config-all-med.gif) + ![Configure Messaging](webhook.png) For this application, you must set the voice webhook of your number so that it looks something like this: @@ -123,12 +122,30 @@ This application uses this Twilio helper library: ## Run the tests +1. Create an empty database file. + + ```bash + $ touch database/database-test.sqlite + ``` + +1. Run the migrations. + + ```bash + $ php artisan migrate --database=testing + ``` + 1. Run at the top-level directory. ```bash $ phpunit ``` + or + + ```bash + $ vendor/bin/phpunit + ``` + If you don't have phpunit installed on your system, you can follow [these instructions](https://phpunit.de/manual/current/en/installation.html) to install it. @@ -136,5 +153,6 @@ This application uses this Twilio helper library: ## Meta * No warranty expressed or implied. Software is as is. Diggity. +* The CodeExchange repository can be found [here](https://github.com/twilio-labs/code-exchange/). * [MIT License](http://www.opensource.org/licenses/mit-license.html) * Lovingly crafted by Twilio Developer Education. diff --git a/routes/api.php b/routes/api.php new file mode 100644 index 0000000..8529679 --- /dev/null +++ b/routes/api.php @@ -0,0 +1,14 @@ +id === (int) $id; +}); diff --git a/routes/console.php b/routes/console.php new file mode 100644 index 0000000..75dd0cd --- /dev/null +++ b/routes/console.php @@ -0,0 +1,18 @@ +comment(Inspiring::quote()); +})->describe('Display an inspiring quote'); diff --git a/app/Http/routes.php b/routes/web.php similarity index 81% rename from app/Http/routes.php rename to routes/web.php index 302300c..80450e1 100644 --- a/app/Http/routes.php +++ b/routes/web.php @@ -2,16 +2,15 @@ /* |-------------------------------------------------------------------------- -| Application Routes +| Web Routes |-------------------------------------------------------------------------- | -| Here is where you can register all of the routes for an application. -| It's a breeze. Simply tell Laravel the URIs it should respond to -| and give it the controller to call when that URI is requested. +| Here is where you can register web routes for your application. These +| routes are loaded by the RouteServiceProvider within a group which +| contains the "web" middleware group. Now create something great! | */ -//Home related routes Route::get( '/', ['as' => 'home', function () { return response()->view('home'); @@ -20,13 +19,15 @@ // Session related routes Route::get( - '/auth/login', ['as' => 'login-index', function() { + '/auth/login', + ['as' => 'login-index', function () { return response()->view('login'); }] ); Route::get( - '/login', ['as' => 'login-index', function() { + '/login', + ['as' => 'login-index', function () { return response()->view('login'); }] ); @@ -37,7 +38,8 @@ ); Route::get( - '/logout', ['as' => 'logout', function() { + '/logout', + ['as' => 'logout', function () { Auth::logout(); return redirect()->route('home'); }] @@ -45,7 +47,8 @@ // User related routes Route::get( - '/user/new', ['as' => 'user-new', function() { + '/user/new', + ['as' => 'user-new', function () { return response()->view('newUser'); }] ); @@ -60,7 +63,7 @@ '/property/new', ['as' => 'property-new', 'middleware' => 'auth', - function() { + function () { return response()->view('property.newProperty'); }] ); diff --git a/tests/ReservationControllerTest.php b/tests/ReservationControllerTest.php index f0ee5d5..ef79724 100644 --- a/tests/ReservationControllerTest.php +++ b/tests/ReservationControllerTest.php @@ -69,8 +69,8 @@ function testCreate() { $this->assertCount(1, Reservation::all()); $reservation = Reservation::first(); $this->assertEquals($reservation->message, 'Some reservation message'); - $this->assertRedirectedToRoute('property-show', ['id' => $newProperty->id]); - $this->assertSessionHas('status'); + $response->assertRedirect(route('property-show', ['id' => $newProperty->id])); + $response->assertSessionHas('status'); $flashreservation = $this->app['session']->get('status'); $this->assertEquals( $flashreservation, @@ -127,12 +127,14 @@ public function testAcceptRejectConfirm() 'POST', route('reservation-incoming'), ['From' => '+15558180101', - 'Body' => 'yes'] + 'Body' => 'accept'] ); + $messageDocument = new SimpleXMLElement($response->getContent()); - + $reservation = $reservation->fresh(); $this->assertEquals('confirmed', $reservation->status); + $this->assertEquals($response->getStatusCode(), 200); $this->assertNotNull(strval($messageDocument->Message[0])); $this->assertNotEmpty(strval($messageDocument->Message[0])); $this->assertEquals(strval($messageDocument->Message[0]), 'You have successfully confirmed the reservation.'); @@ -197,6 +199,7 @@ public function testAcceptRejectReject() $reservation = $reservation->fresh(); $this->assertEquals('rejected', $reservation->status); + $this->assertEquals($response->getStatusCode(), 200); $this->assertNotNull(strval($messageDocument->Message[0])); $this->assertNotEmpty(strval($messageDocument->Message[0])); $this->assertEquals(strval($messageDocument->Message[0]), 'You have successfully rejected the reservation.'); @@ -262,6 +265,7 @@ public function testAcceptRejectNoPending() $reservation = $reservation->fresh(); $this->assertEquals('confirmed', $reservation->status); + $this->assertEquals($response->getStatusCode(), 200); $this->assertNotNull(strval($messageDocument->Message[0])); $this->assertNotEmpty(strval($messageDocument->Message[0])); $this->assertEquals(strval($messageDocument->Message[0]), 'Sorry, it looks like you don\'t have any reservations to respond to.'); diff --git a/tests/UserControllerTest.php b/tests/UserControllerTest.php index d73ea68..693c6d7 100644 --- a/tests/UserControllerTest.php +++ b/tests/UserControllerTest.php @@ -37,8 +37,8 @@ function testNewUser() { $this->assertEquals($user->email, $validEmail); $this->assertEquals($user->country_code, $validCountryCode); $this->assertEquals($user->phone_number, $validPhoneNumber); - $this->assertRedirectedToRoute('home'); - $this->assertSessionHas('status'); + $response->assertRedirect(route('home')); + $response->assertSessionHas('status'); $flashMessage = $this->app['session']->get('status'); $this->assertEquals( $flashMessage, diff --git a/tests/VacationPropertyControllerTest.php b/tests/VacationPropertyControllerTest.php index 686a9f3..ed69917 100644 --- a/tests/VacationPropertyControllerTest.php +++ b/tests/VacationPropertyControllerTest.php @@ -42,8 +42,8 @@ function testCreateNewProperty() { $property = VacationProperty::first(); $this->assertEquals($property->description, $validDescription); $this->assertEquals($property->image_url, $validImageUrl); - $this->assertRedirectedToRoute('property-index'); - $this->assertSessionHas('status'); + $response->assertRedirect(route('property-index')); + $response->assertSessionHas('status'); $flashMessage = $this->app['session']->get('status'); $this->assertEquals( $flashMessage, @@ -88,6 +88,6 @@ function testEditProperty() { $property = VacationProperty::first(); $this->assertEquals($property->description, 'edited description'); $this->assertEquals($property->image_url, 'http://www.modified.net'); - $this->assertRedirectedToRoute('property-show', ['id' => $property->id]); + $response->assertRedirect(route('property-show', ['id' => $property->id])); } } diff --git a/webhook.png b/webhook.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca8962fbe3a1259fe646fb2cacb4dd4198d8ef0 GIT binary patch literal 83032 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�*+XWN5&CL=TaL>>%_d>FFnYXJCkQ3LI; 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 M%PGlbo;CFRU%hLm7XSbN literal 0 HcmV?d00001 From c28c1f5990c8170b2e6f2b90742e0fc12ebd2b13 Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Mon, 23 Mar 2020 09:42:23 -0500 Subject: [PATCH 02/12] Upgrade to Laravel 7.2 --- .github/workflows/laravel.yml | 34 ++ .travis.yml | 7 +- app/Exceptions/Handler.php | 18 +- composer.json | 18 +- composer.lock | 1006 +++++++++++++++++++-------------- config/session.php | 56 +- 6 files changed, 675 insertions(+), 464 deletions(-) create mode 100644 .github/workflows/laravel.yml diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml new file mode 100644 index 0000000..f74d55f --- /dev/null +++ b/.github/workflows/laravel.yml @@ -0,0 +1,34 @@ +name: Laravel + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + laravel-tests: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v2 + - name: Copy .env + run: php -r "file_exists('.env') || copy('.env.example', '.env');" + - name: Install Dependencies + run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist + - name: Generate key + run: php artisan key:generate --force + - name: Directory Permissions + run: chmod -R 777 storage bootstrap/cache + - name: Create Database + run: | + mkdir -p database + touch database/database-test.sqlite + - name: Execute tests (Unit and Feature tests) via PHPUnit + env: + DB_CONNECTION: sqlite + DB_DATABASE: database/database.sqlite + run: | + php artisan migrate --database=testing --force + vendor/bin/phpunit diff --git a/.travis.yml b/.travis.yml index 2ba92ad..33faea8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,7 +1,6 @@ language: php php: -- 5.5 -- 7.0 +- 7.3 install: - composer install env: @@ -15,5 +14,5 @@ env: - TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - TWILIO_NUMBER=+15552737123 before_script: - - psql -c 'create database airtng;' -U postgres - - php artisan migrate + - touch database/database-test.sqlite + - php artisan migrate --database=testing --force diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php index 3dabc68..4454b18 100644 --- a/app/Exceptions/Handler.php +++ b/app/Exceptions/Handler.php @@ -2,7 +2,7 @@ namespace App\Exceptions; -use Exception; +use Throwable; use Illuminate\Database\Eloquent\ModelNotFoundException; use Symfony\Component\HttpKernel\Exception\HttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; @@ -23,12 +23,12 @@ class Handler extends ExceptionHandler /** * Report or log an exception. * - * This is a great spot to send exceptions to Sentry, Bugsnag, etc. - * - * @param \Exception $e + * @param \Throwable $exception * @return void + * + * @throws \Exception */ - public function report(Exception $e) + public function report(Throwable $e) { return parent::report($e); } @@ -37,10 +37,12 @@ public function report(Exception $e) * Render an exception into an HTTP response. * * @param \Illuminate\Http\Request $request - * @param \Exception $e - * @return \Illuminate\Http\Response + * @param \Throwable $exception + * @return \Symfony\Component\HttpFoundation\Response + * + * @throws \Throwable */ - public function render($request, Exception $e) + public function render($request, Throwable $e) { if ($e instanceof ModelNotFoundException) { $e = new NotFoundHttpException($e->getMessage(), $e); diff --git a/composer.json b/composer.json index ff22a43..8cbb6cb 100644 --- a/composer.json +++ b/composer.json @@ -5,17 +5,17 @@ "license": "MIT", "type": "project", "require": { - "php": ">=7.2", - "fideloper/proxy": "^4.0", - "laravel/framework": "5.8.*", - "laravel/tinker": "^1.0", - "twilio/sdk": "^5.0", - "laravelcollective/html": "5.8.*" + "php": "^7.2.5", + "fideloper/proxy": "^4.2", + "laravel/framework": "^7.2", + "laravel/tinker": "^2.3", + "twilio/sdk": "^6.1.0", + "laravelcollective/html": "^6.1" }, "require-dev": { - "fzaninotto/faker": "~1.4", - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "^7.5", + "fzaninotto/faker": "^1.9.1", + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^8.5", "phpspec/phpspec": "~6.1" }, "extra": { diff --git a/composer.lock b/composer.lock index b174c0a..ec52062 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "fb8b26b5ef3c14e129a46130f82fa5dc", + "content-hash": "34bb6a20f8e33f8b1903cba69adc04af", "packages": [ { "name": "dnoegel/php-xdg-base-dir", @@ -280,52 +280,6 @@ ], "time": "2020-02-13T22:36:52+00:00" }, - { - "name": "erusev/parsedown", - "version": "1.7.4", - "source": { - "type": "git", - "url": "https://github.com/erusev/parsedown.git", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/erusev/parsedown/zipball/cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "reference": "cb17b6477dfff935958ba01325f2e8a2bfa6dab3", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.35" - }, - "type": "library", - "autoload": { - "psr-0": { - "Parsedown": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Emanuil Rusev", - "email": "hello@erusev.com", - "homepage": "http://erusev.com" - } - ], - "description": "Parser for Markdown.", - "homepage": "http://parsedown.org", - "keywords": [ - "markdown", - "parser" - ], - "time": "2019-12-30T22:54:17+00:00" - }, { "name": "fideloper/proxy", "version": "4.3.0", @@ -470,45 +424,47 @@ }, { "name": "laravel/framework", - "version": "v5.8.37", + "version": "v7.2.2", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "ce08aaee3a0b8bb58b459b2decf7f25ba7b10fa4" + "reference": "de01e2926a7560c43fb763d86de134a52b46928b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/ce08aaee3a0b8bb58b459b2decf7f25ba7b10fa4", - "reference": "ce08aaee3a0b8bb58b459b2decf7f25ba7b10fa4", + "url": "https://api.github.com/repos/laravel/framework/zipball/de01e2926a7560c43fb763d86de134a52b46928b", + "reference": "de01e2926a7560c43fb763d86de134a52b46928b", "shasum": "" }, "require": { "doctrine/inflector": "^1.1", "dragonmantank/cron-expression": "^2.0", - "egulias/email-validator": "^2.0", - "erusev/parsedown": "^1.7", + "egulias/email-validator": "^2.1.10", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", + "league/commonmark": "^1.3", "league/flysystem": "^1.0.8", - "monolog/monolog": "^1.12", - "nesbot/carbon": "^1.26.3 || ^2.0", + "monolog/monolog": "^2.0", + "nesbot/carbon": "^2.17", "opis/closure": "^3.1", - "php": "^7.1.3", + "php": "^7.2.5", "psr/container": "^1.0", "psr/simple-cache": "^1.0", "ramsey/uuid": "^3.7", "swiftmailer/swiftmailer": "^6.0", - "symfony/console": "^4.2", - "symfony/debug": "^4.2", - "symfony/finder": "^4.2", - "symfony/http-foundation": "^4.2", - "symfony/http-kernel": "^4.2", - "symfony/process": "^4.2", - "symfony/routing": "^4.2", - "symfony/var-dumper": "^4.2", - "tijsverkoyen/css-to-inline-styles": "^2.2.1", - "vlucas/phpdotenv": "^3.3" + "symfony/console": "^5.0", + "symfony/error-handler": "^5.0", + "symfony/finder": "^5.0", + "symfony/http-foundation": "^5.0", + "symfony/http-kernel": "^5.0", + "symfony/mime": "^5.0", + "symfony/process": "^5.0", + "symfony/routing": "^5.0", + "symfony/var-dumper": "^5.0", + "tijsverkoyen/css-to-inline-styles": "^2.2.2", + "vlucas/phpdotenv": "^4.0", + "voku/portable-ascii": "^1.4.8" }, "conflict": { "tightenco/collect": "<5.5.33" @@ -539,6 +495,7 @@ "illuminate/routing": "self.version", "illuminate/session": "self.version", "illuminate/support": "self.version", + "illuminate/testing": "self.version", "illuminate/translation": "self.version", "illuminate/validation": "self.version", "illuminate/view": "self.version" @@ -546,47 +503,47 @@ "require-dev": { "aws/aws-sdk-php": "^3.0", "doctrine/dbal": "^2.6", - "filp/whoops": "^2.1.4", - "guzzlehttp/guzzle": "^6.3", + "filp/whoops": "^2.4", + "guzzlehttp/guzzle": "^6.3.1|^7.0", "league/flysystem-cached-adapter": "^1.0", - "mockery/mockery": "^1.0", + "mockery/mockery": "^1.3.1", "moontoast/math": "^1.1", - "orchestra/testbench-core": "3.8.*", + "orchestra/testbench-core": "^5.0", "pda/pheanstalk": "^4.0", - "phpunit/phpunit": "^7.5|^8.0", + "phpunit/phpunit": "^8.4|^9.0", "predis/predis": "^1.1.1", - "symfony/css-selector": "^4.2", - "symfony/dom-crawler": "^4.2", - "true/punycode": "^2.1" + "symfony/cache": "^5.0" }, "suggest": { - "aws/aws-sdk-php": "Required to use the SQS queue driver and SES mail driver (^3.0).", + "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", + "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", "ext-posix": "Required to use all features of the queue worker.", - "filp/whoops": "Required for friendly error pages in development (^2.1.4).", - "fzaninotto/faker": "Required to use the eloquent factory builder (^1.4).", - "guzzlehttp/guzzle": "Required to use the Mailgun and Mandrill mail drivers and the ping methods on schedules (^6.0).", - "laravel/tinker": "Required to use the tinker console command (^1.0).", + "ext-redis": "Required to use the Redis cache and queue drivers (^4.0|^5.0).", + "filp/whoops": "Required for friendly error pages in development (^2.4).", + "fzaninotto/faker": "Required to use the eloquent factory builder (^1.9.1).", + "guzzlehttp/guzzle": "Required to use the HTTP Client, Mailgun mail driver and the ping methods on schedules (^6.3.1|^7.0).", + "laravel/tinker": "Required to use the tinker console command (^2.0).", "league/flysystem-aws-s3-v3": "Required to use the Flysystem S3 driver (^1.0).", "league/flysystem-cached-adapter": "Required to use the Flysystem cache (^1.0).", - "league/flysystem-rackspace": "Required to use the Flysystem Rackspace driver (^1.0).", "league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).", + "mockery/mockery": "Required to use mocking (^1.3.1).", "moontoast/math": "Required to use ordered UUIDs (^1.1).", - "nexmo/client": "Required to use the Nexmo transport (^1.0).", + "nyholm/psr7": "Required to use PSR-7 bridging features (^1.2).", "pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).", - "predis/predis": "Required to use the redis cache and queue drivers (^1.0).", - "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).", - "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).", - "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).", + "phpunit/phpunit": "Required to use assertions and run tests (^8.4|^9.0).", + "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", + "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", + "symfony/cache": "Required to PSR-6 cache bridge (^5.0).", + "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.8-dev" + "dev-master": "7.x-dev" } }, "autoload": { @@ -614,40 +571,41 @@ "framework", "laravel" ], - "time": "2020-02-14T14:29:11+00:00" + "time": "2020-03-20T18:11:43+00:00" }, { "name": "laravel/tinker", - "version": "v1.0.10", + "version": "v2.3.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7" + "reference": "5271893ec90ad9f8d3e34792ac6b72cad3b84cc2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/ad571aacbac1539c30d480908f9d0c9614eaf1a7", - "reference": "ad571aacbac1539c30d480908f9d0c9614eaf1a7", + "url": "https://api.github.com/repos/laravel/tinker/zipball/5271893ec90ad9f8d3e34792ac6b72cad3b84cc2", + "reference": "5271893ec90ad9f8d3e34792ac6b72cad3b84cc2", "shasum": "" }, "require": { - "illuminate/console": "~5.1|^6.0", - "illuminate/contracts": "~5.1|^6.0", - "illuminate/support": "~5.1|^6.0", - "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*|0.9.*", - "symfony/var-dumper": "~3.0|~4.0" + "illuminate/console": "^6.0|^7.0|^8.0", + "illuminate/contracts": "^6.0|^7.0|^8.0", + "illuminate/support": "^6.0|^7.0|^8.0", + "php": "^7.2", + "psy/psysh": "^0.9|^0.10", + "symfony/var-dumper": "^4.0|^5.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "mockery/mockery": "^1.3.1", + "phpunit/phpunit": "^8.0|^9.0" }, "suggest": { - "illuminate/database": "The Illuminate Database package (~5.1)." + "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.x-dev" }, "laravel": { "providers": [ @@ -677,39 +635,39 @@ "laravel", "psysh" ], - "time": "2019-08-07T15:10:45+00:00" + "time": "2020-03-17T15:34:59+00:00" }, { "name": "laravelcollective/html", - "version": "v5.8.1", + "version": "v6.1.0", "source": { "type": "git", "url": "https://github.com/LaravelCollective/html.git", - "reference": "3a1c9974ea629eed96e101a24e3852ced382eb29" + "reference": "64f2268bf41bf02b3a9dd3c30f102e934d721664" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/3a1c9974ea629eed96e101a24e3852ced382eb29", - "reference": "3a1c9974ea629eed96e101a24e3852ced382eb29", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/64f2268bf41bf02b3a9dd3c30f102e934d721664", + "reference": "64f2268bf41bf02b3a9dd3c30f102e934d721664", "shasum": "" }, "require": { - "illuminate/http": "5.8.*", - "illuminate/routing": "5.8.*", - "illuminate/session": "5.8.*", - "illuminate/support": "5.8.*", - "illuminate/view": "5.8.*", - "php": ">=7.1.3" + "illuminate/http": "^6.0|^7.0", + "illuminate/routing": "^6.0|^7.0", + "illuminate/session": "^6.0|^7.0", + "illuminate/support": "^6.0|^7.0", + "illuminate/view": "^6.0|^7.0", + "php": ">=7.2.5" }, "require-dev": { - "illuminate/database": "5.8.*", + "illuminate/database": "^6.0|^7.0", "mockery/mockery": "~1.0", "phpunit/phpunit": "~7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.8-dev" + "dev-master": "6.0-dev" }, "laravel": { "providers": [ @@ -745,7 +703,81 @@ ], "description": "HTML and Form Builders for the Laravel Framework", "homepage": "https://laravelcollective.com", - "time": "2019-09-05T12:32:25+00:00" + "time": "2020-03-02T16:41:28+00:00" + }, + { + "name": "league/commonmark", + "version": "1.3.1", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/commonmark.git", + "reference": "8015f806173c6ee54de25a87c2d69736696e88db" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/8015f806173c6ee54de25a87c2d69736696e88db", + "reference": "8015f806173c6ee54de25a87c2d69736696e88db", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "php": "^7.1" + }, + "conflict": { + "scrutinizer/ocular": "1.7.*" + }, + "require-dev": { + "cebe/markdown": "~1.0", + "commonmark/commonmark.js": "0.29.1", + "erusev/parsedown": "~1.0", + "ext-json": "*", + "github/gfm": "0.29.0", + "michelf/php-markdown": "~1.4", + "mikehaertl/php-shellcommand": "^1.4", + "phpstan/phpstan-shim": "^0.11.5", + "phpunit/phpunit": "^7.5", + "scrutinizer/ocular": "^1.5", + "symfony/finder": "^4.2" + }, + "bin": [ + "bin/commonmark" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.4-dev" + } + }, + "autoload": { + "psr-4": { + "League\\CommonMark\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Colin O'Dell", + "email": "colinodell@gmail.com", + "homepage": "https://www.colinodell.com", + "role": "Lead Developer" + } + ], + "description": "Highly-extensible PHP Markdown parser which fully supports the CommonMark spec and Github-Flavored Markdown (GFM)", + "homepage": "https://commonmark.thephpleague.com", + "keywords": [ + "commonmark", + "flavored", + "gfm", + "github", + "github-flavored", + "markdown", + "md", + "parser" + ], + "time": "2020-02-28T18:53:50+00:00" }, { "name": "league/flysystem", @@ -833,21 +865,21 @@ }, { "name": "monolog/monolog", - "version": "1.25.3", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1" + "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/fa82921994db851a8becaf3787a9e73c5976b6f1", - "reference": "fa82921994db851a8becaf3787a9e73c5976b6f1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", + "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": "^7.2", + "psr/log": "^1.0.1" }, "provide": { "psr/log-implementation": "1.0.0" @@ -855,33 +887,36 @@ "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "jakub-onderka/php-parallel-lint": "0.9", + "elasticsearch/elasticsearch": "^6.0", + "graylog2/gelf-php": "^1.4.2", + "jakub-onderka/php-parallel-lint": "^0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", - "phpunit/phpunit": "~4.5", - "phpunit/phpunit-mock-objects": "2.3.0", + "phpspec/prophecy": "^1.6.1", + "phpunit/phpunit": "^8.3", + "predis/predis": "^1.1", + "rollbar/rollbar": "^1.3", "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { @@ -907,7 +942,7 @@ "logging", "psr-3" ], - "time": "2019-12-20T14:15:16+00:00" + "time": "2019-12-20T14:22:59+00:00" }, { "name": "nesbot/carbon", @@ -1139,20 +1174,20 @@ }, { "name": "phpoption/phpoption", - "version": "1.7.2", + "version": "1.7.3", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959" + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", - "reference": "77f7c4d2e65413aff5b5a8cc8b3caf7a28d81959", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0" + "php": "^5.5.9 || ^7.0 || ^8.0" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.3", @@ -1190,7 +1225,7 @@ "php", "type" ], - "time": "2019-12-15T19:35:24+00:00" + "time": "2020-03-21T18:07:53+00:00" }, { "name": "psr/container", @@ -1241,6 +1276,52 @@ ], "time": "2017-02-14T16:28:37+00:00" }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "time": "2019-01-08T18:20:26+00:00" + }, { "name": "psr/log", "version": "1.1.2", @@ -1338,32 +1419,31 @@ }, { "name": "psy/psysh", - "version": "v0.9.12", + "version": "v0.10.2", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4" + "reference": "573c2362c3cdebe846b4adae4b630eecb350afd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/90da7f37568aee36b116a030c5f99c915267edd4", - "reference": "90da7f37568aee36b116a030c5f99c915267edd4", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/573c2362c3cdebe846b4adae4b630eecb350afd8", + "reference": "573c2362c3cdebe846b4adae4b630eecb350afd8", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", - "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", - "php": ">=5.4.0", - "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0|~5.0", - "symfony/var-dumper": "~2.7|~3.0|~4.0|~5.0" + "jakub-onderka/php-console-highlighter": "0.4.*|0.3.*", + "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", + "php": "^8.0 || ^7.0 || ^5.5.9", + "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", + "symfony/var-dumper": "~5.0|~4.0|~3.0|~2.7" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~2.15|~3.16", - "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" + "hoa/console": "~3.16|~2.15" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -1378,7 +1458,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.9.x-dev" + "dev-master": "0.10.x-dev" } }, "autoload": { @@ -1408,7 +1488,7 @@ "interactive", "shell" ], - "time": "2019-12-06T14:19:43+00:00" + "time": "2020-03-21T06:55:27+00:00" }, { "name": "ramsey/uuid", @@ -1561,41 +1641,41 @@ }, { "name": "symfony/console", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9" + "reference": "d29e2d36941de13600c399e393a60b8cfe59ac49" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", - "reference": "4fa15ae7be74e53f6ec8c83ed403b97e23b665e9", + "url": "https://api.github.com/repos/symfony/console/zipball/d29e2d36941de13600c399e393a60b8cfe59ac49", + "reference": "d29e2d36941de13600c399e393a60b8cfe59ac49", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", "symfony/service-contracts": "^1.1|^2" }, "conflict": { - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", + "symfony/dependency-injection": "<4.4", + "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "symfony/process": "<4.4" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/event-dispatcher": "^4.4|^5.0", "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" + "symfony/process": "^4.4|^5.0", + "symfony/var-dumper": "^4.4|^5.0" }, "suggest": { "psr/log": "For using the console logger", @@ -1606,7 +1686,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1633,7 +1713,7 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2020-02-24T13:10:00+00:00" + "time": "2020-02-24T15:05:31+00:00" }, { "name": "symfony/css-selector", @@ -1688,80 +1768,23 @@ "homepage": "https://symfony.com", "time": "2020-02-04T09:41:09+00:00" }, - { - "name": "symfony/debug", - "version": "v4.4.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "a980d87a659648980d89193fd8b7a7ca89d97d21" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/a980d87a659648980d89193fd8b7a7ca89d97d21", - "reference": "a980d87a659648980d89193fd8b7a7ca89d97d21", - "shasum": "" - }, - "require": { - "php": "^7.1.3", - "psr/log": "~1.0" - }, - "conflict": { - "symfony/http-kernel": "<3.4" - }, - "require-dev": { - "symfony/http-kernel": "^3.4|^4.0|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.4-dev" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2020-02-23T14:41:43+00:00" - }, { "name": "symfony/error-handler", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "89aa4b9ac6f1f35171b8621b24f60477312085be" + "reference": "24a938d9913f42d006ee1ca0164ea1f29c1067ec" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/89aa4b9ac6f1f35171b8621b24f60477312085be", - "reference": "89aa4b9ac6f1f35171b8621b24f60477312085be", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/24a938d9913f42d006ee1ca0164ea1f29c1067ec", + "reference": "24a938d9913f42d006ee1ca0164ea1f29c1067ec", "shasum": "" }, "require": { - "php": "^7.1.3", - "psr/log": "~1.0", - "symfony/debug": "^4.4.5", + "php": "^7.2.5", + "psr/log": "^1.0", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { @@ -1771,7 +1794,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1798,41 +1821,41 @@ ], "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", - "time": "2020-02-26T11:45:31+00:00" + "time": "2020-02-29T10:07:09+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d" + "reference": "b45ad88b253c5a9702ce218e201d89c85d148cea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/4ad8e149799d3128621a3a1f70e92b9897a8930d", - "reference": "4ad8e149799d3128621a3a1f70e92b9897a8930d", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b45ad88b253c5a9702ce218e201d89c85d148cea", + "reference": "b45ad88b253c5a9702ce218e201d89c85d148cea", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/event-dispatcher-contracts": "^1.1" + "php": "^7.2.5", + "symfony/event-dispatcher-contracts": "^2" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" + "symfony/stopwatch": "^4.4|^5.0" }, "suggest": { "symfony/dependency-injection": "", @@ -1841,7 +1864,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1868,33 +1891,33 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2020-02-04T09:32:40+00:00" + "time": "2020-02-22T20:09:08+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v1.1.7", + "version": "v2.0.1", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18" + "reference": "af23c2584d4577d54661c434446fb8fbed6025dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/c43ab685673fb6c8d84220c77897b1d6cdbe1d18", - "reference": "c43ab685673fb6c8d84220c77897b1d6cdbe1d18", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd", + "reference": "af23c2584d4577d54661c434446fb8fbed6025dd", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5", + "psr/event-dispatcher": "^1" }, "suggest": { - "psr/event-dispatcher": "", "symfony/event-dispatcher-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1926,29 +1949,29 @@ "interoperability", "standards" ], - "time": "2019-09-17T09:54:03+00:00" + "time": "2019-11-18T17:27:11+00:00" }, { "name": "symfony/finder", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357" + "reference": "6251f201187ca9d66f6b099d3de65d279e971138" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ea69c129aed9fdeca781d4b77eb20b62cf5d5357", - "reference": "ea69c129aed9fdeca781d4b77eb20b62cf5d5357", + "url": "https://api.github.com/repos/symfony/finder/zipball/6251f201187ca9d66f6b099d3de65d279e971138", + "reference": "6251f201187ca9d66f6b099d3de65d279e971138", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -1975,35 +1998,35 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2020-02-14T07:42:58+00:00" + "time": "2020-02-14T07:43:07+00:00" }, { "name": "symfony/http-foundation", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648" + "reference": "6f9c2ba72f4295d7ce6cf9f79dbb18036291d335" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7e41b4fcad4619535f45f8bfa7744c4f384e1648", - "reference": "7e41b4fcad4619535f45f8bfa7744c4f384e1648", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6f9c2ba72f4295d7ce6cf9f79dbb18036291d335", + "reference": "6f9c2ba72f4295d7ce6cf9f79dbb18036291d335", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/mime": "^4.3|^5.0", + "php": "^7.2.5", + "symfony/mime": "^4.4|^5.0", "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^3.4|^4.0|^5.0" + "symfony/expression-language": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2030,59 +2053,65 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2020-02-13T19:40:01+00:00" + "time": "2020-02-14T07:43:07+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "8c8734486dada83a6041ab744709bdc1651a8462" + "reference": "021d7d54e080405678f2d8c54cb31d0bb03b4520" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/8c8734486dada83a6041ab744709bdc1651a8462", - "reference": "8c8734486dada83a6041ab744709bdc1651a8462", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/021d7d54e080405678f2d8c54cb31d0bb03b4520", + "reference": "021d7d54e080405678f2d8c54cb31d0bb03b4520", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "psr/log": "~1.0", - "symfony/error-handler": "^4.4", - "symfony/event-dispatcher": "^4.4", + "symfony/error-handler": "^4.4|^5.0", + "symfony/event-dispatcher": "^5.0", "symfony/http-foundation": "^4.4|^5.0", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-php73": "^1.9" }, "conflict": { - "symfony/browser-kit": "<4.3", - "symfony/config": "<3.4", - "symfony/console": ">=5", - "symfony/dependency-injection": "<4.3", - "symfony/translation": "<4.2", - "twig/twig": "<1.34|<2.4,>=2" + "symfony/browser-kit": "<4.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/dependency-injection": "<4.4", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.4" }, "provide": { "psr/log-implementation": "1.0" }, "require-dev": { "psr/cache": "~1.0", - "symfony/browser-kit": "^4.3|^5.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0", - "symfony/css-selector": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^4.3|^5.0", - "symfony/dom-crawler": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/finder": "^3.4|^4.0|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/routing": "^3.4|^4.0|^5.0", - "symfony/stopwatch": "^3.4|^4.0|^5.0", - "symfony/templating": "^3.4|^4.0|^5.0", - "symfony/translation": "^4.2|^5.0", + "symfony/browser-kit": "^4.4|^5.0", + "symfony/config": "^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/css-selector": "^4.4|^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/dom-crawler": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/process": "^4.4|^5.0", + "symfony/routing": "^4.4|^5.0", + "symfony/stopwatch": "^4.4|^5.0", + "symfony/translation": "^4.4|^5.0", "symfony/translation-contracts": "^1.1|^2", - "twig/twig": "^1.34|^2.4|^3.0" + "twig/twig": "^2.4|^3.0" }, "suggest": { "symfony/browser-kit": "", @@ -2093,7 +2122,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2120,7 +2149,7 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2020-02-29T10:31:38+00:00" + "time": "2020-02-29T10:41:30+00:00" }, { "name": "symfony/mime", @@ -2537,25 +2566,25 @@ }, { "name": "symfony/process", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7" + "reference": "fd4a86dd7e36437f2fc080d8c42c7415d828a0a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/bf9166bac906c9e69fb7a11d94875e7ced97bcd7", - "reference": "bf9166bac906c9e69fb7a11d94875e7ced97bcd7", + "url": "https://api.github.com/repos/symfony/process/zipball/fd4a86dd7e36437f2fc080d8c42c7415d828a0a8", + "reference": "fd4a86dd7e36437f2fc080d8c42c7415d828a0a8", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2582,38 +2611,38 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-02-07T20:06:44+00:00" + "time": "2020-02-08T17:00:58+00:00" }, { "name": "symfony/routing", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "4124d621d0e445732520037f888a0456951bde8c" + "reference": "d6ca39fd05c1902bf34d724ba06fb8044a0b46de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/4124d621d0e445732520037f888a0456951bde8c", - "reference": "4124d621d0e445732520037f888a0456951bde8c", + "url": "https://api.github.com/repos/symfony/routing/zipball/d6ca39fd05c1902bf34d724ba06fb8044a0b46de", + "reference": "d6ca39fd05c1902bf34d724ba06fb8044a0b46de", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.2.5" }, "conflict": { - "symfony/config": "<4.2", - "symfony/dependency-injection": "<3.4", - "symfony/yaml": "<3.4" + "symfony/config": "<5.0", + "symfony/dependency-injection": "<4.4", + "symfony/yaml": "<4.4" }, "require-dev": { "doctrine/annotations": "~1.2", "psr/log": "~1.0", - "symfony/config": "^4.2|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/config": "^5.0", + "symfony/dependency-injection": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/http-foundation": "^4.4|^5.0", + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "doctrine/annotations": "For using the annotation loader", @@ -2625,7 +2654,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2658,7 +2687,7 @@ "uri", "url" ], - "time": "2020-02-25T12:41:09+00:00" + "time": "2020-02-25T14:24:11+00:00" }, { "name": "symfony/service-contracts", @@ -2720,42 +2749,43 @@ }, { "name": "symfony/translation", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "0a19a77fba20818a969ef03fdaf1602de0546353" + "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/0a19a77fba20818a969ef03fdaf1602de0546353", - "reference": "0a19a77fba20818a969ef03fdaf1602de0546353", + "url": "https://api.github.com/repos/symfony/translation/zipball/e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", + "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", "shasum": "" }, "require": { - "php": "^7.1.3", + "php": "^7.2.5", "symfony/polyfill-mbstring": "~1.0", - "symfony/translation-contracts": "^1.1.6|^2" + "symfony/translation-contracts": "^2" }, "conflict": { - "symfony/config": "<3.4", - "symfony/dependency-injection": "<3.4", - "symfony/http-kernel": "<4.4", - "symfony/yaml": "<3.4" + "symfony/config": "<4.4", + "symfony/dependency-injection": "<5.0", + "symfony/http-kernel": "<5.0", + "symfony/twig-bundle": "<5.0", + "symfony/yaml": "<4.4" }, "provide": { - "symfony/translation-implementation": "1.0" + "symfony/translation-implementation": "2.0" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/finder": "~2.8|~3.0|~4.0|^5.0", - "symfony/http-kernel": "^4.4", - "symfony/intl": "^3.4|^4.0|^5.0", + "symfony/config": "^4.4|^5.0", + "symfony/console": "^4.4|^5.0", + "symfony/dependency-injection": "^5.0", + "symfony/finder": "^4.4|^5.0", + "symfony/http-kernel": "^5.0", + "symfony/intl": "^4.4|^5.0", "symfony/service-contracts": "^1.1.2|^2", - "symfony/yaml": "^3.4|^4.0|^5.0" + "symfony/yaml": "^4.4|^5.0" }, "suggest": { "psr/log-implementation": "To use logging capability in translator", @@ -2765,7 +2795,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2792,7 +2822,7 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2020-02-04T09:32:40+00:00" + "time": "2020-02-04T07:41:34+00:00" }, { "name": "symfony/translation-contracts", @@ -2853,32 +2883,31 @@ }, { "name": "symfony/var-dumper", - "version": "v4.4.5", + "version": "v5.0.5", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "2572839911702b0405479410ea7a1334bfab0b96" + "reference": "3a37aeb1132d1035536d3d6aa9cb06c2ff9355e9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2572839911702b0405479410ea7a1334bfab0b96", - "reference": "2572839911702b0405479410ea7a1334bfab0b96", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3a37aeb1132d1035536d3d6aa9cb06c2ff9355e9", + "reference": "3a37aeb1132d1035536d3d6aa9cb06c2ff9355e9", "shasum": "" }, "require": { - "php": "^7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5" + "php": "^7.2.5", + "symfony/polyfill-mbstring": "~1.0" }, "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "phpunit/phpunit": "<5.4.3", + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", + "symfony/console": "^4.4|^5.0", "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.34|^2.4|^3.0" + "twig/twig": "^2.4|^3.0" }, "suggest": { "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", @@ -2891,7 +2920,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.4-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -2925,7 +2954,7 @@ "debug", "dump" ], - "time": "2020-02-24T13:10:00+00:00" + "time": "2020-02-26T22:30:10+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -2978,25 +3007,25 @@ }, { "name": "twilio/sdk", - "version": "5.42.2", + "version": "6.1.0", "source": { "type": "git", "url": "https://github.com/twilio/twilio-php.git", - "reference": "0cfcb871b18a9c427dd9e8f0ed7458d43009b48a" + "reference": "eb38f4c6f0d02456d4cbcd7cf88570df9750cda3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twilio/twilio-php/zipball/0cfcb871b18a9c427dd9e8f0ed7458d43009b48a", - "reference": "0cfcb871b18a9c427dd9e8f0ed7458d43009b48a", + "url": "https://api.github.com/repos/twilio/twilio-php/zipball/eb38f4c6f0d02456d4cbcd7cf88570df9750cda3", + "reference": "eb38f4c6f0d02456d4cbcd7cf88570df9750cda3", "shasum": "" }, "require": { - "php": ">=5.5.0" + "php": ">=7.1.0" }, "require-dev": { - "apigen/apigen": "^4.1", "guzzlehttp/guzzle": "^6.3", - "phpunit/phpunit": ">=4.5" + "phpunit/phpunit": ">=4.5", + "theseer/phpdox": "^0.12.0" }, "suggest": { "guzzlehttp/guzzle": "An HTTP client to execute the API requests" @@ -3024,28 +3053,29 @@ "sms", "twilio" ], - "time": "2020-02-05T19:55:13+00:00" + "time": "2020-03-18T19:42:16+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v3.6.1", + "version": "v4.1.2", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "8f7961f7b9deb3b432452c18093cf16f88205902" + "reference": "939dfda2d7267ac8fc53ac3d642b5de357554c39" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8f7961f7b9deb3b432452c18093cf16f88205902", - "reference": "8f7961f7b9deb3b432452c18093cf16f88205902", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/939dfda2d7267ac8fc53ac3d642b5de357554c39", + "reference": "939dfda2d7267ac8fc53ac3d642b5de357554c39", "shasum": "" }, "require": { - "php": "^5.4 || ^7.0", - "phpoption/phpoption": "^1.5", + "php": "^5.5.9 || ^7.0", + "phpoption/phpoption": "^1.7.2", "symfony/polyfill-ctype": "^1.9" }, "require-dev": { + "bamarni/composer-bin-plugin": "^1.3", "ext-filter": "*", "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" }, @@ -3055,7 +3085,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.6-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3085,7 +3115,56 @@ "env", "environment" ], - "time": "2020-03-12T13:44:00+00:00" + "time": "2020-03-12T13:44:15+00:00" + }, + { + "name": "voku/portable-ascii", + "version": "1.4.10", + "source": { + "type": "git", + "url": "https://github.com/voku/portable-ascii.git", + "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/240e93829a5f985fab0984a6e55ae5e26b78a334", + "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334", + "shasum": "" + }, + "require": { + "php": ">=7.0.0" + }, + "require-dev": { + "phpunit/phpunit": "~6.0 || ~7.0" + }, + "suggest": { + "ext-intl": "Use Intl for transliterator_transliterate() support" + }, + "type": "library", + "autoload": { + "psr-4": { + "voku\\": "src/voku/", + "voku\\tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Lars Moelleken", + "homepage": "http://www.moelleken.org/" + } + ], + "description": "Portable ASCII library - performance optimized (ascii) string functions for php.", + "homepage": "https://github.com/voku/portable-ascii", + "keywords": [ + "ascii", + "clean", + "php" + ], + "time": "2020-03-13T01:23:26+00:00" } ], "packages-dev": [ @@ -3197,20 +3276,20 @@ }, { "name": "hamcrest/hamcrest-php", - "version": "v1.2.2", + "version": "v2.0.0", "source": { "type": "git", "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/776503d3a8e85d4f9a1148614f95b7a608b046ad", + "reference": "776503d3a8e85d4f9a1148614f95b7a608b046ad", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^5.3|^7.0" }, "replace": { "cordoval/hamcrest-php": "*", @@ -3219,15 +3298,18 @@ }, "require-dev": { "phpunit/php-file-iterator": "1.3.3", - "satooshi/php-coveralls": "dev-master" + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "^1.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "hamcrest" - ], - "files": [ - "hamcrest/Hamcrest.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3238,34 +3320,34 @@ "keywords": [ "test" ], - "time": "2015-05-11T14:41:42+00:00" + "time": "2016-01-20T08:20:44+00:00" }, { "name": "mockery/mockery", - "version": "0.9.11", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8" + "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/be9bf28d8e57d67883cba9fcadfcff8caab667f8", - "reference": "be9bf28d8e57d67883cba9fcadfcff8caab667f8", + "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", + "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~1.1", + "hamcrest/hamcrest-php": "~2.0", "lib-pcre": ">=7.0", - "php": ">=5.3.2" + "php": ">=5.6.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9.x-dev" + "dev-master": "1.3.x-dev" } }, "autoload": { @@ -3289,8 +3371,8 @@ "homepage": "http://davedevelopment.co.uk" } ], - "description": "Mockery is a simple yet flexible PHP mock object framework for use in unit testing with PHPUnit, PHPSpec or any other testing framework. Its core goal is to offer a test double framework with a succinct API capable of clearly defining all possible object operations and interactions using a human readable Domain Specific Language (DSL). Designed as a drop in alternative to PHPUnit's phpunit-mock-objects library, Mockery is easy to integrate with PHPUnit and can operate alongside phpunit-mock-objects without the World ending.", - "homepage": "http://github.com/padraic/mockery", + "description": "Mockery is a simple yet flexible PHP mock object framework", + "homepage": "https://github.com/mockery/mockery", "keywords": [ "BDD", "TDD", @@ -3303,7 +3385,7 @@ "test double", "testing" ], - "time": "2019-02-12T16:07:13+00:00" + "time": "2019-12-26T09:49:15+00:00" }, { "name": "myclabs/deep-copy", @@ -3793,40 +3875,40 @@ }, { "name": "phpunit/php-code-coverage", - "version": "6.1.4", + "version": "7.0.10", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d" + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", - "reference": "807e6013b00af69b6c5d9ceb4282d0393dbb9d8d", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f1884187926fbb755a9aaf0b3836ad3165b478bf", + "reference": "f1884187926fbb755a9aaf0b3836ad3165b478bf", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", - "php": "^7.1", - "phpunit/php-file-iterator": "^2.0", + "php": "^7.2", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-token-stream": "^3.0", + "phpunit/php-token-stream": "^3.1.1", "sebastian/code-unit-reverse-lookup": "^1.0.1", - "sebastian/environment": "^3.1 || ^4.0", + "sebastian/environment": "^4.2.2", "sebastian/version": "^2.0.1", - "theseer/tokenizer": "^1.1" + "theseer/tokenizer": "^1.1.3" }, "require-dev": { - "phpunit/phpunit": "^7.0" + "phpunit/phpunit": "^8.2.2" }, "suggest": { - "ext-xdebug": "^2.6.0" + "ext-xdebug": "^2.7.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "6.1-dev" + "dev-master": "7.0-dev" } }, "autoload": { @@ -3852,7 +3934,7 @@ "testing", "xunit" ], - "time": "2018-10-31T16:06:48+00:00" + "time": "2019-11-20T13:55:58+00:00" }, { "name": "phpunit/php-file-iterator", @@ -4045,53 +4127,52 @@ }, { "name": "phpunit/phpunit", - "version": "7.5.20", + "version": "8.5.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c" + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9467db479d1b0487c99733bb1e7944d32deded2c", - "reference": "9467db479d1b0487c99733bb1e7944d32deded2c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.1", + "doctrine/instantiator": "^1.2.0", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", "ext-mbstring": "*", "ext-xml": "*", - "myclabs/deep-copy": "^1.7", - "phar-io/manifest": "^1.0.2", - "phar-io/version": "^2.0", - "php": "^7.1", - "phpspec/prophecy": "^1.7", - "phpunit/php-code-coverage": "^6.0.7", - "phpunit/php-file-iterator": "^2.0.1", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.9.1", + "phar-io/manifest": "^1.0.3", + "phar-io/version": "^2.0.1", + "php": "^7.2", + "phpspec/prophecy": "^1.8.1", + "phpunit/php-code-coverage": "^7.0.7", + "phpunit/php-file-iterator": "^2.0.2", "phpunit/php-text-template": "^1.2.1", - "phpunit/php-timer": "^2.1", - "sebastian/comparator": "^3.0", - "sebastian/diff": "^3.0", - "sebastian/environment": "^4.0", - "sebastian/exporter": "^3.1", - "sebastian/global-state": "^2.0", + "phpunit/php-timer": "^2.1.2", + "sebastian/comparator": "^3.0.2", + "sebastian/diff": "^3.0.2", + "sebastian/environment": "^4.2.2", + "sebastian/exporter": "^3.1.1", + "sebastian/global-state": "^3.0.0", "sebastian/object-enumerator": "^3.0.3", - "sebastian/resource-operations": "^2.0", + "sebastian/resource-operations": "^2.0.1", + "sebastian/type": "^1.1.3", "sebastian/version": "^2.0.1" }, - "conflict": { - "phpunit/phpunit-mock-objects": "*" - }, "require-dev": { "ext-pdo": "*" }, "suggest": { "ext-soap": "*", "ext-xdebug": "*", - "phpunit/php-invoker": "^2.0" + "phpunit/php-invoker": "^2.0.0" }, "bin": [ "phpunit" @@ -4099,7 +4180,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "7.5-dev" + "dev-master": "8.5-dev" } }, "autoload": { @@ -4125,7 +4206,7 @@ "testing", "xunit" ], - "time": "2020-01-08T08:45:45+00:00" + "time": "2020-01-08T08:49:49+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -4414,23 +4495,26 @@ }, { "name": "sebastian/global-state", - "version": "2.0.0", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4" + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", - "reference": "e8ba02eed7bbbb9e59e43dedd3dddeff4a56b0c4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", + "reference": "edf8a461cf1d4005f19fb0b6b8b95a9f7fa0adc4", "shasum": "" }, "require": { - "php": "^7.0" + "php": "^7.2", + "sebastian/object-reflector": "^1.1.1", + "sebastian/recursion-context": "^3.0" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "ext-dom": "*", + "phpunit/phpunit": "^8.0" }, "suggest": { "ext-uopz": "*" @@ -4438,7 +4522,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -4461,7 +4545,7 @@ "keywords": [ "global state" ], - "time": "2017-04-27T15:39:26+00:00" + "time": "2019-02-01T05:30:01+00:00" }, { "name": "sebastian/object-enumerator", @@ -4650,6 +4734,52 @@ "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "time": "2018-10-04T04:07:39+00:00" }, + { + "name": "sebastian/type", + "version": "1.1.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/3aaaa15fa71d27650d62a948be022fe3b48541a3", + "reference": "3aaaa15fa71d27650d62a948be022fe3b48541a3", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "time": "2019-07-02T08:10:15+00:00" + }, { "name": "sebastian/version", "version": "2.0.1", @@ -4847,7 +4977,7 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": ">=7.2" + "php": "^7.2.5" }, "platform-dev": [] } diff --git a/config/session.php b/config/session.php index f1b0042..1d1cd84 100644 --- a/config/session.php +++ b/config/session.php @@ -1,5 +1,7 @@ 120, + 'lifetime' => env('SESSION_LIFETIME', 120), 'expire_on_close' => false, @@ -70,7 +72,7 @@ | */ - 'connection' => null, + 'connection' => env('SESSION_CONNECTION', null), /* |-------------------------------------------------------------------------- @@ -85,6 +87,19 @@ 'table' => 'sessions', + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | When using the "apc", "memcached", or "dynamodb" session drivers you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + */ + + 'store' => env('SESSION_STORE', null), + /* |-------------------------------------------------------------------------- | Session Sweeping Lottery @@ -109,7 +124,10 @@ | */ - 'cookie' => 'laravel_session', + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_').'_session' + ), /* |-------------------------------------------------------------------------- @@ -135,7 +153,7 @@ | */ - 'domain' => null, + 'domain' => env('SESSION_DOMAIN', null), /* |-------------------------------------------------------------------------- @@ -148,6 +166,34 @@ | */ - 'secure' => false, + 'secure' => env('SESSION_SECURE_COOKIE', null), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | do not enable this as other CSRF protection services are in place. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', ]; From 80393f9d1c729ea893e76c86c87677f89b5ae16f Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Mon, 23 Mar 2020 14:51:29 -0500 Subject: [PATCH 03/12] Removing Travis --- .github/workflows/laravel.yml | 2 +- .mergify.yml | 13 +++++++++++++ .travis.yml | 18 ------------------ app/Http/Kernel.php | 1 - config/app.php | 2 -- config/auth.php | 5 ----- readme.md | 3 ++- 7 files changed, 16 insertions(+), 28 deletions(-) create mode 100644 .mergify.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index f74d55f..299c290 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -7,7 +7,7 @@ on: branches: [ master ] jobs: - laravel-tests: + build: runs-on: ubuntu-latest diff --git a/.mergify.yml b/.mergify.yml new file mode 100644 index 0000000..0433495 --- /dev/null +++ b/.mergify.yml @@ -0,0 +1,13 @@ +pull_request_rules: + - name: automatic merge for Dependabot pull requests + conditions: + - author=dependabot-preview[bot] + - status-success=build (macos-latest, 10) + - status-success=build (macos-latest, 12) + - status-success=build (windows-latest, 10) + - status-success=build (windows-latest, 12) + - status-success=build (ubuntu-latest, 10) + - status-success=build (ubuntu-latest, 12) + actions: + merge: + method: squash diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 33faea8..0000000 --- a/.travis.yml +++ /dev/null @@ -1,18 +0,0 @@ -language: php -php: -- 7.3 -install: -- composer install -env: - global: - - DB_HOST=localhost - - DB_DATABASE=airtng - - DB_USERNAME=postgres - - APP_ENV=testing - - APP_KEY=rJhIZXkdo3FtwqdDJsC7OadHIVhnarEE - - TWILIO_ACCOUNT_SID=ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - - TWILIO_AUTH_TOKEN=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX - - TWILIO_NUMBER=+15552737123 -before_script: - - touch database/database-test.sqlite - - php artisan migrate --database=testing --force diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php index 6ee2f77..dca1e03 100644 --- a/app/Http/Kernel.php +++ b/app/Http/Kernel.php @@ -31,7 +31,6 @@ class Kernel extends HttpKernel \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, - // \Illuminate\Session\Middleware\AuthenticateSession::class, \Illuminate\View\Middleware\ShareErrorsFromSession::class, \App\Http\Middleware\VerifyCsrfToken::class, \Illuminate\Routing\Middleware\SubstituteBindings::class, diff --git a/config/app.php b/config/app.php index a2eb60d..b5d92b0 100644 --- a/config/app.php +++ b/config/app.php @@ -113,13 +113,11 @@ /* * Laravel Framework Service Providers... */ - // Illuminate\Foundation\Providers\ArtisanServiceProvider::class, Illuminate\Auth\AuthServiceProvider::class, Illuminate\Broadcasting\BroadcastServiceProvider::class, Illuminate\Bus\BusServiceProvider::class, Illuminate\Cache\CacheServiceProvider::class, Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, - // Illuminate\Routing\ControllerServiceProvider::class, Illuminate\Cookie\CookieServiceProvider::class, Illuminate\Database\DatabaseServiceProvider::class, Illuminate\Encryption\EncryptionServiceProvider::class, diff --git a/config/auth.php b/config/auth.php index 3fa7f49..afb0caf 100644 --- a/config/auth.php +++ b/config/auth.php @@ -69,11 +69,6 @@ 'driver' => 'eloquent', 'model' => App\User::class, ], - - // 'users' => [ - // 'driver' => 'database', - // 'table' => 'users', - // ], ], /* diff --git a/readme.md b/readme.md index aaae792..1482754 100644 --- a/readme.md +++ b/readme.md @@ -1,6 +1,7 @@ # Airtng App: Part 1 - Workflow Automation with Twilio - Laravel -[![Build Status](https://travis-ci.org/TwilioDevEd/airtng-laravel.svg)](https://travis-ci.org/TwilioDevEd/airtng-laravel) +![](https://github.com/TwilioDevEd/airtng-laravel/workflows/Laravel/badge.svg) + > We are currently in the process of updating this sample template. If you are encountering any issues with the sample, please open an issue at [github.com/twilio-labs/code-exchange/issues](https://github.com/twilio-labs/code-exchange/issues) and we'll try to help you. From 4c1fd757034eddfd4135afc706125a4ff0b3429b Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Mon, 20 Apr 2020 13:48:18 -0500 Subject: [PATCH 04/12] Update License --- LICENSE | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE b/LICENSE index 20edada..2c3cf9d 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020 Twilio Labs +Copyright (c) 2020 Twilio Inc. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 4e057ad66bf7fb63e585f469381cb67f9385f040 Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Tue, 12 May 2020 15:07:17 -0500 Subject: [PATCH 05/12] Add Makefile and update readme template --- .github/workflows/laravel.yml | 2 +- Makefile | 14 +++ readme.md | 172 ++++++++++++++++------------------ 3 files changed, 94 insertions(+), 94 deletions(-) create mode 100644 Makefile diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index 299c290..ed849aa 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -4,7 +4,7 @@ on: push: branches: [ master ] pull_request: - branches: [ master ] + branches: [ master, next ] jobs: build: diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..96afd80 --- /dev/null +++ b/Makefile @@ -0,0 +1,14 @@ +install: + mkdir -p database + touch database/database.sqlite + touch database/database-test.sqlite + composer install + php artisan key:generate --force + php artisan migrate --force + php artisan db:seed --force + +serve-setup: + php artisan serve --host=127.0.0.1 +open-browser: + python3 -m webbrowser "http://127.0.0.1:8000"; +serve: open-browser serve-setup diff --git a/readme.md b/readme.md index 1482754..d6354ee 100644 --- a/readme.md +++ b/readme.md @@ -1,94 +1,92 @@ + +Twilio + + # Airtng App: Part 1 - Workflow Automation with Twilio - Laravel ![](https://github.com/TwilioDevEd/airtng-laravel/workflows/Laravel/badge.svg) - > We are currently in the process of updating this sample template. If you are encountering any issues with the sample, please open an issue at [github.com/twilio-labs/code-exchange/issues](https://github.com/twilio-labs/code-exchange/issues) and we'll try to help you. +## About + Learn how to automate your workflow using Twilio's REST API and Twilio SMS. This example app is a vacation rental site where the host can confirm a reservation via SMS. [Read the full tutorial here](https://www.twilio.com/docs/tutorials/walkthrough/workflow-automation/php/laravel)! -## Run the application + Implementations in other languages: -1. Clone the repository and `cd` into it. +| .NET | Java | Python | Ruby | Node | +| :--- | :--- | :----- | :-- | :--- | +| [Done](https://github.com/TwilioDevEd/airtng-csharp-dotnet-core) | [Done](https://github.com/TwilioDevEd/airtng-servlets) | [Done](https://github.com/TwilioDevEd/airtng-flask) | TBD | [Done](https://github.com/TwilioDevEd/airtng-node) | -1. Install the application's dependencies with [Composer](https://getcomposer.org/) +## Set up - ```bash - $ composer install - ``` -1. The application uses [sqlite3](https://www.sqlite.org/) as the persistence layer. If you - don't have it already, you should install it. +### Requirements -1. Create an empty database file. +- [PHP >= 7.2.5](https://www.php.net/) and [composer](https://getcomposer.org/) +- A Twilio account - [sign up](https://www.twilio.com/try-twilio) +- The application uses [sqlite3](https://www.sqlite.org/) as the persistence layer. If you don't have it already, you should install it. - ```bash - $ touch database/database.sqlite - ``` +### Twilio Account Settings -1. Copy the sample configuration file and edit it to match your configuration. +This application should give you a ready-made starting point for writing your own application. +Before we begin, we need to collect all the config values we need to run the application: - ```bash - $ cp .env.example .env - ``` +| Config Value | Description | +| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- | +| Account Sid | Your primary Twilio account identifier - find this [in the Console](https://www.twilio.com/console). | +| Auth Token | Used to authenticate - [just like the above, you'll find this here](https://www.twilio.com/console). | +| Phone number | A Twilio phone number in [E.164 format](https://en.wikipedia.org/wiki/E.164) - you can [get one here](https://www.twilio.com/console/phone-numbers/incoming) | - You can find your `TWILIO_ACCOUNT_SID` and `TWILIO_AUTH_TOKEN` under - your - [Twilio Account Settings](https://www.twilio.com/user/account/settings). - You can buy a Twilio phone number here [Twilio numbers](https://www.twilio.com/user/account/phone-numbers/search) - `TWILIO_NUMBER` should be set according to the phone number you purchased above. +### Local development -1. Generate an `APP_KEY`. +After the above requirements have been met: - ```bash - $ php artisan key:generate - ``` +1. Clone this repository and `cd` into it -1. Run the migrations. + ```bash + git clone git@github.com:TwilioDevEd/airtng-laravel.git + cd airtng-laravel + ``` - ```bash - $ php artisan migrate - ``` +1. Install PHP dependencies -1. Load the seed data. + ```bash + make install + ``` - ```bash - $ php artisan db:seed - ``` +1. Set your environment variables + + ```bash + cp .env.example .env + ``` + + See [Twilio Account Settings](#twilio-account-settings) to locate the necessary environment variables. 1. Expose the application to the wider Internet using [ngrok](https://ngrok.com/) ```bash $ ngrok http 8000 ``` - Once you have started ngrok, update your Twilio number sms URL - settings to use your ngrok hostname. It will look something like - this: + + Once you have started ngrok, update your Twilio number sms URL settings to use your ngrok hostname. It will look something like this: ``` http://.ngrok.io/reservation/incoming ``` -1. Configure Twilio to call your webhooks. +6. Configure Twilio to call your webhooks. - You will also need to configure Twilio to send requests to your application - when sms are received. + You will also need to configure Twilio to send requests to your application when sms are received. - You will need to provision at least one Twilio number with sms capabilities - so the application's users can make property reservations. You can buy a number [right - here](https://www.twilio.com/user/account/phone-numbers/search). Once you have - a number you need to configure it to work with your application. Open - [the number management page](https://www.twilio.com/user/account/phone-numbers/incoming) - and open a number's configuration by clicking on it. + You will need to provision at least one Twilio number with sms capabilities so the application's users can make property reservations. You can buy a number [right here](https://www.twilio.com/user/account/phone-numbers/search). Once you have a number you need to configure it to work with your application. Open [the number management page](https://www.twilio.com/user/account/phone-numbers/incoming) and open a number's configuration by clicking on it. - Remember that the number where you change the sms webhooks must be the same one you set on - the `TWILIO_NUMBER` environment variable. + Remember that the number where you change the sms webhooks must be the same one you set on the `TWILIO_NUMBER` environment variable. ![Configure Messaging](webhook.png) - For this application, you must set the voice webhook of your number so that it - looks something like this: + For this application, you must set the voice webhook of your number so that it looks something like this: ``` http://.ngrok.io/reservation/incoming @@ -96,64 +94,52 @@ Learn how to automate your workflow using Twilio's REST API and Twilio SMS. This And in this case set the `POST` method on the configuration for this webhook. -1. Run the application using Artisan. +1. Run the application - ```bash - $ php artisan serve - ``` + ```bash + make serve + ``` - It is `artisan serve` default behaviour to use `http://localhost:8000` when - the application is run. This means that the ip addresses where your app will be - reachable on you local machine will vary depending on the operating system. +1. Navigate to [http://localhost:8000](http://localhost:8000) - The most common scenario is that your app will be reachable through address - `http://127.0.0.1:8000`. This is important because ngrok creates the - tunnel using only that address. So, if `http://127.0.0.1:8000` is not reachable - in your local machine when you run the app, you must tell artisan to use this - address. Here's how to set that up: + That's it! - ```bash - $ php artisan serve --host=127.0.0.1 - ``` +### Unit and Integration Tests -## Dependencies +First, run the migrations for the testing database. +```bash +php artisan migrate --database=testing +``` -This application uses this Twilio helper library: -* [twilio-php](https://github.com/twilio/twilio-php) +You can run the Unit tests locally by typing: +```bash +vendor/bin/phpunit +``` -## Run the tests +### Cloud deployment -1. Create an empty database file. +Additionally to trying out this application locally, you can deploy it to a variety of host services. Here is a small selection of them. - ```bash - $ touch database/database-test.sqlite - ``` +Please be aware that some of these might charge you for the usage or might make the source code for this application visible to the public. When in doubt research the respective hosting service first. -1. Run the migrations. +| Service | | +| :-------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| [Heroku](https://www.heroku.com/) | [![Deploy](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy) | - ```bash - $ php artisan migrate --database=testing - ``` +## Resources -1. Run at the top-level directory. +- The CodeExchange repository can be found [here](https://github.com/twilio-labs/code-exchange/). - ```bash - $ phpunit - ``` +## Contributing - or +This template is open source and welcomes contributions. All contributions are subject to our [Code of Conduct](https://github.com/twilio-labs/.github/blob/master/CODE_OF_CONDUCT.md). - ```bash - $ vendor/bin/phpunit - ``` +## License + +[MIT](http://www.opensource.org/licenses/mit-license.html) - If you don't have phpunit installed on your system, you can follow [these - instructions](https://phpunit.de/manual/current/en/installation.html) to - install it. +## Disclaimer -## Meta +No warranty expressed or implied. Software is as is. -* No warranty expressed or implied. Software is as is. Diggity. -* The CodeExchange repository can be found [here](https://github.com/twilio-labs/code-exchange/). -* [MIT License](http://www.opensource.org/licenses/mit-license.html) -* Lovingly crafted by Twilio Developer Education. +[twilio]: https://www.twilio.com From 701a97d44d822413e6c01d702cba1784a53d85de Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Fri, 5 Jun 2020 08:54:02 -0500 Subject: [PATCH 06/12] Add Docker deployment --- .dockerignore | 3 +++ Dockerfile | 20 ++++++++++++++++++++ Makefile | 2 -- composer.json | 2 +- docker-compose.yml | 7 +++++++ readme.md | 9 +++++++++ 6 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 .dockerignore create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..9bdc99d --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +vendor +node_modules +.sqlite diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..d711d3f --- /dev/null +++ b/Dockerfile @@ -0,0 +1,20 @@ +FROM php:7.4 + +WORKDIR /usr/src/app + +RUN apt-get update && \ + apt-get upgrade -y && \ + apt-get install -y git +RUN apt-get install -y zip unzip + +COPY composer* ./ +RUN curl --silent --show-error https://getcomposer.org/installer | php +RUN mv composer.phar /usr/local/bin/composer + + +COPY . . +RUN make install + +EXPOSE 8000 + +CMD [ "php", "artisan", "serve", "--host=0.0.0.0" ] diff --git a/Makefile b/Makefile index 96afd80..92e7417 100644 --- a/Makefile +++ b/Makefile @@ -1,11 +1,9 @@ install: - mkdir -p database touch database/database.sqlite touch database/database-test.sqlite composer install php artisan key:generate --force php artisan migrate --force - php artisan db:seed --force serve-setup: php artisan serve --host=127.0.0.1 diff --git a/composer.json b/composer.json index 8cbb6cb..8571ae0 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "TwilioDevEd/airtng-laravel", + "name": "twilio-deved/airtng-laravel", "description": "The Laravel Framework.", "keywords": ["twilio", "workflow", "airtng"], "license": "MIT", diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..3b6c6b8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,7 @@ +version: "3.8" +services: + app: + restart: always + build: . + ports: + - "8000:8000" diff --git a/readme.md b/readme.md index d6354ee..5586279 100644 --- a/readme.md +++ b/readme.md @@ -104,6 +104,15 @@ After the above requirements have been met: That's it! +### Docker + +If you have [Docker](https://www.docker.com/) already installed on your machine, you can use our `docker-compose.yml` to setup your project. + +1. Make sure you have the project cloned. +2. Setup the `.env` file as outlined in the [Local Development](#local-development) steps. +3. Run `docker-compose up`. +4. Follow the steps in [Local Development](#local-development) on how to expose your port to Twilio using a tool like [ngrok](https://ngrok.com/) and configure the remaining parts of your application. + ### Unit and Integration Tests First, run the migrations for the testing database. From 7438ddfc4e38134e522c727147d29edf0639c72c Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Tue, 16 Jun 2020 10:44:02 -0500 Subject: [PATCH 07/12] Update Github Actions OSs --- .github/workflows/laravel.yml | 11 +++++++---- .mergify.yml | 9 +++------ .phpunit.result.cache | 2 +- app/Http/Controllers/ReservationController.php | 13 +------------ app/User.php | 14 ++++++++++++++ 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index ed849aa..5ed47b4 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -9,10 +9,15 @@ on: jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.platform }} + strategy: + max-parallel: 3 + matrix: + platform: [windows-latest, macos-latest, ubuntu-latest] steps: - uses: actions/checkout@v2 + - uses: shivammathur/setup-php@v2 - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" - name: Install Dependencies @@ -22,9 +27,7 @@ jobs: - name: Directory Permissions run: chmod -R 777 storage bootstrap/cache - name: Create Database - run: | - mkdir -p database - touch database/database-test.sqlite + run: touch database/database-test.sqlite - name: Execute tests (Unit and Feature tests) via PHPUnit env: DB_CONNECTION: sqlite diff --git a/.mergify.yml b/.mergify.yml index 0433495..91278e5 100644 --- a/.mergify.yml +++ b/.mergify.yml @@ -2,12 +2,9 @@ pull_request_rules: - name: automatic merge for Dependabot pull requests conditions: - author=dependabot-preview[bot] - - status-success=build (macos-latest, 10) - - status-success=build (macos-latest, 12) - - status-success=build (windows-latest, 10) - - status-success=build (windows-latest, 12) - - status-success=build (ubuntu-latest, 10) - - status-success=build (ubuntu-latest, 12) + - status-success=build (macos-latest) + - status-success=build (windows-latest) + - status-success=build (ubuntu-latest) actions: merge: method: squash diff --git a/.phpunit.result.cache b/.phpunit.result.cache index 1c82cfc..8e2fe8a 100644 --- a/.phpunit.result.cache +++ b/.phpunit.result.cache @@ -1 +1 @@ -C:37:"PHPUnit\Runner\DefaultTestResultCache":880:{a:2:{s:7:"defects";a:7:{s:37:"ReservationControllerTest::testCreate";i:4;s:50:"ReservationControllerTest::testAcceptRejectConfirm";i:4;s:49:"ReservationControllerTest::testAcceptRejectReject";i:4;s:52:"ReservationControllerTest::testAcceptRejectNoPending";i:4;s:31:"UserControllerTest::testNewUser";i:4;s:53:"VacationPropertyControllerTest::testCreateNewProperty";i:4;s:48:"VacationPropertyControllerTest::testEditProperty";i:4;}s:5:"times";a:7:{s:37:"ReservationControllerTest::testCreate";d:0.098;s:50:"ReservationControllerTest::testAcceptRejectConfirm";d:0.002;s:49:"ReservationControllerTest::testAcceptRejectReject";d:0.002;s:52:"ReservationControllerTest::testAcceptRejectNoPending";d:0.002;s:31:"UserControllerTest::testNewUser";d:0.002;s:53:"VacationPropertyControllerTest::testCreateNewProperty";d:0.002;s:48:"VacationPropertyControllerTest::testEditProperty";d:0.002;}}} \ No newline at end of file +C:37:"PHPUnit\Runner\DefaultTestResultCache":879:{a:2:{s:7:"defects";a:7:{s:37:"ReservationControllerTest::testCreate";i:4;s:50:"ReservationControllerTest::testAcceptRejectConfirm";i:4;s:49:"ReservationControllerTest::testAcceptRejectReject";i:4;s:52:"ReservationControllerTest::testAcceptRejectNoPending";i:4;s:31:"UserControllerTest::testNewUser";i:4;s:53:"VacationPropertyControllerTest::testCreateNewProperty";i:4;s:48:"VacationPropertyControllerTest::testEditProperty";i:1;}s:5:"times";a:7:{s:37:"ReservationControllerTest::testCreate";d:0.103;s:50:"ReservationControllerTest::testAcceptRejectConfirm";d:0.01;s:49:"ReservationControllerTest::testAcceptRejectReject";d:0.009;s:52:"ReservationControllerTest::testAcceptRejectNoPending";d:0.007;s:31:"UserControllerTest::testNewUser";d:0.066;s:53:"VacationPropertyControllerTest::testCreateNewProperty";d:0.008;s:48:"VacationPropertyControllerTest::testEditProperty";d:0.007;}}} \ No newline at end of file diff --git a/app/Http/Controllers/ReservationController.php b/app/Http/Controllers/ReservationController.php index 75d0280..59959e0 100644 --- a/app/Http/Controllers/ReservationController.php +++ b/app/Http/Controllers/ReservationController.php @@ -7,7 +7,6 @@ use App\Reservation; use App\User; use App\VacationProperty; -use DB; use Twilio\Rest\Client; use Twilio\TwiML\MessagingResponse; @@ -47,17 +46,7 @@ public function acceptReject(Request $request) $hostNumber = $request->input('From'); $smsInput = strtolower($request->input('Body')); - $connection = config('database.default'); - $driver = config("database.connections.{$connection}.driver"); - if ($driver === 'sqlite') { - $concat_string = DB::raw("'+' || country_code || phone_number"); - } else { - $concat_string = DB::raw("CONCAT('+',country_code::text, phone_number::text)"); - } - - $host = User::where($concat_string, 'LIKE', "%".$hostNumber."%") - ->get() - ->first(); + $host = User::getUsersByFullNumber($hostNumber)->first(); $reservation = $host->pendingReservations()->first(); $smsResponse = null; diff --git a/app/User.php b/app/User.php index c2e0ec1..d2c48c9 100644 --- a/app/User.php +++ b/app/User.php @@ -9,6 +9,7 @@ use Illuminate\Contracts\Auth\Authenticatable as AuthenticatableContract; use Illuminate\Contracts\Auth\Access\Authorizable as AuthorizableContract; use Illuminate\Contracts\Auth\CanResetPassword as CanResetPasswordContract; +use DB; class User extends Model implements AuthenticatableContract, AuthorizableContract, @@ -64,4 +65,17 @@ public function fullNumber() { return '+' . $this->country_code . $this->phone_number; } + + public static function getUsersByFullNumber($number) + { + $connection = config('database.default'); + $driver = config("database.connections.{$connection}.driver"); + if ($driver === 'sqlite') { + $concat_string = DB::raw("'+' || country_code || phone_number"); + } else { + $concat_string = DB::raw("CONCAT('+',country_code::text, phone_number::text)"); + } + + return self::where($concat_string, 'LIKE', "%".$number."%")->get(); + } } From e2c29f75190d71c506da6ef007eced79a129b643 Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Tue, 16 Jun 2020 11:01:53 -0500 Subject: [PATCH 08/12] Fix dependency tree --- .gitignore | 1 + composer.lock | 1270 ++++++++++++++++++++++++++++++------------------- 2 files changed, 794 insertions(+), 477 deletions(-) diff --git a/.gitignore b/.gitignore index 0a81be3..69dbd65 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,4 @@ Homestead.yaml Homestead.json .env *.DS_Store +.phpunit.result.cache diff --git a/composer.lock b/composer.lock index ec52062..c64a095 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,54 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "34bb6a20f8e33f8b1903cba69adc04af", + "content-hash": "7f2e498379cfb5226ec6241ec8df0aa6", "packages": [ + { + "name": "brick/math", + "version": "0.8.15", + "source": { + "type": "git", + "url": "https://github.com/brick/math.git", + "reference": "9b08d412b9da9455b210459ff71414de7e6241cd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/brick/math/zipball/9b08d412b9da9455b210459ff71414de7e6241cd", + "reference": "9b08d412b9da9455b210459ff71414de7e6241cd", + "shasum": "" + }, + "require": { + "ext-json": "*", + "php": "^7.1|^8.0" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.2", + "phpunit/phpunit": "^7.5.15|^8.5", + "vimeo/psalm": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Brick\\Math\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Arbitrary-precision arithmetic library", + "keywords": [ + "Arbitrary-precision", + "BigInteger", + "BigRational", + "arithmetic", + "bigdecimal", + "bignum", + "brick", + "math" + ], + "time": "2020-04-15T15:59:35+00:00" + }, { "name": "dnoegel/php-xdg-base-dir", "version": "v0.1.1", @@ -41,33 +87,37 @@ }, { "name": "doctrine/inflector", - "version": "1.3.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/doctrine/inflector.git", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1" + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/ec3a55242203ffa6a4b27c58176da97ff0a7aec1", - "reference": "ec3a55242203ffa6a4b27c58176da97ff0a7aec1", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/9cf661f4eb38f7c881cac67c75ea9b00bf97b210", + "reference": "9cf661f4eb38f7c881cac67c75ea9b00bf97b210", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.2 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^6.2" + "doctrine/coding-standard": "^7.0", + "phpstan/phpstan": "^0.11", + "phpstan/phpstan-phpunit": "^0.11", + "phpstan/phpstan-strict-rules": "^0.11", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Common\\Inflector\\": "lib/Doctrine/Common/Inflector" + "Doctrine\\Inflector\\": "lib/Doctrine/Inflector" } }, "notification-url": "https://packagist.org/downloads/", @@ -96,32 +146,38 @@ "email": "schmittjoh@gmail.com" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "PHP Doctrine Inflector is a small library that can perform string manipulations with regard to upper/lowercase and singular/plural forms of words.", + "homepage": "https://www.doctrine-project.org/projects/inflector.html", "keywords": [ "inflection", - "pluralize", - "singularize", - "string" + "inflector", + "lowercase", + "manipulation", + "php", + "plural", + "singular", + "strings", + "uppercase", + "words" ], - "time": "2019-10-30T19:59:35+00:00" + "time": "2020-05-29T15:13:26+00:00" }, { "name": "doctrine/lexer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/doctrine/lexer.git", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6" + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/lexer/zipball/5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", - "reference": "5242d66dbeb21a30dd8a3e66bf7a73b66e05e1f6", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/e864bbf5904cb8f5bb334f99209b48018522f042", + "reference": "e864bbf5904cb8f5bb334f99209b48018522f042", "shasum": "" }, "require": { - "php": "^7.2" + "php": "^7.2 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -166,7 +222,7 @@ "parser", "php" ], - "time": "2019-10-30T14:39:59+00:00" + "time": "2020-05-25T17:44:05+00:00" }, { "name": "dragonmantank/cron-expression", @@ -334,124 +390,36 @@ ], "time": "2020-02-22T01:51:47+00:00" }, - { - "name": "jakub-onderka/php-console-color", - "version": "v0.2", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", - "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "1.0", - "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "~4.3", - "squizlabs/php_codesniffer": "1.*" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleColor\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-2-Clause" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com" - } - ], - "time": "2018-09-29T17:23:10+00:00" - }, - { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.4", - "source": { - "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", - "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "jakub-onderka/php-console-color": "~0.2", - "php": ">=5.4.0" - }, - "require-dev": { - "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~1.0", - "jakub-onderka/php-var-dump-check": "~0.1", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" - }, - "type": "library", - "autoload": { - "psr-4": { - "JakubOnderka\\PhpConsoleHighlighter\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" - } - ], - "description": "Highlight PHP code in terminal", - "time": "2018-09-29T18:48:56+00:00" - }, { "name": "laravel/framework", - "version": "v7.2.2", + "version": "v7.16.1", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "de01e2926a7560c43fb763d86de134a52b46928b" + "reference": "dc9cd8338d222dec2d9962553639e08c4585fa5b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/de01e2926a7560c43fb763d86de134a52b46928b", - "reference": "de01e2926a7560c43fb763d86de134a52b46928b", + "url": "https://api.github.com/repos/laravel/framework/zipball/dc9cd8338d222dec2d9962553639e08c4585fa5b", + "reference": "dc9cd8338d222dec2d9962553639e08c4585fa5b", "shasum": "" }, "require": { - "doctrine/inflector": "^1.1", + "doctrine/inflector": "^1.4|^2.0", "dragonmantank/cron-expression": "^2.0", "egulias/email-validator": "^2.1.10", "ext-json": "*", "ext-mbstring": "*", "ext-openssl": "*", "league/commonmark": "^1.3", - "league/flysystem": "^1.0.8", + "league/flysystem": "^1.0.34", "monolog/monolog": "^2.0", "nesbot/carbon": "^2.17", "opis/closure": "^3.1", "php": "^7.2.5", "psr/container": "^1.0", "psr/simple-cache": "^1.0", - "ramsey/uuid": "^3.7", + "ramsey/uuid": "^3.7|^4.0", "swiftmailer/swiftmailer": "^6.0", "symfony/console": "^5.0", "symfony/error-handler": "^5.0", @@ -459,6 +427,7 @@ "symfony/http-foundation": "^5.0", "symfony/http-kernel": "^5.0", "symfony/mime": "^5.0", + "symfony/polyfill-php73": "^1.17", "symfony/process": "^5.0", "symfony/routing": "^5.0", "symfony/var-dumper": "^5.0", @@ -469,6 +438,9 @@ "conflict": { "tightenco/collect": "<5.5.33" }, + "provide": { + "psr/container-implementation": "1.0" + }, "replace": { "illuminate/auth": "self.version", "illuminate/broadcasting": "self.version", @@ -517,6 +489,7 @@ "suggest": { "aws/aws-sdk-php": "Required to use the SQS queue driver, DynamoDb failed job storage and SES mail driver (^3.0).", "doctrine/dbal": "Required to rename columns and drop SQLite columns (^2.6).", + "ext-ftp": "Required to use the Flysystem FTP driver.", "ext-gd": "Required to use Illuminate\\Http\\Testing\\FileFactory::image().", "ext-memcached": "Required to use the memcache cache driver.", "ext-pcntl": "Required to use all features of the queue worker.", @@ -537,6 +510,7 @@ "psr/http-message": "Required to allow Storage::put to accept a StreamInterface (^1.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^4.0).", "symfony/cache": "Required to PSR-6 cache bridge (^5.0).", + "symfony/filesystem": "Required to create relative storage directory symbolic links (^5.0).", "symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^2.0).", "wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)." }, @@ -571,20 +545,20 @@ "framework", "laravel" ], - "time": "2020-03-20T18:11:43+00:00" + "time": "2020-06-16T14:31:25+00:00" }, { "name": "laravel/tinker", - "version": "v2.3.0", + "version": "v2.4.0", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "5271893ec90ad9f8d3e34792ac6b72cad3b84cc2" + "reference": "cde90a7335a2130a4488beb68f4b2141869241db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/5271893ec90ad9f8d3e34792ac6b72cad3b84cc2", - "reference": "5271893ec90ad9f8d3e34792ac6b72cad3b84cc2", + "url": "https://api.github.com/repos/laravel/tinker/zipball/cde90a7335a2130a4488beb68f4b2141869241db", + "reference": "cde90a7335a2130a4488beb68f4b2141869241db", "shasum": "" }, "require": { @@ -592,12 +566,12 @@ "illuminate/contracts": "^6.0|^7.0|^8.0", "illuminate/support": "^6.0|^7.0|^8.0", "php": "^7.2", - "psy/psysh": "^0.9|^0.10", - "symfony/var-dumper": "^4.0|^5.0" + "psy/psysh": "^0.10.3", + "symfony/var-dumper": "^4.3|^5.0" }, "require-dev": { "mockery/mockery": "^1.3.1", - "phpunit/phpunit": "^8.0|^9.0" + "phpunit/phpunit": "^8.4|^9.0" }, "suggest": { "illuminate/database": "The Illuminate Database package (^6.0|^7.0|^8.0)." @@ -635,20 +609,20 @@ "laravel", "psysh" ], - "time": "2020-03-17T15:34:59+00:00" + "time": "2020-04-07T15:01:31+00:00" }, { "name": "laravelcollective/html", - "version": "v6.1.0", + "version": "v6.1.2", "source": { "type": "git", "url": "https://github.com/LaravelCollective/html.git", - "reference": "64f2268bf41bf02b3a9dd3c30f102e934d721664" + "reference": "5ef9a3c9ae2423fe5618996f3cde375d461a3fc6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/LaravelCollective/html/zipball/64f2268bf41bf02b3a9dd3c30f102e934d721664", - "reference": "64f2268bf41bf02b3a9dd3c30f102e934d721664", + "url": "https://api.github.com/repos/LaravelCollective/html/zipball/5ef9a3c9ae2423fe5618996f3cde375d461a3fc6", + "reference": "5ef9a3c9ae2423fe5618996f3cde375d461a3fc6", "shasum": "" }, "require": { @@ -703,20 +677,20 @@ ], "description": "HTML and Form Builders for the Laravel Framework", "homepage": "https://laravelcollective.com", - "time": "2020-03-02T16:41:28+00:00" + "time": "2020-05-19T18:02:16+00:00" }, { "name": "league/commonmark", - "version": "1.3.1", + "version": "1.4.3", "source": { "type": "git", "url": "https://github.com/thephpleague/commonmark.git", - "reference": "8015f806173c6ee54de25a87c2d69736696e88db" + "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/8015f806173c6ee54de25a87c2d69736696e88db", - "reference": "8015f806173c6ee54de25a87c2d69736696e88db", + "url": "https://api.github.com/repos/thephpleague/commonmark/zipball/412639f7cfbc0b31ad2455b2fe965095f66ae505", + "reference": "412639f7cfbc0b31ad2455b2fe965095f66ae505", "shasum": "" }, "require": { @@ -734,7 +708,7 @@ "github/gfm": "0.29.0", "michelf/php-markdown": "~1.4", "mikehaertl/php-shellcommand": "^1.4", - "phpstan/phpstan-shim": "^0.11.5", + "phpstan/phpstan": "^0.12", "phpunit/phpunit": "^7.5", "scrutinizer/ocular": "^1.5", "symfony/finder": "^4.2" @@ -777,20 +751,20 @@ "md", "parser" ], - "time": "2020-02-28T18:53:50+00:00" + "time": "2020-05-04T22:15:21+00:00" }, { "name": "league/flysystem", - "version": "1.0.66", + "version": "1.0.69", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21" + "reference": "7106f78428a344bc4f643c233a94e48795f10967" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/021569195e15f8209b1c4bebb78bd66aa4f08c21", - "reference": "021569195e15f8209b1c4bebb78bd66aa4f08c21", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/7106f78428a344bc4f643c233a94e48795f10967", + "reference": "7106f78428a344bc4f643c233a94e48795f10967", "shasum": "" }, "require": { @@ -861,24 +835,24 @@ "sftp", "storage" ], - "time": "2020-03-17T18:58:12+00:00" + "time": "2020-05-18T15:13:39+00:00" }, { "name": "monolog/monolog", - "version": "2.0.2", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8" + "reference": "38914429aac460e8e4616c8cb486ecb40ec90bb1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/c861fcba2ca29404dc9e617eedd9eff4616986b8", - "reference": "c861fcba2ca29404dc9e617eedd9eff4616986b8", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/38914429aac460e8e4616c8cb486ecb40ec90bb1", + "reference": "38914429aac460e8e4616c8cb486ecb40ec90bb1", "shasum": "" }, "require": { - "php": "^7.2", + "php": ">=7.2", "psr/log": "^1.0.1" }, "provide": { @@ -889,11 +863,11 @@ "doctrine/couchdb": "~1.0@dev", "elasticsearch/elasticsearch": "^6.0", "graylog2/gelf-php": "^1.4.2", - "jakub-onderka/php-parallel-lint": "^0.9", "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", + "php-parallel-lint/php-parallel-lint": "^1.0", "phpspec/prophecy": "^1.6.1", - "phpunit/phpunit": "^8.3", + "phpunit/phpunit": "^8.5", "predis/predis": "^1.1", "rollbar/rollbar": "^1.3", "ruflin/elastica": ">=0.90 <3.0", @@ -942,28 +916,30 @@ "logging", "psr-3" ], - "time": "2019-12-20T14:22:59+00:00" + "time": "2020-05-22T08:12:19+00:00" }, { "name": "nesbot/carbon", - "version": "2.31.0", + "version": "2.35.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d" + "reference": "4b9bd835261ef23d36397a46a76b496a458305e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", - "reference": "bbc0ab53f41a4c6f223c18efcdbd9bc725eb5d2d", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/4b9bd835261ef23d36397a46a76b496a458305e5", + "reference": "4b9bd835261ef23d36397a46a76b496a458305e5", "shasum": "" }, "require": { "ext-json": "*", "php": "^7.1.8 || ^8.0", + "symfony/polyfill-mbstring": "^1.0", "symfony/translation": "^3.4 || ^4.0 || ^5.0" }, "require-dev": { + "doctrine/orm": "^2.7", "friendsofphp/php-cs-fixer": "^2.14 || ^3.0", "kylekatarnls/multi-tester": "^1.1", "phpmd/phpmd": "^2.8", @@ -977,7 +953,8 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.x-dev" + "dev-master": "2.x-dev", + "dev-3.x": "3.x-dev" }, "laravel": { "providers": [ @@ -1012,20 +989,20 @@ "datetime", "time" ], - "time": "2020-03-01T11:11:58+00:00" + "time": "2020-05-24T18:27:52+00:00" }, { "name": "nikic/php-parser", - "version": "v4.3.0", + "version": "v4.5.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc" + "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/9a9981c347c5c49d6dfe5cf826bb882b824080dc", - "reference": "9a9981c347c5c49d6dfe5cf826bb882b824080dc", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/53c2753d756f5adb586dca79c2ec0e2654dd9463", + "reference": "53c2753d756f5adb586dca79c2ec0e2654dd9463", "shasum": "" }, "require": { @@ -1064,20 +1041,20 @@ "parser", "php" ], - "time": "2019-11-08T13:50:10+00:00" + "time": "2020-06-03T07:24:19+00:00" }, { "name": "opis/closure", - "version": "3.5.1", + "version": "3.5.4", "source": { "type": "git", "url": "https://github.com/opis/closure.git", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969" + "reference": "1d0deef692f66dae5d70663caee2867d0971306b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/opis/closure/zipball/93ebc5712cdad8d5f489b500c59d122df2e53969", - "reference": "93ebc5712cdad8d5f489b500c59d122df2e53969", + "url": "https://api.github.com/repos/opis/closure/zipball/1d0deef692f66dae5d70663caee2867d0971306b", + "reference": "1d0deef692f66dae5d70663caee2867d0971306b", "shasum": "" }, "require": { @@ -1125,65 +1102,20 @@ "serialization", "serialize" ], - "time": "2019-11-29T22:36:02+00:00" - }, - { - "name": "paragonie/random_compat", - "version": "v9.99.99", - "source": { - "type": "git", - "url": "https://github.com/paragonie/random_compat.git", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95", - "shasum": "" - }, - "require": { - "php": "^7" - }, - "require-dev": { - "phpunit/phpunit": "4.*|5.*", - "vimeo/psalm": "^1" - }, - "suggest": { - "ext-libsodium": "Provides a modern crypto API that can be used to generate random bytes." - }, - "type": "library", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Paragon Initiative Enterprises", - "email": "security@paragonie.com", - "homepage": "https://paragonie.com" - } - ], - "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", - "keywords": [ - "csprng", - "polyfill", - "pseudorandom", - "random" - ], - "time": "2018-07-02T15:55:56+00:00" + "time": "2020-06-07T11:41:29+00:00" }, { "name": "phpoption/phpoption", - "version": "1.7.3", + "version": "1.7.4", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae" + "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/4acfd6a4b33a509d8c88f50e5222f734b6aeebae", - "reference": "4acfd6a4b33a509d8c88f50e5222f734b6aeebae", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3", + "reference": "b2ada2ad5d8a32b89088b8adc31ecd2e3a13baf3", "shasum": "" }, "require": { @@ -1225,7 +1157,7 @@ "php", "type" ], - "time": "2020-03-21T18:07:53+00:00" + "time": "2020-06-07T10:40:07+00:00" }, { "name": "psr/container", @@ -1324,16 +1256,16 @@ }, { "name": "psr/log", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801" + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/446d54b4cb6bf489fc9d75f55843658e6f25d801", - "reference": "446d54b4cb6bf489fc9d75f55843658e6f25d801", + "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", + "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", "shasum": "" }, "require": { @@ -1367,7 +1299,7 @@ "psr", "psr-3" ], - "time": "2019-11-01T11:05:21+00:00" + "time": "2020-03-23T09:12:05+00:00" }, { "name": "psr/simple-cache", @@ -1419,23 +1351,22 @@ }, { "name": "psy/psysh", - "version": "v0.10.2", + "version": "v0.10.4", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "573c2362c3cdebe846b4adae4b630eecb350afd8" + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/573c2362c3cdebe846b4adae4b630eecb350afd8", - "reference": "573c2362c3cdebe846b4adae4b630eecb350afd8", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/a8aec1b2981ab66882a01cce36a49b6317dc3560", + "reference": "a8aec1b2981ab66882a01cce36a49b6317dc3560", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1.*", "ext-json": "*", "ext-tokenizer": "*", - "jakub-onderka/php-console-highlighter": "0.4.*|0.3.*", "nikic/php-parser": "~4.0|~3.0|~2.0|~1.3", "php": "^8.0 || ^7.0 || ^5.5.9", "symfony/console": "~5.0|~4.0|~3.0|^2.4.2|~2.3.10", @@ -1443,7 +1374,7 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.2", - "hoa/console": "~3.16|~2.15" + "hoa/console": "3.17.*" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -1488,57 +1419,127 @@ "interactive", "shell" ], - "time": "2020-03-21T06:55:27+00:00" + "time": "2020-05-03T19:32:03+00:00" + }, + { + "name": "ramsey/collection", + "version": "1.0.1", + "source": { + "type": "git", + "url": "https://github.com/ramsey/collection.git", + "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ramsey/collection/zipball/925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", + "reference": "925ad8cf55ba7a3fc92e332c58fd0478ace3e1ca", + "shasum": "" + }, + "require": { + "php": "^7.2" + }, + "require-dev": { + "dealerdirect/phpcodesniffer-composer-installer": "^0.5.0", + "fzaninotto/faker": "^1.5", + "jakub-onderka/php-parallel-lint": "^1", + "jangregor/phpstan-prophecy": "^0.6", + "mockery/mockery": "^1.3", + "phpstan/extension-installer": "^1", + "phpstan/phpdoc-parser": "0.4.1", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5" + }, + "type": "library", + "autoload": { + "psr-4": { + "Ramsey\\Collection\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" + } + ], + "description": "A PHP 7.2+ library for representing and manipulating collections.", + "homepage": "https://github.com/ramsey/collection", + "keywords": [ + "array", + "collection", + "hash", + "map", + "queue", + "set" + ], + "time": "2020-01-05T00:22:59+00:00" }, { "name": "ramsey/uuid", - "version": "3.9.3", + "version": "4.0.1", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92" + "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/7e1633a6964b48589b142d60542f9ed31bd37a92", - "reference": "7e1633a6964b48589b142d60542f9ed31bd37a92", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", + "reference": "ba8fff1d3abb8bb4d35a135ed22a31c6ef3ede3d", "shasum": "" }, "require": { + "brick/math": "^0.8", "ext-json": "*", - "paragonie/random_compat": "^1 | ^2 | 9.99.99", - "php": "^5.4 | ^7 | ^8", + "php": "^7.2 || ^8", + "ramsey/collection": "^1.0", "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" }, "require-dev": { - "codeception/aspect-mock": "^1 | ^2", - "doctrine/annotations": "^1.2", - "goaop/framework": "1.0.0-alpha.2 | ^1 | ^2.1", - "jakub-onderka/php-parallel-lint": "^1", - "mockery/mockery": "^0.9.11 | ^1", + "codeception/aspect-mock": "^3", + "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2", + "doctrine/annotations": "^1.8", + "goaop/framework": "^2", + "mockery/mockery": "^1.3", "moontoast/math": "^1.1", "paragonie/random-lib": "^2", - "php-mock/php-mock-phpunit": "^0.3 | ^1.1", - "phpunit/phpunit": "^4.8 | ^5.4 | ^6.5", - "squizlabs/php_codesniffer": "^3.5" + "php-mock/php-mock-mockery": "^1.3", + "php-mock/php-mock-phpunit": "^2.5", + "php-parallel-lint/php-parallel-lint": "^1.1", + "phpstan/extension-installer": "^1.0", + "phpstan/phpdoc-parser": "0.4.3", + "phpstan/phpstan": "^0.12", + "phpstan/phpstan-mockery": "^0.12", + "phpstan/phpstan-phpunit": "^0.12", + "phpunit/phpunit": "^8.5", + "psy/psysh": "^0.10.0", + "slevomat/coding-standard": "^6.0", + "squizlabs/php_codesniffer": "^3.5", + "vimeo/psalm": "3.9.4" }, "suggest": { - "ext-ctype": "Provides support for PHP Ctype functions", - "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", - "ext-openssl": "Provides the OpenSSL extension for use with the OpenSslGenerator", - "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", - "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "ext-bcmath": "Enables faster math with arbitrary-precision integers using BCMath.", + "ext-ctype": "Enables faster processing of character classification using ctype functions.", + "ext-gmp": "Enables faster math with arbitrary-precision integers using GMP.", + "ext-uuid": "Enables the use of PeclUuidTimeGenerator and PeclUuidRandomGenerator.", "paragonie/random-lib": "Provides RandomLib for use with the RandomLibAdapter", - "ramsey/uuid-console": "A console application for generating UUIDs with ramsey/uuid", "ramsey/uuid-doctrine": "Allows the use of Ramsey\\Uuid\\Uuid as Doctrine field type." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "4.x-dev" } }, "autoload": { @@ -1553,29 +1554,14 @@ "license": [ "MIT" ], - "authors": [ - { - "name": "Ben Ramsey", - "email": "ben@benramsey.com", - "homepage": "https://benramsey.com" - }, - { - "name": "Marijn Huizendveld", - "email": "marijn.huizendveld@gmail.com" - }, - { - "name": "Thibaud Fabre", - "email": "thibaud@aztech.io" - } - ], - "description": "Formerly rhumsaa/uuid. A PHP 5.4+ library for generating RFC 4122 version 1, 3, 4, and 5 universally unique identifiers (UUID).", + "description": "A PHP library for generating and working with universally unique identifiers (UUIDs).", "homepage": "https://github.com/ramsey/uuid", "keywords": [ "guid", "identifier", "uuid" ], - "time": "2020-02-21T04:36:14+00:00" + "time": "2020-03-29T20:13:32+00:00" }, { "name": "swiftmailer/swiftmailer", @@ -1641,26 +1627,29 @@ }, { "name": "symfony/console", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d29e2d36941de13600c399e393a60b8cfe59ac49" + "reference": "34ac555a3627e324b660e318daa07572e1140123" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d29e2d36941de13600c399e393a60b8cfe59ac49", - "reference": "d29e2d36941de13600c399e393a60b8cfe59ac49", + "url": "https://api.github.com/repos/symfony/console/zipball/34ac555a3627e324b660e318daa07572e1140123", + "reference": "34ac555a3627e324b660e318daa07572e1140123", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php73": "^1.8", - "symfony/service-contracts": "^1.1|^2" + "symfony/polyfill-php80": "^1.15", + "symfony/service-contracts": "^1.1|^2", + "symfony/string": "^5.1" }, "conflict": { "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", "symfony/event-dispatcher": "<4.4", "symfony/lock": "<4.4", "symfony/process": "<4.4" @@ -1686,7 +1675,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1713,29 +1702,29 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2020-02-24T15:05:31+00:00" + "time": "2020-06-15T12:59:21+00:00" }, { "name": "symfony/css-selector", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44" + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/a0b51ba9938ccc206d9284de7eb527c2d4550b44", - "reference": "a0b51ba9938ccc206d9284de7eb527c2d4550b44", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/e544e24472d4c97b2d11ade7caacd446727c6bf9", + "reference": "e544e24472d4c97b2d11ade7caacd446727c6bf9", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1766,35 +1755,83 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2020-02-04T09:41:09+00:00" + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337", + "reference": "dd99cb3a0aff6cadd2a8d7d7ed72c2161e218337", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.1-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "time": "2020-05-27T08:34:37+00:00" }, { "name": "symfony/error-handler", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "24a938d9913f42d006ee1ca0164ea1f29c1067ec" + "reference": "7d0b927b9d3dc41d7d46cda38cbfcd20cdcbb896" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/24a938d9913f42d006ee1ca0164ea1f29c1067ec", - "reference": "24a938d9913f42d006ee1ca0164ea1f29c1067ec", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/7d0b927b9d3dc41d7d46cda38cbfcd20cdcbb896", + "reference": "7d0b927b9d3dc41d7d46cda38cbfcd20cdcbb896", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/log": "^1.0", + "symfony/polyfill-php80": "^1.15", "symfony/var-dumper": "^4.4|^5.0" }, "require-dev": { + "symfony/deprecation-contracts": "^2.1", "symfony/http-kernel": "^4.4|^5.0", "symfony/serializer": "^4.4|^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1821,25 +1858,27 @@ ], "description": "Symfony ErrorHandler Component", "homepage": "https://symfony.com", - "time": "2020-02-29T10:07:09+00:00" + "time": "2020-05-30T20:35:19+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "b45ad88b253c5a9702ce218e201d89c85d148cea" + "reference": "cc0d059e2e997e79ca34125a52f3e33de4424ac7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/b45ad88b253c5a9702ce218e201d89c85d148cea", - "reference": "b45ad88b253c5a9702ce218e201d89c85d148cea", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/cc0d059e2e997e79ca34125a52f3e33de4424ac7", + "reference": "cc0d059e2e997e79ca34125a52f3e33de4424ac7", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/event-dispatcher-contracts": "^2" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/event-dispatcher-contracts": "^2", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/dependency-injection": "<4.4" @@ -1864,7 +1903,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1891,24 +1930,24 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2020-02-22T20:09:08+00:00" + "time": "2020-05-20T17:43:50+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v2.0.1", + "version": "v2.1.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "af23c2584d4577d54661c434446fb8fbed6025dd" + "reference": "405952c4e90941a17e52ef7489a2bd94870bb290" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/af23c2584d4577d54661c434446fb8fbed6025dd", - "reference": "af23c2584d4577d54661c434446fb8fbed6025dd", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/405952c4e90941a17e52ef7489a2bd94870bb290", + "reference": "405952c4e90941a17e52ef7489a2bd94870bb290", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/event-dispatcher": "^1" }, "suggest": { @@ -1917,7 +1956,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -1949,29 +1988,29 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-05-20T17:43:50+00:00" }, { "name": "symfony/finder", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "6251f201187ca9d66f6b099d3de65d279e971138" + "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6251f201187ca9d66f6b099d3de65d279e971138", - "reference": "6251f201187ca9d66f6b099d3de65d279e971138", + "url": "https://api.github.com/repos/symfony/finder/zipball/4298870062bfc667cb78d2b379be4bf5dec5f187", + "reference": "4298870062bfc667cb78d2b379be4bf5dec5f187", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -1998,35 +2037,41 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2020-02-14T07:43:07+00:00" + "time": "2020-05-20T17:43:50+00:00" }, { "name": "symfony/http-foundation", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "6f9c2ba72f4295d7ce6cf9f79dbb18036291d335" + "reference": "f93055171b847915225bd5b0a5792888419d8d75" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/6f9c2ba72f4295d7ce6cf9f79dbb18036291d335", - "reference": "6f9c2ba72f4295d7ce6cf9f79dbb18036291d335", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f93055171b847915225bd5b0a5792888419d8d75", + "reference": "f93055171b847915225bd5b0a5792888419d8d75", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/mime": "^4.4|^5.0", - "symfony/polyfill-mbstring": "~1.1" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-mbstring": "~1.1", + "symfony/polyfill-php80": "^1.15" }, "require-dev": { "predis/predis": "~1.0", - "symfony/expression-language": "^4.4|^5.0" + "symfony/cache": "^4.4|^5.0", + "symfony/expression-language": "^4.4|^5.0", + "symfony/mime": "^4.4|^5.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -2053,35 +2098,38 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2020-02-14T07:43:07+00:00" + "time": "2020-06-15T06:52:54+00:00" }, { "name": "symfony/http-kernel", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "021d7d54e080405678f2d8c54cb31d0bb03b4520" + "reference": "a18c27ace1ef344ffcb129a5b089bad7643b387a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/021d7d54e080405678f2d8c54cb31d0bb03b4520", - "reference": "021d7d54e080405678f2d8c54cb31d0bb03b4520", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a18c27ace1ef344ffcb129a5b089bad7643b387a", + "reference": "a18c27ace1ef344ffcb129a5b089bad7643b387a", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/log": "~1.0", + "symfony/deprecation-contracts": "^2.1", "symfony/error-handler": "^4.4|^5.0", "symfony/event-dispatcher": "^5.0", "symfony/http-foundation": "^4.4|^5.0", "symfony/polyfill-ctype": "^1.8", - "symfony/polyfill-php73": "^1.9" + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/browser-kit": "<4.4", "symfony/cache": "<5.0", "symfony/config": "<5.0", + "symfony/console": "<4.4", "symfony/dependency-injection": "<4.4", "symfony/doctrine-bridge": "<5.0", "symfony/form": "<5.0", @@ -2122,7 +2170,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -2149,26 +2197,27 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2020-02-29T10:41:30+00:00" + "time": "2020-06-15T13:51:38+00:00" }, { "name": "symfony/mime", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c" + "reference": "c0c418f05e727606e85b482a8591519c4712cf45" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/9b3e5b5e58c56bbd76628c952d2b78556d305f3c", - "reference": "9b3e5b5e58c56bbd76628c952d2b78556d305f3c", + "url": "https://api.github.com/repos/symfony/mime/zipball/c0c418f05e727606e85b482a8591519c4712cf45", + "reference": "c0c418f05e727606e85b482a8591519c4712cf45", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/polyfill-intl-idn": "^1.10", - "symfony/polyfill-mbstring": "^1.0" + "symfony/polyfill-mbstring": "^1.0", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/mailer": "<4.4" @@ -2180,7 +2229,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -2211,20 +2260,20 @@ "mime", "mime-type" ], - "time": "2020-02-04T09:41:09+00:00" + "time": "2020-06-09T15:07:35+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.14.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38" + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", - "reference": "fbdeaec0df06cf3d51c93de80c7eb76e271f5a38", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e94c8b1bbe2bc77507a1056cdb06451c75b427f9", + "reference": "e94c8b1bbe2bc77507a1056cdb06451c75b427f9", "shasum": "" }, "require": { @@ -2236,7 +2285,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -2269,20 +2318,20 @@ "polyfill", "portable" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-05-12T16:14:59+00:00" }, { "name": "symfony/polyfill-iconv", - "version": "v1.14.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e" + "reference": "c4de7601eefbf25f9d47190abe07f79fe0a27424" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/926832ce51059bb58211b7b2080a88e0c3b5328e", - "reference": "926832ce51059bb58211b7b2080a88e0c3b5328e", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/c4de7601eefbf25f9d47190abe07f79fe0a27424", + "reference": "c4de7601eefbf25f9d47190abe07f79fe0a27424", "shasum": "" }, "require": { @@ -2294,7 +2343,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -2328,20 +2377,80 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-intl-grapheme", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "e094b0770f7833fdf257e6ba4775be4e258230b2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/e094b0770f7833fdf257e6ba4775be4e258230b2", + "reference": "e094b0770f7833fdf257e6ba4775be4e258230b2", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's grapheme_* functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "grapheme", + "intl", + "polyfill", + "portable", + "shim" + ], + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-intl-idn", - "version": "v1.14.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-idn.git", - "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a" + "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/6842f1a39cf7d580655688069a03dd7cd83d244a", - "reference": "6842f1a39cf7d580655688069a03dd7cd83d244a", + "url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/3bff59ea7047e925be6b7f2059d60af31bb46d6a", + "reference": "3bff59ea7047e925be6b7f2059d60af31bb46d6a", "shasum": "" }, "require": { @@ -2355,7 +2464,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -2390,20 +2499,83 @@ "portable", "shim" ], - "time": "2020-01-17T12:01:36+00:00" + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "1357b1d168eb7f68ad6a134838e46b0b159444a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/1357b1d168eb7f68ad6a134838e46b0b159444a9", + "reference": "1357b1d168eb7f68ad6a134838e46b0b159444a9", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "time": "2020-05-12T16:14:59+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.14.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2" + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/34094cfa9abe1f0f14f48f490772db7a775559f2", - "reference": "34094cfa9abe1f0f14f48f490772db7a775559f2", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fa79b11539418b02fc5e1897267673ba2c19419c", + "reference": "fa79b11539418b02fc5e1897267673ba2c19419c", "shasum": "" }, "require": { @@ -2415,7 +2587,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -2449,20 +2621,20 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php72", - "version": "v1.14.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php72.git", - "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf" + "reference": "f048e612a3905f34931127360bdd2def19a5e582" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", - "reference": "46ecacf4751dd0dc81e4f6bf01dbf9da1dc1dadf", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/f048e612a3905f34931127360bdd2def19a5e582", + "reference": "f048e612a3905f34931127360bdd2def19a5e582", "shasum": "" }, "require": { @@ -2471,7 +2643,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -2504,20 +2676,20 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.14.0", + "version": "v1.17.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675" + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/5e66a0fa1070bf46bec4bea7962d285108edd675", - "reference": "5e66a0fa1070bf46bec4bea7962d285108edd675", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/a760d8964ff79ab9bf057613a5808284ec852ccc", + "reference": "a760d8964ff79ab9bf057613a5808284ec852ccc", "shasum": "" }, "require": { @@ -2526,7 +2698,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.14-dev" + "dev-master": "1.17-dev" } }, "autoload": { @@ -2562,29 +2734,92 @@ "portable", "shim" ], - "time": "2020-01-13T11:15:53+00:00" + "time": "2020-05-12T16:47:27+00:00" + }, + { + "name": "symfony/polyfill-php80", + "version": "v1.17.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/5e30b2799bc1ad68f7feb62b60a73743589438dd", + "reference": "5e30b2799bc1ad68f7feb62b60a73743589438dd", + "shasum": "" + }, + "require": { + "php": ">=7.0.8" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.17-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "files": [ + "bootstrap.php" + ], + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2020-05-12T16:47:27+00:00" }, { "name": "symfony/process", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "fd4a86dd7e36437f2fc080d8c42c7415d828a0a8" + "reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/fd4a86dd7e36437f2fc080d8c42c7415d828a0a8", - "reference": "fd4a86dd7e36437f2fc080d8c42c7415d828a0a8", + "url": "https://api.github.com/repos/symfony/process/zipball/7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1", + "reference": "7f6378c1fa2147eeb1b4c385856ce9de0d46ebd1", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.15" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -2611,24 +2846,26 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2020-02-08T17:00:58+00:00" + "time": "2020-05-30T20:35:19+00:00" }, { "name": "symfony/routing", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "d6ca39fd05c1902bf34d724ba06fb8044a0b46de" + "reference": "bbd0ba121d623f66d165a55a108008968911f3eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/d6ca39fd05c1902bf34d724ba06fb8044a0b46de", - "reference": "d6ca39fd05c1902bf34d724ba06fb8044a0b46de", + "url": "https://api.github.com/repos/symfony/routing/zipball/bbd0ba121d623f66d165a55a108008968911f3eb", + "reference": "bbd0ba121d623f66d165a55a108008968911f3eb", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "symfony/config": "<5.0", @@ -2654,7 +2891,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -2687,24 +2924,24 @@ "uri", "url" ], - "time": "2020-02-25T14:24:11+00:00" + "time": "2020-06-10T11:49:58+00:00" }, { "name": "symfony/service-contracts", - "version": "v2.0.1", + "version": "v2.1.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "144c5e51266b281231e947b51223ba14acf1a749" + "reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/144c5e51266b281231e947b51223ba14acf1a749", - "reference": "144c5e51266b281231e947b51223ba14acf1a749", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/66a8f0957a3ca54e4f724e49028ab19d75a8918b", + "reference": "66a8f0957a3ca54e4f724e49028ab19d75a8918b", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "psr/container": "^1.0" }, "suggest": { @@ -2713,7 +2950,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -2745,25 +2982,97 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-05-20T17:43:50+00:00" + }, + { + "name": "symfony/string", + "version": "v5.1.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/string.git", + "reference": "ac70459db781108db7c6d8981dd31ce0e29e3298" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/string/zipball/ac70459db781108db7c6d8981dd31ce0e29e3298", + "reference": "ac70459db781108db7c6d8981dd31ce0e29e3298", + "shasum": "" + }, + "require": { + "php": ">=7.2.5", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" + }, + "require-dev": { + "symfony/error-handler": "^4.4|^5.0", + "symfony/http-client": "^4.4|^5.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\String\\": "" + }, + "files": [ + "Resources/functions.php" + ], + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony String component", + "homepage": "https://symfony.com", + "keywords": [ + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" + ], + "time": "2020-06-11T12:16:36+00:00" }, { "name": "symfony/translation", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b" + "reference": "d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", - "reference": "e9b93f42a1fd6aec6a0872d59ee5c8219a7d584b", + "url": "https://api.github.com/repos/symfony/translation/zipball/d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2", + "reference": "d387f07d4c15f9c09439cf3f13ddbe0b2c5e8be2", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15", "symfony/translation-contracts": "^2" }, "conflict": { @@ -2795,7 +3104,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -2822,24 +3131,24 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2020-02-04T07:41:34+00:00" + "time": "2020-05-30T20:35:19+00:00" }, { "name": "symfony/translation-contracts", - "version": "v2.0.1", + "version": "v2.1.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed" + "reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/8cc682ac458d75557203b2f2f14b0b92e1c744ed", - "reference": "8cc682ac458d75557203b2f2f14b0b92e1c744ed", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/e5ca07c8f817f865f618aa072c2fe8e0e637340e", + "reference": "e5ca07c8f817f865f618aa072c2fe8e0e637340e", "shasum": "" }, "require": { - "php": "^7.2.5" + "php": ">=7.2.5" }, "suggest": { "symfony/translation-implementation": "" @@ -2847,7 +3156,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "2.1-dev" } }, "autoload": { @@ -2879,25 +3188,26 @@ "interoperability", "standards" ], - "time": "2019-11-18T17:27:11+00:00" + "time": "2020-05-20T17:43:50+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "3a37aeb1132d1035536d3d6aa9cb06c2ff9355e9" + "reference": "46a942903059b0b05e601f00eb64179e05578c0f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/3a37aeb1132d1035536d3d6aa9cb06c2ff9355e9", - "reference": "3a37aeb1132d1035536d3d6aa9cb06c2ff9355e9", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/46a942903059b0b05e601f00eb64179e05578c0f", + "reference": "46a942903059b0b05e601f00eb64179e05578c0f", "shasum": "" }, "require": { - "php": "^7.2.5", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.15" }, "conflict": { "phpunit/phpunit": "<5.4.3", @@ -2920,7 +3230,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -2954,7 +3264,7 @@ "debug", "dump" ], - "time": "2020-02-26T22:30:10+00:00" + "time": "2020-05-30T20:35:19+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -3007,16 +3317,16 @@ }, { "name": "twilio/sdk", - "version": "6.1.0", + "version": "6.7.0", "source": { "type": "git", "url": "https://github.com/twilio/twilio-php.git", - "reference": "eb38f4c6f0d02456d4cbcd7cf88570df9750cda3" + "reference": "73fdd7e25547910ed339b6a8e7eef9e91a2deb41" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twilio/twilio-php/zipball/eb38f4c6f0d02456d4cbcd7cf88570df9750cda3", - "reference": "eb38f4c6f0d02456d4cbcd7cf88570df9750cda3", + "url": "https://api.github.com/repos/twilio/twilio-php/zipball/73fdd7e25547910ed339b6a8e7eef9e91a2deb41", + "reference": "73fdd7e25547910ed339b6a8e7eef9e91a2deb41", "shasum": "" }, "require": { @@ -3053,34 +3363,36 @@ "sms", "twilio" ], - "time": "2020-03-18T19:42:16+00:00" + "time": "2020-06-10T21:28:38+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v4.1.2", + "version": "v4.1.7", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "939dfda2d7267ac8fc53ac3d642b5de357554c39" + "reference": "db63b2ea280fdcf13c4ca392121b0b2450b51193" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/939dfda2d7267ac8fc53ac3d642b5de357554c39", - "reference": "939dfda2d7267ac8fc53ac3d642b5de357554c39", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/db63b2ea280fdcf13c4ca392121b0b2450b51193", + "reference": "db63b2ea280fdcf13c4ca392121b0b2450b51193", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0", - "phpoption/phpoption": "^1.7.2", - "symfony/polyfill-ctype": "^1.9" + "php": "^5.5.9 || ^7.0 || ^8.0", + "phpoption/phpoption": "^1.7.3", + "symfony/polyfill-ctype": "^1.16" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.3", + "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0 || ^7.0" + "ext-pcre": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0" }, "suggest": { - "ext-filter": "Required to use the boolean validator." + "ext-filter": "Required to use the boolean validator.", + "ext-pcre": "Required to use most of the library." }, "type": "library", "extra": { @@ -3115,20 +3427,20 @@ "env", "environment" ], - "time": "2020-03-12T13:44:15+00:00" + "time": "2020-06-07T18:25:35+00:00" }, { "name": "voku/portable-ascii", - "version": "1.4.10", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/voku/portable-ascii.git", - "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334" + "reference": "618631dc601d8eb6ea0a9fbf654ec82f066c4e97" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/voku/portable-ascii/zipball/240e93829a5f985fab0984a6e55ae5e26b78a334", - "reference": "240e93829a5f985fab0984a6e55ae5e26b78a334", + "url": "https://api.github.com/repos/voku/portable-ascii/zipball/618631dc601d8eb6ea0a9fbf654ec82f066c4e97", + "reference": "618631dc601d8eb6ea0a9fbf654ec82f066c4e97", "shasum": "" }, "require": { @@ -3143,8 +3455,7 @@ "type": "library", "autoload": { "psr-4": { - "voku\\": "src/voku/", - "voku\\tests\\": "tests/" + "voku\\": "src/voku/" } }, "notification-url": "https://packagist.org/downloads/", @@ -3164,26 +3475,26 @@ "clean", "php" ], - "time": "2020-03-13T01:23:26+00:00" + "time": "2020-06-15T23:49:30+00:00" } ], "packages-dev": [ { "name": "doctrine/instantiator", - "version": "1.3.0", + "version": "1.3.1", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1" + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/ae466f726242e637cebdd526a7d991b9433bacf1", - "reference": "ae466f726242e637cebdd526a7d991b9433bacf1", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f350df0268e904597e3bd9c4685c53e0e333feea", + "reference": "f350df0268e904597e3bd9c4685c53e0e333feea", "shasum": "" }, "require": { - "php": "^7.1" + "php": "^7.1 || ^8.0" }, "require-dev": { "doctrine/coding-standard": "^6.0", @@ -3222,7 +3533,7 @@ "constructor", "instantiate" ], - "time": "2019-10-21T16:45:58+00:00" + "time": "2020-05-29T17:27:14+00:00" }, { "name": "fzaninotto/faker", @@ -3324,30 +3635,33 @@ }, { "name": "mockery/mockery", - "version": "1.3.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/mockery/mockery.git", - "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be" + "reference": "6c6a7c533469873deacf998237e7649fc6b36223" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mockery/mockery/zipball/f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", - "reference": "f69bbde7d7a75d6b2862d9ca8fab1cd28014b4be", + "url": "https://api.github.com/repos/mockery/mockery/zipball/6c6a7c533469873deacf998237e7649fc6b36223", + "reference": "6c6a7c533469873deacf998237e7649fc6b36223", "shasum": "" }, "require": { "hamcrest/hamcrest-php": "~2.0", "lib-pcre": ">=7.0", - "php": ">=5.6.0" + "php": "^7.3.0" + }, + "conflict": { + "phpunit/phpunit": "<8.0" }, "require-dev": { - "phpunit/phpunit": "~5.7.10|~6.5|~7.0|~8.0" + "phpunit/phpunit": "^8.0.0 || ^9.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "1.4.x-dev" } }, "autoload": { @@ -3385,7 +3699,7 @@ "test double", "testing" ], - "time": "2019-12-26T09:49:15+00:00" + "time": "2020-05-19T14:25:16+00:00" }, { "name": "myclabs/deep-copy", @@ -3539,24 +3853,21 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "2.0.0", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a" + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/63a995caa1ca9e5590304cd845c15ad6d482a62a", - "reference": "63a995caa1ca9e5590304cd845c15ad6d482a62a", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/6568f4687e5b41b054365f9ae03fcb1ed5f2069b", + "reference": "6568f4687e5b41b054365f9ae03fcb1ed5f2069b", "shasum": "" }, "require": { "php": ">=7.1" }, - "require-dev": { - "phpunit/phpunit": "~6" - }, "type": "library", "extra": { "branch-alias": { @@ -3587,7 +3898,7 @@ "reflection", "static analysis" ], - "time": "2018-08-07T13:53:10+00:00" + "time": "2020-04-27T09:25:28+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -4127,16 +4438,16 @@ }, { "name": "phpunit/phpunit", - "version": "8.5.2", + "version": "8.5.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0" + "reference": "3f9c4079d1407cd84c51c02c6ad1df6ec2ed1348" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/018b6ac3c8ab20916db85fa91bf6465acb64d1e0", - "reference": "018b6ac3c8ab20916db85fa91bf6465acb64d1e0", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3f9c4079d1407cd84c51c02c6ad1df6ec2ed1348", + "reference": "3f9c4079d1407cd84c51c02c6ad1df6ec2ed1348", "shasum": "" }, "require": { @@ -4206,7 +4517,7 @@ "testing", "xunit" ], - "time": "2020-01-08T08:49:49+00:00" + "time": "2020-06-15T10:45:47+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -4825,20 +5136,21 @@ }, { "name": "symfony/yaml", - "version": "v5.0.5", + "version": "v5.1.2", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "a4b613d7e44f62941adff5a802cff70adee57d3f" + "reference": "ea342353a3ef4f453809acc4ebc55382231d4d23" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/a4b613d7e44f62941adff5a802cff70adee57d3f", - "reference": "a4b613d7e44f62941adff5a802cff70adee57d3f", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ea342353a3ef4f453809acc4ebc55382231d4d23", + "reference": "ea342353a3ef4f453809acc4ebc55382231d4d23", "shasum": "" }, "require": { - "php": "^7.2.5", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -4850,10 +5162,13 @@ "suggest": { "symfony/console": "For validating YAML files using the lint command" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "5.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4880,7 +5195,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2020-02-03T13:51:17+00:00" + "time": "2020-05-20T17:43:50+00:00" }, { "name": "theseer/tokenizer", @@ -4924,16 +5239,16 @@ }, { "name": "webmozart/assert", - "version": "1.7.0", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598" + "reference": "9dc4f203e36f2b486149058bade43c851dd97451" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/aed98a490f9a8f78468232db345ab9cf606cf598", - "reference": "aed98a490f9a8f78468232db345ab9cf606cf598", + "url": "https://api.github.com/repos/webmozart/assert/zipball/9dc4f203e36f2b486149058bade43c851dd97451", + "reference": "9dc4f203e36f2b486149058bade43c851dd97451", "shasum": "" }, "require": { @@ -4941,7 +5256,8 @@ "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "vimeo/psalm": "<3.6.0" + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<3.9.1" }, "require-dev": { "phpunit/phpunit": "^4.8.36 || ^7.5.13" @@ -4968,7 +5284,7 @@ "check", "validate" ], - "time": "2020-02-14T12:15:55+00:00" + "time": "2020-06-16T10:16:42+00:00" } ], "aliases": [], From 2d41dbf63ec3317c7064c357482926c1630cf261 Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Tue, 16 Jun 2020 11:13:28 -0500 Subject: [PATCH 09/12] Remove cache file --- .phpunit.result.cache | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .phpunit.result.cache diff --git a/.phpunit.result.cache b/.phpunit.result.cache deleted file mode 100644 index 8e2fe8a..0000000 --- a/.phpunit.result.cache +++ /dev/null @@ -1 +0,0 @@ -C:37:"PHPUnit\Runner\DefaultTestResultCache":879:{a:2:{s:7:"defects";a:7:{s:37:"ReservationControllerTest::testCreate";i:4;s:50:"ReservationControllerTest::testAcceptRejectConfirm";i:4;s:49:"ReservationControllerTest::testAcceptRejectReject";i:4;s:52:"ReservationControllerTest::testAcceptRejectNoPending";i:4;s:31:"UserControllerTest::testNewUser";i:4;s:53:"VacationPropertyControllerTest::testCreateNewProperty";i:4;s:48:"VacationPropertyControllerTest::testEditProperty";i:1;}s:5:"times";a:7:{s:37:"ReservationControllerTest::testCreate";d:0.103;s:50:"ReservationControllerTest::testAcceptRejectConfirm";d:0.01;s:49:"ReservationControllerTest::testAcceptRejectReject";d:0.009;s:52:"ReservationControllerTest::testAcceptRejectNoPending";d:0.007;s:31:"UserControllerTest::testNewUser";d:0.066;s:53:"VacationPropertyControllerTest::testCreateNewProperty";d:0.008;s:48:"VacationPropertyControllerTest::testEditProperty";d:0.007;}}} \ No newline at end of file From 6cdbdb220d41e7aba19ed94dcb5f32ba6bd7440e Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Tue, 16 Jun 2020 11:18:02 -0500 Subject: [PATCH 10/12] Update composer --- .github/workflows/laravel.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index 5ed47b4..c79dde1 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -17,11 +17,16 @@ jobs: steps: - uses: actions/checkout@v2 - - uses: shivammathur/setup-php@v2 + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 7.4 + extensions: mbstring, fileinfo, pdo_sqlite + coverage: none - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" - name: Install Dependencies - run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist + run: composer install - name: Generate key run: php artisan key:generate --force - name: Directory Permissions From dbb55d1bd1a28eb61e947c1f3cdb9b964a17fe5b Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Tue, 16 Jun 2020 12:40:17 -0500 Subject: [PATCH 11/12] Add memory based testing --- .github/workflows/laravel.yml | 8 ++------ Makefile | 1 - config/database.php | 2 +- phpunit.xml | 2 +- tests/TestCase.php | 12 ++++++++++++ 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index c79dde1..80325d8 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -26,17 +26,13 @@ jobs: - name: Copy .env run: php -r "file_exists('.env') || copy('.env.example', '.env');" - name: Install Dependencies - run: composer install + run: composer install -q --no-ansi --no-interaction --no-scripts --no-suggest --no-progress --prefer-dist - name: Generate key run: php artisan key:generate --force - name: Directory Permissions run: chmod -R 777 storage bootstrap/cache - - name: Create Database - run: touch database/database-test.sqlite - name: Execute tests (Unit and Feature tests) via PHPUnit env: DB_CONNECTION: sqlite DB_DATABASE: database/database.sqlite - run: | - php artisan migrate --database=testing --force - vendor/bin/phpunit + run: vendor/bin/phpunit diff --git a/Makefile b/Makefile index 92e7417..ededf7d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,5 @@ install: touch database/database.sqlite - touch database/database-test.sqlite composer install php artisan key:generate --force php artisan migrate --force diff --git a/config/database.php b/config/database.php index 7c48fa1..ddc1ffd 100644 --- a/config/database.php +++ b/config/database.php @@ -54,7 +54,7 @@ 'testing' => [ 'driver' => 'sqlite', - 'database' => database_path('database-test.sqlite'), + 'database' => ':memory:', 'prefix' => '', ], diff --git a/phpunit.xml b/phpunit.xml index 1fd80f8..6e70cca 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -19,7 +19,7 @@ - + diff --git a/tests/TestCase.php b/tests/TestCase.php index 8578b17..df49c87 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -22,4 +22,16 @@ public function createApplication() return $app; } + + protected function setUp(): void + { + parent::setUp(); + Artisan::call('migrate'); + } + + protected function tearDown(): void + { + Artisan::call('migrate:reset'); + parent::tearDown(); + } } From 98e608b4cb23c5ab26b456531430cf913fd9c70d Mon Sep 17 00:00:00 2001 From: Carlos Villavicencio Date: Tue, 16 Jun 2020 16:10:37 -0500 Subject: [PATCH 12/12] Fix memory tests --- .github/workflows/laravel.yml | 3 --- config/app.php | 26 ++++++++++++++++++++++++ phpunit.xml | 2 +- tests/ReservationControllerTest.php | 4 ++++ tests/TestCase.php | 22 ++++++++------------ tests/UserControllerTest.php | 2 ++ tests/VacationPropertyControllerTest.php | 2 ++ 7 files changed, 43 insertions(+), 18 deletions(-) diff --git a/.github/workflows/laravel.yml b/.github/workflows/laravel.yml index 80325d8..b275cfb 100644 --- a/.github/workflows/laravel.yml +++ b/.github/workflows/laravel.yml @@ -32,7 +32,4 @@ jobs: - name: Directory Permissions run: chmod -R 777 storage bootstrap/cache - name: Execute tests (Unit and Feature tests) via PHPUnit - env: - DB_CONNECTION: sqlite - DB_DATABASE: database/database.sqlite run: vendor/bin/phpunit diff --git a/config/app.php b/config/app.php index b5d92b0..caf59d3 100644 --- a/config/app.php +++ b/config/app.php @@ -2,6 +2,32 @@ return [ + /* + |-------------------------------------------------------------------------- + | Application Name + |-------------------------------------------------------------------------- + | + | This value is the name of your application. This value is used when the + | framework needs to place the application's name in a notification or + | any other location as required by the application or its packages. + | + */ + + 'name' => env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + /* |-------------------------------------------------------------------------- | Application Debug Mode diff --git a/phpunit.xml b/phpunit.xml index 6e70cca..a9d0d9b 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -23,7 +23,7 @@ - + diff --git a/tests/ReservationControllerTest.php b/tests/ReservationControllerTest.php index ef79724..df3fd81 100644 --- a/tests/ReservationControllerTest.php +++ b/tests/ReservationControllerTest.php @@ -1,4 +1,6 @@ make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); + $app->make(Kernel::class)->bootstrap(); return $app; } - - protected function setUp(): void - { - parent::setUp(); - Artisan::call('migrate'); - } - - protected function tearDown(): void - { - Artisan::call('migrate:reset'); - parent::tearDown(); - } } diff --git a/tests/UserControllerTest.php b/tests/UserControllerTest.php index 693c6d7..cbdc1f9 100644 --- a/tests/UserControllerTest.php +++ b/tests/UserControllerTest.php @@ -1,4 +1,6 @@