From ab875843da2aa99d08ec80758ec6ab1643fc74d7 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Fri, 2 Nov 2018 08:39:10 -0500 Subject: [PATCH 01/14] Updated to tideman 0.4.0, updated other dependencies via `composer update` --- composer.json | 2 +- composer.lock | 586 +++++++++++++++++++++++++++++--------------------- 2 files changed, 340 insertions(+), 248 deletions(-) diff --git a/composer.json b/composer.json index a696d09..c0b0db3 100644 --- a/composer.json +++ b/composer.json @@ -19,7 +19,7 @@ "laravel/framework": "5.4.*", "laravel/passport": "^3.0", "laravel/tinker": "~1.0", - "pivot-libre/tideman": "0.2.0", + "pivot-libre/tideman": "0.4.0", "aws/aws-sdk-php": "~3.0", "guzzlehttp/guzzle": "~6.0" }, diff --git a/composer.lock b/composer.lock index 7b5a295..3089123 100644 --- a/composer.lock +++ b/composer.lock @@ -1,23 +1,23 @@ { "_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" ], - "content-hash": "6f1b490d4a7f5eac25c7b8b231d6720d", + "content-hash": "a7377378b69d4e1e823aa7c832d8cb9c", "packages": [ { "name": "aws/aws-sdk-php", - "version": "3.54.4", + "version": "3.70.1", "source": { "type": "git", "url": "https://github.com/aws/aws-sdk-php.git", - "reference": "6642a13df7ddcccf19e66c744c5bfae5b61e9e85" + "reference": "69bd5dd9a7df89b994b6b8a905a874da29f04f7c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/6642a13df7ddcccf19e66c744c5bfae5b61e9e85", - "reference": "6642a13df7ddcccf19e66c744c5bfae5b61e9e85", + "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/69bd5dd9a7df89b994b6b8a905a874da29f04f7c", + "reference": "69bd5dd9a7df89b994b6b8a905a874da29f04f7c", "shasum": "" }, "require": { @@ -25,7 +25,7 @@ "ext-pcre": "*", "ext-simplexml": "*", "ext-spl": "*", - "guzzlehttp/guzzle": "^5.3.1|^6.2.1", + "guzzlehttp/guzzle": "^5.3.3|^6.2.1", "guzzlehttp/promises": "~1.0", "guzzlehttp/psr7": "^1.4.1", "mtdowling/jmespath.php": "~2.2", @@ -38,6 +38,8 @@ "doctrine/cache": "~1.4", "ext-dom": "*", "ext-openssl": "*", + "ext-pcntl": "*", + "ext-sockets": "*", "nette/neon": "^2.3", "phpunit/phpunit": "^4.8.35|^5.4.3", "psr/cache": "^1.0" @@ -46,7 +48,8 @@ "aws/aws-php-sns-message-validator": "To validate incoming SNS notifications", "doctrine/cache": "To use the DoctrineCacheAdapter", "ext-curl": "To send requests using cURL", - "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages" + "ext-openssl": "Allows working with CloudFront private distributions and verifying received SNS messages", + "ext-sockets": "To use client-side monitoring" }, "type": "library", "extra": { @@ -84,7 +87,7 @@ "s3", "sdk" ], - "time": "2018-04-10T22:11:31+00:00" + "time": "2018-10-31T21:06:07+00:00" }, { "name": "clue/graph", @@ -186,25 +189,25 @@ }, { "name": "defuse/php-encryption", - "version": "v2.1.0", + "version": "v2.2.1", "source": { "type": "git", "url": "https://github.com/defuse/php-encryption.git", - "reference": "5176f5abb38d3ea8a6e3ac6cd3bbb54d8185a689" + "reference": "0f407c43b953d571421e0020ba92082ed5fb7620" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/defuse/php-encryption/zipball/5176f5abb38d3ea8a6e3ac6cd3bbb54d8185a689", - "reference": "5176f5abb38d3ea8a6e3ac6cd3bbb54d8185a689", + "url": "https://api.github.com/repos/defuse/php-encryption/zipball/0f407c43b953d571421e0020ba92082ed5fb7620", + "reference": "0f407c43b953d571421e0020ba92082ed5fb7620", "shasum": "" }, "require": { "ext-openssl": "*", - "paragonie/random_compat": "~2.0", + "paragonie/random_compat": ">= 2", "php": ">=5.4.0" }, "require-dev": { - "nikic/php-parser": "^2.0|^3.0", + "nikic/php-parser": "^2.0|^3.0|^4.0", "phpunit/phpunit": "^4|^5" }, "bin": [ @@ -245,7 +248,7 @@ "security", "symmetric key cryptography" ], - "time": "2017-05-18T21:28:48+00:00" + "time": "2018-07-24T23:27:56+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -610,16 +613,16 @@ }, { "name": "guzzlehttp/guzzle", - "version": "6.3.2", + "version": "6.3.3", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90" + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/68d0ea14d5a3f42a20e87632a5f84931e2709c90", - "reference": "68d0ea14d5a3f42a20e87632a5f84931e2709c90", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/407b0cb880ace85c9b63c5f9551db498cb2d50ba", + "reference": "407b0cb880ace85c9b63c5f9551db498cb2d50ba", "shasum": "" }, "require": { @@ -629,7 +632,7 @@ }, "require-dev": { "ext-curl": "*", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4", + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.4 || ^7.0", "psr/log": "^1.0" }, "suggest": { @@ -671,7 +674,7 @@ "rest", "web service" ], - "time": "2018-03-26T16:33:04+00:00" + "time": "2018-04-22T15:46:56+00:00" }, { "name": "guzzlehttp/promises", @@ -791,32 +794,32 @@ }, { "name": "jakub-onderka/php-console-color", - "version": "0.1", + "version": "v0.2", "source": { "type": "git", "url": "https://github.com/JakubOnderka/PHP-Console-Color.git", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1" + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/e0b393dacf7703fc36a4efc3df1435485197e6c1", - "reference": "e0b393dacf7703fc36a4efc3df1435485197e6c1", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Color/zipball/d5deaecff52a0d61ccb613bb3804088da0307191", + "reference": "d5deaecff52a0d61ccb613bb3804088da0307191", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": ">=5.4.0" }, "require-dev": { "jakub-onderka/php-code-style": "1.0", - "jakub-onderka/php-parallel-lint": "0.*", + "jakub-onderka/php-parallel-lint": "1.0", "jakub-onderka/php-var-dump-check": "0.*", - "phpunit/phpunit": "3.7.*", + "phpunit/phpunit": "~4.3", "squizlabs/php_codesniffer": "1.*" }, "type": "library", "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleColor": "src/" + "psr-4": { + "JakubOnderka\\PhpConsoleColor\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -826,41 +829,41 @@ "authors": [ { "name": "Jakub Onderka", - "email": "jakub.onderka@gmail.com", - "homepage": "http://www.acci.cz" + "email": "jakub.onderka@gmail.com" } ], - "time": "2014-04-08T15:00:19+00:00" + "time": "2018-09-29T17:23:10+00:00" }, { "name": "jakub-onderka/php-console-highlighter", - "version": "v0.3.2", + "version": "v0.4", "source": { "type": "git", "url": "https://github.com/JakubOnderka/PHP-Console-Highlighter.git", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5" + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/7daa75df45242c8d5b75a22c00a201e7954e4fb5", - "reference": "7daa75df45242c8d5b75a22c00a201e7954e4fb5", + "url": "https://api.github.com/repos/JakubOnderka/PHP-Console-Highlighter/zipball/9f7a229a69d52506914b4bc61bfdb199d90c5547", + "reference": "9f7a229a69d52506914b4bc61bfdb199d90c5547", "shasum": "" }, "require": { - "jakub-onderka/php-console-color": "~0.1", - "php": ">=5.3.0" + "ext-tokenizer": "*", + "jakub-onderka/php-console-color": "~0.2", + "php": ">=5.4.0" }, "require-dev": { "jakub-onderka/php-code-style": "~1.0", - "jakub-onderka/php-parallel-lint": "~0.5", + "jakub-onderka/php-parallel-lint": "~1.0", "jakub-onderka/php-var-dump-check": "~0.1", "phpunit/phpunit": "~4.0", "squizlabs/php_codesniffer": "~1.5" }, "type": "library", "autoload": { - "psr-0": { - "JakubOnderka\\PhpConsoleHighlighter": "src/" + "psr-4": { + "JakubOnderka\\PhpConsoleHighlighter\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -874,7 +877,8 @@ "homepage": "http://www.acci.cz/" } ], - "time": "2015-04-20T18:58:01+00:00" + "description": "Highlight PHP code in terminal", + "time": "2018-09-29T18:48:56+00:00" }, { "name": "laravel/framework", @@ -1076,16 +1080,16 @@ }, { "name": "laravel/tinker", - "version": "v1.0.5", + "version": "v1.0.8", "source": { "type": "git", "url": "https://github.com/laravel/tinker.git", - "reference": "94f6daf2131508cebd11cd6f8632ba586d7ecc41" + "reference": "cafbf598a90acde68985660e79b2b03c5609a405" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/tinker/zipball/94f6daf2131508cebd11cd6f8632ba586d7ecc41", - "reference": "94f6daf2131508cebd11cd6f8632ba586d7ecc41", + "url": "https://api.github.com/repos/laravel/tinker/zipball/cafbf598a90acde68985660e79b2b03c5609a405", + "reference": "cafbf598a90acde68985660e79b2b03c5609a405", "shasum": "" }, "require": { @@ -1093,7 +1097,7 @@ "illuminate/contracts": "~5.1", "illuminate/support": "~5.1", "php": ">=5.5.9", - "psy/psysh": "0.7.*|0.8.*", + "psy/psysh": "0.7.*|0.8.*|0.9.*", "symfony/var-dumper": "~3.0|~4.0" }, "require-dev": { @@ -1135,20 +1139,20 @@ "laravel", "psysh" ], - "time": "2018-03-06T17:34:36+00:00" + "time": "2018-10-12T19:39:35+00:00" }, { "name": "lcobucci/jwt", - "version": "3.2.2", + "version": "3.2.4", "source": { "type": "git", "url": "https://github.com/lcobucci/jwt.git", - "reference": "0b5930be73582369e10c4d4bb7a12bac927a203c" + "reference": "c9704b751315d21735dc98d78d4f37bd73596da7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/jwt/zipball/0b5930be73582369e10c4d4bb7a12bac927a203c", - "reference": "0b5930be73582369e10c4d4bb7a12bac927a203c", + "url": "https://api.github.com/repos/lcobucci/jwt/zipball/c9704b751315d21735dc98d78d4f37bd73596da7", + "reference": "c9704b751315d21735dc98d78d4f37bd73596da7", "shasum": "" }, "require": { @@ -1193,7 +1197,7 @@ "JWS", "jwt" ], - "time": "2017-09-01T08:23:26+00:00" + "time": "2018-08-03T11:23:50+00:00" }, { "name": "league/event", @@ -1247,28 +1251,28 @@ }, { "name": "league/flysystem", - "version": "1.0.44", + "version": "1.0.48", "source": { "type": "git", "url": "https://github.com/thephpleague/flysystem.git", - "reference": "168dbe519737221dc87d17385cde33073881fd02" + "reference": "a6ded5b2f6055e2db97b4b859fdfca2b952b78aa" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/168dbe519737221dc87d17385cde33073881fd02", - "reference": "168dbe519737221dc87d17385cde33073881fd02", + "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/a6ded5b2f6055e2db97b4b859fdfca2b952b78aa", + "reference": "a6ded5b2f6055e2db97b4b859fdfca2b952b78aa", "shasum": "" }, "require": { + "ext-fileinfo": "*", "php": ">=5.5.9" }, "conflict": { "league/flysystem-sftp": "<1.0.6" }, "require-dev": { - "ext-fileinfo": "*", "phpspec/phpspec": "^3.4", - "phpunit/phpunit": "^5.7" + "phpunit/phpunit": "^5.7.10" }, "suggest": { "ext-fileinfo": "Required for MimeType", @@ -1327,7 +1331,7 @@ "sftp", "storage" ], - "time": "2018-04-06T09:58:14+00:00" + "time": "2018-10-15T13:53:10+00:00" }, { "name": "league/oauth2-server", @@ -1576,16 +1580,16 @@ }, { "name": "nesbot/carbon", - "version": "1.26.4", + "version": "1.34.0", "source": { "type": "git", "url": "https://github.com/briannesbitt/Carbon.git", - "reference": "e3d9014279133a3cccc01f6a691322a2d5a6a87b" + "reference": "1dbd3cb01c5645f3e7deda7aa46ef780d95fcc33" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/e3d9014279133a3cccc01f6a691322a2d5a6a87b", - "reference": "e3d9014279133a3cccc01f6a691322a2d5a6a87b", + "url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/1dbd3cb01c5645f3e7deda7aa46ef780d95fcc33", + "reference": "1dbd3cb01c5645f3e7deda7aa46ef780d95fcc33", "shasum": "" }, "require": { @@ -1597,6 +1601,13 @@ "phpunit/phpunit": "^4.8.35 || ^5.7" }, "type": "library", + "extra": { + "laravel": { + "providers": [ + "Carbon\\Laravel\\ServiceProvider" + ] + } + }, "autoload": { "psr-4": { "": "src/" @@ -1620,28 +1631,28 @@ "datetime", "time" ], - "time": "2018-04-17T15:35:42+00:00" + "time": "2018-09-20T19:36:25+00:00" }, { "name": "nikic/php-parser", - "version": "v3.1.5", + "version": "v4.1.0", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" + "reference": "d0230c5c77a7e3cfa69446febf340978540958c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", - "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/d0230c5c77a7e3cfa69446febf340978540958c0", + "reference": "d0230c5c77a7e3cfa69446febf340978540958c0", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.5" + "php": ">=7.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "phpunit/phpunit": "^6.5 || ^7.0" }, "bin": [ "bin/php-parse" @@ -1649,7 +1660,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -1671,20 +1682,20 @@ "parser", "php" ], - "time": "2018-02-28T20:30:58+00:00" + "time": "2018-10-10T09:24:14+00:00" }, { "name": "paragonie/random_compat", - "version": "v2.0.12", + "version": "v2.0.17", "source": { "type": "git", "url": "https://github.com/paragonie/random_compat.git", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb" + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paragonie/random_compat/zipball/258c89a6b97de7dfaf5b8c7607d0478e236b04fb", - "reference": "258c89a6b97de7dfaf5b8c7607d0478e236b04fb", + "url": "https://api.github.com/repos/paragonie/random_compat/zipball/29af24f25bab834fcbb38ad2a69fa93b867e070d", + "reference": "29af24f25bab834fcbb38ad2a69fa93b867e070d", "shasum": "" }, "require": { @@ -1716,10 +1727,11 @@ "description": "PHP 5.x polyfill for random_bytes() and random_int() from PHP 7", "keywords": [ "csprng", + "polyfill", "pseudorandom", "random" ], - "time": "2018-04-04T21:24:14+00:00" + "time": "2018-07-04T16:31:37+00:00" }, { "name": "phpseclib/phpseclib", @@ -1815,11 +1827,11 @@ }, { "name": "pivot-libre/tideman", - "version": "0.2.0", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/pivot-libre/tideman.git", - "reference": "11ca8836b9378b6b95568c5b7c965531a5c58ef8" + "reference": "39a71f57db4e1cf9bb637bf2f29a04ff795a072a" }, "require": { "clue/graph": "0.9.0", @@ -1863,7 +1875,7 @@ "ranked pairs", "voting" ], - "time": "2018-06-30T03:51:37+00:00" + "time": "2018-10-01T22:36:40+00:00" }, { "name": "psr/http-message", @@ -1964,30 +1976,32 @@ }, { "name": "psy/psysh", - "version": "v0.8.18", + "version": "v0.9.9", "source": { "type": "git", "url": "https://github.com/bobthecow/psysh.git", - "reference": "5357b1cffc8fb375d6a9e3c86d5c82dd38a40834" + "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/bobthecow/psysh/zipball/5357b1cffc8fb375d6a9e3c86d5c82dd38a40834", - "reference": "5357b1cffc8fb375d6a9e3c86d5c82dd38a40834", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", + "reference": "9aaf29575bb8293206bb0420c1e1c87ff2ffa94e", "shasum": "" }, "require": { "dnoegel/php-xdg-base-dir": "0.1", - "jakub-onderka/php-console-highlighter": "0.3.*", - "nikic/php-parser": "~1.3|~2.0|~3.0", - "php": ">=5.3.9", + "ext-json": "*", + "ext-tokenizer": "*", + "jakub-onderka/php-console-highlighter": "0.3.*|0.4.*", + "nikic/php-parser": "~1.3|~2.0|~3.0|~4.0", + "php": ">=5.4.0", "symfony/console": "~2.3.10|^2.4.2|~3.0|~4.0", "symfony/var-dumper": "~2.7|~3.0|~4.0" }, "require-dev": { - "hoa/console": "~3.16|~1.14", - "phpunit/phpunit": "^4.8.35|^5.4.3", - "symfony/finder": "~2.1|~3.0|~4.0" + "bamarni/composer-bin-plugin": "^1.2", + "hoa/console": "~2.15|~3.16", + "phpunit/phpunit": "~4.8.35|~5.0|~6.0|~7.0" }, "suggest": { "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", @@ -2002,15 +2016,15 @@ "type": "library", "extra": { "branch-alias": { - "dev-develop": "0.8.x-dev" + "dev-develop": "0.9.x-dev" } }, "autoload": { "files": [ - "src/Psy/functions.php" + "src/functions.php" ], "psr-4": { - "Psy\\": "src/Psy/" + "Psy\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2032,25 +2046,26 @@ "interactive", "shell" ], - "time": "2018-04-02T05:41:44+00:00" + "time": "2018-10-13T15:16:03+00:00" }, { "name": "ramsey/uuid", - "version": "3.7.3", + "version": "3.8.0", "source": { "type": "git", "url": "https://github.com/ramsey/uuid.git", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76" + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ramsey/uuid/zipball/44abcdad877d9a46685a3a4d221e3b2c4b87cb76", - "reference": "44abcdad877d9a46685a3a4d221e3b2c4b87cb76", + "url": "https://api.github.com/repos/ramsey/uuid/zipball/d09ea80159c1929d75b3f9c60504d613aeb4a1e3", + "reference": "d09ea80159c1929d75b3f9c60504d613aeb4a1e3", "shasum": "" }, "require": { - "paragonie/random_compat": "^1.0|^2.0", - "php": "^5.4 || ^7.0" + "paragonie/random_compat": "^1.0|^2.0|9.99.99", + "php": "^5.4 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "replace": { "rhumsaa/uuid": "self.version" @@ -2058,16 +2073,17 @@ "require-dev": { "codeception/aspect-mock": "^1.0 | ~2.0.0", "doctrine/annotations": "~1.2.0", - "goaop/framework": "1.0.0-alpha.2 | ^1.0 | ^2.1", + "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", + "phpunit/phpunit": "^4.7|^5.0|^6.5", "squizlabs/php_codesniffer": "^2.3" }, "suggest": { + "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", @@ -2112,20 +2128,20 @@ "identifier", "uuid" ], - "time": "2018-01-20T00:28:24+00:00" + "time": "2018-07-19T23:38:55+00:00" }, { "name": "swagger-api/swagger-ui", - "version": "v3.13.4", + "version": "v3.19.4", "source": { "type": "git", "url": "https://github.com/swagger-api/swagger-ui.git", - "reference": "5f855e56bb893ef164ffe691e220df1cc9cea9e6" + "reference": "9a9b63634fdbe1de0556818fdb78e211c4e2fa83" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/5f855e56bb893ef164ffe691e220df1cc9cea9e6", - "reference": "5f855e56bb893ef164ffe691e220df1cc9cea9e6", + "url": "https://api.github.com/repos/swagger-api/swagger-ui/zipball/9a9b63634fdbe1de0556818fdb78e211c4e2fa83", + "reference": "9a9b63634fdbe1de0556818fdb78e211c4e2fa83", "shasum": "" }, "type": "library", @@ -2169,20 +2185,20 @@ "swagger", "ui" ], - "time": "2018-04-14T01:38:21+00:00" + "time": "2018-10-20T04:48:22+00:00" }, { "name": "swiftmailer/swiftmailer", - "version": "v5.4.9", + "version": "v5.4.12", "source": { "type": "git", "url": "https://github.com/swiftmailer/swiftmailer.git", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91" + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/7ffc1ea296ed14bf8260b6ef11b80208dbadba91", - "reference": "7ffc1ea296ed14bf8260b6ef11b80208dbadba91", + "url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/181b89f18a90f8925ef805f950d47a7190e9b950", + "reference": "181b89f18a90f8925ef805f950d47a7190e9b950", "shasum": "" }, "require": { @@ -2223,20 +2239,20 @@ "mail", "mailer" ], - "time": "2018-01-23T07:37:21+00:00" + "time": "2018-07-31T09:26:32+00:00" }, { "name": "symfony/console", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "d4bb70fa24d540c309d88a9d6e43fb2d339b1fbf" + "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/d4bb70fa24d540c309d88a9d6e43fb2d339b1fbf", - "reference": "d4bb70fa24d540c309d88a9d6e43fb2d339b1fbf", + "url": "https://api.github.com/repos/symfony/console/zipball/3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", + "reference": "3b2b415d4c48fbefca7dc742aa0a0171bfae4e0b", "shasum": "" }, "require": { @@ -2257,7 +2273,7 @@ "symfony/process": "~3.3|~4.0" }, "suggest": { - "psr/log": "For using the console logger", + "psr/log-implementation": "For using the console logger", "symfony/event-dispatcher": "", "symfony/lock": "", "symfony/process": "" @@ -2292,20 +2308,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-04-03T05:22:50+00:00" + "time": "2018-10-02T16:33:53+00:00" }, { "name": "symfony/css-selector", - "version": "v4.0.8", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "03f965583147957f1ecbad7ea1c9d6fd5e525ec2" + "reference": "d67de79a70a27d93c92c47f37ece958bf8de4d8a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/03f965583147957f1ecbad7ea1c9d6fd5e525ec2", - "reference": "03f965583147957f1ecbad7ea1c9d6fd5e525ec2", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/d67de79a70a27d93c92c47f37ece958bf8de4d8a", + "reference": "d67de79a70a27d93c92c47f37ece958bf8de4d8a", "shasum": "" }, "require": { @@ -2314,7 +2330,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2345,20 +2361,20 @@ ], "description": "Symfony CssSelector Component", "homepage": "https://symfony.com", - "time": "2018-03-19T22:35:49+00:00" + "time": "2018-10-02T16:36:10+00:00" }, { "name": "symfony/debug", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "9cf7c2271cfb89ef9727db1b740ca77be57bf9d7" + "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/9cf7c2271cfb89ef9727db1b740ca77be57bf9d7", - "reference": "9cf7c2271cfb89ef9727db1b740ca77be57bf9d7", + "url": "https://api.github.com/repos/symfony/debug/zipball/0a612e9dfbd2ccce03eb174365f31ecdca930ff6", + "reference": "0a612e9dfbd2ccce03eb174365f31ecdca930ff6", "shasum": "" }, "require": { @@ -2401,20 +2417,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-04-03T05:22:50+00:00" + "time": "2018-10-02T16:33:53+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v4.0.8", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "63353a71073faf08f62caab4e6889b06a787f07b" + "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/63353a71073faf08f62caab4e6889b06a787f07b", - "reference": "63353a71073faf08f62caab4e6889b06a787f07b", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/bfb30c2ad377615a463ebbc875eba64a99f6aa3e", + "reference": "bfb30c2ad377615a463ebbc875eba64a99f6aa3e", "shasum": "" }, "require": { @@ -2437,7 +2453,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -2464,20 +2480,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-04-06T07:35:43+00:00" + "time": "2018-07-26T09:10:45+00:00" }, { "name": "symfony/finder", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433" + "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/bd14efe8b1fabc4de82bf50dce62f05f9a102433", - "reference": "bd14efe8b1fabc4de82bf50dce62f05f9a102433", + "url": "https://api.github.com/repos/symfony/finder/zipball/54ba444dddc5bd5708a34bd095ea67c6eb54644d", + "reference": "54ba444dddc5bd5708a34bd095ea67c6eb54644d", "shasum": "" }, "require": { @@ -2513,20 +2529,20 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-04-04T05:07:11+00:00" + "time": "2018-10-03T08:46:40+00:00" }, { "name": "symfony/http-foundation", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b11e6d165ff4cbf5685d185ab19a90f2f3bb7d1e" + "reference": "3a4498236ade473c52b92d509303e5fd1b211ab1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b11e6d165ff4cbf5685d185ab19a90f2f3bb7d1e", - "reference": "b11e6d165ff4cbf5685d185ab19a90f2f3bb7d1e", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/3a4498236ade473c52b92d509303e5fd1b211ab1", + "reference": "3a4498236ade473c52b92d509303e5fd1b211ab1", "shasum": "" }, "require": { @@ -2567,20 +2583,20 @@ ], "description": "Symfony HttpFoundation Component", "homepage": "https://symfony.com", - "time": "2018-04-03T05:22:50+00:00" + "time": "2018-10-03T08:48:18+00:00" }, { "name": "symfony/http-kernel", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "3cc2d4374aa9590c09277ad68657671cf49dbbf4" + "reference": "a0944a9a1d8845da724236cde9a310964acadb1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/3cc2d4374aa9590c09277ad68657671cf49dbbf4", - "reference": "3cc2d4374aa9590c09277ad68657671cf49dbbf4", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/a0944a9a1d8845da724236cde9a310964acadb1c", + "reference": "a0944a9a1d8845da724236cde9a310964acadb1c", "shasum": "" }, "require": { @@ -2588,11 +2604,12 @@ "psr/log": "~1.0", "symfony/debug": "~2.8|~3.0|~4.0", "symfony/event-dispatcher": "~2.8|~3.0|~4.0", - "symfony/http-foundation": "^3.4.4|^4.0.4" + "symfony/http-foundation": "~3.4.12|~4.0.12|^4.1.1", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/config": "<2.8", - "symfony/dependency-injection": "<3.4.5|<4.0.5,>=4", + "symfony/dependency-injection": "<3.4.10|<4.0.10,>=4", "symfony/var-dumper": "<3.3", "twig/twig": "<1.34|<2.4,>=2" }, @@ -2606,7 +2623,7 @@ "symfony/config": "~2.8|~3.0|~4.0", "symfony/console": "~2.8|~3.0|~4.0", "symfony/css-selector": "~2.8|~3.0|~4.0", - "symfony/dependency-injection": "^3.4.5|^4.0.5", + "symfony/dependency-injection": "^3.4.10|^4.0.10", "symfony/dom-crawler": "~2.8|~3.0|~4.0", "symfony/expression-language": "~2.8|~3.0|~4.0", "symfony/finder": "~2.8|~3.0|~4.0", @@ -2655,20 +2672,78 @@ ], "description": "Symfony HttpKernel Component", "homepage": "https://symfony.com", - "time": "2018-04-06T15:19:48+00:00" + "time": "2018-10-03T12:03:34+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.10.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/e3d826245268269cd66f8326bd8bc066687b4a19", + "reference": "e3d826245268269cd66f8326bd8bc066687b4a19", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.9-dev" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Polyfill\\Ctype\\": "" + }, + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + }, + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "time": "2018-08-06T14:22:27+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b" + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/78be803ce01e55d3491c1397cf1c64beb9c1b63b", - "reference": "78be803ce01e55d3491c1397cf1c64beb9c1b63b", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/c79c051f5b3a46be09205c73b80b346e4153e494", + "reference": "c79c051f5b3a46be09205c73b80b346e4153e494", "shasum": "" }, "require": { @@ -2680,7 +2755,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2714,30 +2789,30 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T13:07:52+00:00" }, { "name": "symfony/polyfill-php70", - "version": "v1.7.0", + "version": "v1.10.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php70.git", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f" + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/3532bfcd8f933a7816f3a0a59682fc404776600f", - "reference": "3532bfcd8f933a7816f3a0a59682fc404776600f", + "url": "https://api.github.com/repos/symfony/polyfill-php70/zipball/6b88000cdd431cd2e940caa2cb569201f3f84224", + "reference": "6b88000cdd431cd2e940caa2cb569201f3f84224", "shasum": "" }, "require": { - "paragonie/random_compat": "~1.0|~2.0", + "paragonie/random_compat": "~1.0|~2.0|~9.99", "php": ">=5.3.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -2773,20 +2848,20 @@ "portable", "shim" ], - "time": "2018-01-30T19:27:44+00:00" + "time": "2018-09-21T06:26:08+00:00" }, { "name": "symfony/process", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b" + "reference": "1dc2977afa7d70f90f3fefbcd84152813558910e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/4b7d64e852886319e93ddfdecff0d744ab87658b", - "reference": "4b7d64e852886319e93ddfdecff0d744ab87658b", + "url": "https://api.github.com/repos/symfony/process/zipball/1dc2977afa7d70f90f3fefbcd84152813558910e", + "reference": "1dc2977afa7d70f90f3fefbcd84152813558910e", "shasum": "" }, "require": { @@ -2822,38 +2897,39 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-04-03T05:22:50+00:00" + "time": "2018-10-02T12:28:39+00:00" }, { "name": "symfony/psr-http-message-bridge", - "version": "v1.0.2", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/symfony/psr-http-message-bridge.git", - "reference": "c2b757934f2d9681a287e662efbc27c41fe8ef86" + "reference": "53c15a6a7918e6c2ab16ae370ea607fb40cab196" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/c2b757934f2d9681a287e662efbc27c41fe8ef86", - "reference": "c2b757934f2d9681a287e662efbc27c41fe8ef86", + "url": "https://api.github.com/repos/symfony/psr-http-message-bridge/zipball/53c15a6a7918e6c2ab16ae370ea607fb40cab196", + "reference": "53c15a6a7918e6c2ab16ae370ea607fb40cab196", "shasum": "" }, "require": { - "php": ">=5.3.3", - "psr/http-message": "~1.0", - "symfony/http-foundation": "~2.3|~3.0|~4.0" + "php": "^5.3.3 || ^7.0", + "psr/http-message": "^1.0", + "symfony/http-foundation": "^2.3.42 || ^3.4 || ^4.0" }, "require-dev": { - "symfony/phpunit-bridge": "~3.2|4.0" + "symfony/phpunit-bridge": "^3.4 || 4.0" }, "suggest": { + "psr/http-factory-implementation": "To use the PSR-17 factory", "psr/http-message-implementation": "To use the HttpFoundation factory", "zendframework/zend-diactoros": "To use the Zend Diactoros factory" }, "type": "symfony-bridge", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-master": "1.1-dev" } }, "autoload": { @@ -2882,20 +2958,20 @@ "http-message", "psr-7" ], - "time": "2017-12-19T00:31:44+00:00" + "time": "2018-08-30T16:28:28+00:00" }, { "name": "symfony/routing", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/routing.git", - "reference": "50f333b707bef9f6972ad04e6df3ec8875c9a67c" + "reference": "585f6e2d740393d546978769dd56e496a6233e0b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/routing/zipball/50f333b707bef9f6972ad04e6df3ec8875c9a67c", - "reference": "50f333b707bef9f6972ad04e6df3ec8875c9a67c", + "url": "https://api.github.com/repos/symfony/routing/zipball/585f6e2d740393d546978769dd56e496a6233e0b", + "reference": "585f6e2d740393d546978769dd56e496a6233e0b", "shasum": "" }, "require": { @@ -2908,7 +2984,6 @@ }, "require-dev": { "doctrine/annotations": "~1.0", - "doctrine/common": "~2.2", "psr/log": "~1.0", "symfony/config": "^3.3.1|~4.0", "symfony/dependency-injection": "~3.3|~4.0", @@ -2960,20 +3035,20 @@ "uri", "url" ], - "time": "2018-04-04T13:22:16+00:00" + "time": "2018-10-02T12:28:39+00:00" }, { "name": "symfony/translation", - "version": "v4.0.8", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/symfony/translation.git", - "reference": "e20a9b7f9f62cb33a11638b345c248e7d510c938" + "reference": "9f0b61e339160a466ebcde167a6c5521c810e304" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation/zipball/e20a9b7f9f62cb33a11638b345c248e7d510c938", - "reference": "e20a9b7f9f62cb33a11638b345c248e7d510c938", + "url": "https://api.github.com/repos/symfony/translation/zipball/9f0b61e339160a466ebcde167a6c5521c810e304", + "reference": "9f0b61e339160a466ebcde167a6c5521c810e304", "shasum": "" }, "require": { @@ -2988,20 +3063,21 @@ "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": "To use logging capability in translator", + "psr/log-implementation": "To use logging capability in translator", "symfony/config": "", "symfony/yaml": "" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -3028,20 +3104,20 @@ ], "description": "Symfony Translation Component", "homepage": "https://symfony.com", - "time": "2018-02-22T10:50:29+00:00" + "time": "2018-10-02T16:36:10+00:00" }, { "name": "symfony/var-dumper", - "version": "v3.4.8", + "version": "v3.4.17", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "951643091b39a6fd40fce56cd16e21e12bef3feb" + "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/951643091b39a6fd40fce56cd16e21e12bef3feb", - "reference": "951643091b39a6fd40fce56cd16e21e12bef3feb", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ff8ac19e97e5c7c3979236b584719a1190f84181", + "reference": "ff8ac19e97e5c7c3979236b584719a1190f84181", "shasum": "" }, "require": { @@ -3097,7 +3173,7 @@ "debug", "dump" ], - "time": "2018-04-03T20:34:11+00:00" + "time": "2018-10-02T16:33:53+00:00" }, { "name": "tijsverkoyen/css-to-inline-styles", @@ -3148,28 +3224,28 @@ }, { "name": "vlucas/phpdotenv", - "version": "v2.4.0", + "version": "v2.5.1", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c" + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", - "reference": "3cc116adbe4b11be5ec557bf1d24dc5e3a21d18c", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", + "reference": "8abb4f9aa89ddea9d52112c65bbe8d0125e2fa8e", "shasum": "" }, "require": { "php": ">=5.3.9" }, "require-dev": { - "phpunit/phpunit": "^4.8 || ^5.0" + "phpunit/phpunit": "^4.8.35 || ^5.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.4-dev" + "dev-master": "2.5-dev" } }, "autoload": { @@ -3179,7 +3255,7 @@ }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause-Attribution" + "BSD-3-Clause" ], "authors": [ { @@ -3194,20 +3270,20 @@ "env", "environment" ], - "time": "2016-09-01T10:05:43+00:00" + "time": "2018-07-29T20:33:41+00:00" }, { "name": "zendframework/zend-diactoros", - "version": "1.7.1", + "version": "1.8.6", "source": { "type": "git", "url": "https://github.com/zendframework/zend-diactoros.git", - "reference": "bf26aff803a11c5cc8eb7c4878a702c403ec67f1" + "reference": "20da13beba0dde8fb648be3cc19765732790f46e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/bf26aff803a11c5cc8eb7c4878a702c403ec67f1", - "reference": "bf26aff803a11c5cc8eb7c4878a702c403ec67f1", + "url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e", + "reference": "20da13beba0dde8fb648be3cc19765732790f46e", "shasum": "" }, "require": { @@ -3220,17 +3296,29 @@ "require-dev": { "ext-dom": "*", "ext-libxml": "*", - "phpunit/phpunit": "^5.7.16 || ^6.0.8", + "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-master": "1.7.x-dev", - "dev-develop": "1.8.x-dev" + "dev-master": "1.8.x-dev", + "dev-develop": "1.9.x-dev", + "dev-release-2.0": "2.0.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/" } @@ -3246,7 +3334,7 @@ "psr", "psr-7" ], - "time": "2018-02-26T15:44:50+00:00" + "time": "2018-09-05T19:29:37+00:00" }, { "name": "zircote/swagger-php", @@ -3368,16 +3456,16 @@ }, { "name": "fzaninotto/faker", - "version": "v1.7.1", + "version": "v1.8.0", "source": { "type": "git", "url": "https://github.com/fzaninotto/Faker.git", - "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d" + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/d3ed4cc37051c1ca52d22d76b437d14809fc7e0d", - "reference": "d3ed4cc37051c1ca52d22d76b437d14809fc7e0d", + "url": "https://api.github.com/repos/fzaninotto/Faker/zipball/f72816b43e74063c8b10357394b6bba8cb1c10de", + "reference": "f72816b43e74063c8b10357394b6bba8cb1c10de", "shasum": "" }, "require": { @@ -3385,7 +3473,7 @@ }, "require-dev": { "ext-intl": "*", - "phpunit/phpunit": "^4.0 || ^5.0", + "phpunit/phpunit": "^4.8.35 || ^5.7", "squizlabs/php_codesniffer": "^1.5" }, "type": "library", @@ -3414,7 +3502,7 @@ "faker", "fixtures" ], - "time": "2017-08-15T16:48:10+00:00" + "time": "2018-07-12T10:23:15+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -3528,25 +3616,28 @@ }, { "name": "myclabs/deep-copy", - "version": "1.7.0", + "version": "1.8.1", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e" + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", - "reference": "3b8a3a99ba1f6a3952ac2747d989303cbd6b7a3e", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", + "reference": "3e01bdad3e18354c3dce54466b7fbe33a9f9f7f8", "shasum": "" }, "require": { - "php": "^5.6 || ^7.0" + "php": "^7.1" + }, + "replace": { + "myclabs/deep-copy": "self.version" }, "require-dev": { "doctrine/collections": "^1.0", "doctrine/common": "^2.6", - "phpunit/phpunit": "^4.1" + "phpunit/phpunit": "^7.1" }, "type": "library", "autoload": { @@ -3569,7 +3660,7 @@ "object", "object graph" ], - "time": "2017-10-19T19:58:43+00:00" + "time": "2018-06-11T23:09:50+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -3725,33 +3816,33 @@ }, { "name": "phpspec/prophecy", - "version": "1.7.5", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/dfd6be44111a7c41c2e884a336cc4f461b3b2401", - "reference": "dfd6be44111a7c41c2e884a336cc4f461b3b2401", + "url": "https://api.github.com/repos/phpspec/prophecy/zipball/4ba436b55987b4bf311cb7c6ba82aa528aac0a06", + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06", "shasum": "" }, "require": { "doctrine/instantiator": "^1.0.2", "php": "^5.3|^7.0", "phpdocumentor/reflection-docblock": "^2.0|^3.0.2|^4.0", - "sebastian/comparator": "^1.1|^2.0", + "sebastian/comparator": "^1.1|^2.0|^3.0", "sebastian/recursion-context": "^1.0|^2.0|^3.0" }, "require-dev": { "phpspec/phpspec": "^2.5|^3.2", - "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.7.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -3784,7 +3875,7 @@ "spy", "stub" ], - "time": "2018-02-19T10:16:54+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", @@ -4691,20 +4782,21 @@ }, { "name": "symfony/yaml", - "version": "v4.0.8", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "8b34ebb5989df61cbd77eff29a02c4db9ac1069c" + "reference": "367e689b2fdc19965be435337b50bc8adf2746c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/8b34ebb5989df61cbd77eff29a02c4db9ac1069c", - "reference": "8b34ebb5989df61cbd77eff29a02c4db9ac1069c", + "url": "https://api.github.com/repos/symfony/yaml/zipball/367e689b2fdc19965be435337b50bc8adf2746c9", + "reference": "367e689b2fdc19965be435337b50bc8adf2746c9", "shasum": "" }, "require": { - "php": "^7.1.3" + "php": "^7.1.3", + "symfony/polyfill-ctype": "~1.8" }, "conflict": { "symfony/console": "<3.4" @@ -4718,7 +4810,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "4.1-dev" } }, "autoload": { @@ -4745,7 +4837,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-04-03T05:24:00+00:00" + "time": "2018-10-02T16:36:10+00:00" }, { "name": "webmozart/assert", From 246132c27f91aa9a508b06bedb91fdea328bd4c4 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Fri, 2 Nov 2018 18:15:14 -0500 Subject: [PATCH 02/14] First cut of a stateless BFF election-runner --- .../StatelessElectionController.php | 65 ++++++++++++++ routes/api.php | 2 + storage/api-docs/api-docs.json | 86 ++++++++++++++++++- 3 files changed, 152 insertions(+), 1 deletion(-) create mode 100644 app/Http/Controllers/StatelessElectionController.php diff --git a/app/Http/Controllers/StatelessElectionController.php b/app/Http/Controllers/StatelessElectionController.php new file mode 100644 index 0000000..c93feea --- /dev/null +++ b/app/Http/Controllers/StatelessElectionController.php @@ -0,0 +1,65 @@ +has('tieBreaker')) { + abort(400, "tieBreaker is a required parameter"); + } else { + $tieBreaker = $request->input('tieBreaker'); + } + if (!$request->has('ballots')) { + abort(400, "ballots is a required parameter"); + } else { + $ballots = $request->input('ballots'); + } + + $runner = new BffElectionRunner(); + $runner->setTieBreaker($tieBreaker); + $result = $runner->run($ballots); + return $result; + } +} diff --git a/routes/api.php b/routes/api.php index e091d8b..eb2a1f5 100644 --- a/routes/api.php +++ b/routes/api.php @@ -15,6 +15,8 @@ | */ +Route::post('calculateResult', 'StatelessElectionController@calculateResult')->name('calculateResult'); + Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); diff --git a/storage/api-docs/api-docs.json b/storage/api-docs/api-docs.json index 399e561..c1a5b9a 100644 --- a/storage/api-docs/api-docs.json +++ b/storage/api-docs/api-docs.json @@ -175,7 +175,7 @@ { "name": "payload", "in": "body", - "description": "Candidate to add", + "description": "Candidate to update", "required": true, "schema": { "$ref": "#/definitions/CreateCandidate" @@ -457,28 +457,76 @@ } } } + }, + "/calculateResult": { + "post": { + "tags": [ + "Stateless Election Result" + ], + "summary": "Run a stateless election using BFF ballots", + "operationId": "calculateResult", + "consumes": [ + "application/x-www-form-urlencoded" + ], + "produces": [ + "text/plain" + ], + "parameters": [ + { + "name": "ballots", + "in": "formData", + "description": "One or more BFF ballots, one on each line", + "required": true, + "type": "string" + }, + { + "name": "tieBreaker", + "in": "formData", + "description": "One BFF Ballot for resolving intermediate ties", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "description": "JSON with a key `result` whose value is a BFF election result", + "type": "string" + } + }, + "400": { + "description": "Bad Request" + } + } + } } }, "definitions": { "Candidate": { "properties": { "id": { + "description": "", "type": "string", "example": "123" }, "election_id": { + "description": "", "type": "string", "example": "123" }, "name": { + "description": "", "type": "string", "example": "Funds for road construction" }, "created_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "updated_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" } @@ -491,6 +539,7 @@ "Code": { "properties": { "code": { + "description": "", "type": "string", "example": "12345678" } @@ -503,6 +552,7 @@ "CreateCandidate": { "properties": { "name": { + "description": "", "type": "string", "example": "Highland Avenue" } @@ -515,26 +565,32 @@ "Election": { "properties": { "id": { + "description": "", "type": "string", "example": "123" }, "creator_id": { + "description": "", "type": "string", "example": "123" }, "name": { + "description": "", "type": "string", "example": "Funds for road construction" }, "created_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "updated_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "deleted_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" } @@ -547,30 +603,37 @@ "ElectionWithCreator": { "properties": { "id": { + "description": "", "type": "string", "example": "123" }, "creator_id": { + "description": "", "type": "string", "example": "123" }, "name": { + "description": "", "type": "string", "example": "Funds for road construction" }, "created_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "updated_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "deleted_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "creator": { + "description": "", "$ref": "#/definitions/User" } }, @@ -582,6 +645,7 @@ "Email": { "properties": { "email": { + "description": "", "type": "string", "example": "john.doe@example.com" } @@ -594,26 +658,32 @@ "Invite": { "properties": { "id": { + "description": "", "type": "string", "example": "123" }, "code": { + "description": "", "type": "string", "example": "12345678" }, "email": { + "description": "", "type": "string", "example": "john.doe@example.com" }, "accepted_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "created_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "updated_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" } @@ -626,30 +696,37 @@ "InviteWithElection": { "properties": { "id": { + "description": "", "type": "string", "example": "123" }, "code": { + "description": "", "type": "string", "example": "12345678" }, "email": { + "description": "", "type": "string", "example": "john.doe@example.com" }, "accepted_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "created_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "updated_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "pivot": { + "description": "", "$ref": "#/definitions/PivotElection" } }, @@ -661,10 +738,12 @@ "PivotElection": { "properties": { "election_id": { + "description": "", "type": "string", "example": "123" }, "invite_id": { + "description": "", "type": "string", "example": "123" } @@ -677,22 +756,27 @@ "User": { "properties": { "id": { + "description": "", "type": "string", "example": "123" }, "name": { + "description": "", "type": "string", "example": "John Doe" }, "email": { + "description": "", "type": "string", "example": "john.doe@example.com" }, "created_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" }, "updated_at": { + "description": "", "type": "string", "example": "2017-01-01 11:00:00" } From 17d201f68a76568a26b86c5c8a696b966d494287 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Sat, 3 Nov 2018 16:23:55 -0500 Subject: [PATCH 03/14] Moved stateless election route to unauthenticated open route. --- routes/api.php | 2 -- routes/open.php | 1 + 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/routes/api.php b/routes/api.php index eb2a1f5..e091d8b 100644 --- a/routes/api.php +++ b/routes/api.php @@ -15,8 +15,6 @@ | */ -Route::post('calculateResult', 'StatelessElectionController@calculateResult')->name('calculateResult'); - Route::middleware('auth:api')->get('/user', function (Request $request) { return $request->user(); }); diff --git a/routes/open.php b/routes/open.php index 251baee..1eb0c2c 100644 --- a/routes/open.php +++ b/routes/open.php @@ -2,4 +2,5 @@ use Illuminate\Http\Request; +Route::post('calculateResult', 'StatelessElectionController@calculateResult')->name('calculateResult'); Route::post('/send_verify_email', 'VerifyController@send_verify_email'); From e11ea2342fc529fce670d24af2a9bc80cbe91420 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Wed, 14 Nov 2018 21:22:09 -0600 Subject: [PATCH 04/14] Exposed BFF Election API in Swagger. Removed auth from the Swagger docs, but it is still present on the /api endpoints. --- ...ntroller.php => BffElectionController.php} | 14 ++- app/Http/Controllers/CandidateController.php | 10 +- app/Http/Controllers/Controller.php | 2 +- app/Http/Controllers/ElectionController.php | 6 +- app/Http/Controllers/ElectorController.php | 4 +- app/Http/Controllers/InviteController.php | 6 +- app/Http/Controllers/ResultController.php | 2 +- config/l5-swagger.php | 2 +- routes/open.php | 2 +- storage/api-docs/api-docs.json | 106 +++++++++--------- 10 files changed, 78 insertions(+), 76 deletions(-) rename app/Http/Controllers/{StatelessElectionController.php => BffElectionController.php} (81%) diff --git a/app/Http/Controllers/StatelessElectionController.php b/app/Http/Controllers/BffElectionController.php similarity index 81% rename from app/Http/Controllers/StatelessElectionController.php rename to app/Http/Controllers/BffElectionController.php index c93feea..9940851 100644 --- a/app/Http/Controllers/StatelessElectionController.php +++ b/app/Http/Controllers/BffElectionController.php @@ -2,22 +2,24 @@ namespace App\Http\Controllers; +use Illuminate\Routing\Controller as BaseController; use Carbon\Carbon; use App\Election; use App\Elector; use Illuminate\Http\Request; +use Illuminate\Http\Response; use Illuminate\Support\Facades\Auth; use PivotLibre\Tideman\BffElectionRunner; -class StatelessElectionController extends Controller +class BffElectionController extends BaseController { /** - * Run a stateless Ranked Pairs election via BFF ballots. + * Run a Ranked Pairs election via BFF ballots. * * @SWG\Post( - * tags={"Stateless Election Result"}, - * path="/calculateResult", - * summary="Run a stateless election using BFF ballots", + * tags={"BFF Election Result"}, + * path="/open/calculateResult", + * summary="Run an election using BFF ballots", * operationId="calculateResult", * consumes={"application/x-www-form-urlencoded"}, * produces={"text/plain"}, @@ -44,7 +46,7 @@ class StatelessElectionController extends Controller * * @return \Illuminate\Http\Response */ - public function calculateResult(Request $request) + public function calculateResult(Request $request, Response $response) { if (!$request->has('tieBreaker')) { abort(400, "tieBreaker is a required parameter"); diff --git a/app/Http/Controllers/CandidateController.php b/app/Http/Controllers/CandidateController.php index e9aecdc..f4ed9f0 100644 --- a/app/Http/Controllers/CandidateController.php +++ b/app/Http/Controllers/CandidateController.php @@ -20,7 +20,7 @@ public function __construct() * * @SWG\Get( * tags={"Candidates"}, - * path="/elections/{electionId}/candidates", + * path="/api/elections/{electionId}/candidates", * summary="View candidates for an election", * operationId="candidateIndex", * @SWG\Parameter( @@ -51,7 +51,7 @@ public function index(Election $election) * * @SWG\Get( * tags={"Candidates"}, - * path="/elections/{electionId}/candidates/{candidateId}", + * path="/api/elections/{electionId}/candidates/{candidateId}", * summary="Get information about a candidate", * operationId="getCandidateById", * @SWG\Parameter( @@ -89,7 +89,7 @@ public function show(Election $election, Candidate $candidate) * * @SWG\Post( * tags={"Candidates"}, - * path="/elections/{electionId}/candidates", + * path="/api/elections/{electionId}/candidates", * summary="Add a candidate", * consumes={"application/json"}, * produces={"application/json"}, @@ -149,7 +149,7 @@ public function store(Request $request, Election $election) * * @SWG\Patch( * tags={"Candidates"}, - * path="/elections/{electionId}/candidates/{candidateId}", + * path="/api/elections/{electionId}/candidates/{candidateId}", * summary="Update a candidate", * consumes={"application/json"}, * produces={"application/json"}, @@ -206,7 +206,7 @@ public function update(Request $request, Election $election, Candidate $candidat * * @SWG\Delete( * tags={"Candidates"}, - * path="/elections/{electionId}/candidates/{candidateId}", + * path="/api/elections/{electionId}/candidates/{candidateId}", * summary="Delete a candidate", * consumes={"application/json"}, * produces={"application/json"}, diff --git a/app/Http/Controllers/Controller.php b/app/Http/Controllers/Controller.php index d4ed2bf..8b24ede 100644 --- a/app/Http/Controllers/Controller.php +++ b/app/Http/Controllers/Controller.php @@ -1,7 +1,7 @@ authorize('view', $election); return $election->candidates; } -} \ No newline at end of file +} diff --git a/app/Http/Controllers/ElectorController.php b/app/Http/Controllers/ElectorController.php index b35928b..bc0a66b 100644 --- a/app/Http/Controllers/ElectorController.php +++ b/app/Http/Controllers/ElectorController.php @@ -17,7 +17,7 @@ class ElectorController extends Controller * * @SWG\Get( * tags={"Electors"}, - * path="/elections/{electionId}/electors", + * path="/api/elections/{electionId}/electors", * summary="View the electorate for an election", * operationId="electorIndex", * @SWG\Parameter( @@ -69,7 +69,7 @@ public function electors_for_self(Election $election) * * @SWG\Get( * tags={"Electors"}, - * path="/elections/{electionId}/electors/{electorId}", + * path="/api/elections/{electionId}/electors/{electorId}", * summary="Get information about an elector", * operationId="getElectorById", * @SWG\Parameter( diff --git a/app/Http/Controllers/InviteController.php b/app/Http/Controllers/InviteController.php index 0586483..10659b4 100644 --- a/app/Http/Controllers/InviteController.php +++ b/app/Http/Controllers/InviteController.php @@ -15,7 +15,7 @@ class InviteController extends Controller * * @SWG\Get( * tags={"Invites"}, - * path="/elections/{electionId}/invite", + * path="/api/elections/{electionId}/invite", * summary="View electors who have not accepted their invite yet", * operationId="inviteIndex", * @SWG\Parameter( @@ -46,7 +46,7 @@ public function index(Election $election) * * @SWG\Post( * tags={"Invites"}, - * path="/elections/{electionId}/invite", + * path="/api/elections/{electionId}/invite", * summary="Send an invite", * operationId="createInvite", * consumes={"application/json"}, @@ -94,7 +94,7 @@ public function store(Request $request, Election $election) * * @SWG\Post( * tags={"Invites"}, - * path="/invite/accept", + * path="/api/invite/accept", * summary="Accept an invite", * consumes={"application/json"}, * produces={"application/json"}, diff --git a/app/Http/Controllers/ResultController.php b/app/Http/Controllers/ResultController.php index 90a0766..c18f330 100644 --- a/app/Http/Controllers/ResultController.php +++ b/app/Http/Controllers/ResultController.php @@ -14,7 +14,7 @@ class ResultController extends Controller * * @SWG\Get( * tags={"Election"}, - * path="/election/{electionId}/result", + * path="/api/election/{electionId}/result", * summary="View results for an election", * operationId="getElectionResults", * @SWG\Parameter( diff --git a/config/l5-swagger.php b/config/l5-swagger.php index 45ade8f..b72e5ca 100644 --- a/config/l5-swagger.php +++ b/config/l5-swagger.php @@ -44,7 +44,7 @@ |-------------------------------------------------------------------------- */ 'middleware' => [ - 'api' => ['web', 'auth'], + 'api' => [], 'asset' => [], 'docs' => [], 'oauth2_callback' => [], diff --git a/routes/open.php b/routes/open.php index 1eb0c2c..aa980cd 100644 --- a/routes/open.php +++ b/routes/open.php @@ -2,5 +2,5 @@ use Illuminate\Http\Request; -Route::post('calculateResult', 'StatelessElectionController@calculateResult')->name('calculateResult'); +Route::post('calculateResult', 'BffElectionController@calculateResult')->name('calculateResult'); Route::post('/send_verify_email', 'VerifyController@send_verify_email'); diff --git a/storage/api-docs/api-docs.json b/storage/api-docs/api-docs.json index c1a5b9a..2441b60 100644 --- a/storage/api-docs/api-docs.json +++ b/storage/api-docs/api-docs.json @@ -4,9 +4,52 @@ "title": "Pivot API", "version": "0.1.0" }, - "basePath": "/api", + "basePath": "/", "paths": { - "/elections/{electionId}/candidates": { + "/open/calculateResult": { + "post": { + "tags": [ + "BFF Election Result" + ], + "summary": "Run an election using BFF ballots", + "operationId": "calculateResult", + "consumes": [ + "application/x-www-form-urlencoded" + ], + "produces": [ + "text/plain" + ], + "parameters": [ + { + "name": "ballots", + "in": "formData", + "description": "One or more BFF ballots, one on each line", + "required": true, + "type": "string" + }, + { + "name": "tieBreaker", + "in": "formData", + "description": "One BFF Ballot for resolving intermediate ties", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "Success", + "schema": { + "description": "JSON with a key `result` whose value is a BFF election result", + "type": "string" + } + }, + "400": { + "description": "Bad Request" + } + } + } + }, + "/api/elections/{electionId}/candidates": { "get": { "tags": [ "Candidates" @@ -80,7 +123,7 @@ } } }, - "/elections/{electionId}/candidates/{candidateId}": { + "/api/elections/{electionId}/candidates/{candidateId}": { "get": { "tags": [ "Candidates" @@ -192,7 +235,7 @@ } } }, - "/elections": { + "/api/elections": { "get": { "tags": [ "Election" @@ -215,7 +258,7 @@ } } }, - "/elections/{electionId}": { + "/api/elections/{electionId}": { "get": { "tags": [ "Election" @@ -247,7 +290,7 @@ } } }, - "/elections/{electionId}/electors": { + "/api/elections/{electionId}/electors": { "get": { "tags": [ "Electors" @@ -279,7 +322,7 @@ } } }, - "/elections/{electionId}/electors/{electorId}": { + "/api/elections/{electionId}/electors/{electorId}": { "get": { "tags": [ "Electors" @@ -315,7 +358,7 @@ } } }, - "/elections/{electionId}/invite": { + "/api/elections/{electionId}/invite": { "get": { "tags": [ "Invites" @@ -389,7 +432,7 @@ } } }, - "/invite/accept": { + "/api/invite/accept": { "post": { "tags": [ "Invites" @@ -426,7 +469,7 @@ } } }, - "/election/{electionId}/result": { + "/api/election/{electionId}/result": { "get": { "tags": [ "Election" @@ -457,49 +500,6 @@ } } } - }, - "/calculateResult": { - "post": { - "tags": [ - "Stateless Election Result" - ], - "summary": "Run a stateless election using BFF ballots", - "operationId": "calculateResult", - "consumes": [ - "application/x-www-form-urlencoded" - ], - "produces": [ - "text/plain" - ], - "parameters": [ - { - "name": "ballots", - "in": "formData", - "description": "One or more BFF ballots, one on each line", - "required": true, - "type": "string" - }, - { - "name": "tieBreaker", - "in": "formData", - "description": "One BFF Ballot for resolving intermediate ties", - "required": true, - "type": "string" - } - ], - "responses": { - "200": { - "description": "Success", - "schema": { - "description": "JSON with a key `result` whose value is a BFF election result", - "type": "string" - } - }, - "400": { - "description": "Bad Request" - } - } - } } }, "definitions": { From c43f7d62073992b592961ab722da42e0d4cbf792 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Wed, 14 Nov 2018 21:46:41 -0600 Subject: [PATCH 05/14] Adjusted for breaking changes in Tideman library --- app/Election.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Election.php b/app/Election.php index a429f3d..82cee41 100644 --- a/app/Election.php +++ b/app/Election.php @@ -271,7 +271,7 @@ public function createTotallyOrderedBallot($nBallot) { return new CandidateList($candidate); }, $totalOrder); - return new NBallot(1, ...$totalOrder); + return new Ballot(...$totalOrder); } public static function ballotToText($nBallot) { From 98e7df908dd423ff0a3273c9691f85433cbab691 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Thu, 15 Nov 2018 17:58:30 -0600 Subject: [PATCH 06/14] Restricted logo display to homepage to enable logo-less BFF form view. --- .../Controllers/BffElectionController.php | 5 +++++ resources/views/bff_form.blade.php | 2 ++ resources/views/layouts/pivot.blade.php | 14 +------------- resources/views/welcome.blade.php | 19 ++++++++++++++++--- routes/open.php | 1 + routes/web.php | 2 +- 6 files changed, 26 insertions(+), 17 deletions(-) create mode 100644 resources/views/bff_form.blade.php diff --git a/app/Http/Controllers/BffElectionController.php b/app/Http/Controllers/BffElectionController.php index 9940851..9d7387c 100644 --- a/app/Http/Controllers/BffElectionController.php +++ b/app/Http/Controllers/BffElectionController.php @@ -64,4 +64,9 @@ public function calculateResult(Request $request, Response $response) $result = $runner->run($ballots); return $result; } + + public function form() + { + return view('bff_form'); + } } diff --git a/resources/views/bff_form.blade.php b/resources/views/bff_form.blade.php new file mode 100644 index 0000000..49b8700 --- /dev/null +++ b/resources/views/bff_form.blade.php @@ -0,0 +1,2 @@ +@extends('layouts.pivot') + diff --git a/resources/views/layouts/pivot.blade.php b/resources/views/layouts/pivot.blade.php index 9f53052..775c546 100644 --- a/resources/views/layouts/pivot.blade.php +++ b/resources/views/layouts/pivot.blade.php @@ -18,9 +18,6 @@ - + @endsection diff --git a/routes/open.php b/routes/open.php index aa980cd..4d26c3a 100644 --- a/routes/open.php +++ b/routes/open.php @@ -3,4 +3,5 @@ use Illuminate\Http\Request; Route::post('calculateResult', 'BffElectionController@calculateResult')->name('calculateResult'); +Route::get('bffUI', 'BffElectionController@form')->name('bffUI'); Route::post('/send_verify_email', 'VerifyController@send_verify_email'); diff --git a/routes/web.php b/routes/web.php index e8e1a0e..88ff945 100644 --- a/routes/web.php +++ b/routes/web.php @@ -18,7 +18,7 @@ Route::get('/', function () { - return view('myElections'); + return view('welcome'); }); // Route::get('/verify_email', function () { // return view('auth/verifyEmail'); From 605f041e2d815849f3324fcd5cbccde2e9ff5eb1 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Thu, 15 Nov 2018 23:25:05 -0600 Subject: [PATCH 07/14] Added user interface for trying BFF elections. --- .../Controllers/BffElectionController.php | 2 +- public/css/pivot.css | 19 +++++--- public/js/try.js | 31 +++++++++++++ resources/views/bff_form.blade.php | 44 +++++++++++++++++++ routes/open.php | 4 +- storage/api-docs/api-docs.json | 2 +- 6 files changed, 91 insertions(+), 11 deletions(-) create mode 100644 public/js/try.js diff --git a/app/Http/Controllers/BffElectionController.php b/app/Http/Controllers/BffElectionController.php index 9d7387c..e327071 100644 --- a/app/Http/Controllers/BffElectionController.php +++ b/app/Http/Controllers/BffElectionController.php @@ -18,7 +18,7 @@ class BffElectionController extends BaseController * * @SWG\Post( * tags={"BFF Election Result"}, - * path="/open/calculateResult", + * path="/open/try", * summary="Run an election using BFF ballots", * operationId="calculateResult", * consumes={"application/x-www-form-urlencoded"}, diff --git a/public/css/pivot.css b/public/css/pivot.css index af49078..4ae3817 100644 --- a/public/css/pivot.css +++ b/public/css/pivot.css @@ -5,13 +5,13 @@ body { box-sizing: border-box; margin: 0; font-family: "Raleway","Alegreya Sans",sans-serif; - font-size: 0px; + font-size: 1em; text-decoration: none; /* height: 100%; */ width: 100%; font-weight: normal; } -div, ol, ul, li, a, img, form, label, input, iframe, button { +div, ol, ul, li, a, img, form, label, input, iframe, button, textarea { position: relative; display: inline-block; box-sizing: border-box; @@ -375,6 +375,7 @@ input, a, button, input[type=submit], +textarea, .clickable1, /* .clickable1 select, */ .clickable2, @@ -632,7 +633,15 @@ input[type=checkbox]:focus + .checkboxUI0, width: 600px; height: 600px; } +.centered,.centeredRegistrationButton { + margin: auto; + width: 50%; + display: block; +} +.block { + display: block; +} @media print { body, div { height: auto; @@ -640,8 +649,4 @@ input[type=checkbox]:focus + .checkboxUI0, display: block; } } -.centeredRegistrationButton { - margin: auto; - width: 50%; - display: block; -} + diff --git a/public/js/try.js b/public/js/try.js new file mode 100644 index 0000000..b33c41d --- /dev/null +++ b/public/js/try.js @@ -0,0 +1,31 @@ + +(function() { + "use strict"; + document.querySelector("#tryForm").addEventListener('submit', function(event){ + event.preventDefault(); + + var form = event.target; + var requestBody = new FormData(form); + + var toggleResultsVisibility = function(visible){ + var methodName = visible ? 'remove' : 'add'; + document.querySelector('#result').classList[methodName]('hidden'); + }; + + var displayResponse = function(text){ + document.querySelector('#resultText').innerHTML = text; + toggleResultsVisibility(true); + }; + toggleResultsVisibility(false); + axios.post( + '/open/try', + requestBody, + {transformResponse: undefined} + ).then(function(response){ + displayResponse(response.data); + }).catch(function(error){ + displayResponse(error.response.data); + }); + }); + +})(); diff --git a/resources/views/bff_form.blade.php b/resources/views/bff_form.blade.php index 49b8700..793ab51 100644 --- a/resources/views/bff_form.blade.php +++ b/resources/views/bff_form.blade.php @@ -1,2 +1,46 @@ @extends('layouts.pivot') +@section('content') +
+

+ TRY IT! +

+

This page lets you try out elections on your own without logging in. Since this page is for experts, ballots are entered in textual BFF format. +

Want a more user-friendly experience? LOG IN

+

Don't have an account yet? REGISTER

+
+

Enter ballots, one per line. +

+ +
+ +
+

Enter one tie-breaking ballot.

+ +
+ +
+ +
+
+ +
+@endsection +@section('scripts') + +@endsection diff --git a/routes/open.php b/routes/open.php index 4d26c3a..1774656 100644 --- a/routes/open.php +++ b/routes/open.php @@ -2,6 +2,6 @@ use Illuminate\Http\Request; -Route::post('calculateResult', 'BffElectionController@calculateResult')->name('calculateResult'); -Route::get('bffUI', 'BffElectionController@form')->name('bffUI'); +Route::post('try', 'BffElectionController@calculateResult')->name('calculateResult'); +Route::get('try', 'BffElectionController@form')->name('try'); Route::post('/send_verify_email', 'VerifyController@send_verify_email'); diff --git a/storage/api-docs/api-docs.json b/storage/api-docs/api-docs.json index 2441b60..482b817 100644 --- a/storage/api-docs/api-docs.json +++ b/storage/api-docs/api-docs.json @@ -6,7 +6,7 @@ }, "basePath": "/", "paths": { - "/open/calculateResult": { + "/open/try": { "post": { "tags": [ "BFF Election Result" From bea79e373613bcac0f308f647a0f6798d100c420 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Thu, 15 Nov 2018 23:41:28 -0600 Subject: [PATCH 08/14] Discarding local changes to vendor directory during build. --- composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/composer.json b/composer.json index c0b0db3..9760398 100644 --- a/composer.json +++ b/composer.json @@ -60,6 +60,7 @@ "config": { "preferred-install": "dist", "sort-packages": true, - "optimize-autoloader": true + "optimize-autoloader": true, + "discard-changes": true } } From 099ff094ebdd8cddea704b5d2aca4b4830d65994 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Fri, 16 Nov 2018 00:02:33 -0600 Subject: [PATCH 09/14] Added basic integration tests for BFF API and form. --- tests/Feature/BffTest.php | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 tests/Feature/BffTest.php diff --git a/tests/Feature/BffTest.php b/tests/Feature/BffTest.php new file mode 100644 index 0000000..44cdaab --- /dev/null +++ b/tests/Feature/BffTest.php @@ -0,0 +1,23 @@ +call('GET', '/open/try'); + $this->assertEquals(200, $response->status()); + } + + public function testBffAPIWorksWithoutAuth() + { + $ballot = 'A>B>C'; + $response = $this->call('POST', '/open/try', ['ballots' => $ballot, 'tieBreaker'=> $ballot]); + $this->assertEquals(200, $response->status()); + $this->assertEquals($ballot, $response->content()); + } + +} From 24c034d7456c6c62c2c8441caba59986222115b5 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Fri, 16 Nov 2018 18:19:09 -0600 Subject: [PATCH 10/14] Minor code quality fixes. --- app/Http/Controllers/BffElectionController.php | 2 +- public/js/try.js | 15 ++++++++------- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/app/Http/Controllers/BffElectionController.php b/app/Http/Controllers/BffElectionController.php index e327071..fc77363 100644 --- a/app/Http/Controllers/BffElectionController.php +++ b/app/Http/Controllers/BffElectionController.php @@ -46,7 +46,7 @@ class BffElectionController extends BaseController * * @return \Illuminate\Http\Response */ - public function calculateResult(Request $request, Response $response) + public function calculateResult(Request $request) { if (!$request->has('tieBreaker')) { abort(400, "tieBreaker is a required parameter"); diff --git a/public/js/try.js b/public/js/try.js index b33c41d..5a4d626 100644 --- a/public/js/try.js +++ b/public/js/try.js @@ -1,24 +1,25 @@ -(function() { +(function(axios) { "use strict"; - document.querySelector("#tryForm").addEventListener('submit', function(event){ + + document.querySelector("#tryForm").addEventListener("submit", function(event){ event.preventDefault(); var form = event.target; var requestBody = new FormData(form); var toggleResultsVisibility = function(visible){ - var methodName = visible ? 'remove' : 'add'; - document.querySelector('#result').classList[methodName]('hidden'); + var methodName = visible ? "remove" : "add"; + document.querySelector("#result").classList[methodName]("hidden"); }; var displayResponse = function(text){ - document.querySelector('#resultText').innerHTML = text; + document.querySelector("#resultText").innerHTML = text; toggleResultsVisibility(true); }; toggleResultsVisibility(false); axios.post( - '/open/try', + "/open/try", requestBody, {transformResponse: undefined} ).then(function(response){ @@ -28,4 +29,4 @@ }); }); -})(); +}(axios)); From c2ed0ca107cdfbe4cecce64df3694cded5448e39 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Sat, 17 Nov 2018 15:33:18 -0600 Subject: [PATCH 11/14] Auto-sizing height of textareas on BFF Try page. Some minor markup changes. --- public/css/pivot.css | 6 ++++++ public/js/try.js | 34 +++++++++++++++++++++--------- resources/views/bff_form.blade.php | 12 +++++++---- 3 files changed, 38 insertions(+), 14 deletions(-) diff --git a/public/css/pivot.css b/public/css/pivot.css index 4ae3817..514e962 100644 --- a/public/css/pivot.css +++ b/public/css/pivot.css @@ -642,6 +642,12 @@ input[type=checkbox]:focus + .checkboxUI0, .block { display: block; } +/* +.tryBff textarea { + overflow-y: hidden; +} +*/ + @media print { body, div { height: auto; diff --git a/public/js/try.js b/public/js/try.js index 5a4d626..b6cf7d0 100644 --- a/public/js/try.js +++ b/public/js/try.js @@ -1,22 +1,36 @@ (function(axios) { "use strict"; - + + function resizeTextArea() { + this.style.height = "auto"; + this.style.height = (this.scrollHeight) + "px"; + } + + var textAreas = Array.prototype.slice.call(document.getElementsByTagName("textarea")); + textAreas.forEach(function(textArea){ + textArea.setAttribute("style", "height:" + (textArea.scrollHeight) + "px;overflow-y:hidden;"); + textArea.addEventListener("input", resizeTextArea, false); + }); + + var toggleResultsVisibility = function(visible){ + var methodName = visible ? "remove" : "add"; + document.querySelector("#result").classList[methodName]("hidden"); + }; + + var displayResponse = function(text){ + var element = document.querySelector("#resultText"); + element.innerHTML = text; + toggleResultsVisibility(true); + resizeTextArea.call(element); + }; + document.querySelector("#tryForm").addEventListener("submit", function(event){ event.preventDefault(); var form = event.target; var requestBody = new FormData(form); - var toggleResultsVisibility = function(visible){ - var methodName = visible ? "remove" : "add"; - document.querySelector("#result").classList[methodName]("hidden"); - }; - - var displayResponse = function(text){ - document.querySelector("#resultText").innerHTML = text; - toggleResultsVisibility(true); - }; toggleResultsVisibility(false); axios.post( "/open/try", diff --git a/resources/views/bff_form.blade.php b/resources/views/bff_form.blade.php index 793ab51..5a75490 100644 --- a/resources/views/bff_form.blade.php +++ b/resources/views/bff_form.blade.php @@ -1,12 +1,11 @@ @extends('layouts.pivot') @section('content') -
+

TRY IT!

-

This page lets you try out elections on your own without logging in. Since this page is for experts, ballots are entered in textual BFF format. +

This page lets you try out elections on your own without logging in. Since this page is for experts, ballots are entered in a textual format - Ballot File Format. Details on the Ballot File Format are here.

Want a more user-friendly experience? LOG IN

-

Don't have an account yet? REGISTER

Enter ballots, one per line.

@@ -36,7 +35,12 @@ class="w100"
@endsection From b223a669e5967f3a0a1d114e1d6baa70d3dc5986 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Sat, 17 Nov 2018 15:48:46 -0600 Subject: [PATCH 12/14] Styling tweak. --- public/css/pivot.css | 8 ++++---- resources/views/layouts/pivot.blade.php | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/public/css/pivot.css b/public/css/pivot.css index 514e962..e05dabb 100644 --- a/public/css/pivot.css +++ b/public/css/pivot.css @@ -270,6 +270,7 @@ a[href], padding: 20px; font-size: 30px; font-weight: 500; + text-align: center; } .clickable4, .mainheader, @@ -642,11 +643,10 @@ input[type=checkbox]:focus + .checkboxUI0, .block { display: block; } -/* -.tryBff textarea { - overflow-y: hidden; + +#statusbar { + width: 49%; } -*/ @media print { body, div { diff --git a/resources/views/layouts/pivot.blade.php b/resources/views/layouts/pivot.blade.php index 775c546..7417dbb 100644 --- a/resources/views/layouts/pivot.blade.php +++ b/resources/views/layouts/pivot.blade.php @@ -62,7 +62,7 @@
@if (!Auth::guest())
-
+
Hi {{ Auth::user()->name }}, welcome to Pivot!
{{ Auth::user()->name }}
@@ -74,7 +74,7 @@
@endif -
Pivot - a better way to decide on things
+
Pivot - a better way to decide
@yield('content') From 4556fa9bc63591390ec48643c8e7a8a2937947f8 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Sat, 17 Nov 2018 16:08:43 -0600 Subject: [PATCH 13/14] Updated redirect on login --- app/Http/Controllers/Auth/LoginController.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index d896bc6..d5ed0d0 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -25,7 +25,7 @@ class LoginController extends Controller * * @var string */ - protected $redirectTo = '/'; + protected $redirectTo = '/myElections'; // protected $redirectTo = '/profile'; /** From ee387c367a27bdfb41909a9dd71c271faaac9e61 Mon Sep 17 00:00:00 2001 From: Carl Schroedl Date: Sat, 17 Nov 2018 16:19:51 -0600 Subject: [PATCH 14/14] Improving post-login welcome page UX. --- app/Http/Controllers/Auth/LoginController.php | 2 +- public/css/pivot.css | 4 +++ resources/views/layouts/pivot.blade.php | 2 +- resources/views/welcome.blade.php | 28 ++++++++++++++++++- 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/app/Http/Controllers/Auth/LoginController.php b/app/Http/Controllers/Auth/LoginController.php index d5ed0d0..d896bc6 100644 --- a/app/Http/Controllers/Auth/LoginController.php +++ b/app/Http/Controllers/Auth/LoginController.php @@ -25,7 +25,7 @@ class LoginController extends Controller * * @var string */ - protected $redirectTo = '/myElections'; + protected $redirectTo = '/'; // protected $redirectTo = '/profile'; /** diff --git a/public/css/pivot.css b/public/css/pivot.css index e05dabb..e9d919e 100644 --- a/public/css/pivot.css +++ b/public/css/pivot.css @@ -648,6 +648,10 @@ input[type=checkbox]:focus + .checkboxUI0, width: 49%; } +.darkhoverbackground:hover { + background-color: #504a43; +} + @media print { body, div { height: auto; diff --git a/resources/views/layouts/pivot.blade.php b/resources/views/layouts/pivot.blade.php index 7417dbb..e46120c 100644 --- a/resources/views/layouts/pivot.blade.php +++ b/resources/views/layouts/pivot.blade.php @@ -42,7 +42,7 @@
-
Home
+
My Elections
diff --git a/resources/views/welcome.blade.php b/resources/views/welcome.blade.php index bf71e09..bf48237 100644 --- a/resources/views/welcome.blade.php +++ b/resources/views/welcome.blade.php @@ -9,7 +9,33 @@
- @endif +@else +
+
+ +
+ + + +
+
+
My Elections
+
+ +
+ +
+ + + + + +
+
+
Create Election
+
+ +@endif @endsection