diff --git a/composer.json b/composer.json index b04baaf..ce4209f 100644 --- a/composer.json +++ b/composer.json @@ -28,6 +28,6 @@ "phpspec/phpspec": "^3.2", "leanphp/phpspec-code-coverage": "^3.1", "satooshi/php-coveralls": "^1.0", - "vimeo/psalm": "^1.0" + "vimeo/psalm": "^3.2" } } diff --git a/composer.lock b/composer.lock index d8c0b70..3c63b95 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": "f5e0985c7ab4f19647041682aa468674", + "content-hash": "d5f6dfb91b07c814049c4382b96cce24", "packages": [ { "name": "prewk/result", - "version": "1.2.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/prewk/result.git", - "reference": "2f19406679300dbb47e6272f1236e5b5d6ead6fb" + "reference": "4f40ec2acd30a818ec7c8cf419b2abd318957959" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/prewk/result/zipball/2f19406679300dbb47e6272f1236e5b5d6ead6fb", - "reference": "2f19406679300dbb47e6272f1236e5b5d6ead6fb", + "url": "https://api.github.com/repos/prewk/result/zipball/4f40ec2acd30a818ec7c8cf419b2abd318957959", + "reference": "4f40ec2acd30a818ec7c8cf419b2abd318957959", "shasum": "" }, "require": { @@ -27,7 +27,8 @@ "require-dev": { "leanphp/phpspec-code-coverage": "^3.1", "phpspec/phpspec": "^3.2", - "satooshi/php-coveralls": "^1.0" + "satooshi/php-coveralls": "^1.0", + "vimeo/psalm": "^1.0" }, "type": "library", "autoload": { @@ -46,22 +47,157 @@ } ], "description": "Result object for PHP inspired by Rust", - "time": "2018-02-03T09:38:04+00:00" + "time": "2018-03-19T07:11:20+00:00" } ], "packages-dev": [ + { + "name": "amphp/amp", + "version": "v2.1.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/amp.git", + "reference": "7075ef7d74dbd32626bfd31c976b23055c3ade6a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/amp/zipball/7075ef7d74dbd32626bfd31c976b23055c3ade6a", + "reference": "7075ef7d74dbd32626bfd31c976b23055c3ade6a", + "shasum": "" + }, + "require": { + "php": ">=7" + }, + "require-dev": { + "amphp/phpunit-util": "^1", + "friendsofphp/php-cs-fixer": "^2.3", + "phpstan/phpstan": "^0.8.5", + "phpunit/phpunit": "^6.0.9", + "react/promise": "^2" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Amp\\": "lib" + }, + "files": [ + "lib/functions.php", + "lib/Internal/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bob Weinand", + "email": "bobwei9@hotmail.com" + }, + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Daniel Lowrey", + "email": "rdlowrey@php.net" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + } + ], + "description": "A non-blocking concurrency framework for PHP applications.", + "homepage": "http://amphp.org/amp", + "keywords": [ + "async", + "asynchronous", + "awaitable", + "concurrency", + "event", + "event-loop", + "future", + "non-blocking", + "promise" + ], + "time": "2018-12-11T10:31:37+00:00" + }, + { + "name": "amphp/byte-stream", + "version": "v1.5.1", + "source": { + "type": "git", + "url": "https://github.com/amphp/byte-stream.git", + "reference": "6bbfcb6f47e92577e739586ba0c87e867be70a23" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/amphp/byte-stream/zipball/6bbfcb6f47e92577e739586ba0c87e867be70a23", + "reference": "6bbfcb6f47e92577e739586ba0c87e867be70a23", + "shasum": "" + }, + "require": { + "amphp/amp": "^2" + }, + "require-dev": { + "amphp/php-cs-fixer-config": "dev-master", + "amphp/phpunit-util": "^1", + "friendsofphp/php-cs-fixer": "^2.3", + "infection/infection": "^0.9.3", + "phpunit/phpunit": "^6" + }, + "type": "library", + "autoload": { + "psr-4": { + "Amp\\ByteStream\\": "lib" + }, + "files": [ + "lib/functions.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Niklas Keller", + "email": "me@kelunik.com" + }, + { + "name": "Aaron Piotrowski", + "email": "aaron@trowski.com" + } + ], + "description": "A stream abstraction to make working with non-blocking I/O simple.", + "homepage": "http://amphp.org/byte-stream", + "keywords": [ + "amp", + "amphp", + "async", + "io", + "non-blocking", + "stream" + ], + "time": "2018-12-27T18:08:06+00:00" + }, { "name": "composer/xdebug-handler", - "version": "1.0.0", + "version": "1.3.2", "source": { "type": "git", "url": "https://github.com/composer/xdebug-handler.git", - "reference": "1852e549ad0d6f2910f89c27fec833dda1b25b4a" + "reference": "d17708133b6c276d6e42ef887a877866b909d892" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/1852e549ad0d6f2910f89c27fec833dda1b25b4a", - "reference": "1852e549ad0d6f2910f89c27fec833dda1b25b4a", + "url": "https://api.github.com/repos/composer/xdebug-handler/zipball/d17708133b6c276d6e42ef887a877866b909d892", + "reference": "d17708133b6c276d6e42ef887a877866b909d892", "shasum": "" }, "require": { @@ -92,7 +228,7 @@ "Xdebug", "performance" ], - "time": "2018-03-08T13:09:50+00:00" + "time": "2019-01-28T20:25:53+00:00" }, { "name": "doctrine/instantiator", @@ -148,6 +284,94 @@ ], "time": "2015-06-14T21:17:01+00:00" }, + { + "name": "felixfbecker/advanced-json-rpc", + "version": "v3.0.3", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git", + "reference": "241c470695366e7b83672be04ea0e64d8085a551" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/241c470695366e7b83672be04ea0e64d8085a551", + "reference": "241c470695366e7b83672be04ea0e64d8085a551", + "shasum": "" + }, + "require": { + "netresearch/jsonmapper": "^1.0", + "php": ">=7.0", + "phpdocumentor/reflection-docblock": "^4.0.0" + }, + "require-dev": { + "phpunit/phpunit": "^6.0.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "AdvancedJsonRpc\\": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "A more advanced JSONRPC implementation", + "time": "2018-09-10T08:58:41+00:00" + }, + { + "name": "felixfbecker/language-server-protocol", + "version": "v1.2.0", + "source": { + "type": "git", + "url": "https://github.com/felixfbecker/php-language-server-protocol.git", + "reference": "1bdd1bcc95428edf85ec04c7b558d0886c07280f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/1bdd1bcc95428edf85ec04c7b558d0886c07280f", + "reference": "1bdd1bcc95428edf85ec04c7b558d0886c07280f", + "shasum": "" + }, + "require": { + "php": "^7.0" + }, + "require-dev": { + "phpstan/phpstan": "*", + "phpunit/phpunit": "^6.3", + "squizlabs/php_codesniffer": "^3.1" + }, + "type": "library", + "autoload": { + "psr-4": { + "LanguageServerProtocol\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "ISC" + ], + "authors": [ + { + "name": "Felix Becker", + "email": "felix.b@outlook.com" + } + ], + "description": "PHP classes for the Language Server Protocol", + "keywords": [ + "language", + "microsoft", + "php", + "server" + ], + "time": "2018-09-25T11:42:25+00:00" + }, { "name": "guzzle/guzzle", "version": "v3.8.1", @@ -243,16 +467,16 @@ }, { "name": "leanphp/phpspec-code-coverage", - "version": "v3.1.0", + "version": "v3.1.1", "source": { "type": "git", "url": "https://github.com/leanphp/phpspec-code-coverage.git", - "reference": "2f66eb6fbca15761e6029ded9dbe3e277c7093d6" + "reference": "3591806df04b527673955acedb535a14e8f192d1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/leanphp/phpspec-code-coverage/zipball/2f66eb6fbca15761e6029ded9dbe3e277c7093d6", - "reference": "2f66eb6fbca15761e6029ded9dbe3e277c7093d6", + "url": "https://api.github.com/repos/leanphp/phpspec-code-coverage/zipball/3591806df04b527673955acedb535a14e8f192d1", + "reference": "3591806df04b527673955acedb535a14e8f192d1", "shasum": "" }, "require": { @@ -267,6 +491,11 @@ "ext-xdebug": "Install Xdebug to generate phpspec code coverage if you are not using phpdbg" }, "type": "library", + "extra": { + "branch-alias": { + "dev-v3": "3.2.x-dev" + } + }, "autoload": { "psr-4": { "LeanPHP\\PhpSpec\\CodeCoverage\\": "src/" @@ -303,20 +532,20 @@ "test", "tests" ], - "time": "2017-02-21T02:54:14+00:00" + "time": "2017-10-17T13:54:43+00:00" }, { "name": "muglug/package-versions-56", - "version": "1.2.3", + "version": "1.2.4", "source": { "type": "git", "url": "https://github.com/muglug/PackageVersions.git", - "reference": "39491a302ee6f2b96ef6d16b231aaf9ebc3f0779" + "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/muglug/PackageVersions/zipball/39491a302ee6f2b96ef6d16b231aaf9ebc3f0779", - "reference": "39491a302ee6f2b96ef6d16b231aaf9ebc3f0779", + "url": "https://api.github.com/repos/muglug/PackageVersions/zipball/a67bed26deaaf9269a348e53063bc8d4dcc60ffd", + "reference": "a67bed26deaaf9269a348e53063bc8d4dcc60ffd", "shasum": "" }, "require": { @@ -359,28 +588,70 @@ } ], "description": "A backport of ocramius/package-versions that supports php ^5.6. Composer plugin that provides efficient querying for installed package versions (no runtime IO)", - "time": "2018-01-01T14:49:53+00:00" + "time": "2018-03-26T03:22:13+00:00" + }, + { + "name": "netresearch/jsonmapper", + "version": "v1.4.0", + "source": { + "type": "git", + "url": "https://github.com/cweiske/jsonmapper.git", + "reference": "3868fe1128ce1169228acdb623359dca74db5ef3" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/3868fe1128ce1169228acdb623359dca74db5ef3", + "reference": "3868fe1128ce1169228acdb623359dca74db5ef3", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "phpunit/phpunit": "~4.8.35 || ~5.7 || ~6.4", + "squizlabs/php_codesniffer": "~1.5" + }, + "type": "library", + "autoload": { + "psr-0": { + "JsonMapper": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "OSL-3.0" + ], + "authors": [ + { + "name": "Christian Weiske", + "email": "cweiske@cweiske.de", + "homepage": "http://github.com/cweiske/jsonmapper/", + "role": "Developer" + } + ], + "description": "Map nested JSON structures onto PHP classes", + "time": "2017-11-28T21:30:01+00:00" }, { "name": "nikic/php-parser", - "version": "v3.1.5", + "version": "v4.2.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" + "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0" }, "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/5221f49a608808c1e4d436df32884cbc1b821ac0", + "reference": "5221f49a608808c1e4d436df32884cbc1b821ac0", "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" @@ -388,7 +659,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0-dev" + "dev-master": "4.2-dev" } }, "autoload": { @@ -410,7 +681,7 @@ "parser", "php" ], - "time": "2018-02-28T20:30:58+00:00" + "time": "2019-02-16T20:54:15+00:00" }, { "name": "openlss/lib-array2xml", @@ -514,16 +785,16 @@ }, { "name": "phpdocumentor/reflection-common", - "version": "1.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c" + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/144c307535e82c8fdcaacbcfc1d6d8eeb896687c", - "reference": "144c307535e82c8fdcaacbcfc1d6d8eeb896687c", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", + "reference": "21bdeb5f65d7ebf9f43b1b25d404f87deab5bfb6", "shasum": "" }, "require": { @@ -564,33 +835,39 @@ "reflection", "static analysis" ], - "time": "2015-12-27T11:43:31+00:00" + "time": "2017-09-11T18:02:19+00:00" }, { "name": "phpdocumentor/reflection-docblock", - "version": "3.1.1", + "version": "4.3.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e" + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/8331b5efe816ae05461b7ca1e721c01b46bafb3e", - "reference": "8331b5efe816ae05461b7ca1e721c01b46bafb3e", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", + "reference": "bdd9f737ebc2a01c06ea7ff4308ec6697db9b53c", "shasum": "" }, "require": { - "php": ">=5.5", - "phpdocumentor/reflection-common": "^1.0@dev", - "phpdocumentor/type-resolver": "^0.2.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.4", - "phpunit/phpunit": "^4.4" + "doctrine/instantiator": "~1.0.5", + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^6.4" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.x-dev" + } + }, "autoload": { "psr-4": { "phpDocumentor\\Reflection\\": [ @@ -609,24 +886,24 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30T07:12:33+00:00" + "time": "2019-04-30T17:48:53+00:00" }, { "name": "phpdocumentor/type-resolver", - "version": "0.2.1", + "version": "0.4.0", "source": { "type": "git", "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb" + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", - "reference": "e224fb2ea2fba6d3ad6fdaef91cd09a172155ccb", + "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/9c977708995954784726e25d0cd1dddf4e65b0f7", + "reference": "9c977708995954784726e25d0cd1dddf4e65b0f7", "shasum": "" }, "require": { - "php": ">=5.5", + "php": "^5.5 || ^7.0", "phpdocumentor/reflection-common": "^1.0" }, "require-dev": { @@ -656,7 +933,68 @@ "email": "me@mikevanriel.com" } ], - "time": "2016-11-25T06:54:22+00:00" + "time": "2017-07-14T14:27:02+00:00" + }, + { + "name": "phpmyadmin/sql-parser", + "version": "v4.3.1", + "source": { + "type": "git", + "url": "https://github.com/phpmyadmin/sql-parser.git", + "reference": "0eb16ef5e3acacbc792be336754e42d98791a33f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/0eb16ef5e3acacbc792be336754e42d98791a33f", + "reference": "0eb16ef5e3acacbc792be336754e42d98791a33f", + "shasum": "" + }, + "require": { + "php": ">=5.3.0", + "symfony/polyfill-mbstring": "^1.3" + }, + "conflict": { + "phpmyadmin/motranslator": "<3.0" + }, + "require-dev": { + "phpunit/php-code-coverage": "*", + "phpunit/phpunit": "~4.8 || ~5.7 || ~6.5", + "sami/sami": "^4.0" + }, + "suggest": { + "ext-mbstring": "For best performance", + "phpmyadmin/motranslator": "Translate messages to your favorite locale" + }, + "bin": [ + "bin/highlight-query", + "bin/lint-query" + ], + "type": "library", + "autoload": { + "psr-4": { + "PhpMyAdmin\\SqlParser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "The phpMyAdmin Team", + "email": "developers@phpmyadmin.net", + "homepage": "https://www.phpmyadmin.net/team/" + } + ], + "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", + "homepage": "https://github.com/phpmyadmin/sql-parser", + "keywords": [ + "analysis", + "lexer", + "parser", + "sql" + ], + "time": "2019-01-05T13:46:38+00:00" }, { "name": "phpspec/php-diff", @@ -698,16 +1036,16 @@ }, { "name": "phpspec/phpspec", - "version": "3.3.0", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/phpspec/phpspec.git", - "reference": "1c77d11878c4bd475bc66f0eaa2686df0fcfa30f" + "reference": "8e72ed3576f6e26baebb2c214a8dba344508e3bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/phpspec/zipball/1c77d11878c4bd475bc66f0eaa2686df0fcfa30f", - "reference": "1c77d11878c4bd475bc66f0eaa2686df0fcfa30f", + "url": "https://api.github.com/repos/phpspec/phpspec/zipball/8e72ed3576f6e26baebb2c214a8dba344508e3bd", + "reference": "8e72ed3576f6e26baebb2c214a8dba344508e3bd", "shasum": "" }, "require": { @@ -776,37 +1114,37 @@ "testing", "tests" ], - "time": "2017-04-27T12:40:39+00:00" + "time": "2017-12-06T09:12:11+00:00" }, { "name": "phpspec/prophecy", - "version": "v1.7.0", + "version": "1.8.0", "source": { "type": "git", "url": "https://github.com/phpspec/prophecy.git", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073" + "reference": "4ba436b55987b4bf311cb7c6ba82aa528aac0a06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/93d39f1f7f9326d746203c7c056f300f7f126073", - "reference": "93d39f1f7f9326d746203c7c056f300f7f126073", + "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", - "sebastian/comparator": "^1.1|^2.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.5|^3.2", - "phpunit/phpunit": "^4.8 || ^5.6.5" + "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.5 || ^7.1" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.6.x-dev" + "dev-master": "1.8.x-dev" } }, "autoload": { @@ -839,45 +1177,44 @@ "spy", "stub" ], - "time": "2017-03-02T20:05:34+00:00" + "time": "2018-08-05T17:53:17+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "5.2.1", + "version": "5.3.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "dc421f9ca5082a0c0cb04afb171c765f79add85b" + "reference": "c89677919c5dd6d3b3852f230a663118762218ac" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/dc421f9ca5082a0c0cb04afb171c765f79add85b", - "reference": "dc421f9ca5082a0c0cb04afb171c765f79add85b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/c89677919c5dd6d3b3852f230a663118762218ac", + "reference": "c89677919c5dd6d3b3852f230a663118762218ac", "shasum": "" }, "require": { "ext-dom": "*", "ext-xmlwriter": "*", "php": "^7.0", - "phpunit/php-file-iterator": "^1.3", - "phpunit/php-text-template": "^1.2", - "phpunit/php-token-stream": "^1.4.11 || ^2.0", - "sebastian/code-unit-reverse-lookup": "^1.0", + "phpunit/php-file-iterator": "^1.4.2", + "phpunit/php-text-template": "^1.2.1", + "phpunit/php-token-stream": "^2.0.1", + "sebastian/code-unit-reverse-lookup": "^1.0.1", "sebastian/environment": "^3.0", - "sebastian/version": "^2.0", + "sebastian/version": "^2.0.1", "theseer/tokenizer": "^1.1" }, "require-dev": { - "ext-xdebug": "^2.5", "phpunit/phpunit": "^6.0" }, "suggest": { - "ext-xdebug": "^2.5.3" + "ext-xdebug": "^2.5.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "5.2.x-dev" + "dev-master": "5.3.x-dev" } }, "autoload": { @@ -892,7 +1229,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -903,20 +1240,20 @@ "testing", "xunit" ], - "time": "2017-04-21T08:03:57+00:00" + "time": "2018-04-06T15:36:58+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.2", + "version": "1.4.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5" + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/3cc8f69b3028d0f96a9078e6295d86e9bf019be5", - "reference": "3cc8f69b3028d0f96a9078e6295d86e9bf019be5", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/730b01bc3e867237eaac355e06a36b85dd93a8b4", + "reference": "730b01bc3e867237eaac355e06a36b85dd93a8b4", "shasum": "" }, "require": { @@ -950,7 +1287,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03T07:40:28+00:00" + "time": "2017-11-27T13:52:08+00:00" }, { "name": "phpunit/php-text-template", @@ -995,29 +1332,29 @@ }, { "name": "phpunit/php-token-stream", - "version": "1.4.11", + "version": "2.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7" + "reference": "791198a2c6254db10131eecfe8c06670700904db" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/e03f8f67534427a787e21a385a67ec3ca6978ea7", - "reference": "e03f8f67534427a787e21a385a67ec3ca6978ea7", + "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/791198a2c6254db10131eecfe8c06670700904db", + "reference": "791198a2c6254db10131eecfe8c06670700904db", "shasum": "" }, "require": { "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^6.2.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1040,20 +1377,20 @@ "keywords": [ "tokenizer" ], - "time": "2017-02-27T10:12:30+00:00" + "time": "2017-11-27T05:48:46+00:00" }, { "name": "psr/log", - "version": "1.0.2", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d" + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", - "reference": "4ebe3a8bf773a19edfe0a84b6585ba3d401b724d", + "url": "https://api.github.com/repos/php-fig/log/zipball/6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", + "reference": "6c001f1daafa3a3ac1d8ff69ee4db8e799a654dd", "shasum": "" }, "require": { @@ -1087,32 +1424,35 @@ "psr", "psr-3" ], - "time": "2016-10-10T12:19:37+00:00" + "time": "2018-11-20T15:27:04+00:00" }, { "name": "satooshi/php-coveralls", - "version": "v1.0.1", + "version": "v1.1.0", "source": { "type": "git", - "url": "https://github.com/satooshi/php-coveralls.git", - "reference": "da51d304fe8622bf9a6da39a8446e7afd432115c" + "url": "https://github.com/php-coveralls/php-coveralls.git", + "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/da51d304fe8622bf9a6da39a8446e7afd432115c", - "reference": "da51d304fe8622bf9a6da39a8446e7afd432115c", + "url": "https://api.github.com/repos/php-coveralls/php-coveralls/zipball/37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad", + "reference": "37f8f83fe22224eb9d9c6d593cdeb33eedd2a9ad", "shasum": "" }, "require": { "ext-json": "*", "ext-simplexml": "*", - "guzzle/guzzle": "^2.8|^3.0", - "php": ">=5.3.3", + "guzzle/guzzle": "^2.8 || ^3.0", + "php": "^5.3.3 || ^7.0", "psr/log": "^1.0", - "symfony/config": "^2.1|^3.0", - "symfony/console": "^2.1|^3.0", - "symfony/stopwatch": "^2.0|^3.0", - "symfony/yaml": "^2.0|^3.0" + "symfony/config": "^2.1 || ^3.0 || ^4.0", + "symfony/console": "^2.1 || ^3.0 || ^4.0", + "symfony/stopwatch": "^2.0 || ^3.0 || ^4.0", + "symfony/yaml": "^2.0 || ^3.0 || ^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.4.3 || ^6.0" }, "suggest": { "symfony/http-kernel": "Allows Symfony integration" @@ -1138,14 +1478,15 @@ } ], "description": "PHP client library for Coveralls API", - "homepage": "https://github.com/satooshi/php-coveralls", + "homepage": "https://github.com/php-coveralls/php-coveralls", "keywords": [ "ci", "coverage", "github", "test" ], - "time": "2016-01-20T17:35:46+00:00" + "abandoned": "php-coveralls/php-coveralls", + "time": "2017-12-06T23:17:56+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", @@ -1194,30 +1535,30 @@ }, { "name": "sebastian/comparator", - "version": "2.0.0", + "version": "2.1.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "20f84f468cb67efee293246e6a09619b891f55f0" + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/20f84f468cb67efee293246e6a09619b891f55f0", - "reference": "20f84f468cb67efee293246e6a09619b891f55f0", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/34369daee48eafb2651bea869b4b15d75ccc35f9", + "reference": "34369daee48eafb2651bea869b4b15d75ccc35f9", "shasum": "" }, "require": { "php": "^7.0", - "sebastian/diff": "^1.2", - "sebastian/exporter": "^3.0" + "sebastian/diff": "^2.0 || ^3.0", + "sebastian/exporter": "^3.1" }, "require-dev": { - "phpunit/phpunit": "^6.0" + "phpunit/phpunit": "^6.4" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "2.1.x-dev" } }, "autoload": { @@ -1248,38 +1589,38 @@ } ], "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": "2017-03-03T06:26:08+00:00" + "time": "2018-02-01T13:46:46+00:00" }, { "name": "sebastian/diff", - "version": "1.4.1", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e" + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/13edfd8706462032c2f52b4b862974dd46b71c9e", - "reference": "13edfd8706462032c2f52b4b862974dd46b71c9e", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", + "reference": "347c1d8b49c5c3ee30c7040ea6fc446790e6bddd", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": "^7.0" }, "require-dev": { - "phpunit/phpunit": "~4.8" + "phpunit/phpunit": "^6.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -1306,20 +1647,20 @@ "keywords": [ "diff" ], - "time": "2015-12-08T07:14:41+00:00" + "time": "2017-08-03T08:09:46+00:00" }, { "name": "sebastian/environment", - "version": "3.0.2", + "version": "3.1.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "11e7710b7724d42c62249b0e9d3030240398949d" + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/11e7710b7724d42c62249b0e9d3030240398949d", - "reference": "11e7710b7724d42c62249b0e9d3030240398949d", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/cd0871b3975fb7fc44d11314fd1ee20925fce4f5", + "reference": "cd0871b3975fb7fc44d11314fd1ee20925fce4f5", "shasum": "" }, "require": { @@ -1331,7 +1672,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "3.1.x-dev" } }, "autoload": { @@ -1356,7 +1697,7 @@ "environment", "hhvm" ], - "time": "2017-04-21T14:40:32+00:00" + "time": "2017-07-01T08:51:00+00:00" }, { "name": "sebastian/exporter", @@ -1523,23 +1864,29 @@ }, { "name": "symfony/config", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "8444bde28e3c2a33e571e6f180c2d78bfdc4480d" + "reference": "54ee12b0dd60f294132cabae6f5da9573d2e5297" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/8444bde28e3c2a33e571e6f180c2d78bfdc4480d", - "reference": "8444bde28e3c2a33e571e6f180c2d78bfdc4480d", + "url": "https://api.github.com/repos/symfony/config/zipball/54ee12b0dd60f294132cabae6f5da9573d2e5297", + "reference": "54ee12b0dd60f294132cabae6f5da9573d2e5297", "shasum": "" }, "require": { "php": ">=5.5.9", "symfony/filesystem": "~2.8|~3.0" }, + "conflict": { + "symfony/dependency-injection": "<3.3", + "symfony/finder": "<3.3" + }, "require-dev": { + "symfony/dependency-injection": "~3.3", + "symfony/finder": "~3.3", "symfony/yaml": "~3.0" }, "suggest": { @@ -1548,7 +1895,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -1575,20 +1922,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2017-04-04T15:30:56+00:00" + "time": "2017-07-19T07:37:29+00:00" }, { "name": "symfony/console", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "c30243cc51f726812be3551316b109a2f5deaf8d" + "reference": "b0878233cb5c4391347e5495089c7af11b8e6201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c30243cc51f726812be3551316b109a2f5deaf8d", - "reference": "c30243cc51f726812be3551316b109a2f5deaf8d", + "url": "https://api.github.com/repos/symfony/console/zipball/b0878233cb5c4391347e5495089c7af11b8e6201", + "reference": "b0878233cb5c4391347e5495089c7af11b8e6201", "shasum": "" }, "require": { @@ -1596,10 +1943,16 @@ "symfony/debug": "~2.8|~3.0", "symfony/polyfill-mbstring": "~1.0" }, + "conflict": { + "symfony/dependency-injection": "<3.3" + }, "require-dev": { "psr/log": "~1.0", + "symfony/config": "~3.3", + "symfony/dependency-injection": "~3.3", "symfony/event-dispatcher": "~2.8|~3.0", "symfony/filesystem": "~2.8|~3.0", + "symfony/http-kernel": "~2.8|~3.0", "symfony/process": "~2.8|~3.0" }, "suggest": { @@ -1611,7 +1964,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -1638,20 +1991,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2017-04-04T14:33:42+00:00" + "time": "2017-07-29T21:27:59+00:00" }, { "name": "symfony/debug", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "56f613406446a4a0a031475cfd0a01751de22659" + "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/56f613406446a4a0a031475cfd0a01751de22659", - "reference": "56f613406446a4a0a031475cfd0a01751de22659", + "url": "https://api.github.com/repos/symfony/debug/zipball/7c13ae8ce1e2adbbd574fc39de7be498e1284e13", + "reference": "7c13ae8ce1e2adbbd574fc39de7be498e1284e13", "shasum": "" }, "require": { @@ -1662,13 +2015,12 @@ "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" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -1695,29 +2047,32 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2017-03-28T21:38:24+00:00" + "time": "2017-07-28T15:27:31+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "154bb1ef7b0e42ccc792bd53edbce18ed73440ca" + "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/154bb1ef7b0e42ccc792bd53edbce18ed73440ca", - "reference": "154bb1ef7b0e42ccc792bd53edbce18ed73440ca", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/67535f1e3fd662bdc68d7ba317c93eecd973617e", + "reference": "67535f1e3fd662bdc68d7ba317c93eecd973617e", "shasum": "" }, "require": { "php": ">=5.5.9" }, + "conflict": { + "symfony/dependency-injection": "<3.3" + }, "require-dev": { "psr/log": "~1.0", "symfony/config": "~2.8|~3.0", - "symfony/dependency-injection": "~2.8|~3.0", + "symfony/dependency-injection": "~3.3", "symfony/expression-language": "~2.8|~3.0", "symfony/stopwatch": "~2.8|~3.0" }, @@ -1728,7 +2083,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -1755,20 +2110,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2017-04-04T07:26:27+00:00" + "time": "2017-06-09T14:53:08+00:00" }, { "name": "symfony/filesystem", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "64421e6479c4a8e60d790fb666bd520992861b66" + "reference": "427987eb4eed764c3b6e38d52a0f87989e010676" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/64421e6479c4a8e60d790fb666bd520992861b66", - "reference": "64421e6479c4a8e60d790fb666bd520992861b66", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/427987eb4eed764c3b6e38d52a0f87989e010676", + "reference": "427987eb4eed764c3b6e38d52a0f87989e010676", "shasum": "" }, "require": { @@ -1777,7 +2132,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -1804,20 +2159,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2017-03-26T15:47:15+00:00" + "time": "2017-07-11T07:17:58+00:00" }, { "name": "symfony/finder", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "b20900ce5ea164cd9314af52725b0bb5a758217a" + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/b20900ce5ea164cd9314af52725b0bb5a758217a", - "reference": "b20900ce5ea164cd9314af52725b0bb5a758217a", + "url": "https://api.github.com/repos/symfony/finder/zipball/baea7f66d30854ad32988c11a09d7ffd485810c4", + "reference": "baea7f66d30854ad32988c11a09d7ffd485810c4", "shasum": "" }, "require": { @@ -1826,7 +2181,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -1853,20 +2208,78 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2017-03-20T09:32:19+00:00" + "time": "2017-06-01T21:01:25+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "82ebae02209c21113908c229e9883c419720738a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/82ebae02209c21113908c229e9883c419720738a", + "reference": "82ebae02209c21113908c229e9883c419720738a", + "shasum": "" + }, + "require": { + "php": ">=5.3.3" + }, + "suggest": { + "ext-ctype": "For best performance" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.11-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": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.3.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4" + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/e79d363049d1c2128f133a2667e4f4190904f7f4", - "reference": "e79d363049d1c2128f133a2667e4f4190904f7f4", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/fe5e94c604826c35a32fa832f35bd036b6799609", + "reference": "fe5e94c604826c35a32fa832f35bd036b6799609", "shasum": "" }, "require": { @@ -1878,7 +2291,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-master": "1.11-dev" } }, "autoload": { @@ -1912,20 +2325,20 @@ "portable", "shim" ], - "time": "2016-11-14T01:06:16+00:00" + "time": "2019-02-06T07:57:58+00:00" }, { "name": "symfony/process", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "57fdaa55827ae14d617550ebe71a820f0a5e2282" + "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/57fdaa55827ae14d617550ebe71a820f0a5e2282", - "reference": "57fdaa55827ae14d617550ebe71a820f0a5e2282", + "url": "https://api.github.com/repos/symfony/process/zipball/07432804942b9f6dd7b7377faf9920af5f95d70a", + "reference": "07432804942b9f6dd7b7377faf9920af5f95d70a", "shasum": "" }, "require": { @@ -1934,7 +2347,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -1961,20 +2374,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2017-03-27T18:07:02+00:00" + "time": "2017-07-13T13:05:09+00:00" }, { "name": "symfony/stopwatch", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "c5ee0f8650c84b4d36a5f76b3b504233feaabf75" + "reference": "602a15299dc01556013b07167d4f5d3a60e90d15" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/c5ee0f8650c84b4d36a5f76b3b504233feaabf75", - "reference": "c5ee0f8650c84b4d36a5f76b3b504233feaabf75", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/602a15299dc01556013b07167d4f5d3a60e90d15", + "reference": "602a15299dc01556013b07167d4f5d3a60e90d15", "shasum": "" }, "require": { @@ -1983,7 +2396,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -2010,20 +2423,20 @@ ], "description": "Symfony Stopwatch Component", "homepage": "https://symfony.com", - "time": "2017-02-18T17:28:00+00:00" + "time": "2017-04-12T14:14:56+00:00" }, { "name": "symfony/yaml", - "version": "v3.2.7", + "version": "v3.3.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "62b4cdb99d52cb1ff253c465eb1532a80cebb621" + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/62b4cdb99d52cb1ff253c465eb1532a80cebb621", - "reference": "62b4cdb99d52cb1ff253c465eb1532a80cebb621", + "url": "https://api.github.com/repos/symfony/yaml/zipball/ddc23324e6cfe066f3dd34a37ff494fa80b617ed", + "reference": "ddc23324e6cfe066f3dd34a37ff494fa80b617ed", "shasum": "" }, "require": { @@ -2038,7 +2451,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "3.2-dev" + "dev-master": "3.3-dev" } }, "autoload": { @@ -2065,20 +2478,20 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2017-03-20T09:45:15+00:00" + "time": "2017-07-23T12:43:26+00:00" }, { "name": "theseer/tokenizer", - "version": "1.1.0", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b" + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/cb2f008f3f05af2893a87208fe6a6c4985483f8b", - "reference": "cb2f008f3f05af2893a87208fe6a6c4985483f8b", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/1c42705be2b6c1de5904f8afacef5895cab44bf8", + "reference": "1c42705be2b6c1de5904f8afacef5895cab44bf8", "shasum": "" }, "require": { @@ -2105,46 +2518,68 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "time": "2017-04-07T12:08:54+00:00" + "time": "2019-04-04T09:56:43+00:00" }, { "name": "vimeo/psalm", - "version": "1.0.3", + "version": "3.2.11", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "d6e0708e888fae2ec9211703c5c3d9ee301f349a" + "reference": "111abf82daaf90f785b3a67ef847eb509b224d9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/d6e0708e888fae2ec9211703c5c3d9ee301f349a", - "reference": "d6e0708e888fae2ec9211703c5c3d9ee301f349a", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/111abf82daaf90f785b3a67ef847eb509b224d9b", + "reference": "111abf82daaf90f785b3a67ef847eb509b224d9b", "shasum": "" }, "require": { - "composer/xdebug-handler": "^1.0", - "muglug/package-versions-56": "1.2.3", - "nikic/php-parser": "^3.1.2", + "amphp/amp": "^2.1", + "amphp/byte-stream": "^1.5", + "composer/xdebug-handler": "^1.1", + "felixfbecker/advanced-json-rpc": "^3.0.3", + "felixfbecker/language-server-protocol": "^1.2", + "muglug/package-versions-56": "1.2.4", + "netresearch/jsonmapper": "^1.0", + "nikic/php-parser": "^4.0.2 || ^4.1", "openlss/lib-array2xml": "^0.0.10||^0.5.1", - "php": "^5.6 || ^7.0", - "php-cs-fixer/diff": "^1.2" + "php": "^7.0", + "php-cs-fixer/diff": "^1.2", + "phpmyadmin/sql-parser": "^4.0", + "symfony/console": "^3.3||^4.0", + "webmozart/glob": "^4.1", + "webmozart/path-util": "^2.3" + }, + "provide": { + "psalm/psalm": "self.version" }, "require-dev": { - "friendsofphp/php-cs-fixer": "^2.3|^2.4|^2.5|^2.6|^2.7|^2.8|^2.9", - "php-coveralls/php-coveralls": "^2.0", - "phpunit/phpunit": "^5.7.4", - "squizlabs/php_codesniffer": "^3.0" + "bamarni/composer-bin-plugin": "^1.2", + "phpunit/phpunit": "^6.0 || ^7.0", + "psalm/plugin-phpunit": "^0.5.5", + "squizlabs/php_codesniffer": "3.4.0" }, "suggest": { "ext-igbinary": "^2.0.5" }, "bin": [ "psalm", - "psalter" + "psalter", + "psalm-language-server", + "psalm-plugin" ], "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev", + "dev-2.x": "2.x-dev", + "dev-1.x": "1.x-dev" + } + }, "autoload": { "psr-4": { + "Psalm\\Plugin\\": "src/Psalm/Plugin", "Psalm\\": "src/Psalm" } }, @@ -2163,24 +2598,25 @@ "inspection", "php" ], - "time": "2018-03-15T21:32:03+00:00" + "time": "2019-05-08T18:26:52+00:00" }, { "name": "webmozart/assert", - "version": "1.2.0", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/webmozart/assert.git", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f" + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozart/assert/zipball/2db61e59ff05fe5126d152bd0655c9ea113e550f", - "reference": "2db61e59ff05fe5126d152bd0655c9ea113e550f", + "url": "https://api.github.com/repos/webmozart/assert/zipball/83e253c8e0be5b0257b881e1827274667c5c17a9", + "reference": "83e253c8e0be5b0257b881e1827274667c5c17a9", "shasum": "" }, "require": { - "php": "^5.3.3 || ^7.0" + "php": "^5.3.3 || ^7.0", + "symfony/polyfill-ctype": "^1.8" }, "require-dev": { "phpunit/phpunit": "^4.6", @@ -2213,7 +2649,100 @@ "check", "validate" ], - "time": "2016-11-23T20:04:58+00:00" + "time": "2018-12-25T11:19:39+00:00" + }, + { + "name": "webmozart/glob", + "version": "4.1.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/glob.git", + "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/glob/zipball/3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", + "reference": "3cbf63d4973cf9d780b93d2da8eec7e4a9e63bbe", + "shasum": "" + }, + "require": { + "php": "^5.3.3|^7.0", + "webmozart/path-util": "^2.2" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1", + "symfony/filesystem": "^2.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.1-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Glob\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A PHP implementation of Ant's glob.", + "time": "2015-12-29T11:14:33+00:00" + }, + { + "name": "webmozart/path-util", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/webmozart/path-util.git", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozart/path-util/zipball/d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "reference": "d939f7edc24c9a1bb9c0dee5cb05d8e859490725", + "shasum": "" + }, + "require": { + "php": ">=5.3.3", + "webmozart/assert": "~1.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.6", + "sebastian/version": "^1.0.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.3-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\PathUtil\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "A robust cross-platform utility for normalizing, comparing and modifying file paths.", + "time": "2015-12-17T08:42:14+00:00" } ], "aliases": [], diff --git a/helpers.php b/helpers.php index 88ba672..b75ee04 100644 --- a/helpers.php +++ b/helpers.php @@ -10,8 +10,13 @@ * Represent the existance of a value * * @codeCoverageIgnore + * + * @template T + * * @param mixed $value + * @psalm-param T $value * @return Prewk\Option\Some + * @psalm-return Prewk\Option\Some */ function some($value): Prewk\Option\Some { return new Prewk\Option\Some($value); diff --git a/psalm.xml b/psalm.xml index 1d5d77f..9f24e47 100644 --- a/psalm.xml +++ b/psalm.xml @@ -1,9 +1,16 @@ + + + + diff --git a/src/Option.php b/src/Option.php index 52d5b0d..e2d4831 100644 --- a/src/Option.php +++ b/src/Option.php @@ -40,19 +40,22 @@ abstract public function isNone(): bool; /** * Unwraps a result, yielding the content of a Some. * - * @throws the message if the value is a None. + * @template X as Exception + * * @param Exception $msg + * @psalm-param X&Exception $msg * @return mixed * @psalm-return T + * @throws Exception the message if the value is a None. */ abstract public function expect(Exception $msg); /** * Unwraps an option, yielding the content of a Some. * - * @throws if the value is a None. * @return mixed * @psalm-return T + * @throws OptionException if the value is a None. */ abstract public function unwrap(); @@ -60,8 +63,9 @@ abstract public function unwrap(); * Unwraps a result, yielding the content of a Some. Else, it returns optb. * * @param mixed $optb + * @psalm-param T $optb * @return mixed - * @psalm-return T|mixed + * @psalm-return T */ abstract public function unwrapOr($optb); @@ -69,52 +73,73 @@ abstract public function unwrapOr($optb); * Returns the contained value or computes it from a closure. * * @param Closure $op + * @psalm-param Closure(mixed...):T $op * @return mixed - * @psalm-return T|mixed + * @psalm-return T */ abstract public function unwrapOrElse(Closure $op); /** * Maps an Option by applying a function to a contained Some value, leaving a None value untouched. * + * @template U + * * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return Option + * @psalm-return Option */ abstract public function map(Closure $mapper): Option; /** * Applies a function to the contained value (if any), or returns a default (if not). * + * @template U + * * @param mixed $default + * @psalm-param U $default * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return mixed + * @psalm-return U */ abstract public function mapOr($default, Closure $mapper); /** * Applies a function to the contained value (if any), or computes a default (if not). * + * @template U + * * @param Closure $default + * @psalm-param Closure(mixed...):U $default * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return mixed + * @psalm-return U */ abstract public function mapOrElse(Closure $default, Closure $mapper); /** * Transforms the Option into a Result, mapping Some(v) to Ok(v) and None to Err(err). * + * @template E + * * @param mixed $err + * @psalm-param E $err * @return Result - * @psalm-return Result + * @psalm-return Result */ abstract public function okOr($err): Result; /** * Transforms the Option into a Result, mapping Some(v) to Ok(v) and None to Err(err()). * + * @template E + * * @param Closure $err + * @psalm-param Closure(mixed...):E $err * @return Result - * @psalm-return Result + * @psalm-return Result */ abstract public function okOrElse(Closure $err): Result; @@ -123,15 +148,19 @@ abstract public function okOrElse(Closure $err): Result; * The iterator yields one value if the result is Some, otherwise none. * * @return array - * @psalm-return array + * @psalm-return array */ abstract public function iter(): array; /** * Returns None if the option is None, otherwise returns optb. * + * @template U + * * @param Option $optb + * @psalm-param Option $optb * @return Option + * @psalm-return Option */ abstract public function and(Option $optb): Option; @@ -139,8 +168,12 @@ abstract public function and(Option $optb): Option; * Returns None if the option is None, otherwise calls op with the wrapped value and returns the result. * Some languages call this operation flatmap. * + * @template U + * * @param Closure $op + * @psalm-param Closure(T=,mixed...):Option $op * @return Option + * @psalm-return Option */ abstract public function andThen(Closure $op): Option; @@ -148,7 +181,9 @@ abstract public function andThen(Closure $op): Option; * Returns the option if it contains a value, otherwise returns optb. * * @param Option $optb + * @psalm-param Option $optb * @return Option + * @psalm-return Option */ abstract public function or(Option $optb): Option; @@ -156,23 +191,30 @@ abstract public function or(Option $optb): Option; * Returns the option if it contains a value, otherwise calls op and returns the result. * * @param Closure $op + * @psalm-param Closure(mixed...):Option $op * @return Option + * @psalm-return Option */ abstract public function orElse(Closure $op): Option; /** * The attached pass-through args will be unpacked into extra args into chained closures * - * @param array ...$args + * @param mixed ...$args * @return Option + * @psalm-return Option */ abstract public function with(...$args): Option; /** * Create a Some if T is something using isset(T), None otherwise * + * @template V + * * @param mixed $thing - * @return Option Option + * @psalm-param V|null $thing + * @return Option Option + * @psalm-return Option */ public static function fromNullable($thing): Option { @@ -194,8 +236,12 @@ public static function fromKey(array $coll, $key): Option /** * Create a Some if T is non-empty using empty(T), None otherwise * + * @template V + * * @param mixed $thing - * @return Option Option + * @psalm-param V|null $thing + * @return Option Option + * @psalm-return Option */ public static function fromEmptyable($thing): Option { @@ -205,9 +251,11 @@ public static function fromEmptyable($thing): Option /** * Iterates over T and creates a Some from the first item, returning None if T is empty * - * @param array|Iterable $iterable T + * @param array|Traversable $iterable T * @return Option Option * @throws OptionException + * + * @psalm-suppress DocblockTypeContradiction We cannot be completely sure, that in argument valid type */ public static function fromFirst($iterable): Option { diff --git a/src/Option/None.php b/src/Option/None.php index 8cc55af..fa350c4 100644 --- a/src/Option/None.php +++ b/src/Option/None.php @@ -63,10 +63,13 @@ public function isNone(): bool /** * Unwraps a result, yielding the content of a Some. * - * @throws Exception (the message) if the value is a None. + * @template X as Exception + * * @param Exception $msg - * @return mixed - * @psalm-return T + * @psalm-param X&Exception $msg + * @return void + * @psalm-return never-return + * @throws Exception the message if the value is a None. */ public function expect(Exception $msg) { @@ -76,9 +79,9 @@ public function expect(Exception $msg) /** * Unwraps an option, yielding the content of a Some. * + * @return void + * @psalm-return never-return * @throws OptionException if the value is a None. - * @return mixed - * @psalm-return T */ public function unwrap() { @@ -89,7 +92,9 @@ public function unwrap() * Unwraps a result, yielding the content of a Some. Else, it returns optb. * * @param mixed $optb + * @psalm-param T $optb * @return mixed + * @psalm-return T */ public function unwrapOr($optb) { @@ -100,7 +105,9 @@ public function unwrapOr($optb) * Returns the contained value or computes it from a closure. * * @param Closure $op + * @psalm-param Closure(mixed...):T $op * @return mixed + * @psalm-return T */ public function unwrapOrElse(Closure $op) { @@ -110,8 +117,12 @@ public function unwrapOrElse(Closure $op) /** * Maps an Option by applying a function to a contained Some value, leaving a None value untouched. * + * @template U + * * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return Option + * @psalm-return Option */ public function map(Closure $mapper): Option { @@ -121,9 +132,14 @@ public function map(Closure $mapper): Option /** * Applies a function to the contained value (if any), or returns a default (if not). * + * @template U + * * @param mixed $default + * @psalm-param U $default * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return mixed + * @psalm-return U */ public function mapOr($default, Closure $mapper) { @@ -133,9 +149,14 @@ public function mapOr($default, Closure $mapper) /** * Applies a function to the contained value (if any), or computes a default (if not). * + * @template U + * * @param Closure $default + * @psalm-param Closure(mixed...):U $default * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return mixed + * @psalm-return U */ public function mapOrElse(Closure $default, Closure $mapper) { @@ -147,7 +168,7 @@ public function mapOrElse(Closure $default, Closure $mapper) * The iterator yields one value if the result is Some, otherwise none. * * @return array - * @psalm-return array + * @psalm-return array */ public function iter(): array { @@ -157,8 +178,12 @@ public function iter(): array /** * Returns None if the option is None, otherwise returns optb. * + * @template U + * * @param Option $optb + * @psalm-param Option $optb * @return Option + * @psalm-return Option */ public function and(Option $optb): Option { @@ -169,8 +194,12 @@ public function and(Option $optb): Option * Returns None if the option is None, otherwise calls op with the wrapped value and returns the result. * Some languages call this operation flatmap. * + * @template U + * * @param Closure $op + * @psalm-param Closure(T=,mixed...):Option $op * @return Option + * @psalm-return Option */ public function andThen(Closure $op): Option { @@ -181,7 +210,9 @@ public function andThen(Closure $op): Option * Returns the option if it contains a value, otherwise returns optb. * * @param Option $optb + * @psalm-param Option $optb * @return Option + * @psalm-return Option */ public function or(Option $optb): Option { @@ -192,8 +223,14 @@ public function or(Option $optb): Option * Returns the option if it contains a value, otherwise calls op and returns the result. * * @param Closure $op + * @psalm-param Closure(mixed...):Option $op * @return Option + * @psalm-return Option + * * @throws OptionException on closure return type mismatch + * @psalm-assert !Closure():Option $op + * + * @psalm-suppress DocblockTypeContradiction We cannot be completely sure, that in argument valid callable */ public function orElse(Closure $op): Option { @@ -209,8 +246,12 @@ public function orElse(Closure $op): Option /** * Transforms the Option into a Result, mapping Some(v) to Ok(v) and None to Err(err). * + * @template E + * * @param mixed $err + * @psalm-param E $err * @return Result + * @psalm-return Result */ public function okOr($err): Result { @@ -220,8 +261,12 @@ public function okOr($err): Result /** * Transforms the Option into a Result, mapping Some(v) to Ok(v) and None to Err(err()). * + * @template E + * * @param Closure $err + * @psalm-param Closure(mixed...):E $err * @return Result + * @psalm-return Result */ public function okOrElse(Closure $err): Result { @@ -231,8 +276,9 @@ public function okOrElse(Closure $err): Result /** * The attached pass-through args will be unpacked into extra args into chained closures * - * @param array ...$args + * @param mixed ...$args * @return Option + * @psalm-return Option */ public function with(...$args): Option { diff --git a/src/Option/Some.php b/src/Option/Some.php index 9541f64..6ba0800 100644 --- a/src/Option/Some.php +++ b/src/Option/Some.php @@ -73,7 +73,6 @@ public function isNone(): bool /** * Unwraps a result, yielding the content of a Some. * - * @throws the message if the value is a None. * @param Exception $msg * @return mixed * @psalm-return T @@ -86,7 +85,6 @@ public function expect(Exception $msg) /** * Unwraps an option, yielding the content of a Some. * - * @throws if the value is a None. * @return mixed * @psalm-return T */ @@ -99,6 +97,7 @@ public function unwrap() * Unwraps a result, yielding the content of a Some. Else, it returns optb. * * @param mixed $optb + * @psalm-param T $optb * @return mixed * @psalm-return T */ @@ -111,6 +110,7 @@ public function unwrapOr($optb) * Returns the contained value or computes it from a closure. * * @param Closure $op + * @psalm-param Closure(mixed...):T $op * @return mixed * @psalm-return T */ @@ -122,8 +122,12 @@ public function unwrapOrElse(Closure $op) /** * Maps an Option by applying a function to a contained Some value, leaving a None value untouched. * + * @template U + * * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return Option + * @psalm-return Option */ public function map(Closure $mapper): Option { @@ -133,9 +137,14 @@ public function map(Closure $mapper): Option /** * Applies a function to the contained value (if any), or returns a default (if not). * + * @template U + * * @param mixed $default + * @psalm-param U $default * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return mixed + * @psalm-return U */ public function mapOr($default, Closure $mapper) { @@ -145,9 +154,14 @@ public function mapOr($default, Closure $mapper) /** * Applies a function to the contained value (if any), or computes a default (if not). * + * @template U + * * @param Closure $default + * @psalm-param Closure(mixed...):U $default * @param Closure $mapper + * @psalm-param Closure(T=,mixed...):U $mapper * @return mixed + * @psalm-return U */ public function mapOrElse(Closure $default, Closure $mapper) { @@ -159,7 +173,7 @@ public function mapOrElse(Closure $default, Closure $mapper) * The iterator yields one value if the result is Some, otherwise none. * * @return array - * @psalm-return array + * @psalm-return array */ public function iter(): array { @@ -169,8 +183,12 @@ public function iter(): array /** * Returns None if the option is None, otherwise returns optb. * + * @template U + * * @param Option $optb + * @psalm-param Option $optb * @return Option + * @psalm-return Option */ public function and(Option $optb): Option { @@ -181,9 +199,17 @@ public function and(Option $optb): Option * Returns None if the option is None, otherwise calls op with the wrapped value and returns the result. * Some languages call this operation flatmap. * + * @template U + * * @param Closure $op + * @psalm-param Closure(T=,mixed...):Option $op * @return Option + * @psalm-return Option + * * @throws OptionException on closure return type mismatch + * @psalm-assert !Closure(T=):Option $op + * + * @psalm-suppress DocblockTypeContradiction We cannot be completely sure, that in argument valid callable */ public function andThen(Closure $op): Option { @@ -200,7 +226,9 @@ public function andThen(Closure $op): Option * Returns the option if it contains a value, otherwise returns optb. * * @param Option $optb + * @psalm-param Option $optb * @return Option + * @psalm-return Option */ public function or(Option $optb): Option { @@ -211,7 +239,9 @@ public function or(Option $optb): Option * Returns the option if it contains a value, otherwise calls op and returns the result. * * @param Closure $op + * @psalm-param Closure(mixed...):Option $op * @return Option + * @psalm-return Option */ public function orElse(Closure $op): Option { @@ -221,8 +251,12 @@ public function orElse(Closure $op): Option /** * Transforms the Option into a Result, mapping Some(v) to Ok(v) and None to Err(err). * + * @template E + * * @param mixed $err + * @psalm-param E $err * @return Result + * @psalm-return Result */ public function okOr($err): Result { @@ -232,8 +266,12 @@ public function okOr($err): Result /** * Transforms the Option into a Result, mapping Some(v) to Ok(v) and None to Err(err()). * + * @template E + * * @param Closure $err + * @psalm-param Closure(mixed...):E $err * @return Result + * @psalm-return Result */ public function okOrElse(Closure $err): Result { @@ -243,8 +281,9 @@ public function okOrElse(Closure $err): Result /** * The attached pass-through args will be unpacked into extra args into chained closures * - * @param array ...$args + * @param mixed ...$args * @return Option + * @psalm-return Option */ public function with(...$args): Option {