From eb44d6adc3819151fee2e8bea64c76dbdef3e01c Mon Sep 17 00:00:00 2001 From: Hassansin Date: Mon, 24 Dec 2018 19:00:09 +0600 Subject: [PATCH] Add unit tests, fixed some bugs (#16) * Added more unit tests * Removed older php version support * fix composer command * removed trailing spaces * Replaced tabs with spaces * fix move items * Added codecov badge fixes #14 #15 --- .gitignore | 1 + .travis.yml | 17 +- Dockerfile | 13 + Makefile | 16 + README.md | 4 +- composer.json | 5 +- composer.lock | 3699 +++++++++++------ php.ini | 1 + phpunit.xml | 29 +- src/Hassansin/DBCart/CartServiceProvider.php | 100 +- .../DBCart/Console/Commands/CartCleanup.php | 6 +- src/Hassansin/DBCart/Models/Cart.php | 150 +- src/Hassansin/DBCart/Models/CartLine.php | 36 +- src/Hassansin/DBCart/config/cart.php | 18 +- .../2015_11_03_155308_create_cart_table.php | 2 +- tests/CartTest.php | 401 +- tests/bootstrap.php | 8 + 17 files changed, 3181 insertions(+), 1325 deletions(-) create mode 100644 Dockerfile create mode 100644 Makefile create mode 100644 php.ini create mode 100644 tests/bootstrap.php diff --git a/.gitignore b/.gitignore index fa37921..f29483a 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ /vendor error_log +coverage diff --git a/.travis.yml b/.travis.yml index 1817ae9..a9f693e 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,15 @@ language: php - php: - - 5.5 - - 5.6 - - hhvm + - '7.1' + - '7.2' + - '7.3' + - nightly -sudo: false +before_script: + - composer install --prefer-dist --no-interaction --no-suggest -install: travis_retry composer install --no-interaction --prefer-dist +script: + - vendor/bin/phpunit --coverage-clover=coverage.xml -script: vendor/bin/phpunit --verbose +after_success: + - bash <(curl -s https://codecov.io/bash) diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..defd40b --- /dev/null +++ b/Dockerfile @@ -0,0 +1,13 @@ +ARG VERSION +FROM php:${VERSION} +RUN curl -O https://getcomposer.org/composer.phar +RUN mv composer.phar /usr/local/bin/composer +RUN chmod a+x /usr/local/bin/composer +RUN apt-get update && apt-get install -y git unzip +ARG VERSION +RUN if [ "$VERSION" = "7.2" ]; then \ + composer global require phpunit/phpunit:^7 && pecl install xdebug-2.7.0alpha1; else \ + composer global require phpunit/phpunit:^4 && pecl install xdebug-2.5.5; fi +RUN docker-php-ext-enable xdebug +ENV PATH="${PATH}:/root/.composer/vendor/bin" +COPY php.ini /usr/local/etc/php/ diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..4d54358 --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +RUNNER=docker run -it --rm --workdir "/src" -v "$(PWD):/src" -v "$(HOME)/.composer/cache:/root/.composer/cache" dbcartphp /bin/bash -c + +.PHONY: build composer php test + +build: + @docker build --build-arg VERSION=7.2 --tag=dbcartphp . +composer: + @$(RUNNER) "composer $(filter-out $@,$(MAKECMDGOALS))" +dependencies: + make -s composer update -- --prefer-dist +test: + $(RUNNER) "phpunit --coverage-text --coverage-html ./coverage $(filter-out $@,$(MAKECMDGOALS))" +php: + $(RUNNER) "php $(filter-out $@,$(MAKECMDGOALS))" +%: + @: diff --git a/README.md b/README.md index a0eb18f..d29d357 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# DBCart [![Build Status](https://travis-ci.org/hassansin/dbcart.svg?branch=master)](https://travis-ci.org/hassansin/dbcart) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/97876df8-6a51-4da1-92f3-14ebe544c4d9/mini.png?v=1)](https://insight.sensiolabs.com/projects/97876df8-6a51-4da1-92f3-14ebe544c4d9) +# DBCart [![Build Status](https://travis-ci.org/hassansin/dbcart.svg?branch=master)](https://travis-ci.org/hassansin/dbcart) [![SensioLabsInsight](https://insight.sensiolabs.com/projects/97876df8-6a51-4da1-92f3-14ebe544c4d9/mini.png?v=1)](https://insight.sensiolabs.com/projects/97876df8-6a51-4da1-92f3-14ebe544c4d9) [![codecov](https://codecov.io/gh/hassansin/dbcart/branch/master/graph/badge.svg)](https://codecov.io/gh/hassansin/dbcart) Shopping Cart library for Laravel 5 that uses database instead of sessions to store carts. @@ -94,7 +94,7 @@ Since `$cart` is eloquent model instance, you can use any of the eloquent method ```php $items = $cart->items // by dynamic property access $items = $cart->items()->get() -$items = $cart->items()->where('quantity', '=>', 2)->get() +$items = $cart->items()->where('quantity', '>=', 2)->get() ``` #### Update an Item: `$cart->updateItem($where, $attributes)` diff --git a/composer.json b/composer.json index 212bb51..c48894d 100644 --- a/composer.json +++ b/composer.json @@ -11,13 +11,12 @@ } ], "require": { - "php": ">=5.4.0", - "illuminate/support": "~5.0" + "php": ">=7.1.3", + "illuminate/support": "~5.0" }, "require-dev": { "fzaninotto/faker": "~1.4", "mockery/mockery": "~0.9", - "phpunit/phpunit": "~4.0", "orchestra/testbench": "~3.0" }, "autoload": { diff --git a/composer.lock b/composer.lock index 04d5050..5246783 100644 --- a/composer.lock +++ b/composer.lock @@ -1,42 +1,40 @@ { "_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": "50f1c5ea5396f1f8a45a5bb892b62f01", - "content-hash": "145068365e1b2b67ed1ed0713358065d", + "content-hash": "9ea39b787cb1b82e30ec9eb61a8679c5", "packages": [ { - "name": "classpreloader/classpreloader", - "version": "dev-master", + "name": "doctrine/inflector", + "version": "1.3.x-dev", "source": { "type": "git", - "url": "https://github.com/ClassPreloader/ClassPreloader.git", - "reference": "4257542255b04ea4a7d844c61453987ba313daf6" + "url": "https://github.com/doctrine/inflector.git", + "reference": "45d9b132b262c1d03835cdeefd42938d881556fa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ClassPreloader/ClassPreloader/zipball/4257542255b04ea4a7d844c61453987ba313daf6", - "reference": "4257542255b04ea4a7d844c61453987ba313daf6", + "url": "https://api.github.com/repos/doctrine/inflector/zipball/45d9b132b262c1d03835cdeefd42938d881556fa", + "reference": "45d9b132b262c1d03835cdeefd42938d881556fa", "shasum": "" }, "require": { - "nikic/php-parser": "^1.0|^2.0", - "php": ">=5.5.9" + "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,84 +43,120 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com" + "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": "Graham Campbell", - "email": "graham@alt-three.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-13 14:44:11" + "time": "2018-06-15T19:03:38+00:00" }, { - "name": "dnoegel/php-xdg-base-dir", - "version": "0.1", + "name": "doctrine/lexer", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/dnoegel/php-xdg-base-dir.git", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a" + "url": "https://github.com/doctrine/lexer.git", + "reference": "4ab6ea7c838ccb340883fd78915af079949cc64d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dnoegel/php-xdg-base-dir/zipball/265b8593498b997dc2d31e75b89f053b5cc9621a", - "reference": "265b8593498b997dc2d31e75b89f053b5cc9621a", + "url": "https://api.github.com/repos/doctrine/lexer/zipball/4ab6ea7c838ccb340883fd78915af079949cc64d", + "reference": "4ab6ea7c838ccb340883fd78915af079949cc64d", "shasum": "" }, "require": { "php": ">=5.3.2" }, "require-dev": { - "phpunit/phpunit": "@stable" + "phpunit/phpunit": "^4.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } }, - "type": "project", "autoload": { "psr-4": { - "XdgBaseDir\\": "src/" + "Doctrine\\Common\\Lexer\\": "lib/Doctrine/Common/Lexer" } }, "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": "Roman Borschel", + "email": "roman@code-factory.org" + }, + { + "name": "Guilherme Blanco", + "email": "guilhermeblanco@gmail.com" + }, + { + "name": "Johannes Schmitt", + "email": "schmittjoh@gmail.com" + } + ], + "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": [ + "annotations", + "docblock", + "lexer", + "parser", + "php" + ], + "time": "2018-10-21T19:22:05+00:00" }, { - "name": "doctrine/inflector", - "version": "dev-master", + "name": "dragonmantank/cron-expression", + "version": "v2.2.0", "source": { "type": "git", - "url": "https://github.com/doctrine/inflector.git", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae" + "url": "https://github.com/dragonmantank/cron-expression.git", + "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/inflector/zipball/90b2128806bfde671b6952ab8bea493942c1fdae", - "reference": "90b2128806bfde671b6952ab8bea493942c1fdae", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/92a2c3768d50e21a1f26a53cb795ce72806266c5", + "reference": "92a2c3768d50e21a1f26a53cb795ce72806266c5", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=7.0.0" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "~6.4" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, "autoload": { - "psr-0": { - "Doctrine\\Common\\Inflector\\": "lib/" + "psr-4": { + "Cron\\": "src/Cron/" } }, "notification-url": "https://packagist.org/downloads/", @@ -131,108 +165,105 @@ ], "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": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" }, { - "name": "Johannes Schmitt", - "email": "schmittjoh@gmail.com" + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" } ], - "description": "Common String Manipulations with regard to casing and singular/plural rules.", - "homepage": "http://www.doctrine-project.org", + "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", "keywords": [ - "inflection", - "pluralize", - "singularize", - "string" + "cron", + "schedule" ], - "time": "2015-11-06 14:35:42" + "time": "2018-06-06T03:12:17+00:00" }, { - "name": "jakub-onderka/php-console-color", - "version": "0.1", + "name": "egulias/email-validator", + "version": "2.1.7", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1" + "url": "https://github.com/egulias/EmailValidator.git", + "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1", + "url": "https://api.github.com/repos/egulias/EmailValidator/zipball/709f21f92707308cdf8f9bcfa1af4cb26586521e", + "reference": "709f21f92707308cdf8f9bcfa1af4cb26586521e", "shasum": "" }, "require": { - "php": ">=5.3.2" + "doctrine/lexer": "^1.0.1", + "php": ">= 5.5" }, "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.*" + "dominicsayers/isemail": "dev-master", + "phpunit/phpunit": "^4.8.35||^5.7||^6.0", + "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": "2.0.x-dev" + } + }, "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleColor": "src/" + "psr-4": { + "Egulias\\EmailValidator\\": "EmailValidator" } }, "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": "Eduardo Gulias Davis" } ], - "time": "2014-04-08 15:00:19" + "description": "A library for validating emails against several RFCs", + "homepage": "https://github.com/egulias/EmailValidator", + "keywords": [ + "email", + "emailvalidation", + "emailvalidator", + "validation", + "validator" + ], + "time": "2018-12-04T22:38:24+00:00" }, { - "name": "jakub-onderka/php-console-highlighter", - "version": "v0.3.2", + "name": "erusev/parsedown", + "version": "1.8.0-beta-5", "source": { "type": "git", - "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" + "url": "https://github.com/erusev/parsedown.git", + "reference": "c26a2ee4bf8ba0270daab7da0353f2525ca6564a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "url": "https://api.github.com/repos/erusev/parsedown/zipball/c26a2ee4bf8ba0270daab7da0353f2525ca6564a", + "reference": "c26a2ee4bf8ba0270daab7da0353f2525ca6564a", "shasum": "" }, "require": { - "jakub-onderka/php-console-color": "~0.1", + "ext-mbstring": "*", "php": ">=5.3.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" + "phpunit/phpunit": "^4.8.35" }, "type": "library", "autoload": { "psr-0": { - "JakubOnderka\\PhpConsoleHighlighter": "src/" + "Parsedown": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -241,110 +272,250 @@ ], "authors": [ { - "name": "Jakub Onderka", - "email": "acci@acci.cz", - "homepage": "http://www.acci.cz/" + "name": "Emanuil Rusev", + "email": "hello@erusev.com", + "homepage": "http://erusev.com" } ], - "time": "2015-04-20 18:58:01" + "description": "Parser for Markdown.", + "homepage": "http://parsedown.org", + "keywords": [ + "markdown", + "parser" + ], + "time": "2018-06-11T18:15:32+00:00" }, { - "name": "jeremeamia/SuperClosure", + "name": "guzzlehttp/guzzle", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/jeremeamia/super_closure.git", - "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938" + "url": "https://github.com/guzzle/guzzle.git", + "reference": "9799bbcb90ed2df488adb0924169163156483e52" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jeremeamia/super_closure/zipball/29a88be2a4846d27c1613aed0c9071dfad7b5938", - "reference": "29a88be2a4846d27c1613aed0c9071dfad7b5938", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/9799bbcb90ed2df488adb0924169163156483e52", + "reference": "9799bbcb90ed2df488adb0924169163156483e52", "shasum": "" }, "require": { - "nikic/php-parser": "^1.2|^2.0", - "php": ">=5.4", - "symfony/polyfill-php56": "^1.0" + "ext-json": "*", + "guzzlehttp/promises": "^1.0", + "guzzlehttp/psr7": "^1.4", + "php": ">=5.5" + }, + "require-dev": { + "ext-curl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", + "psr/log": "^1.1" + }, + "suggest": { + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "6.3-dev" + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "homepage": "http://guzzlephp.org/", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "rest", + "web service" + ], + "time": "2018-12-07T08:18:25+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "926eaa3ff73cde2becf652b785831bcb7618568a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/926eaa3ff73cde2becf652b785831bcb7618568a", + "reference": "926eaa3ff73cde2becf652b785831bcb7618568a", + "shasum": "" + }, + "require": { + "php": ">=5.5.0" }, "require-dev": { - "phpunit/phpunit": "^4.0|^5.0" + "phpunit/phpunit": "^4.8.36" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "1.4-dev" } }, "autoload": { "psr-4": { - "SuperClosure\\": "src/" + "GuzzleHttp\\Promise\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "time": "2018-10-30T00:20:04+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "5e61346ab1e1ca7d01d2f633bad9574d35717781" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/5e61346ab1e1ca7d01d2f633bad9574d35717781", + "reference": "5e61346ab1e1ca7d01d2f633bad9574d35717781", + "shasum": "" + }, + "require": { + "php": ">=5.4.0", + "psr/http-message": "~1.0", + "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.8" + }, + "suggest": { + "zendframework/zend-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.5-dev" } }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + }, + "files": [ + "src/functions_include.php" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Jeremy Lindblom", - "email": "jeremeamia@gmail.com", - "homepage": "https://github.com/jeremeamia", - "role": "Developer" + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Schultze", + "homepage": "https://github.com/Tobion" } ], - "description": "Serialize Closure objects, including their context and binding", - "homepage": "https://github.com/jeremeamia/super_closure", + "description": "PSR-7 message implementation that also provides common utility methods", "keywords": [ - "closure", - "function", - "lambda", - "parser", - "serializable", - "serialize", - "tokenizer" + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" ], - "time": "2015-12-05 17:17:57" + "time": "2018-12-07T15:04:46+00:00" }, { "name": "laravel/framework", - "version": "5.2.x-dev", + "version": "5.7.x-dev", "source": { "type": "git", "url": "https://github.com/laravel/framework.git", - "reference": "254d8fb8bc9f29cb97e9b4f7e4fc33bea0ddf23c" + "reference": "7c183bcd2d0a0b225c11e184c7690e9ea052bbb2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/framework/zipball/4f84b9afd3c3c4cf071e83b34dee95663898a4fb", - "reference": "254d8fb8bc9f29cb97e9b4f7e4fc33bea0ddf23c", + "url": "https://api.github.com/repos/laravel/framework/zipball/7c183bcd2d0a0b225c11e184c7690e9ea052bbb2", + "reference": "7c183bcd2d0a0b225c11e184c7690e9ea052bbb2", "shasum": "" }, "require": { - "classpreloader/classpreloader": "~3.0", - "doctrine/inflector": "~1.0", + "doctrine/inflector": "^1.1", + "dragonmantank/cron-expression": "^2.0", + "erusev/parsedown": "^1.7", "ext-mbstring": "*", "ext-openssl": "*", - "jeremeamia/superclosure": "~2.2", - "league/flysystem": "~1.0", - "monolog/monolog": "~1.11", - "mtdowling/cron-expression": "~1.0", - "nesbot/carbon": "~1.20", - "paragonie/random_compat": "~1.1", - "php": ">=5.5.9", - "psy/psysh": "0.6.*", - "swiftmailer/swiftmailer": "~5.1", - "symfony/console": "2.8.*|3.0.*", - "symfony/debug": "2.8.*|3.0.*", - "symfony/finder": "2.8.*|3.0.*", - "symfony/http-foundation": "2.8.*|3.0.*", - "symfony/http-kernel": "2.8.*|3.0.*", - "symfony/polyfill-php56": "~1.0", - "symfony/process": "2.8.*|3.0.*", - "symfony/routing": "2.8.*|3.0.*", - "symfony/translation": "2.8.*|3.0.*", - "symfony/var-dumper": "2.8.*|3.0.*", - "vlucas/phpdotenv": "~2.0" + "laravel/nexmo-notification-channel": "^1.0", + "laravel/slack-notification-channel": "^1.0", + "league/flysystem": "^1.0.8", + "monolog/monolog": "^1.12", + "nesbot/carbon": "^1.26.3", + "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.1", + "symfony/debug": "^4.1", + "symfony/finder": "^4.1", + "symfony/http-foundation": "^4.1", + "symfony/http-kernel": "^4.1", + "symfony/process": "^4.1", + "symfony/routing": "^4.1", + "symfony/var-dumper": "^4.1", + "tijsverkoyen/css-to-inline-styles": "^2.2.1", + "vlucas/phpdotenv": "^2.2" + }, + "conflict": { + "tightenco/collect": "<5.5.33" }, "replace": { "illuminate/auth": "self.version", @@ -359,12 +530,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", @@ -377,38 +548,50 @@ "illuminate/view": "self.version" }, "require-dev": { - "aws/aws-sdk-php": "~3.0", - "iron-io/iron_mq": "~2.0", - "mockery/mockery": "~0.9.2", - "pda/pheanstalk": "~3.0", - "phpunit/phpunit": "~4.1", - "predis/predis": "~1.0", - "symfony/css-selector": "2.8.*|3.0.*", - "symfony/dom-crawler": "2.8.*|3.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.7.*", + "pda/pheanstalk": "^3.0", + "phpunit/phpunit": "^7.0", + "predis/predis": "^1.1.1", + "symfony/css-selector": "^4.1", + "symfony/dom-crawler": "^4.1", + "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).", - "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/css-selector": "Required to use some of the crawler integration testing tools (2.8.*|3.0.*).", - "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (2.8.*|3.0.*)." + "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-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 (^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 (^3.0).", + "symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).", + "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).", + "symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)." }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.2-dev" + "dev-master": "5.7-dev" } }, "autoload": { - "classmap": [ - "src/Illuminate/Queue/IlluminateQueueClosure.php" - ], "files": [ "src/Illuminate/Foundation/helpers.php", "src/Illuminate/Support/helpers.php" @@ -424,67 +607,54 @@ "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": "2015-12-07 21:44:50" + "time": "2018-12-15T14:40:14+00:00" }, { - "name": "league/flysystem", - "version": "dev-master", + "name": "laravel/nexmo-notification-channel", + "version": "1.0.x-dev", "source": { "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "3e97b4659b8057664d0d23b1491493d3501eaad2" + "url": "https://github.com/laravel/nexmo-notification-channel.git", + "reference": "03edd42a55b306ff980c9950899d5a2b03260d48" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/e5c3dd737167d388983885c7bfe317a2a3db41f2", - "reference": "3e97b4659b8057664d0d23b1491493d3501eaad2", + "url": "https://api.github.com/repos/laravel/nexmo-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48", + "reference": "03edd42a55b306ff980c9950899d5a2b03260d48", "shasum": "" }, "require": { - "php": ">=5.4.0" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" + "nexmo/client": "^1.0", + "php": "^7.1.3" }, "require-dev": { - "ext-fileinfo": "*", - "mockery/mockery": "~0.9", - "phpspec/phpspec": "^2.2", - "phpspec/prophecy-phpunit": "~1.0", - "phpunit/phpunit": "~4.1" - }, - "suggest": { - "ext-fileinfo": "Required for MimeType", - "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" + "illuminate/notifications": "~5.7", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1-dev" + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Illuminate\\Notifications\\NexmoChannelServiceProvider" + ] } }, "autoload": { "psr-4": { - "League\\Flysystem\\": "src/" + "Illuminate\\Notifications\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -493,22 +663,207 @@ ], "authors": [ { - "name": "Frank de Jonge", - "email": "info@frenky.net" + "name": "Taylor Otwell", + "email": "taylor@laravel.com" } ], - "description": "Filesystem abstraction: Many filesystems, one API.", + "description": "Nexmo Notification Channel for laravel.", "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", + "laravel", + "nexmo", + "notifications" + ], + "time": "2018-12-04T12:57:08+00:00" + }, + { + "name": "laravel/slack-notification-channel", + "version": "1.0.x-dev", + "source": { + "type": "git", + "url": "https://github.com/laravel/slack-notification-channel.git", + "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9", + "reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9", + "shasum": "" + }, + "require": { + "guzzlehttp/guzzle": "^6.0", + "php": "^7.1.3" + }, + "require-dev": { + "illuminate/notifications": "~5.7", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0-dev" + }, + "laravel": { + "providers": [ + "Illuminate\\Notifications\\SlackChannelServiceProvider" + ] + } + }, + "autoload": { + "psr-4": { + "Illuminate\\Notifications\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Taylor Otwell", + "email": "taylor@laravel.com" + } + ], + "description": "Slack Notification Channel for laravel.", + "keywords": [ + "laravel", + "notifications", + "slack" + ], + "time": "2018-12-12T13:12:06+00:00" + }, + { + "name": "lcobucci/jwt", + "version": "3.3.x-dev", + "source": { + "type": "git", + "url": "https://github.com/lcobucci/jwt.git", + "reference": "6f773d0b094e6f9065239755ab84bd297f7c8d81" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/6f773d0b094e6f9065239755ab84bd297f7c8d81", + "reference": "6f773d0b094e6f9065239755ab84bd297f7c8d81", + "shasum": "" + }, + "require": { + "ext-openssl": "*", + "php": "^5.6 || ^7.0" + }, + "require-dev": { + "mdanter/ecc": "~0.3.1", + "mikey179/vfsstream": "~1.5", + "phpmd/phpmd": "~2.2", + "phpunit/php-invoker": "~1.1", + "phpunit/phpunit": "^5.7 || ^7.3", + "squizlabs/php_codesniffer": "~2.3" + }, + "suggest": { + "mdanter/ecc": "Required to use Elliptic Curves based algorithms." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-dev" + } + }, + "autoload": { + "psr-4": { + "Lcobucci\\JWT\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Luís Otávio Cobucci Oblonczyk", + "email": "lcobucci@gmail.com", + "role": "Developer" + } + ], + "description": "A simple library to work with JSON Web Token and JSON Web Signature", + "keywords": [ + "JWS", + "jwt" + ], + "time": "2018-11-11T12:23:46+00:00" + }, + { + "name": "league/flysystem", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/thephpleague/flysystem.git", + "reference": "2528dbeee5cebc5066625da1487486b9e22c0706" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/2528dbeee5cebc5066625da1487486b9e22c0706", + "reference": "2528dbeee5cebc5066625da1487486b9e22c0706", + "shasum": "" + }, + "require": { + "ext-fileinfo": "*", + "php": ">=5.5.9" + }, + "conflict": { + "league/flysystem-sftp": "<1.0.6" + }, + "require-dev": { + "phpspec/phpspec": "^3.4", + "phpunit/phpunit": "^5.7.10" + }, + "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-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", + "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": { + "branch-alias": { + "dev-master": "1.1-dev" + } + }, + "autoload": { + "psr-4": { + "League\\Flysystem\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Frank de Jonge", + "email": "info@frenky.net" + } + ], + "description": "Filesystem abstraction: Many filesystems, one API.", + "keywords": [ + "Cloud Files", + "WebDAV", + "abstraction", + "aws", + "cloud", + "copy.com", + "dropbox", + "file systems", + "files", + "filesystem", "filesystems", "ftp", "rackspace", @@ -517,20 +872,20 @@ "sftp", "storage" ], - "time": "2015-12-06 14:09:00" + "time": "2018-12-09T20:53:18+00:00" }, { "name": "monolog/monolog", - "version": "dev-master", + "version": "1.x-dev", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "cab3ff71ffc802af272928ff71341cfc51e8ee98" + "reference": "68f536105f1e4fe439ccabac105bb1c90dee8b92" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/cab3ff71ffc802af272928ff71341cfc51e8ee98", - "reference": "cab3ff71ffc802af272928ff71341cfc51e8ee98", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/68f536105f1e4fe439ccabac105bb1c90dee8b92", + "reference": "68f536105f1e4fe439ccabac105bb1c90dee8b92", "shasum": "" }, "require": { @@ -541,17 +896,17 @@ "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", + "php-amqplib/php-amqplib": "~2.4", "php-console/php-console": "^3.1.3", "phpunit/phpunit": "~4.5", "phpunit/phpunit-mock-objects": "2.3.0", - "raven/raven": "^0.13", "ruflin/elastica": ">=0.90 <3.0", - "swiftmailer/swiftmailer": "~5.3", - "videlalvaro/php-amqplib": "~2.4" + "sentry/sentry": "^0.13", + "swiftmailer/swiftmailer": "^5.3|^6.0" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", @@ -560,16 +915,16 @@ "ext-mongo": "Allow sending log messages to a MongoDB server", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "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", - "raven/raven": "Allow sending log messages to a Sentry server", "rollbar/rollbar": "Allow sending log messages to Rollbar", "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "videlalvaro/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib" + "sentry/sentry": "Allow sending log messages to a Sentry server" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.18.x-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { @@ -595,32 +950,44 @@ "logging", "psr-3" ], - "time": "2015-11-26 23:48:42" + "time": "2018-12-11T10:11:11+00:00" }, { - "name": "mtdowling/cron-expression", - "version": "v1.0.4", + "name": "nesbot/carbon", + "version": "1.36.1", "source": { "type": "git", - "url": "https://github.com/mtdowling/cron-expression.git", - "reference": "fd92e883195e5dfa77720b1868cf084b08be4412" + "url": "https://github.com/briannesbitt/Carbon.git", + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/mtdowling/cron-expression/zipball/fd92e883195e5dfa77720b1868cf084b08be4412", - "reference": "fd92e883195e5dfa77720b1868cf084b08be4412", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/63da8cdf89d7a5efe43aabc794365f6e7b7b8983", + "reference": "63da8cdf89d7a5efe43aabc794365f6e7b7b8983", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.3.9", + "symfony/translation": "~2.6 || ~3.0 || ~4.0" }, "require-dev": { - "phpunit/phpunit": "4.*" + "phpunit/phpunit": "^4.8.35 || ^5.7" + }, + "suggest": { + "friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.", + "phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors." }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, "autoload": { - "psr-0": { - "Cron": "src/" + "psr-4": { + "": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -629,43 +996,51 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Brian Nesbitt", + "email": "brian@nesbot.com", + "homepage": "http://nesbot.com" } ], - "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", + "description": "A simple API extension for DateTime.", + "homepage": "http://carbon.nesbot.com", "keywords": [ - "cron", - "schedule" + "date", + "datetime", + "time" ], - "time": "2015-01-11 23:07:46" + "time": "2018-11-22T18:23:02+00:00" }, { - "name": "nesbot/carbon", - "version": "1.21.0", + "name": "nexmo/client", + "version": "1.5.2", "source": { "type": "git", - "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7" + "url": "https://github.com/Nexmo/nexmo-php.git", + "reference": "f192c84ec3cc3e2657fc754e0da1a17e39ac5542" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/7b08ec6f75791e130012f206e3f7b0e76e18e3d7", - "reference": "7b08ec6f75791e130012f206e3f7b0e76e18e3d7", + "url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/f192c84ec3cc3e2657fc754e0da1a17e39ac5542", + "reference": "f192c84ec3cc3e2657fc754e0da1a17e39ac5542", "shasum": "" }, "require": { - "php": ">=5.3.0", - "symfony/translation": "~2.6|~3.0" + "lcobucci/jwt": "^3.2", + "php": ">=5.6", + "php-http/client-implementation": "^1.0", + "php-http/guzzle6-adapter": "^1.0", + "zendframework/zend-diactoros": "^1.3" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "estahn/phpunit-json-assertions": "^1.0.0", + "php-http/mock-client": "^0.3.0", + "phpunit/phpunit": "^5.7", + "squizlabs/php_codesniffer": "^3.1" }, "type": "library", "autoload": { "psr-4": { - "Carbon\\": "src/Carbon/" + "Nexmo\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -674,100 +1049,101 @@ ], "authors": [ { - "name": "Brian Nesbitt", - "email": "brian@nesbot.com", - "homepage": "http://nesbot.com" + "name": "Tim Lytle", + "email": "tim@nexmo.com", + "homepage": "http://twitter.com/tjlytle", + "role": "Developer" } ], - "description": "A simple API extension for DateTime.", - "homepage": "http://carbon.nesbot.com", - "keywords": [ - "date", - "datetime", - "time" - ], - "time": "2015-11-04 20:07:17" + "description": "PHP Client for using Nexmo's API.", + "time": "2018-11-14T14:12:22+00:00" }, { - "name": "nikic/php-parser", - "version": "dev-master", + "name": "opis/closure", + "version": "3.1.1", "source": { "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "719ca71d4ac80e1985dcd91dd8ec5a47db58ad80" + "url": "https://github.com/opis/closure.git", + "reference": "d3209e46ad6c69a969b705df0738fd0dbe26ef9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/719ca71d4ac80e1985dcd91dd8ec5a47db58ad80", - "reference": "719ca71d4ac80e1985dcd91dd8ec5a47db58ad80", + "url": "https://api.github.com/repos/opis/closure/zipball/d3209e46ad6c69a969b705df0738fd0dbe26ef9e", + "reference": "d3209e46ad6c69a969b705df0738fd0dbe26ef9e", "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" }, - "bin": [ - "bin/php-parse" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0-dev" + "dev-master": "3.0.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": "2015-12-07 11:12:00" + "time": "2018-10-02T13:36:53+00:00" }, { "name": "paragonie/random_compat", - "version": "1.1.1", + "version": "v9.99.99", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32" + "reference": "84b4dfb120c6f9b4ff7b3685f9b8f1aa365a0c95" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/a208865a5aeffc2dbbef2a5b3409887272d93f32", - "reference": "a208865a5aeffc2dbbef2a5b3409887272d93f32", + "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" @@ -782,37 +1158,48 @@ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", + "polyfill", "pseudorandom", "random" ], - "time": "2015-12-01 02:52:15" + "time": "2018-07-02T15:55:56+00:00" }, { - "name": "psr/log", - "version": "dev-master", + "name": "php-http/guzzle6-adapter", + "version": "v1.1.1", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "9e45edca52cc9c954680072c93e621f8b71fab26" + "url": "https://github.com/php-http/guzzle6-adapter.git", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/9e45edca52cc9c954680072c93e621f8b71fab26", - "reference": "9e45edca52cc9c954680072c93e621f8b71fab26", + "url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab", + "reference": "a56941f9dc6110409cfcddc91546ee97039277ab", "shasum": "" }, "require": { - "php": ">=5.3.0" + "guzzlehttp/guzzle": "^6.0", + "php": ">=5.5.0", + "php-http/httplug": "^1.0" + }, + "provide": { + "php-http/async-client-implementation": "1.0", + "php-http/client-implementation": "1.0" + }, + "require-dev": { + "ext-curl": "*", + "php-http/adapter-integration-tests": "^0.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "1.2-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Http\\Adapter\\Guzzle6\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -821,67 +1208,54 @@ ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" + }, + { + "name": "David de Boer", + "email": "david@ddeboer.nl" } ], - "description": "Common interface for logging libraries", + "description": "Guzzle 6 HTTP Adapter", + "homepage": "http://httplug.io", "keywords": [ - "log", - "psr", - "psr-3" + "Guzzle", + "http" ], - "time": "2015-06-02 13:48:41" + "time": "2016-05-10T06:13:32+00:00" }, { - "name": "psy/psysh", - "version": "v0.6.1", + "name": "php-http/httplug", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/bobthecow/psysh.git", - "reference": "0f04df0b23663799a8941fae13cd8e6299bde3ed" + "url": "https://github.com/php-http/httplug.git", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/0f04df0b23663799a8941fae13cd8e6299bde3ed", - "reference": "0f04df0b23663799a8941fae13cd8e6299bde3ed", + "url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018", + "reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018", "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" + "php": ">=5.4", + "php-http/promise": "^1.0", + "psr/http-message": "^1.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" + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" }, - "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." - }, - "bin": [ - "bin/psysh" - ], "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.7.x-dev" + "dev-master": "1.1-dev" } }, "autoload": { - "files": [ - "src/Psy/functions.php" - ], "psr-4": { - "Psy\\": "src/Psy/" + "Http\\Client\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -890,51 +1264,50 @@ ], "authors": [ { - "name": "Justin Hileman", - "email": "justin@justinhileman.info", - "homepage": "http://justinhileman.com" + "name": "Eric GELOEN", + "email": "geloen.eric@gmail.com" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" } ], - "description": "An interactive shell for modern PHP.", - "homepage": "http://psysh.org", + "description": "HTTPlug, the HTTP client abstraction for PHP", + "homepage": "http://httplug.io", "keywords": [ - "REPL", - "console", - "interactive", - "shell" + "client", + "http" ], - "time": "2015-11-12 16:18:56" + "time": "2016-08-31T08:30:17+00:00" }, { - "name": "swiftmailer/swiftmailer", - "version": "5.x-dev", + "name": "php-http/promise", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "6522539daf0a7bdada1cc2dccb7ec37dc0712136" + "url": "https://github.com/php-http/promise.git", + "reference": "1cc44dc01402d407fc6da922591deebe4659826f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/6522539daf0a7bdada1cc2dccb7ec37dc0712136", - "reference": "6522539daf0a7bdada1cc2dccb7ec37dc0712136", + "url": "https://api.github.com/repos/php-http/promise/zipball/1cc44dc01402d407fc6da922591deebe4659826f", + "reference": "1cc44dc01402d407fc6da922591deebe4659826f", "shasum": "" }, - "require": { - "php": ">=5.3.3" - }, "require-dev": { - "mockery/mockery": "~0.9.1,<0.9.4" + "henrikbjorn/phpspec-code-coverage": "^1.0", + "phpspec/phpspec": "^2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.4-dev" + "dev-master": "1.0-dev" } }, "autoload": { - "files": [ - "lib/swift_required.php" - ] + "psr-4": { + "Http\\Promise\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -942,63 +1315,48 @@ ], "authors": [ { - "name": "Chris Corbyn" + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Joel Wurtz", + "email": "joel.wurtz@gmail.com" } ], - "description": "Swiftmailer, free feature-rich PHP mailer", - "homepage": "http://swiftmailer.org", + "description": "Promise used for asynchronous HTTP requests", + "homepage": "http://httplug.io", "keywords": [ - "email", - "mail", - "mailer" + "promise" ], - "time": "2015-09-04 05:47:20" + "time": "2017-11-22T21:24:54+00:00" }, { - "name": "symfony/console", - "version": "3.0.x-dev", + "name": "psr/container", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "83541f8d409e760e95317f072480e9ebc10b974f" + "url": "https://github.com/php-fig/container.git", + "reference": "2cc4a01788191489dc7459446ba832fa79a216a7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/83541f8d409e760e95317f072480e9ebc10b974f", - "reference": "83541f8d409e760e95317f072480e9ebc10b974f", + "url": "https://api.github.com/repos/php-fig/container/zipball/2cc4a01788191489dc7459446ba832fa79a216a7", + "reference": "2cc4a01788191489dc7459446ba832fa79a216a7", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\Container\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1006,56 +1364,48 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Symfony Console Component", - "homepage": "https://symfony.com", - "time": "2015-12-05 17:45:07" + "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-06-28T15:35:32+00:00" }, { - "name": "symfony/debug", - "version": "3.0.x-dev", + "name": "psr/http-message", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/debug.git", - "reference": "0623b00095f0833412ee6f92f421e9adf4c7e113" + "url": "https://github.com/php-fig/http-message.git", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/0623b00095f0833412ee6f92f421e9adf4c7e113", - "reference": "0623b00095f0833412ee6f92f421e9adf4c7e113", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", + "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", "shasum": "" }, "require": { - "php": ">=5.5.9", - "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" - }, - "require-dev": { - "symfony/class-loader": "~2.8|~3.0", - "symfony/http-kernel": "~2.8|~3.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Debug\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\Http\\Message\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1063,59 +1413,49 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Symfony Debug Component", - "homepage": "https://symfony.com", - "time": "2015-11-27 05:46:53" + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "time": "2016-08-06T14:39:51+00:00" }, { - "name": "symfony/event-dispatcher", + "name": "psr/log", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "ae978c6a5289e42111b2fadd38fb0b53f772cd66" + "url": "https://github.com/php-fig/log.git", + "reference": "c4421fcac1edd5a324fda73e589a5cf96e52ffd0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/ae978c6a5289e42111b2fadd38fb0b53f772cd66", - "reference": "ae978c6a5289e42111b2fadd38fb0b53f772cd66", + "url": "https://api.github.com/repos/php-fig/log/zipball/c4421fcac1edd5a324fda73e589a5cf96e52ffd0", + "reference": "c4421fcac1edd5a324fda73e589a5cf96e52ffd0", "shasum": "" }, "require": { - "php": ">=5.5.9" - }, - "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\Log\\": "Psr/Log/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1123,48 +1463,46 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Symfony EventDispatcher Component", - "homepage": "https://symfony.com", - "time": "2015-11-30 21:39:17" + "description": "Common interface for logging libraries", + "homepage": "https://github.com/php-fig/log", + "keywords": [ + "log", + "psr", + "psr-3" + ], + "time": "2018-11-21T13:42:00+00:00" }, { - "name": "symfony/finder", - "version": "3.0.x-dev", + "name": "psr/simple-cache", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "8617895eb798b6bdb338321ce19453dc113e5675" + "url": "https://github.com/php-fig/simple-cache.git", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/8617895eb798b6bdb338321ce19453dc113e5675", - "reference": "8617895eb798b6bdb338321ce19453dc113e5675", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Psr\\SimpleCache\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1172,50 +1510,45 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" } ], - "description": "Symfony Finder Component", - "homepage": "https://symfony.com", - "time": "2015-12-05 11:13:14" + "description": "Common interfaces for simple caching", + "keywords": [ + "cache", + "caching", + "psr", + "psr-16", + "simple-cache" + ], + "time": "2017-10-23T01:57:42+00:00" }, { - "name": "symfony/http-foundation", - "version": "3.0.x-dev", + "name": "ralouphie/getallheaders", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/http-foundation.git", - "reference": "134f657cd0d3f2087cbd76a47c0d2094618a4d98" + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "beb49b96960f0cbf17e7fbcaaddc8eb434e126eb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/134f657cd0d3f2087cbd76a47c0d2094618a4d98", - "reference": "134f657cd0d3f2087cbd76a47c0d2094618a4d98", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/beb49b96960f0cbf17e7fbcaaddc8eb434e126eb", + "reference": "beb49b96960f0cbf17e7fbcaaddc8eb434e126eb", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=5.6" }, "require-dev": { - "symfony/expression-language": "~2.8|~3.0" + "phpunit/phpunit": "^5", + "satooshi/php-coveralls": ">=1.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\HttpFoundation\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "files": [ + "src/getallheaders.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1224,81 +1557,67 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" } ], - "description": "Symfony HttpFoundation Component", - "homepage": "https://symfony.com", - "time": "2015-12-05 17:45:07" + "description": "A polyfill for getallheaders.", + "time": "2018-12-11T21:53:24+00:00" }, { - "name": "symfony/http-kernel", - "version": "3.0.x-dev", + "name": "ramsey/uuid", + "version": "3.x-dev", "source": { "type": "git", - "url": "https://github.com/symfony/http-kernel.git", - "reference": "97e256823716ab54d034c35ffa6cd64e3e3d8c33" + "url": "https://github.com/ramsey/uuid.git", + "reference": "4c467ce4d5a72c3cf0832c813d4d84d222c3d4bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6219f2df4de3b93d8a59c813755100f85e26a732", - "reference": "97e256823716ab54d034c35ffa6cd64e3e3d8c33", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/4c467ce4d5a72c3cf0832c813d4d84d222c3d4bb", + "reference": "4c467ce4d5a72c3cf0832c813d4d84d222c3d4bb", "shasum": "" }, "require": { - "php": ">=5.5.9", - "psr/log": "~1.0", - "symfony/debug": "~2.8|~3.0", - "symfony/event-dispatcher": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0" + "ext-json": "*", + "paragonie/random_compat": "^1.0|^2.0|9.99.99", + "php": "^5.4 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, - "conflict": { - "symfony/config": "<2.8" + "replace": { + "rhumsaa/uuid": "self.version" }, "require-dev": { - "symfony/browser-kit": "~2.8|~3.0", - "symfony/class-loader": "~2.8|~3.0", - "symfony/config": "~2.8|~3.0", - "symfony/console": "~2.8|~3.0", - "symfony/css-selector": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", - "symfony/dom-crawler": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/finder": "~2.8|~3.0", - "symfony/process": "~2.8|~3.0", - "symfony/routing": "~2.8|~3.0", - "symfony/stopwatch": "~2.8|~3.0", - "symfony/templating": "~2.8|~3.0", - "symfony/translation": "~2.8|~3.0", - "symfony/var-dumper": "~2.8|~3.0" + "codeception/aspect-mock": "^1.0 | ~2.0.0", + "doctrine/annotations": "~1.2.0", + "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ~2.1.0", + "ircmaxell/random-lib": "^1.1", + "jakub-onderka/php-parallel-lint": "^0.9.0", + "mockery/mockery": "^0.9.9", + "moontoast/math": "^1.1", + "php-mock/php-mock-phpunit": "^0.3|^1.1", + "phpunit/phpunit": "^4.7|^5.0|^6.5", + "squizlabs/php_codesniffer": "^2.3" }, "suggest": { - "symfony/browser-kit": "", - "symfony/class-loader": "", - "symfony/config": "", - "symfony/console": "", - "symfony/dependency-injection": "", - "symfony/finder": "", - "symfony/var-dumper": "" + "ext-ctype": "Provides support for PHP Ctype functions", + "ext-libsodium": "Provides the PECL libsodium extension for use with the SodiumRandomGenerator", + "ext-uuid": "Provides the PECL UUID extension for use with the PeclUuidTimeGenerator and PeclUuidRandomGenerator", + "ircmaxell/random-lib": "Provides RandomLib for use with the RandomLibAdapter", + "moontoast/math": "Provides support for converting UUID to 128-bit integer (in string form).", + "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.0-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\HttpKernel\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Ramsey\\Uuid\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1306,50 +1625,63 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Marijn Huizendveld", + "email": "marijn.huizendveld@gmail.com" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Thibaud Fabre", + "email": "thibaud@aztech.io" + }, + { + "name": "Ben Ramsey", + "email": "ben@benramsey.com", + "homepage": "https://benramsey.com" } ], - "description": "Symfony HttpKernel Component", - "homepage": "https://symfony.com", - "time": "2015-11-30 21:21:35" + "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": [ + "guid", + "identifier", + "uuid" + ], + "time": "2018-08-12T15:49:01+00:00" }, { - "name": "symfony/polyfill-mbstring", + "name": "swiftmailer/swiftmailer", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25" + "url": "https://github.com/swiftmailer/swiftmailer.git", + "reference": "e8c3ed713d199760c1730fb89a38cefe7f54c4ae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/49ff736bd5d41f45240cec77b44967d76e0c3d25", - "reference": "49ff736bd5d41f45240cec77b44967d76e0c3d25", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/e8c3ed713d199760c1730fb89a38cefe7f54c4ae", + "reference": "e8c3ed713d199760c1730fb89a38cefe7f54c4ae", "shasum": "" }, "require": { - "php": ">=5.3.3" + "egulias/email-validator": "~2.0", + "php": ">=7.0.0" + }, + "require-dev": { + "mockery/mockery": "~0.9.1", + "symfony/phpunit-bridge": "^3.4.19|^4.1.8" }, "suggest": { - "ext-mbstring": "For best performance" + "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": "1.0-dev" + "dev-master": "6.1-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - }, "files": [ - "bootstrap.php" + "lib/swift_required.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1358,55 +1690,71 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Chris Corbyn" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" } ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", + "description": "Swiftmailer, free feature-rich PHP mailer", + "homepage": "https://swiftmailer.symfony.com", "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" + "email", + "mail", + "mailer" ], - "time": "2015-11-20 09:19:13" + "time": "2018-12-11T07:20:26+00:00" }, { - "name": "symfony/polyfill-php56", + "name": "symfony/console", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php56.git", - "reference": "a6bd4770a6967517e6610529e14afaa3111094a3" + "url": "https://github.com/symfony/console.git", + "reference": "7dac0f8df415100d5d4ecd71213d794546d65d0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php56/zipball/a6bd4770a6967517e6610529e14afaa3111094a3", - "reference": "a6bd4770a6967517e6610529e14afaa3111094a3", + "url": "https://api.github.com/repos/symfony/console/zipball/7dac0f8df415100d5d4ecd71213d794546d65d0e", + "reference": "7dac0f8df415100d5d4ecd71213d794546d65d0e", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/polyfill-util": "~1.0" + "php": "^7.1.3", + "symfony/contracts": "^1.0", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/dependency-injection": "<3.4", + "symfony/process": "<3.3" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/event-dispatcher": "~3.4|~4.0", + "symfony/lock": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Php56\\": "" + "Symfony\\Component\\Console\\": "" }, - "files": [ - "bootstrap.php" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1415,40 +1763,45 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 5.6+ features to lower PHP versions", + "description": "Symfony Console Component", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "time": "2015-11-04 20:28:58" + "time": "2018-12-13T12:43:21+00:00" }, { - "name": "symfony/polyfill-util", + "name": "symfony/contracts", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-util.git", - "reference": "4271c55cbc0a77b2641f861b978123e46b3da969" + "url": "https://github.com/symfony/contracts.git", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-util/zipball/4271c55cbc0a77b2641f861b978123e46b3da969", - "reference": "4271c55cbc0a77b2641f861b978123e46b3da969", + "url": "https://api.github.com/repos/symfony/contracts/zipball/1aa7ab2429c3d594dd70689604b5cf7421254cdf", + "reference": "1aa7ab2429c3d594dd70689604b5cf7421254cdf", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1.3" + }, + "require-dev": { + "psr/cache": "^1.0", + "psr/container": "^1.0" + }, + "suggest": { + "psr/cache": "When using the Cache contracts", + "psr/container": "When using the Service contracts", + "symfony/cache-contracts-implementation": "", + "symfony/service-contracts-implementation": "", + "symfony/translation-contracts-implementation": "" }, "type": "library", "extra": { @@ -1458,8 +1811,11 @@ }, "autoload": { "psr-4": { - "Symfony\\Polyfill\\Util\\": "" - } + "Symfony\\Contracts\\": "" + }, + "exclude-from-classmap": [ + "**/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1475,42 +1831,44 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony utilities for portability of PHP codes", + "description": "A set of abstractions extracted out of the Symfony components", "homepage": "https://symfony.com", "keywords": [ - "compat", - "compatibility", - "polyfill", - "shim" - ], - "time": "2015-11-04 20:28:58" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "time": "2018-12-05T08:06:11+00:00" }, { - "name": "symfony/process", - "version": "3.0.x-dev", + "name": "symfony/css-selector", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "218e5170839253e86006257a467577794324e6f8" + "url": "https://github.com/symfony/css-selector.git", + "reference": "641b33f9f3aceec60c54bcc0d3197043f54a9c35" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/9926fbbc8881813ad3062b516e6da7f0e89670e1", - "reference": "218e5170839253e86006257a467577794324e6f8", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/641b33f9f3aceec60c54bcc0d3197043f54a9c35", + "reference": "641b33f9f3aceec60c54bcc0d3197043f54a9c35", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\CssSelector\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1521,6 +1879,10 @@ "MIT" ], "authors": [ + { + "name": "Jean-François Simon", + "email": "jeanfrancois.simon@sensiolabs.com" + }, { "name": "Fabien Potencier", "email": "fabien@symfony.com" @@ -1530,55 +1892,43 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Process Component", + "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2015-12-05 18:14:16" + "time": "2018-12-13T12:43:21+00:00" }, { - "name": "symfony/routing", - "version": "3.0.x-dev", + "name": "symfony/debug", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/routing.git", - "reference": "1ff4926b6ffd9bc66b6dcd13bff5025950826176" + "url": "https://github.com/symfony/debug.git", + "reference": "7f2f295f386c4b0054cf02099c29655a0c6265b8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/1ff4926b6ffd9bc66b6dcd13bff5025950826176", - "reference": "1ff4926b6ffd9bc66b6dcd13bff5025950826176", + "url": "https://api.github.com/repos/symfony/debug/zipball/7f2f295f386c4b0054cf02099c29655a0c6265b8", + "reference": "7f2f295f386c4b0054cf02099c29655a0c6265b8", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^7.1.3", + "psr/log": "~1.0" }, "conflict": { - "symfony/config": "<2.8" + "symfony/http-kernel": "<3.4" }, "require-dev": { - "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", - "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/expression-language": "~2.8|~3.0", - "symfony/http-foundation": "~2.8|~3.0", - "symfony/yaml": "~2.8|~3.0" - }, - "suggest": { - "doctrine/annotations": "For using the annotation loader", - "symfony/config": "For using the all-in-one router or any loader", - "symfony/dependency-injection": "For loading routes from a service", - "symfony/expression-language": "For using expression matching", - "symfony/yaml": "For using the YAML loader" + "symfony/http-kernel": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Routing\\": "" + "Symfony\\Component\\Debug\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1598,57 +1948,51 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Routing Component", + "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "keywords": [ - "router", - "routing", - "uri", - "url" - ], - "time": "2015-12-05 17:45:07" + "time": "2018-12-13T12:43:21+00:00" }, { - "name": "symfony/translation", - "version": "3.0.x-dev", + "name": "symfony/event-dispatcher", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/translation.git", - "reference": "dff0867826a7068d673801b7522f8e2634016ef9" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "a6ec602b1c247fd67f9104642f397bc70667df84" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/dff0867826a7068d673801b7522f8e2634016ef9", - "reference": "dff0867826a7068d673801b7522f8e2634016ef9", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/a6ec602b1c247fd67f9104642f397bc70667df84", + "reference": "a6ec602b1c247fd67f9104642f397bc70667df84", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" + "php": "^7.1.3", + "symfony/contracts": "^1.0" }, "conflict": { - "symfony/config": "<2.8" + "symfony/dependency-injection": "<3.4" }, "require-dev": { "psr/log": "~1.0", - "symfony/config": "~2.8|~3.0", - "symfony/intl": "~2.8|~3.0", - "symfony/yaml": "~2.8|~3.0" + "symfony/config": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0" }, "suggest": { - "psr/log": "To use logging capability in translator", - "symfony/config": "", - "symfony/yaml": "" + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Translation\\": "" + "Symfony\\Component\\EventDispatcher\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1668,46 +2012,36 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony Translation Component", + "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2015-12-05 17:45:07" + "time": "2018-12-13T12:43:21+00:00" }, { - "name": "symfony/var-dumper", - "version": "3.0.x-dev", + "name": "symfony/finder", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "87db8700deb12ba2b65e858f656a1f885530bcb0" + "url": "https://github.com/symfony/finder.git", + "reference": "d2bae4531a8d48ee610ec664d10336c9500e3a64" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/87db8700deb12ba2b65e858f656a1f885530bcb0", - "reference": "87db8700deb12ba2b65e858f656a1f885530bcb0", + "url": "https://api.github.com/repos/symfony/finder/zipball/d2bae4531a8d48ee610ec664d10336c9500e3a64", + "reference": "d2bae4531a8d48ee610ec664d10336c9500e3a64", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "twig/twig": "~1.20|~2.0" - }, - "suggest": { - "ext-symfony_debug": "" + "php": "^7.1.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.3-dev" } }, "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" + "Symfony\\Component\\Finder\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -1719,109 +2053,142 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony mechanism for exploring and dumping PHP variables", + "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "keywords": [ - "debug", - "dump" - ], - "time": "2015-12-05 11:13:14" + "time": "2018-12-13T12:43:21+00:00" }, { - "name": "vlucas/phpdotenv", + "name": "symfony/http-foundation", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "101d5d7498bcd827e73c20da2f687e79d2d139f9" + "url": "https://github.com/symfony/http-foundation.git", + "reference": "1ce8fb2bf91217d2811d5fb2231cb33c97f7a3fe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/101d5d7498bcd827e73c20da2f687e79d2d139f9", - "reference": "101d5d7498bcd827e73c20da2f687e79d2d139f9", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/1ce8fb2bf91217d2811d5fb2231cb33c97f7a3fe", + "reference": "1ce8fb2bf91217d2811d5fb2231cb33c97f7a3fe", "shasum": "" }, "require": { - "php": ">=5.3.9" + "php": "^7.1.3", + "symfony/polyfill-mbstring": "~1.1" }, "require-dev": { - "phpunit/phpunit": "~4.0" + "predis/predis": "~1.0", + "symfony/expression-language": "~3.4|~4.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.1-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Dotenv\\": "src/" - } + "Symfony\\Component\\HttpFoundation\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "MIT" ], "authors": [ { - "name": "Vance Lucas", - "email": "vance@vancelucas.com", - "homepage": "http://www.vancelucas.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", - "homepage": "http://github.com/vlucas/phpdotenv", - "keywords": [ - "dotenv", - "env", - "environment" - ], - "time": "2015-11-19 09:09:30" - } - ], - "packages-dev": [ + "description": "Symfony HttpFoundation Component", + "homepage": "https://symfony.com", + "time": "2018-12-13T12:43:21+00:00" + }, { - "name": "doctrine/instantiator", + "name": "symfony/http-kernel", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d" + "url": "https://github.com/symfony/http-kernel.git", + "reference": "a91b2522475ac55a7d312961645cf6a2b57bea0c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8e884e78f9f0eb1329e445619e04456e64d8051d", - "reference": "8e884e78f9f0eb1329e445619e04456e64d8051d", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a91b2522475ac55a7d312961645cf6a2b57bea0c", + "reference": "a91b2522475ac55a7d312961645cf6a2b57bea0c", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "php": "^7.1.3", + "psr/log": "~1.0", + "symfony/contracts": "^1.0.2", + "symfony/debug": "~3.4|~4.0", + "symfony/event-dispatcher": "~4.1", + "symfony/http-foundation": "^4.1.1", + "symfony/polyfill-ctype": "~1.8" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<4.2", + "symfony/translation": "<4.2", + "symfony/var-dumper": "<4.1.1", + "twig/twig": "<1.34|<2.4,>=2" + }, + "provide": { + "psr/log-implementation": "1.0" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~2.0" + "psr/cache": "~1.0", + "symfony/browser-kit": "~3.4|~4.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/css-selector": "~3.4|~4.0", + "symfony/dependency-injection": "^4.2", + "symfony/dom-crawler": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/finder": "~3.4|~4.0", + "symfony/process": "~3.4|~4.0", + "symfony/routing": "~3.4|~4.0", + "symfony/stopwatch": "~3.4|~4.0", + "symfony/templating": "~3.4|~4.0", + "symfony/translation": "~4.2", + "symfony/var-dumper": "^4.1.1" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "", + "symfony/var-dumper": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "4.3-dev" } }, "autoload": { "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } + "Symfony\\Component\\HttpKernel\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1829,51 +2196,51 @@ ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", - "keywords": [ - "constructor", - "instantiate" - ], - "time": "2015-06-14 21:17:01" + "description": "Symfony HttpKernel Component", + "homepage": "https://symfony.com", + "time": "2018-12-13T12:43:21+00:00" }, { - "name": "fzaninotto/faker", - "version": "dev-master", + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/fzaninotto/Faker.git", - "reference": "3037df47eca2e534f62f061415a071f9b5d1a1a4" + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/3037df47eca2e534f62f061415a071f9b5d1a1a4", - "reference": "3037df47eca2e534f62f061415a071f9b5d1a1a4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", "shasum": "" }, "require": { "php": ">=5.3.3" }, - "require-dev": { - "ext-intl": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "~1.5" + "suggest": { + "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.9-dev" } }, "autoload": { "psr-4": { - "Faker\\": "src/Faker/" - } + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1881,110 +2248,777 @@ ], "authors": [ { - "name": "François Zaninotto" + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" } ], - "description": "Faker is a PHP library that generates fake data for you.", + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", "keywords": [ - "data", - "faker", - "fixtures" + "compatibility", + "ctype", + "polyfill", + "portable" ], - "time": "2015-11-30 17:35:42" + "time": "2018-08-06T14:22:27+00:00" }, { - "name": "hamcrest/hamcrest-php", - "version": "v1.2.2", + "name": "symfony/polyfill-mbstring", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/hamcrest/hamcrest-php.git", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c" + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/b37020aa976fa52d3de9aa904aa2522dc518f79c", - "reference": "b37020aa976fa52d3de9aa904aa2522dc518f79c", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { - "php": ">=5.3.2" - }, - "replace": { - "cordoval/hamcrest-php": "*", - "davedevelopment/hamcrest-php": "*", - "kodova/hamcrest-php": "*" + "php": ">=5.3.3" }, - "require-dev": { - "phpunit/php-file-iterator": "1.3.3", - "satooshi/php-coveralls": "dev-master" + "suggest": { + "ext-mbstring": "For best performance" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, "autoload": { - "classmap": [ - "hamcrest" - ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + }, "files": [ - "hamcrest/Hamcrest.php" + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD" + "MIT" ], - "description": "This is the PHP port of Hamcrest Matchers", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", "keywords": [ - "test" + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" ], - "time": "2015-05-11 14:41:42" + "time": "2018-09-21T13:07:52+00:00" }, { - "name": "mockery/mockery", - "version": "0.9.4", + "name": "symfony/polyfill-php72", + "version": "v1.10.0", "source": { "type": "git", - "url": "https://github.com/padraic/mockery.git", - "reference": "70bba85e4aabc9449626651f48b9018ede04f86b" + "url": "https://github.com/symfony/polyfill-php72.git", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/padraic/mockery/zipball/70bba85e4aabc9449626651f48b9018ede04f86b", - "reference": "70bba85e4aabc9449626651f48b9018ede04f86b", + "url": "https://api.github.com/repos/symfony/polyfill-php72/zipball/9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", + "reference": "9050816e2ca34a8e916c3a0ae8b9c2fccf68b631", "shasum": "" }, "require": { - "hamcrest/hamcrest-php": "~1.1", - "lib-pcre": ">=7.0", - "php": ">=5.3.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" + "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "0.9.x-dev" + "dev-master": "1.9-dev" } }, "autoload": { - "psr-0": { - "Mockery": "library/" - } + "psr-4": { + "Symfony\\Polyfill\\Php72\\": "" + }, + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], "authors": [ { - "name": "Pádraic Brady", - "email": "padraic.brady@gmail.com", - "homepage": "http://blog.astrumfutura.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { - "name": "Dave Marshall", - "email": "dave.marshall@atstsolutions.co.uk", - "homepage": "http://davedevelopment.co.uk" - } + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 7.2+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "time": "2018-09-21T13:07:52+00:00" + }, + { + "name": "symfony/process", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "d87c6f01ac6dfc4af25c0f4fb7eeecdc03927615" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/process/zipball/d87c6f01ac6dfc4af25c0f4fb7eeecdc03927615", + "reference": "d87c6f01ac6dfc4af25c0f4fb7eeecdc03927615", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Process\\": "" + }, + "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 Process Component", + "homepage": "https://symfony.com", + "time": "2018-12-13T12:43:21+00:00" + }, + { + "name": "symfony/routing", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/routing.git", + "reference": "ec8e9f67c281ad7f81a5878d6bf3ae5331b11309" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/routing/zipball/ec8e9f67c281ad7f81a5878d6bf3ae5331b11309", + "reference": "ec8e9f67c281ad7f81a5878d6bf3ae5331b11309", + "shasum": "" + }, + "require": { + "php": "^7.1.3" + }, + "conflict": { + "symfony/config": "<4.2", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "require-dev": { + "doctrine/annotations": "~1.0", + "psr/log": "~1.0", + "symfony/config": "~4.2", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/expression-language": "~3.4|~4.0", + "symfony/http-foundation": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "doctrine/annotations": "For using the annotation loader", + "symfony/config": "For using the all-in-one router or any loader", + "symfony/dependency-injection": "For loading routes from a service", + "symfony/expression-language": "For using expression matching", + "symfony/http-foundation": "For using a Symfony Request object", + "symfony/yaml": "For using the YAML loader" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Routing\\": "" + }, + "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 Routing Component", + "homepage": "https://symfony.com", + "keywords": [ + "router", + "routing", + "uri", + "url" + ], + "time": "2018-12-13T12:43:21+00:00" + }, + { + "name": "symfony/translation", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/translation.git", + "reference": "5c111fac40dc3ed9b62e33aa641b35c9b5ef5cd0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/translation/zipball/5c111fac40dc3ed9b62e33aa641b35c9b5ef5cd0", + "reference": "5c111fac40dc3ed9b62e33aa641b35c9b5ef5cd0", + "shasum": "" + }, + "require": { + "php": "^7.1.3", + "symfony/contracts": "^1.0.2", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/config": "<3.4", + "symfony/dependency-injection": "<3.4", + "symfony/yaml": "<3.4" + }, + "provide": { + "symfony/translation-contracts-implementation": "1.0" + }, + "require-dev": { + "psr/log": "~1.0", + "symfony/config": "~3.4|~4.0", + "symfony/console": "~3.4|~4.0", + "symfony/dependency-injection": "~3.4|~4.0", + "symfony/finder": "~2.8|~3.0|~4.0", + "symfony/intl": "~3.4|~4.0", + "symfony/yaml": "~3.4|~4.0" + }, + "suggest": { + "psr/log-implementation": "To use logging capability in translator", + "symfony/config": "", + "symfony/yaml": "" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.3-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Component\\Translation\\": "" + }, + "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 Translation Component", + "homepage": "https://symfony.com", + "time": "2018-12-13T12:43:21+00:00" + }, + { + "name": "symfony/var-dumper", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/symfony/var-dumper.git", + "reference": "f74fd0792403b8cf1ff8acbe71f23e01230a7901" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/f74fd0792403b8cf1ff8acbe71f23e01230a7901", + "reference": "f74fd0792403b8cf1ff8acbe71f23e01230a7901", + "shasum": "" + }, + "require": { + "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/process": "~3.4|~4.0", + "twig/twig": "~1.34|~2.4" + }, + "suggest": { + "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": "4.3-dev" + } + }, + "autoload": { + "files": [ + "Resources/functions/dump.php" + ], + "psr-4": { + "Symfony\\Component\\VarDumper\\": "" + }, + "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 mechanism for exploring and dumping PHP variables", + "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], + "time": "2018-12-13T12:43:21+00:00" + }, + { + "name": "tijsverkoyen/css-to-inline-styles", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/tijsverkoyen/CssToInlineStyles.git", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/tijsverkoyen/CssToInlineStyles/zipball/0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "reference": "0ed4a2ea4e0902dac0489e6436ebcd5bbcae9757", + "shasum": "" + }, + "require": { + "php": "^5.5 || ^7.0", + "symfony/css-selector": "^2.7 || ^3.0 || ^4.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": "2017-11-27T11:13:29+00:00" + }, + { + "name": "vlucas/phpdotenv", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/vlucas/phpdotenv.git", + "reference": "cfd5dc225767ca154853752abc93aeec040fcf36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/cfd5dc225767ca154853752abc93aeec040fcf36", + "reference": "cfd5dc225767ca154853752abc93aeec040fcf36", + "shasum": "" + }, + "require": { + "php": ">=5.3.9" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.5-dev" + } + }, + "autoload": { + "psr-4": { + "Dotenv\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Vance Lucas", + "email": "vance@vancelucas.com", + "homepage": "http://www.vancelucas.com" + } + ], + "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", + "keywords": [ + "dotenv", + "env", + "environment" + ], + "time": "2018-10-30T17:29:25+00:00" + }, + { + "name": "zendframework/zend-diactoros", + "version": "dev-release-1.8", + "source": { + "type": "git", + "url": "https://github.com/zendframework/zend-diactoros.git", + "reference": "1dc4959014d3e7304bd87c58bcf96cf3fc63ac00" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/1dc4959014d3e7304bd87c58bcf96cf3fc63ac00", + "reference": "1dc4959014d3e7304bd87c58bcf96cf3fc63ac00", + "shasum": "" + }, + "require": { + "php": "^5.6 || ^7.0", + "psr/http-message": "^1.0" + }, + "provide": { + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "ext-dom": "*", + "ext-libxml": "*", + "php-http/psr7-integration-tests": "dev-master", + "phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7", + "zendframework/zend-coding-standard": "~1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-release-1.8": "1.8.x-dev" + } + }, + "autoload": { + "files": [ + "src/functions/create_uploaded_file.php", + "src/functions/marshal_headers_from_sapi.php", + "src/functions/marshal_method_from_sapi.php", + "src/functions/marshal_protocol_version_from_sapi.php", + "src/functions/marshal_uri_from_sapi.php", + "src/functions/normalize_server.php", + "src/functions/normalize_uploaded_files.php", + "src/functions/parse_cookie_header.php" + ], + "psr-4": { + "Zend\\Diactoros\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-2-Clause" + ], + "description": "PSR HTTP Message implementations", + "homepage": "https://github.com/zendframework/zend-diactoros", + "keywords": [ + "http", + "psr", + "psr-7" + ], + "time": "2018-09-27T19:45:25+00:00" + } + ], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "8c8c1afee0f929f17528fe1721de5d58e15f71c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/8c8c1afee0f929f17528fe1721de5d58e15f71c7", + "reference": "8c8c1afee0f929f17528fe1721de5d58e15f71c7", + "shasum": "" + }, + "require": { + "php": "^7.1" + }, + "require-dev": { + "doctrine/coding-standard": "^5.0", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.13", + "phpstan/phpstan-shim": "^0.9.2", + "phpunit/phpunit": "^7.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2.x-dev" + } + }, + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "http://ocramius.github.com/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "time": "2018-10-15T11:30:00+00:00" + }, + { + "name": "fzaninotto/faker", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/fzaninotto/Faker.git", + "reference": "06ac73da6517f58afe998ed46f93825d7a277d8d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/06ac73da6517f58afe998ed46f93825d7a277d8d", + "reference": "06ac73da6517f58afe998ed46f93825d7a277d8d", + "shasum": "" + }, + "require": { + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "ext-intl": "*", + "phpunit/phpunit": "^4.8.35 || ^5.7", + "squizlabs/php_codesniffer": "^1.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Faker\\": "src/Faker/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "François Zaninotto" + } + ], + "description": "Faker is a PHP library that generates fake data for you.", + "keywords": [ + "data", + "faker", + "fixtures" + ], + "time": "2018-11-22T13:56:51+00:00" + }, + { + "name": "hamcrest/hamcrest-php", + "version": "1.2.x-dev", + "source": { + "type": "git", + "url": "https://github.com/hamcrest/hamcrest-php.git", + "reference": "26968e9810ff0d1aa48f6d67a862559d92a51884" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/hamcrest/hamcrest-php/zipball/26968e9810ff0d1aa48f6d67a862559d92a51884", + "reference": "26968e9810ff0d1aa48f6d67a862559d92a51884", + "shasum": "" + }, + "require": { + "php": "^5.3|^7.0" + }, + "replace": { + "cordoval/hamcrest-php": "*", + "davedevelopment/hamcrest-php": "*", + "kodova/hamcrest-php": "*" + }, + "require-dev": { + "phpunit/php-file-iterator": "1.3.3", + "phpunit/phpunit": "~4.0", + "satooshi/php-coveralls": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.2-dev" + } + }, + "autoload": { + "classmap": [ + "hamcrest" + ], + "files": [ + "hamcrest/Hamcrest.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "description": "This is the PHP port of Hamcrest Matchers", + "keywords": [ + "test" + ], + "time": "2018-02-19T09:04:07+00:00" + }, + { + "name": "mockery/mockery", + "version": "0.9.x-dev", + "source": { + "type": "git", + "url": "https://github.com/mockery/mockery.git", + "reference": "4876fc0c7d9e5da49712554a35c94d84ed1e9ee5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/mockery/mockery/zipball/4876fc0c7d9e5da49712554a35c94d84ed1e9ee5", + "reference": "4876fc0c7d9e5da49712554a35c94d84ed1e9ee5", + "shasum": "" + }, + "require": { + "hamcrest/hamcrest-php": "~1.1", + "lib-pcre": ">=7.0", + "php": ">=5.3.2" + }, + "require-dev": { + "phpunit/phpunit": "~4.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "0.9.x-dev" + } + }, + "autoload": { + "psr-0": { + "Mockery": "library/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Pádraic Brady", + "email": "padraic.brady@gmail.com", + "homepage": "http://blog.astrumfutura.com" + }, + { + "name": "Dave Marshall", + "email": "dave.marshall@atstsolutions.co.uk", + "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", @@ -2000,36 +3034,305 @@ "test double", "testing" ], - "time": "2015-04-02 19:54:00" + "time": "2018-11-13T20:50:16+00:00" }, { - "name": "orchestra/database", - "version": "3.2.x-dev", + "name": "myclabs/deep-copy", + "version": "1.x-dev", "source": { "type": "git", - "url": "https://github.com/orchestral/database.git", - "reference": "69315c730c9bc4a34fbfadcca28b681c014fa941" + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/database/zipball/69315c730c9bc4a34fbfadcca28b681c014fa941", - "reference": "69315c730c9bc4a34fbfadcca28b681c014fa941", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "illuminate/contracts": "~5.2.0", - "illuminate/database": "~5.2.0", - "php": ">=5.5.0" + "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": "2018-06-11T23:09:50+00:00" + }, + { + "name": "orchestra/testbench", + "version": "v3.7.4", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench.git", + "reference": "c569608fcecc9ee044f2485d58c1ac5fab26ee2f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench/zipball/c569608fcecc9ee044f2485d58c1ac5fab26ee2f", + "reference": "c569608fcecc9ee044f2485d58c1ac5fab26ee2f", + "shasum": "" + }, + "require": { + "laravel/framework": "~5.7.4", + "orchestra/testbench-core": "~3.7.5", + "php": ">=7.1", + "phpunit/phpunit": "^7.0" + }, + "require-dev": { + "mockery/mockery": "^1.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Laravel Testing Helper for Packages Development", + "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", + "keywords": [ + "BDD", + "TDD", + "laravel", + "orchestra-platform", + "orchestral", + "testing" + ], + "time": "2018-10-07T02:44:38+00:00" + }, + { + "name": "orchestra/testbench-core", + "version": "3.7.x-dev", + "source": { + "type": "git", + "url": "https://github.com/orchestral/testbench-core.git", + "reference": "b5c97f3f3ae488c9e92196c2a7fcf3def9d23e36" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/orchestral/testbench-core/zipball/b5c97f3f3ae488c9e92196c2a7fcf3def9d23e36", + "reference": "b5c97f3f3ae488c9e92196c2a7fcf3def9d23e36", + "shasum": "" + }, + "require": { + "fzaninotto/faker": "^1.4", + "php": ">=7.1" + }, + "require-dev": { + "laravel/framework": "~5.7.14", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.0" + }, + "suggest": { + "laravel/framework": "Required for testing (~5.7.14).", + "mockery/mockery": "Allow to use Mockery for testing (^1.0).", + "orchestra/testbench-browser-kit": "Allow to use legacy Laravel BrowserKit for testing (~3.7).", + "orchestra/testbench-dusk": "Allow to use Laravel Dusk for testing (~3.7).", + "phpunit/phpunit": "Allow to use PHPUnit for testing (^7.0)." + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.7-dev" + } + }, + "autoload": { + "psr-4": { + "Orchestra\\Testbench\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mior Muhammad Zaki", + "email": "crynobone@gmail.com", + "homepage": "https://github.com/crynobone" + } + ], + "description": "Testing Helper for Laravel Development", + "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", + "keywords": [ + "BDD", + "TDD", + "laravel", + "orchestra-platform", + "orchestral", + "testing" + ], + "time": "2018-12-04T00:47:44+00:00" + }, + { + "name": "phar-io/manifest", + "version": "dev-master", + "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.1", + "source": { + "type": "git", + "url": "https://github.com/phpDocumentor/ReflectionCommon.git", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "shasum": "" + }, + "require": { + "php": ">=5.5" + }, + "require-dev": { + "phpunit/phpunit": "^4.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { "psr-4": { - "Orchestra\\Database\\": "" + "phpDocumentor\\Reflection\\": [ + "src" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -2038,61 +3341,57 @@ ], "authors": [ { - "name": "Mior Muhammad Zaki", - "email": "crynobone@gmail.com", - "homepage": "https://github.com/crynobone" - }, - { - "name": "Taylor Otwell", - "email": "taylorotwell@gmail.com", - "homepage": "https://github.com/taylorotwell" + "name": "Jaap van Otterdijk", + "email": "opensource@ijaap.nl" } ], - "description": "Database Component for Orchestra Platform", + "description": "Common reflection classes used by phpdocumentor to reflect the code structure", + "homepage": "http://www.phpdoc.org", "keywords": [ - "database", - "orchestra-platform", - "orchestral" + "FQSEN", + "phpDocumentor", + "phpdoc", + "reflection", + "static analysis" ], - "time": "2015-11-16 13:58:38" + "time": "2017-09-11T18:02:19+00:00" }, { - "name": "orchestra/testbench", - "version": "3.2.x-dev", + "name": "phpdocumentor/reflection-docblock", + "version": "4.3.0", "source": { "type": "git", - "url": "https://github.com/orchestral/testbench.git", - "reference": "3728a504e9162daec076d682351598646c7535f6" + "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/orchestral/testbench/zipball/2ac40a24bd44ecd30494766ebe38d7a51cd4f353", - "reference": "3728a504e9162daec076d682351598646c7535f6", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/94fd0001232e47129dd3504189fa1c7225010d08", + "reference": "94fd0001232e47129dd3504189fa1c7225010d08", "shasum": "" }, "require": { - "laravel/framework": "~5.2.0", - "orchestra/database": "~3.2.0", - "php": ">=5.5.0", - "symfony/css-selector": "2.8.*|3.0.*", - "symfony/dom-crawler": "2.8.*|3.0.*" + "php": "^7.0", + "phpdocumentor/reflection-common": "^1.0.0", + "phpdocumentor/type-resolver": "^0.4.0", + "webmozart/assert": "^1.0" }, "require-dev": { - "mockery/mockery": "0.9.*", - "phpunit/phpunit": "~4.0|~5.0" - }, - "suggest": { - "phpunit/phpunit": "Allow to use PHPUnit for testing your Laravel Application/Package (~4.0|~5.0)." + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.3-dev" + "dev-master": "4.x-dev" } }, "autoload": { "psr-4": { - "Orchestra\\Testbench\\": "src/" + "phpDocumentor\\Reflection\\": [ + "src/" + ] } }, "notification-url": "https://packagist.org/downloads/", @@ -2101,56 +3400,44 @@ ], "authors": [ { - "name": "Mior Muhammad Zaki", - "email": "crynobone@gmail.com", - "homepage": "https://github.com/crynobone" + "name": "Mike van Riel", + "email": "me@mikevanriel.com" } ], - "description": "Laravel Package Unit Testing Helper", - "homepage": "http://orchestraplatform.com/docs/latest/components/testbench/", - "keywords": [ - "BDD", - "TDD", - "laravel", - "orchestra-platform", - "orchestral", - "testing" - ], - "time": "2015-12-07 17:39:35" + "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", + "time": "2017-11-30T07:14:17+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", + "name": "phpdocumentor/type-resolver", + "version": "0.4.0", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + "url": "https://github.com/phpDocumentor/TypeResolver.git", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^5.5 || ^7.0", + "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" + "mockery/mockery": "^0.9.4", + "phpunit/phpunit": "^5.2||^4.8.24" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { - "psr-0": { - "phpDocumentor": [ + "psr-4": { + "phpDocumentor\\Reflection\\": [ "src/" ] } @@ -2162,10 +3449,10 @@ "authors": [ { "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "email": "me@mikevanriel.com" } ], - "time": "2015-02-03 12:10:50" + "time": "2017-07-14T14:27:02+00:00" }, { "name": "phpspec/prophecy", @@ -2173,26 +3460,29 @@ "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "826f28f4cd17b31e4d42aa21729e52f88d91bc39" + "reference": "3660b2eed90abdf92ac2e9dae9a238d2701bfa77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/e871a2a0cf62b56c36b4781e99b50c6bf08fab77", - "reference": "826f28f4cd17b31e4d42aa21729e52f88d91bc39", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/3660b2eed90abdf92ac2e9dae9a238d2701bfa77", + "reference": "3660b2eed90abdf92ac2e9dae9a238d2701bfa77", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", - "phpdocumentor/reflection-docblock": "~2.0", - "sebastian/comparator": "~1.1" + "php": "^5.3|^7.0", + "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", + "sebastian/recursion-context": "^1.0|^2.0|^3.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.5.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -2225,43 +3515,44 @@ "spy", "stub" ], - "time": "2015-11-24 09:53:50" + "time": "2018-11-04T18:50:11+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "2.2.x-dev", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "eabf68b476ac7d0f73793aada060f1c1a9bf8979" + "reference": "afe4b8aa7526dafeb5a642a70e54a0083ff54d80" }, "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/afe4b8aa7526dafeb5a642a70e54a0083ff54d80", + "reference": "afe4b8aa7526dafeb5a642a70e54a0083ff54d80", "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.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^3.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", + "sebastian/environment": "^4.0", + "sebastian/version": "^2.0.1", + "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" + "phpunit/phpunit": "^7.4.4" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-xdebug": "^2.6.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.2.x-dev" + "dev-master": "6.1-dev" } }, "autoload": { @@ -2276,7 +3567,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2287,7 +3578,7 @@ "testing", "xunit" ], - "time": "2015-10-06 15:47:00" + "time": "2018-12-09T08:02:16+00:00" }, { "name": "phpunit/php-file-iterator", @@ -2295,21 +3586,24 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "6150bf2c35d3fc379e50c7602b75caceaa39dbf0" + "reference": "2da97ea973af95b5ccef2d5bae0f4a976f3923a0" }, "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/2da97ea973af95b5ccef2d5bae0f4a976f3923a0", + "reference": "2da97ea973af95b5ccef2d5bae0f4a976f3923a0", "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": { @@ -2324,7 +3618,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2334,7 +3628,7 @@ "filesystem", "iterator" ], - "time": "2015-06-21 13:08:43" + "time": "2018-10-10T04:54:51+00:00" }, { "name": "phpunit/php-text-template", @@ -2375,7 +3669,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -2383,18 +3677,26 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b" + "reference": "9ef9968ba27999219d76ae3cef97aa0fa87bd90f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/3e82f4e9fc92665fafd9157568e4dcb01d014e5b", - "reference": "3e82f4e9fc92665fafd9157568e4dcb01d014e5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/9ef9968ba27999219d76ae3cef97aa0fa87bd90f", + "reference": "9ef9968ba27999219d76ae3cef97aa0fa87bd90f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" + }, + "require-dev": { + "phpunit/phpunit": "^7.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -2407,7 +3709,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -2416,7 +3718,7 @@ "keywords": [ "timer" ], - "time": "2015-06-21 08:01:12" + "time": "2018-06-04T07:17:52+00:00" }, { "name": "phpunit/php-token-stream", @@ -2424,25 +3726,25 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "cab6c6fefee93d7b7c3a01292a0fe0884ea66644" + "reference": "6df086c042b6bb4fbcfcda15b8e52d5f8955aaee" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/cab6c6fefee93d7b7c3a01292a0fe0884ea66644", - "reference": "cab6c6fefee93d7b7c3a01292a0fe0884ea66644", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/6df086c042b6bb4fbcfcda15b8e52d5f8955aaee", + "reference": "6df086c042b6bb4fbcfcda15b8e52d5f8955aaee", "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.0-dev" } }, "autoload": { @@ -2465,45 +3767,57 @@ "keywords": [ "tokenizer" ], - "time": "2015-09-23 14:46:55" + "time": "2018-10-30T07:50:55+00:00" }, { "name": "phpunit/phpunit", - "version": "4.8.x-dev", + "version": "7.5.x-dev", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "83498fee4d9272cc5c59630cc2be939accdcc74b" + "reference": "c23d78776ad415d5506e0679723cb461d71f488f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/9c7c323ec2b9027600ca2df4a5bbeda91e2e9dba", - "reference": "83498fee4d9272cc5c59630cc2be939accdcc74b", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c23d78776ad415d5506e0679723cb461d71f488f", + "reference": "c23d78776ad415d5506e0679723cb461d71f488f", "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.0", + "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" @@ -2511,7 +3825,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.8.x-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -2537,38 +3851,32 @@ "testing", "xunit" ], - "time": "2015-12-07 17:57:53" + "time": "2018-12-12T07:20:32+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.x-dev", + "name": "sebastian/code-unit-reverse-lookup", + "version": "dev-master", "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": "22f5f5ff892d51035dd1fb4cd6b224a640ffb206" }, "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/22f5f5ff892d51035dd1fb4cd6b224a640ffb206", + "reference": "22f5f5ff892d51035dd1fb4cd6b224a640ffb206", "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": { @@ -2583,17 +3891,12 @@ "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": "2018-05-15T05:52:48+00:00" }, { "name": "sebastian/comparator", @@ -2601,26 +3904,26 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22" + "reference": "33825cd25f073faafe98c4a017a5d2b69f3e09d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/937efb279bd37a375bcadf584dec0726f84dbf22", - "reference": "937efb279bd37a375bcadf584dec0726f84dbf22", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/33825cd25f073faafe98c4a017a5d2b69f3e09d3", + "reference": "33825cd25f073faafe98c4a017a5d2b69f3e09d3", "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": { @@ -2651,13 +3954,13 @@ } ], "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-12-04T14:31:16+00:00" }, { "name": "sebastian/diff", @@ -2665,24 +3968,25 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "2b0112e42c338afa9ad9dfeb94d66f6d84c2f828" + "reference": "6906fbe33455221909eab31d4b8b1517b94aba46" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", - "reference": "2b0112e42c338afa9ad9dfeb94d66f6d84c2f828", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/6906fbe33455221909eab31d4b8b1517b94aba46", + "reference": "6906fbe33455221909eab31d4b8b1517b94aba46", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~5" + "phpunit/phpunit": "^7.0", + "symfony/process": "^2 || ^3.3 || ^4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -2707,9 +4011,12 @@ "description": "Diff implementation", "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "diff" + "diff", + "udiff", + "unidiff", + "unified diff" ], - "time": "2015-12-06 07:21:36" + "time": "2018-10-30T05:42:15+00:00" }, { "name": "sebastian/environment", @@ -2717,24 +4024,24 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "6e7133793a8e5a5714a551a8324337374be209df" + "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/6e7133793a8e5a5714a551a8324337374be209df", - "reference": "6e7133793a8e5a5714a551a8324337374be209df", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/febd209a219cea7b56ad799b30ebbea34b71eb8f", + "reference": "febd209a219cea7b56ad799b30ebbea34b71eb8f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.1" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^7.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -2759,7 +4066,7 @@ "environment", "hhvm" ], - "time": "2015-12-02 08:37:27" + "time": "2018-11-25T09:31:21+00:00" }, { "name": "sebastian/exporter", @@ -2767,26 +4074,26 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f88f8936517d54ae6d589166810877fb2015d0a2" + "reference": "c8c4f196e32858e4448bc285e542b61a4c40d9dc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f88f8936517d54ae6d589166810877fb2015d0a2", - "reference": "f88f8936517d54ae6d589166810877fb2015d0a2", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/c8c4f196e32858e4448bc285e542b61a4c40d9dc", + "reference": "c8c4f196e32858e4448bc285e542b61a4c40d9dc", "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": { @@ -2826,27 +4133,27 @@ "export", "exporter" ], - "time": "2015-08-09 04:23:41" + "time": "2018-06-28T14:22:04+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": "*" @@ -2854,7 +4161,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -2877,7 +4184,99 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2017-04-27T15:39:26+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "e6be0a5481aff88f29262c331eab5b3ea939f55f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/e6be0a5481aff88f29262c331eab5b3ea939f55f", + "reference": "e6be0a5481aff88f29262c331eab5b3ea939f55f", + "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": "2018-10-30T05:41:47+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "dev-master", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "7707193304715e3caddf28fc73c02c12ed6f350c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/7707193304715e3caddf28fc73c02c12ed6f350c", + "reference": "7707193304715e3caddf28fc73c02c12ed6f350c", + "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": "2018-05-15T05:50:44+00:00" }, { "name": "sebastian/recursion-context", @@ -2885,24 +4284,24 @@ "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "913401df809e99e4f47b27cdd781f4a258d58791" + "reference": "dbe1869c13935c6080c834fc61424834b9ad5907" }, "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/dbe1869c13935c6080c834fc61424834b9ad5907", + "reference": "dbe1869c13935c6080c834fc61424834b9ad5907", "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": { @@ -2930,23 +4329,31 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-11-11 19:50:13" + "time": "2018-05-15T05:52:05+00:00" }, { - "name": "sebastian/version", - "version": "1.0.6", + "name": "sebastian/resource-operations", + "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "4d7a795d35b889bf80a0cc04e08d77cedfa917a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", - "reference": "58b3a85e7999757d6ad81c787a1fbf5ff6c628c6", + "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/" @@ -2959,153 +4366,127 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "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" + "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": "symfony/css-selector", - "version": "3.0.x-dev", + "name": "sebastian/version", + "version": "2.0.1", "source": { "type": "git", - "url": "https://github.com/symfony/css-selector.git", - "reference": "4613311fd46e146f506403ce2f8a0c71d402d2a3" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/4613311fd46e146f506403ce2f8a0c71d402d2a3", - "reference": "4613311fd46e146f506403ce2f8a0c71d402d2a3", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/99732be0ddb3361e16ad77b68ba41efc8e979019", + "reference": "99732be0ddb3361e16ad77b68ba41efc8e979019", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": ">=5.6" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-4": { - "Symfony\\Component\\CssSelector\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Jean-François Simon", - "email": "jeanfrancois.simon@sensiolabs.com" - }, - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Symfony CssSelector Component", - "homepage": "https://symfony.com", - "time": "2015-12-05 17:45:07" + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "time": "2016-10-03T07:35:21+00:00" }, { - "name": "symfony/dom-crawler", - "version": "3.0.x-dev", + "name": "theseer/tokenizer", + "version": "1.1.0", "source": { "type": "git", - "url": "https://github.com/symfony/dom-crawler.git", - "reference": "98f0ffc93de1149f4c18eda2075c92428df1b73c" + "url": "https://github.com/theseer/tokenizer.git", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/98f0ffc93de1149f4c18eda2075c92428df1b73c", - "reference": "98f0ffc93de1149f4c18eda2075c92428df1b73c", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", "shasum": "" }, "require": { - "php": ">=5.5.9", - "symfony/polyfill-mbstring": "~1.0" - }, - "require-dev": { - "symfony/css-selector": "~2.8|~3.0" - }, - "suggest": { - "symfony/css-selector": "" + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, "autoload": { - "psr-4": { - "Symfony\\Component\\DomCrawler\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" } ], - "description": "Symfony DomCrawler Component", - "homepage": "https://symfony.com", - "time": "2015-11-02 20:34:04" + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "time": "2017-04-07T12:08:54+00:00" }, { - "name": "symfony/yaml", + "name": "webmozart/assert", "version": "dev-master", "source": { "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "8bae579c7afa252c055855f071c751eb75dcf6c4" + "url": "https://github.com/webmozart/assert.git", + "reference": "53927dddf3afa2088b355188e143bba42159bf5d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/8bae579c7afa252c055855f071c751eb75dcf6c4", - "reference": "8bae579c7afa252c055855f071c751eb75dcf6c4", + "url": "https://api.github.com/repos/webmozart/assert/zipball/53927dddf3afa2088b355188e143bba42159bf5d", + "reference": "53927dddf3afa2088b355188e143bba42159bf5d", "shasum": "" }, "require": { - "php": ">=5.5.9" + "php": "^5.3.3 || ^7.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.1-dev" + "dev-master": "1.3-dev" } }, "autoload": { "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "Webmozart\\Assert\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3113,17 +4494,17 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Symfony Yaml Component", - "homepage": "https://symfony.com", - "time": "2015-12-05 11:13:35" + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "time": "2018-05-29T14:25:02+00:00" } ], "aliases": [], diff --git a/php.ini b/php.ini new file mode 100644 index 0000000..fc1fa14 --- /dev/null +++ b/php.ini @@ -0,0 +1 @@ +error_reporting = E_ALL diff --git a/phpunit.xml b/phpunit.xml index 77e5ae1..2874134 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,18 +1,23 @@ - + - - ./tests/ - + + ./tests + + + + ./src + + diff --git a/src/Hassansin/DBCart/CartServiceProvider.php b/src/Hassansin/DBCart/CartServiceProvider.php index a523aa4..4415d0e 100644 --- a/src/Hassansin/DBCart/CartServiceProvider.php +++ b/src/Hassansin/DBCart/CartServiceProvider.php @@ -1,4 +1,4 @@ -registerScheduler(); + $this->app['cart_instances'] = [] ; + + $this->app->bind('cart', function($app, $params){ + $instance_name = !empty($params['name']) ? $params['name'] : 'default'; + $cart_instances = $app['cart_instances']; + + //implement singleton carts + if(empty($cart_instances[$instance_name])){ + $model = config('cart.cart_model'); + $cart_instances[$instance_name] = $model::current($instance_name); + $app['cart_instances'] = $cart_instances; + } + return $app['cart_instances'][$instance_name]; + }); + + $this->publishes([ + __DIR__.'/config/cart.php' => config_path('cart.php'), + ],'config'); + + $this->publishes([ + __DIR__.'/database/migrations/' => database_path('migrations') + ], 'migrations'); + + $this->mergeConfigFrom( + __DIR__.'/config/cart.php', 'cart' + ); } - /** - * Register the service provider. - * - * @return void - */ - public function register() - { - - $this->registerScheduler(); - $this->app['cart_instances'] = [] ; - - $this->app->bind('cart', function($app, $params){ - $instance_name = !empty($params['name']) ? $params['name'] : 'default'; - $cart_instances = $app['cart_instances']; - - //implement singleton carts - if(empty($cart_instances[$instance_name])){ - $model = config('cart.cart_model'); - $cart_instances[$instance_name] = $model::current($instance_name); - $app['cart_instances'] = $cart_instances; - } - return $app['cart_instances'][$instance_name]; - }); - - $this->publishes([ - __DIR__.'/config/cart.php' => config_path('cart.php'), - ],'config'); - - $this->publishes([ - __DIR__.'/database/migrations/' => database_path('migrations') - ], 'migrations'); - - $this->mergeConfigFrom( - __DIR__.'/config/cart.php', 'cart' - ); - } - - protected function registerScheduler(){ - $schedule = $this->app['Illuminate\Console\Scheduling\Schedule']; - $events = $this->app['events']; - $schedule_frequency = config('cart.schedule_frequency', 'hourly'); + /* + * @codeCoverageIgnore + */ + protected function registerScheduler(){ + $schedule = $this->app['Illuminate\Console\Scheduling\Schedule']; + $events = $this->app['events']; + $schedule_frequency = config('cart.schedule_frequency', 'hourly'); $events->listen('artisan.start', function (\Illuminate\Console\Application $artisan) use($schedule, $schedule_frequency){ - $artisan->resolveCommands(Console\Commands\CartCleanup::class); - $schedule->command('cart:cleanup')->$schedule_frequency(); + $artisan->resolveCommands(Console\Commands\CartCleanup::class); + $schedule->command('cart:cleanup')->$schedule_frequency(); }); - } + } - /** + /** * Get the services provided by the provider. * + * @codeCoverageIgnore * @return array */ public function provides() diff --git a/src/Hassansin/DBCart/Console/Commands/CartCleanup.php b/src/Hassansin/DBCart/Console/Commands/CartCleanup.php index ca522d6..4347432 100644 --- a/src/Hassansin/DBCart/Console/Commands/CartCleanup.php +++ b/src/Hassansin/DBCart/Console/Commands/CartCleanup.php @@ -51,8 +51,12 @@ public function handle() } //delete expired carts - if(config('cart.delete_expired', false)){ + if(config('cart.delete_expired', false)){ $cart_model = config('cart.cart_model'); + $cart_line_model = config('cart.cart_line_model'); + $cart_ids = $cart_model::where('status','expired')->pluck('id'); + + $cart_line_model::whereIn('cart_id', $cart_ids->toArray())->delete(); $cart_model::where('status','expired')->delete(); } } diff --git a/src/Hassansin/DBCart/Models/Cart.php b/src/Hassansin/DBCart/Models/Cart.php index 234e8fa..18c442b 100644 --- a/src/Hassansin/DBCart/Models/Cart.php +++ b/src/Hassansin/DBCart/Models/Cart.php @@ -4,10 +4,16 @@ use Carbon\Carbon; use Illuminate\Database\Eloquent\Model; +use Illuminate\Foundation\Application; +use Illuminate\Support\Collection; + +const STATUS_ACTIVE = 'active'; +const STATUS_PENDING = 'pending'; +const STATUS_EXPIRED = 'expired'; +const STATUS_COMPLETE = 'complete'; class Cart extends Model { - /** * The database table used by the model. * @@ -36,10 +42,12 @@ class Cart extends Model */ protected $casts = [ 'total_price' => 'float', + 'item_count' => 'int', ]; /** * Get the user that owns the cart. + * @codeCoverageIgnore */ public function user() { @@ -54,19 +62,19 @@ public function items(){ } public function scopePending($query){ - return $query->where('status', 'pending' ); + return $query->where('status', STATUS_PENDING ); } public function scopeCompleted($query){ - return $query->where('status', 'completed' ); + return $query->where('status', STATUS_COMPLETE ); } public function scopeExpired($query){ - return $query->where('status', 'expired' ); + return $query->where('status', STATUS_EXPIRED ); } public function scopeActive($query){ - return $query->where('status', 'active' ); + return $query->where('status', STATUS_ACTIVE ); } public function scopeInstance($query, $instance_name = 'default'){ @@ -102,15 +110,17 @@ public static function current($instance_name = 'default', $save_on_demand = nul /** * Initialize the cart - * + * * @param string $instance_name * @return mixed */ - public static function init($instance_name, $save_on_demand){ + public static function init($instance_name, $save_on_demand){ $request = app('request'); - $session_id = $request->session()->getId(); + $session_id = $request->session()->getId(); $user_id = config('cart.user_id'); + $app = Application::getInstance(); + $carts = $app->offsetGet("cart_instances"); if ($user_id instanceof \Closure) $user_id = $user_id(); @@ -123,47 +133,47 @@ public static function init($instance_name, $save_on_demand){ $session_cart = is_null($session_cart_id)? null: static::active()->session($session_cart_id)->where('name', $instance_name)->first(); switch (true) { - + case is_null($user_cart) && is_null($session_cart): //no user cart or session cart $attributes = array( 'user_id' => $user_id, 'name' => $instance_name, - 'status' => 'active' + 'status' => STATUS_ACTIVE ); if($save_on_demand) - $cart = new static($attributes); + $cart = new static($attributes); else $cart = static::create($attributes); break; - + case !is_null($user_cart) && is_null($session_cart): //only user cart $cart = $user_cart; break; - + case is_null($user_cart) && !is_null($session_cart): //only session cart $cart = $session_cart; $cart->user_id = $user_id; $cart->session = null; - $cart->save(); + $cart->save(); break; - - case !is_null($user_cart) && !is_null($session_cart): //both user cart and session cart exists - $session_cart->moveItemsTo($user_cart); //move items from session cart to user cart + + case !is_null($user_cart) && !is_null($session_cart): //both user cart and session cart exists + $session_cart->moveItemsTo($user_cart); //move items from session cart to user cart $session_cart->delete(); //delete session cart $cart = $user_cart; break; - } - + } + $request->session()->forget('cart_'.$instance_name); //no longer need it. - return $cart; - } + $carts[$instance_name] = $cart; + } //guest user, create cart with session id else{ $attributes = array( 'session' => $session_id, 'name' => $instance_name, - 'status' => 'active' + 'status' => STATUS_ACTIVE ); $cart = static::firstOrNew($attributes); @@ -173,8 +183,10 @@ public static function init($instance_name, $save_on_demand){ //save current session id, since upon login session id will be regenerated //we will use this id to get back the cart before login $request->session()->put('cart_'.$instance_name, $session_id); - return $cart; + $carts[$instance_name] = $cart; } + $app->offsetSet("cart_instances", $carts); + return $carts[$instance_name]; } /** @@ -188,62 +200,56 @@ protected static function boot() { //delete line items static::deleting(function(Cart $cart) { $cart->items()->delete(); - }); - } - - /** - * If a change is made to items, then reset lazyloaded relations to reflect new changes - * - */ - public function resetRelations(){ - foreach($this->relations as $key => $value){ - $this->getRelationshipFromMethod($key); - } - return $this; + }); } /** - * Add item to a cart + * Add item to a cart. Increases quantity if the item already exists. * * @param array $attributes - */ - public function addItem(array $attributes = []){ - return $this->items()->create($attributes); + */ + public function addItem(array $attributes = []){ + if($item = $this->getItem(collect($attributes)->except(['quantity']))){ + $item->quantity += $attributes['quantity']; + $item->save(); + return $item; + } + return $this->items()->create($attributes); } /** * remove item from a cart - * + * * @param array $attributes - */ + */ public function removeItem(array $attributes = []){ - return $this->items()->where($attributes)->first()->delete(); + return $this->items()->where($attributes)->first()->delete(); } /** * update item in a cart - * + * * @param array $attributes */ public function updateItem(array $where, array $values){ return $this->items()->where($where)->first()->update($values); - } + } /** - * Cart checkout. + * Cart checkout. * */ public function checkout(){ - return $this->update( ['status' => 'pending', 'placed_at' => Carbon::now()]); - } + return $this->update( ['status' => STATUS_PENDING, 'placed_at' => Carbon::now()]); + } /** * Expires a cart * */ public function expire(){ - return $this->update(['status' => 'expired']); + return $this->update(['status' => STATUS_EXPIRED]); } /** @@ -251,7 +257,7 @@ public function expire(){ * */ public function complete(){ - return $this->update(['status' => 'complete', 'completed_at' => Carbon::now()]); + return $this->update(['status' => STATUS_COMPLETE, 'completed_at' => Carbon::now()]); } /** @@ -259,11 +265,18 @@ public function complete(){ * */ public function isEmpty(){ - return $this->items->count() === 0; + return empty($this->item_count); + } + + public function getItem($where) { + if($where instanceof Collection) { + $where = $where->toArray(); + } + return $this->items()->where($where)->first(); } public function hasItem($where){ - return !is_null($this->items()->where($where)->first()); + return !is_null($this->getItem($where)); } /** @@ -272,10 +285,11 @@ public function hasItem($where){ */ public function clear(){ $this->items()->delete(); - $this->resetRelations()->updateTimestamps(); + $this->updateTimestamps(); $this->total_price = 0; $this->item_count = 0; - return $this->save(); + $this->relations = []; + return $this->save(); } /** @@ -284,16 +298,28 @@ public function clear(){ * @param Cart $cart */ public function moveItemsTo(Cart $cart){ - $this->items()->update(['cart_id' => $cart->id] ); - $cart->item_count += $this->item_count; - $cart->total_price += $this->total_price; - $cart->save(); - $this->item_count = 0; - $this->total_price = 0; - return $this->save(); + \DB::transaction(function () use(&$cart){ + $current_items = $cart->items()->pluck('product_id'); + $items_to_move = $this->items()->whereNotIn('product_id', $current_items->toArray())->get(); + if($items_to_move->count() === 0){ + return; + } + $this->items()->whereNotIn('product_id', $current_items->toArray())->update([ + 'cart_id' => $cart->id + ]); + foreach($items_to_move as $item) { + $this->item_count -= $item->quantity; + $this->total_price -= $item->getPrice(); + $cart->item_count += $item->quantity; + $cart->total_price += $item->getPrice(); + } + $this->relations = []; + $cart->relations = []; + $this->save(); + $cart->save(); + }); + return $cart; } - - } diff --git a/src/Hassansin/DBCart/Models/CartLine.php b/src/Hassansin/DBCart/Models/CartLine.php index f05f8f8..dc1f0c9 100644 --- a/src/Hassansin/DBCart/Models/CartLine.php +++ b/src/Hassansin/DBCart/Models/CartLine.php @@ -34,11 +34,15 @@ class CartLine extends Model * @var array */ protected $casts = [ + 'cart_id' => 'int', + 'product_id' => 'int', + 'quantity' => 'int', 'unit_price' => 'float', ]; /** * Get the product record associated with the item. + * @codeCoverageIgnore */ public function product() { @@ -95,7 +99,7 @@ public function getOriginalPrice(){ * */ public function getCartInstance(){ - $carts = app('cart_instances'); + $carts = app('cart_instances'); foreach ($carts as $name => $cart) { if($cart->id === $this->cart_id){ return $cart; @@ -107,11 +111,17 @@ public function getCartInstance(){ /* * Move this item to another cart * - * @param Cart $cart + * @param Cart $cart */ public function moveTo(Cart $cart){ - $this->delete(); // delete from own cart - return $cart->items()->create($this->attributes); + $model = null; + \DB::transaction(function () use($cart, &$model) { + $this->delete(); // delete from own cart + $attr = $this->attributes; + unset($attr['cart_id']); + $model = $cart->items()->create($attr); + }); + return $model; } /** @@ -124,31 +134,27 @@ protected static function boot() { //when an item is created static::created(function(CartLine $line){ - $cart = $line->getCartInstance() ?: $line->cart; - $cart->resetRelations(); - + $cart = $line->getCartInstance() ?: $line->cart; $cart->total_price = $cart->total_price + $line->getPrice(); $cart->item_count = $cart->item_count + $line->quantity; + $cart->relations = []; $cart->save(); }); //when an item is updated static::updated(function(CartLine $line){ - $cart = $line->getCartInstance() ?: $line->cart; - $cart->resetRelations(); - + $cart = $line->getCartInstance() ?: $line->cart; $cart->total_price = $cart->total_price - $line->getOriginalPrice() + $line->getPrice(); $cart->item_count = $cart->item_count - $line->getOriginalQuantity() + $line->quantity; + $cart->relations = []; $cart->save(); }); - //when item deleted - static::deleted(function(CartLine $line){ - $cart = $line->getCartInstance() ?: $line->cart; - $cart->resetRelations(); - + static::deleted(function(CartLine $line){ + $cart = $line->getCartInstance() ?: $line->cart; $cart->total_price = $cart->total_price - $line->getPrice(); $cart->item_count = $cart->item_count - $line->quantity; + $cart->relations = []; $cart->save(); }); } diff --git a/src/Hassansin/DBCart/config/cart.php b/src/Hassansin/DBCart/config/cart.php index 56e2868..d64206d 100644 --- a/src/Hassansin/DBCart/config/cart.php +++ b/src/Hassansin/DBCart/config/cart.php @@ -8,14 +8,14 @@ | Cart Model |-------------------------------------------------------------------------- | - | If you extend the Hassansin\DBCart\Models\Cart class then specify child + | If you extend the Hassansin\DBCart\Models\Cart class then specify child | class namespace here | */ 'cart_model' => Hassansin\DBCart\Models\Cart::class, - + /* |-------------------------------------------------------------------------- | Cart Line Model @@ -32,7 +32,7 @@ | User Model |-------------------------------------------------------------------------- | - | User Model to associate with Cart orders + | User Model to associate with Cart orders | */ @@ -43,7 +43,7 @@ | Product Model |-------------------------------------------------------------------------- | - | Product Model to associate with Cart Lines + | Product Model to associate with Cart Lines | */ @@ -69,7 +69,7 @@ | | When set to true, if a cart doesn't exist on database you'll be given a | new instance of cart object. You have to manually save the cart to DB by - | $cart->save() . Useful if you want to avoid creating unnecessary empty carts + | $cart->save() . Useful if you want to avoid creating unnecessary empty carts | in database. But be sure to save cart before adding items | */ @@ -82,8 +82,8 @@ |-------------------------------------------------------------------------- | | Enable or disable auto expire a cart. Only applicable for session carts. - | When set to true, cart status will be set to 'expired' after session 'lifetime' - | + | When set to true, cart status will be set to 'expired' after session 'lifetime' + | | Needs Laravel task scheduler to be started: http://laravel.com/docs/master/scheduling */ @@ -98,7 +98,7 @@ | | Needs Laravel task scheduler to be started: http://laravel.com/docs/master/scheduling */ - 'delete_expired' => true, + 'delete_expired' => true, /* |-------------------------------------------------------------------------- @@ -108,6 +108,6 @@ | How often the scheduled command would run | */ - 'schedule_frequency' => 'hourly', + 'schedule_frequency' => 'hourly', ]; diff --git a/src/Hassansin/DBCart/database/migrations/2015_11_03_155308_create_cart_table.php b/src/Hassansin/DBCart/database/migrations/2015_11_03_155308_create_cart_table.php index 1028ac9..9ce455e 100644 --- a/src/Hassansin/DBCart/database/migrations/2015_11_03_155308_create_cart_table.php +++ b/src/Hassansin/DBCart/database/migrations/2015_11_03_155308_create_cart_table.php @@ -26,7 +26,7 @@ public function up() $table->index('name'); $table->index(['user_id', 'status']); - $table->index(['session','status']); + $table->index(['session','status']); }); } diff --git a/tests/CartTest.php b/tests/CartTest.php index 6efeb55..e2d1bf7 100644 --- a/tests/CartTest.php +++ b/tests/CartTest.php @@ -9,9 +9,10 @@ class CartTest extends Orchestra\Testbench\TestCase public function setUp() { parent::setUp(); - $this->artisan('migrate', [ + $this->loadLaravelMigrations(['--database' => 'testbench']); + $this->loadMigrationsFrom([ '--database' => 'testbench', - '--realpath' => realpath(__DIR__.'/../src/Hassansin/DBCart/database/migrations'), + '--path' => realpath(__DIR__.'/../src/Hassansin/DBCart/database/migrations'), ]); } @@ -20,25 +21,413 @@ protected function getPackageProviders($app) return [Hassansin\DBCart\CartServiceProvider::class]; } + protected function getPackageAliases($app) + { + return [ + 'DBCart' => Hassansin\DBCart\Facades\Cart::class + ]; + } + protected function getEnvironmentSetUp($app) { // Setup default database to use sqlite :memory: + $app['config']->set('cart.expire_cart', true); + $app['config']->set('cart.delete_expired', true); $app['config']->set('database.default', 'testbench'); $app['config']->set('database.connections.testbench', [ 'driver' => 'sqlite', 'database' => ':memory:', 'prefix' => '', ]); + $app['request']->setLaravelSession($app['session']->driver('array')); } - + public function testCreateItem() { - $cart = Cart::create(); + $cart = Cart::current(); + DB::enableQueryLog(); $cart->addItem([ 'product_id' => 1, 'unit_price' => 10.5, - 'quantity' => 1 - ]); + 'quantity' => 2 + ]); + $this->assertCount(3, DB::getQueryLog()); + $this->assertEquals(2, $cart->item_count); + $this->assertCount(1, $cart->items); + $this->assertCount(1, $cart->items()->get()); + $this->assertCount(1, $cart->items()->where('quantity', '=', 2)->get()); + $this->assertCount(1, $cart->items()->where('unit_price', '>=', 1)->get()); + } + + public function testCreateDuplicateItem() + { + $cart = Cart::current(); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + DB::enableQueryLog(); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 3 + ]); + $this->assertCount(3, DB::getQueryLog()); + $this->assertEquals(5, $cart->item_count); + $this->assertEquals(52.5, $cart->total_price); + $this->assertCount(1, $cart->items); + $this->assertCount(1, $cart->items()->get()); + $this->assertCount(1, $cart->items()->where('quantity', '=', 5)->get()); + $this->assertCount(1, $cart->items()->where('unit_price', '>=', 1)->get()); + } + public function testRemoveItem(){ + $cart = Cart::current(); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + $this->assertEquals(2, $cart->item_count); + $this->assertCount(1, $cart->items); + $this->assertCount(1, $cart->items()->get()); + $this->assertCount(1, $cart->items()->where('quantity', '=', 2)->get()); + $this->assertCount(1, $cart->items()->where('unit_price', '>=', 1)->get()); + $this->assertEquals(21, $cart->total_price); + $this->assertFalse($cart->isEmpty()); + + DB::enableQueryLog(); + $cart->removeItem(['product_id' => 1]); + $this->assertCount(3, DB::getQueryLog()); + $this->assertEquals(0, $cart->item_count); + $this->assertCount(0, $cart->items()->get()); + $this->assertCount(0, $cart->items); + $this->assertTrue($cart->isEmpty()); + } + public function testUpdateItem(){ + $cart = Cart::current(); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + $this->assertEquals(2, $cart->item_count); + $this->assertCount(1, $cart->items()->get()); + $this->assertCount(1, $cart->items); + $this->assertEquals(10.5, $cart->items->first()->unit_price); + $this->assertCount(1, $cart->items()->where('quantity', '=', 2)->get()); + $this->assertCount(1, $cart->items()->where('unit_price', '>=', 1)->get()); + $this->assertEquals(21, $cart->total_price); + + DB::enableQueryLog(); + $cart->updateItem(['product_id' => 1], ['unit_price' => 15.5, 'quantity' => 3]); + $this->assertCount(3, DB::getQueryLog()); + + $this->assertCount(1, $cart->items()->get()); $this->assertCount(1, $cart->items); + $this->assertEquals(15.5, $cart->items->first()->unit_price); + $this->assertEquals(3, $cart->item_count); + $this->assertEquals(46.5, $cart->total_price); + } + + public function testMoveItemsToEmptyCart() + { + $cart1 = app('cart', ['name' => 'cart1']); + $cart2 = app('cart', ['name' => 'cart2']); + $cart1->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + $cart1->addItem([ + 'product_id' => 2, + 'unit_price' => 11.5, + 'quantity' => 1 + ]); + $this->assertFalse($cart1->isEmpty()); + $this->assertTrue($cart2->isEmpty()); + $this->assertCount(2, $cart1->items()->get()); + $this->assertCount(0, $cart2->items()->get()); + $this->assertEquals(3, $cart1->item_count); + $this->assertEquals(32.5, $cart1->total_price); + $this->assertEquals(0, $cart2->item_count); + $this->assertEquals(0, $cart2->total_price); + + DB::enableQueryLog(); + $cart1->moveItemsTo($cart2); + $this->assertCount(5, DB::getQueryLog()); + $this->assertTrue($cart1->isEmpty()); + $this->assertFalse($cart2->isEmpty()); + $this->assertCount(0, $cart1->items()->get()); + $this->assertCount(2, $cart2->items()->get()); + $this->assertEquals(0, $cart1->item_count); + $this->assertEquals(0, $cart1->total_price); + $this->assertEquals(3, $cart2->item_count); + $this->assertEquals(32.5, $cart2->total_price); + } + public function testMoveItemsToNonEmptyCart() + { + $cart1 = app('cart', ['name' => 'cart1']); + $cart2 = app('cart', ['name' => 'cart2']); + $cart1->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + $cart1->addItem([ + 'product_id' => 2, + 'unit_price' => 11.5, + 'quantity' => 1 + ]); + + $cart2->addItem([ + 'product_id' => 3, + 'unit_price' => 10, + 'quantity' => 1 + ]); + + $this->assertFalse($cart1->isEmpty()); + $this->assertFalse($cart2->isEmpty()); + $this->assertCount(2, $cart1->items()->get()); + $this->assertCount(1, $cart2->items()->get()); + $this->assertEquals(3, $cart1->item_count); + $this->assertEquals(32.5, $cart1->total_price); + $this->assertEquals(1, $cart2->item_count); + $this->assertEquals(10, $cart2->total_price); + + DB::enableQueryLog(); + $cart1->moveItemsTo($cart2); + $this->assertCount(5, DB::getQueryLog()); + $this->assertTrue($cart1->isEmpty()); + $this->assertTrue($cart1->isEmpty()); + $this->assertFalse($cart2->isEmpty()); + $this->assertCount(0, $cart1->items()->get()); + $this->assertCount(3, $cart2->items()->get()); + $this->assertEquals(0, $cart1->item_count); + $this->assertEquals(0, $cart1->total_price); + $this->assertEquals(4, $cart2->item_count); + $this->assertEquals(42.5, $cart2->total_price); + } + + public function testMoveItemsToNonEmptyCartWithDuplicateProduct() + { + $cart1 = app('cart', ['name' => 'cart1']); + $cart2 = app('cart', ['name' => 'cart2']); + $cart1->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + $cart1->addItem([ + 'product_id' => 2, + 'unit_price' => 11.5, + 'quantity' => 1 + ]); + + $cart2->addItem([ + 'product_id' => 1, + 'unit_price' => 11.5, + 'quantity' => 1 + ]); + + $this->assertFalse($cart1->isEmpty()); + $this->assertFalse($cart2->isEmpty()); + $this->assertCount(2, $cart1->items()->get()); + $this->assertCount(1, $cart2->items()->get()); + $this->assertEquals(3, $cart1->item_count); + $this->assertEquals(32.5, $cart1->total_price); + $this->assertEquals(1, $cart2->item_count); + $this->assertEquals(11.5, $cart2->total_price); + + $cart1->moveItemsTo($cart2); + $this->assertFalse($cart1->isEmpty()); + $this->assertFalse($cart2->isEmpty()); + $this->assertCount(1, $cart1->items()->get()); + $this->assertCount(2, $cart2->items()->get()); + $this->assertEquals(2, $cart1->item_count); + $this->assertEquals(21, $cart1->total_price); + $this->assertEquals(2, $cart2->item_count); + $this->assertEquals(23, $cart2->total_price); + } + + public function testMoveEmptyCart(){ + $cart1 = app('cart', ['name' => 'cart1']); + $cart2 = app('cart', ['name' => 'cart2']); + + DB::enableQueryLog(); + $cart1->moveItemsTo($cart2); + $this->assertCount(2, DB::getQueryLog()); + $this->assertTrue($cart1->isEmpty()); + $this->assertTrue($cart2->isEmpty()); + } + + public function testMoveSingleItemToEmptyCart() + { + $cart1 = app('cart', ['name' => 'cart1']); + $cart2 = app('cart', ['name' => 'cart2']); + $item = $cart1->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + $cart1->addItem([ + 'product_id' => 2, + 'unit_price' => 11.5, + 'quantity' => 1 + ]); + $this->assertFalse($cart1->isEmpty()); + $this->assertTrue($cart2->isEmpty()); + $this->assertCount(2, $cart1->items()->get()); + $this->assertCount(0, $cart2->items()->get()); + $this->assertEquals(3, $cart1->item_count); + $this->assertEquals(32.5, $cart1->total_price); + $this->assertEquals(0, $cart2->item_count); + $this->assertEquals(0, $cart2->total_price); + $this->assertEquals($item->cart->id, $cart1->id); + + $item = $item->moveTo($cart2); + $this->assertFalse($cart1->isEmpty()); + $this->assertFalse($cart2->isEmpty()); + $this->assertCount(1, $cart1->items()->get()); + $this->assertCount(1, $cart2->items()->get()); + $this->assertEquals(1, $cart1->item_count); + $this->assertEquals(11.5, $cart1->total_price); + $this->assertEquals(2, $cart2->item_count); + $this->assertEquals(21, $cart2->total_price); + $this->assertEquals($item->cart->id, $cart2->id); + } + public function testIsEmpty(){ + $cart = Cart::current(); + DB::enableQueryLog(); + $this->assertTrue($cart->isEmpty()); + $this->assertCount(0, DB::getQueryLog()); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + + $this->assertFalse($cart->isEmpty()); + } + + public function testHasItem(){ + $cart = Cart::current(); + DB::enableQueryLog(); + $this->assertFalse($cart->hasItem(['product_id' => 1])); + $this->assertCount(1, DB::getQueryLog()); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + + $this->assertTrue($cart->hasItem(['product_id' => 1])); + } + + public function testUnknownAttribute(){ + $cart = Cart::current(); + $cart->addItem([ + 'foo' => 1, + 'product_id' => 2, + 'quantity' => 1, + 'unit_price' => 0, + ]); + $this->assertFalse($cart->hasItem(['foo' => 1])); + } + + public function testClear(){ + $cart = Cart::current(); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + + DB::enableQueryLog(); + $cart->clear(); + $this->assertCount(2, DB::getQueryLog()); + } + public function testCartStatuses(){ + $cart = Cart::current(); + $this->assertCount(1, Cart::active()->get()); + $this->assertCount(0, Cart::expired()->get()); + $this->assertCount(0, Cart::pending()->get()); + $this->assertCount(0, Cart::completed()->get()); + + DB::enableQueryLog(); + $cart->checkout(); + $this->assertCount(1, DB::getQueryLog()); + $this->assertCount(0, Cart::active()->get()); + $this->assertCount(0, Cart::expired()->get()); + $this->assertCount(1, Cart::pending()->get()); + $this->assertCount(0, Cart::completed()->get()); + + $cart->complete(); + $this->assertCount(0, Cart::active()->get()); + $this->assertCount(0, Cart::expired()->get()); + $this->assertCount(0, Cart::pending()->get()); + $this->assertCount(1, Cart::completed()->get()); + + $cart->expire(); + $this->assertCount(0, Cart::active()->get()); + $this->assertCount(1, Cart::expired()->get()); + $this->assertCount(0, Cart::pending()->get()); + $this->assertCount(0, Cart::completed()->get()); + } + + public function testInstance(){ + $cart = Cart::current("cart1"); + $this->assertEquals($cart->id, Cart::instance("cart1")->first()->id); + + $cart = Cart::current("cart2"); + $this->assertEquals($cart->id, Cart::instance("cart2")->first()->id); + } + + public function testCartDelete(){ + $cart = Cart::current(); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + DB::enableQueryLog(); + $cart->delete(); + $this->assertCount(2, DB::getQueryLog()); + } + + public function testFacade(){ + $cart = DBCart::current(); + $this->assertEquals(1, $cart->id); + } + + public function testCleanup(){ + $cart = DBCart::current(); + $cart->addItem([ + 'product_id' => 1, + 'unit_price' => 10.5, + 'quantity' => 2 + ]); + $cart->expire(); + + $cmd = new Hassansin\DBCart\Console\Commands\CartCleanup(); + DB::enableQueryLog(); + $cmd->handle(); + $this->assertCount(4, DB::getQueryLog()); + } + + public function testScopeUser(){ + $cart = DBCart::current(); + $cart->user_id = 100; + $cart->save(); + $this->assertEquals(null, Cart::active()->user()->first()); + $this->assertEquals(null, Cart::active()->user(200)->first()); + $this->assertEquals($cart->id, Cart::active()->user(100)->first()->id); + } + + public function testSession(){ + $cart = DBCart::current(); + $cart2 = DBCart::current('another'); + $this->assertEquals($cart->id, Cart::session()->first()->id); + $this->assertCount(2, Cart::session()->get()); } } diff --git a/tests/bootstrap.php b/tests/bootstrap.php new file mode 100644 index 0000000..39c0122 --- /dev/null +++ b/tests/bootstrap.php @@ -0,0 +1,8 @@ +