diff --git a/composer.json b/composer.json index d0b6d2f..3cd3fda 100644 --- a/composer.json +++ b/composer.json @@ -15,15 +15,16 @@ } ], "require": { - "php": "^7.3 || ^8.0", - "psr/cache": "^1.0 || ^2.0 || ^3.0", + "php": "^8.0", + "psr/cache": "^2.0 || ^3.0", "league/oauth2-client": "^2.6", - "asad/oauth2-zoho": "^1.0" + "asad/oauth2-zoho": "^1.1" }, "require-dev": { "phpunit/phpunit": "^7.5 || ^8.5 || ^9.3", "vlucas/phpdotenv": "^4.1 || ^5.2", - "cache/array-adapter": "^1.0" + "cache/array-adapter": "^1.0", + "phpstan/phpstan": "^1.9" }, "autoload": { "psr-4": { @@ -33,6 +34,13 @@ "minimum-stability": "dev", "prefer-stable": true, "scripts": { + "analyse": "vendor/bin/phpstan analyse src tests --level=9", + "analyize": "@analyse", "test": "phpunit --coverage-text --coverage-clover cov.xml --whitelist src/" - } + }, + "config": { + "allow-plugins": { + "pestphp/pest-plugin": true + } + } } diff --git a/composer.lock b/composer.lock index 2c27e46..ffd714a 100644 --- a/composer.lock +++ b/composer.lock @@ -4,20 +4,20 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c3d2efff1eda881be6b03591b5c2ec55", + "content-hash": "4315c6e50a0ab6990540f00d8c9aecbf", "packages": [ { "name": "asad/oauth2-zoho", - "version": "1.0.0", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/asadku34/oauth2-zoho.git", - "reference": "1e5df51dffebc415f777393867f117afc860b5c8" + "reference": "7ba18024818482ed5a100cc6cd7d3d1a3e3b7a0e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/asadku34/oauth2-zoho/zipball/1e5df51dffebc415f777393867f117afc860b5c8", - "reference": "1e5df51dffebc415f777393867f117afc860b5c8", + "url": "https://api.github.com/repos/asadku34/oauth2-zoho/zipball/7ba18024818482ed5a100cc6cd7d3d1a3e3b7a0e", + "reference": "7ba18024818482ed5a100cc6cd7d3d1a3e3b7a0e", "shasum": "" }, "require": { @@ -57,26 +57,30 @@ "oauth", "oauth2" ], - "time": "2020-05-08T11:29:51+00:00" + "support": { + "issues": "https://github.com/asadku34/oauth2-zoho/issues", + "source": "https://github.com/asadku34/oauth2-zoho/tree/1.1.0" + }, + "time": "2021-03-07T01:55:46+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.4.3", + "version": "7.5.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "74a8602c6faec9ef74b7a9391ac82c5e65b1cdab" + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/74a8602c6faec9ef74b7a9391ac82c5e65b1cdab", - "reference": "74a8602c6faec9ef74b7a9391ac82c5e65b1cdab", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5", - "guzzlehttp/psr7": "^1.8.3 || ^2.1", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -85,10 +89,10 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", "php-http/client-integration-tests": "^3.0", - "phpunit/phpunit": "^8.5.5 || ^9.3.5", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -98,8 +102,12 @@ }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "7.4-dev" + "dev-master": "7.5-dev" } }, "autoload": { @@ -163,6 +171,10 @@ "rest", "web service" ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.5.0" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -177,20 +189,20 @@ "type": "tidelift" } ], - "time": "2022-05-25T13:24:33+00:00" + "time": "2022-08-28T15:39:27+00:00" }, { "name": "guzzlehttp/promises", - "version": "1.5.1", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da" + "reference": "b94b2807d85443f9719887892882d0329d1e2598" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/fe752aedc9fd8fcca3fe7ad05d419d32998a06da", - "reference": "fe752aedc9fd8fcca3fe7ad05d419d32998a06da", + "url": "https://api.github.com/repos/guzzle/promises/zipball/b94b2807d85443f9719887892882d0329d1e2598", + "reference": "b94b2807d85443f9719887892882d0329d1e2598", "shasum": "" }, "require": { @@ -243,6 +255,10 @@ "keywords": [ "promise" ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/1.5.2" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -257,20 +273,20 @@ "type": "tidelift" } ], - "time": "2021-10-22T20:56:57+00:00" + "time": "2022-08-28T14:55:35+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.2.1", + "version": "2.4.3", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2" + "reference": "67c26b443f348a51926030c83481b85718457d3d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/c94a94f120803a18554c1805ef2e539f8285f9a2", - "reference": "c94a94f120803a18554c1805ef2e539f8285f9a2", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/67c26b443f348a51926030c83481b85718457d3d", + "reference": "67c26b443f348a51926030c83481b85718457d3d", "shasum": "" }, "require": { @@ -284,17 +300,21 @@ "psr/http-message-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", + "bamarni/composer-bin-plugin": "^1.8.1", "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.8 || ^9.3.10" + "phpunit/phpunit": "^8.5.29 || ^9.5.23" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + }, "branch-alias": { - "dev-master": "2.2-dev" + "dev-master": "2.4-dev" } }, "autoload": { @@ -354,6 +374,10 @@ "uri", "url" ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.4.3" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -368,20 +392,20 @@ "type": "tidelift" } ], - "time": "2022-03-20T21:55:58+00:00" + "time": "2022-10-26T14:07:24+00:00" }, { "name": "league/oauth2-client", - "version": "2.6.0", + "version": "2.6.1", "source": { "type": "git", "url": "https://github.com/thephpleague/oauth2-client.git", - "reference": "badb01e62383430706433191b82506b6df24ad98" + "reference": "2334c249907190c132364f5dae0287ab8666aa19" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/badb01e62383430706433191b82506b6df24ad98", - "reference": "badb01e62383430706433191b82506b6df24ad98", + "url": "https://api.github.com/repos/thephpleague/oauth2-client/zipball/2334c249907190c132364f5dae0287ab8666aa19", + "reference": "2334c249907190c132364f5dae0287ab8666aa19", "shasum": "" }, "require": { @@ -390,9 +414,9 @@ "php": "^5.6 || ^7.0 || ^8.0" }, "require-dev": { - "mockery/mockery": "^1.3", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpunit/phpunit": "^5.7 || ^6.0 || ^9.3", + "mockery/mockery": "^1.3.5", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpunit/phpunit": "^5.7 || ^6.0 || ^9.5", "squizlabs/php_codesniffer": "^2.3 || ^3.0" }, "type": "library", @@ -434,7 +458,11 @@ "oauth2", "single sign on" ], - "time": "2020-10-28T02:03:40+00:00" + "support": { + "issues": "https://github.com/thephpleague/oauth2-client/issues", + "source": "https://github.com/thephpleague/oauth2-client/tree/2.6.1" + }, + "time": "2021-12-22T16:42:49+00:00" }, { "name": "paragonie/random_compat", @@ -479,24 +507,29 @@ "pseudorandom", "random" ], + "support": { + "email": "info@paragonie.com", + "issues": "https://github.com/paragonie/random_compat/issues", + "source": "https://github.com/paragonie/random_compat" + }, "time": "2020-10-15T08:29:30+00:00" }, { "name": "psr/cache", - "version": "1.0.1", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", + "reference": "213f9dbc5b9bfbc4f8db86d2838dc968752ce13b", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -516,7 +549,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -525,7 +558,10 @@ "psr", "psr-6" ], - "time": "2016-08-06T20:24:11+00:00" + "support": { + "source": "https://github.com/php-fig/cache/tree/2.0.0" + }, + "time": "2021-02-03T23:23:37+00:00" }, { "name": "psr/http-client", @@ -574,6 +610,9 @@ "psr", "psr-18" ], + "support": { + "source": "https://github.com/php-fig/http-client/tree/master" + }, "time": "2020-06-29T06:28:15+00:00" }, { @@ -626,6 +665,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-factory/tree/master" + }, "time": "2019-04-30T12:38:16+00:00" }, { @@ -676,6 +718,9 @@ "request", "response" ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/master" + }, "time": "2016-08-06T14:39:51+00:00" }, { @@ -716,29 +761,33 @@ } ], "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, "time": "2019-03-08T08:55:37+00:00" }, { "name": "symfony/deprecation-contracts", - "version": "v2.5.1", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", - "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/1ee04c65529dea5d8744774d474e7cbd2f1206d3", + "reference": "1ee04c65529dea5d8744774d474e7cbd2f1206d3", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=8.1" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.5-dev" + "dev-main": "3.3-dev" }, "thanks": { "name": "symfony/contracts", @@ -766,6 +815,9 @@ ], "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.2.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -780,34 +832,34 @@ "type": "tidelift" } ], - "time": "2022-01-02T09:53:40+00:00" + "time": "2022-11-25T10:21:52+00:00" } ], "packages-dev": [ { "name": "cache/adapter-common", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/php-cache/adapter-common.git", - "reference": "6b87c5cbdf03be42437b595dbe5de8e97cd1d497" + "reference": "8788309be72aa7be69b88cdc0687549c74a7d479" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-cache/adapter-common/zipball/6b87c5cbdf03be42437b595dbe5de8e97cd1d497", - "reference": "6b87c5cbdf03be42437b595dbe5de8e97cd1d497", + "url": "https://api.github.com/repos/php-cache/adapter-common/zipball/8788309be72aa7be69b88cdc0687549c74a7d479", + "reference": "8788309be72aa7be69b88cdc0687549c74a7d479", "shasum": "" }, "require": { "cache/tag-interop": "^1.0", - "php": "^5.6 || ^7.0 || ^8.0", - "psr/cache": "^1.0", - "psr/log": "^1.0", + "php": ">=7.4", + "psr/cache": "^1.0 || ^2.0", + "psr/log": "^1.0 || ^2.0 || ^3.0", "psr/simple-cache": "^1.0" }, "require-dev": { - "cache/integration-tests": "^0.16", - "phpunit/phpunit": "^5.7.21" + "cache/integration-tests": "^0.17", + "phpunit/phpunit": "^7.5.20 || ^9.5.10" }, "type": "library", "extra": { @@ -843,27 +895,30 @@ "psr-6", "tag" ], - "time": "2020-12-14T12:17:39+00:00" + "support": { + "source": "https://github.com/php-cache/adapter-common/tree/1.3.0" + }, + "time": "2022-01-15T15:47:19+00:00" }, { "name": "cache/array-adapter", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/php-cache/array-adapter.git", - "reference": "71e72a51b76ed2668642a35690a7df7178f00670" + "reference": "7658acf46b35a23b7be13e50a2792049e1c678c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-cache/array-adapter/zipball/71e72a51b76ed2668642a35690a7df7178f00670", - "reference": "71e72a51b76ed2668642a35690a7df7178f00670", + "url": "https://api.github.com/repos/php-cache/array-adapter/zipball/7658acf46b35a23b7be13e50a2792049e1c678c4", + "reference": "7658acf46b35a23b7be13e50a2792049e1c678c4", "shasum": "" }, "require": { "cache/adapter-common": "^1.0", "cache/hierarchical-cache": "^1.0", - "php": "^5.6 || ^7.0 || ^8.0", - "psr/cache": "^1.0", + "php": ">=7.4", + "psr/cache": "^1.0 || ^2.0", "psr/simple-cache": "^1.0" }, "provide": { @@ -871,8 +926,8 @@ "psr/simple-cache-implementation": "^1.0" }, "require-dev": { - "cache/integration-tests": "^0.16", - "phpunit/phpunit": "^5.7.21" + "cache/integration-tests": "^0.17", + "phpunit/phpunit": "^7.5.20 || ^9.5.10" }, "type": "library", "extra": { @@ -912,98 +967,32 @@ "psr-6", "tag" ], - "time": "2020-12-14T12:17:39+00:00" - }, - { - "name": "cache/filesystem-adapter", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/php-cache/filesystem-adapter.git", - "reference": "1501ca71502f45114844824209e6a41d87afb221" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-cache/filesystem-adapter/zipball/1501ca71502f45114844824209e6a41d87afb221", - "reference": "1501ca71502f45114844824209e6a41d87afb221", - "shasum": "" - }, - "require": { - "cache/adapter-common": "^1.0", - "league/flysystem": "^1.0", - "php": "^5.6 || ^7.0 || ^8.0", - "psr/cache": "^1.0", - "psr/simple-cache": "^1.0" - }, - "provide": { - "psr/cache-implementation": "^1.0", - "psr/simple-cache-implementation": "^1.0" - }, - "require-dev": { - "cache/integration-tests": "^0.16", - "phpunit/phpunit": "^5.7.21" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "Cache\\Adapter\\Filesystem\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] + "support": { + "source": "https://github.com/php-cache/array-adapter/tree/1.2.0" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Aaron Scherer", - "email": "aequasi@gmail.com", - "homepage": "https://github.com/aequasi" - }, - { - "name": "Tobias Nyholm", - "email": "tobias.nyholm@gmail.com", - "homepage": "https://github.com/nyholm" - } - ], - "description": "A PSR-6 cache implementation using filesystem. This implementation supports tags", - "homepage": "http://www.php-cache.com/en/latest/", - "keywords": [ - "cache", - "filesystem", - "psr-6", - "tag" - ], - "time": "2020-12-14T12:17:39+00:00" + "time": "2022-01-15T15:47:19+00:00" }, { "name": "cache/hierarchical-cache", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/php-cache/hierarchical-cache.git", - "reference": "ba3746c65461b17154fb855068403670fd7fa2d3" + "reference": "dedffd0a74f72c1db76e57ce29885836944e27f3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-cache/hierarchical-cache/zipball/ba3746c65461b17154fb855068403670fd7fa2d3", - "reference": "ba3746c65461b17154fb855068403670fd7fa2d3", + "url": "https://api.github.com/repos/php-cache/hierarchical-cache/zipball/dedffd0a74f72c1db76e57ce29885836944e27f3", + "reference": "dedffd0a74f72c1db76e57ce29885836944e27f3", "shasum": "" }, "require": { "cache/adapter-common": "^1.0", - "php": "^5.6 || ^7.0 || ^8.0", - "psr/cache": "^1.0" + "php": ">=7.4", + "psr/cache": "^1.0 || ^2.0" }, "require-dev": { - "phpunit/phpunit": "^5.7.21" + "phpunit/phpunit": "^7.5.20 || ^9.5.10" }, "type": "library", "extra": { @@ -1043,25 +1032,28 @@ "hierarchy", "psr-6" ], - "time": "2020-12-14T12:17:39+00:00" + "support": { + "source": "https://github.com/php-cache/hierarchical-cache/tree/1.2.0" + }, + "time": "2022-01-15T15:47:19+00:00" }, { "name": "cache/tag-interop", - "version": "1.0.1", + "version": "1.1.0", "source": { "type": "git", "url": "https://github.com/php-cache/tag-interop.git", - "reference": "909a5df87e698f1665724a9e84851c11c45fbfb9" + "reference": "b062b1d735357da50edf8387f7a8696f3027d328" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-cache/tag-interop/zipball/909a5df87e698f1665724a9e84851c11c45fbfb9", - "reference": "909a5df87e698f1665724a9e84851c11c45fbfb9", + "url": "https://api.github.com/repos/php-cache/tag-interop/zipball/b062b1d735357da50edf8387f7a8696f3027d328", + "reference": "b062b1d735357da50edf8387f7a8696f3027d328", "shasum": "" }, "require": { "php": "^5.5 || ^7.0 || ^8.0", - "psr/cache": "^1.0" + "psr/cache": "^1.0 || ^2.0" }, "type": "library", "extra": { @@ -1098,33 +1090,38 @@ "psr6", "tag" ], - "time": "2020-12-04T14:11:04+00:00" + "support": { + "issues": "https://github.com/php-cache/tag-interop/issues", + "source": "https://github.com/php-cache/tag-interop/tree/1.1.0" + }, + "time": "2021-12-31T10:03:23+00:00" }, { "name": "doctrine/instantiator", - "version": "1.4.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/d56bf6102915de5702778fe20f2de3b2fe570b5b", - "reference": "d56bf6102915de5702778fe20f2de3b2fe570b5b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^8.0", + "doctrine/coding-standard": "^11", "ext-pdo": "*", "ext-phar": "*", - "phpbench/phpbench": "^0.13 || 1.0.0-alpha2", - "phpstan/phpstan": "^0.12", - "phpstan/phpstan-phpunit": "^0.12", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -1149,6 +1146,10 @@ "constructor", "instantiate" ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, "funding": [ { "url": "https://www.doctrine-project.org/sponsorship.html", @@ -1163,35 +1164,30 @@ "type": "tidelift" } ], - "time": "2020-11-10T18:47:58+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "graham-campbell/result-type", - "version": "v1.0.1", + "version": "v1.1.0", "source": { "type": "git", "url": "https://github.com/GrahamCampbell/Result-Type.git", - "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb" + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/7e279d2cd5d7fbb156ce46daada972355cea27bb", - "reference": "7e279d2cd5d7fbb156ce46daada972355cea27bb", + "url": "https://api.github.com/repos/GrahamCampbell/Result-Type/zipball/a878d45c1914464426dc94da61c9e1d36ae262a8", + "reference": "a878d45c1914464426dc94da61c9e1d36ae262a8", "shasum": "" }, "require": { - "php": "^7.0|^8.0", - "phpoption/phpoption": "^1.7.3" + "php": "^7.2.5 || ^8.0", + "phpoption/phpoption": "^1.9" }, "require-dev": { - "phpunit/phpunit": "^6.5|^7.5|^8.5|^9.0" + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, "autoload": { "psr-4": { "GrahamCampbell\\ResultType\\": "src/" @@ -1204,7 +1200,8 @@ "authors": [ { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "An Implementation Of The Result Type", @@ -1215,6 +1212,10 @@ "Result-Type", "result" ], + "support": { + "issues": "https://github.com/GrahamCampbell/Result-Type/issues", + "source": "https://github.com/GrahamCampbell/Result-Type/tree/v1.1.0" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -1225,174 +1226,33 @@ "type": "tidelift" } ], - "time": "2020-04-13T13:17:36+00:00" - }, - { - "name": "league/flysystem", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/flysystem.git", - "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/flysystem/zipball/f3ad69181b8afed2c9edf7be5a2918144ff4ea32", - "reference": "f3ad69181b8afed2c9edf7be5a2918144ff4ea32", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "league/mime-type-detection": "^1.3", - "php": "^7.2.5 || ^8.0" - }, - "conflict": { - "league/flysystem-sftp": "<1.0.6" - }, - "require-dev": { - "phpspec/prophecy": "^1.11.1", - "phpunit/phpunit": "^8.5.8" - }, - "suggest": { - "ext-ftp": "Allows you to use FTP server storage", - "ext-openssl": "Allows you to use FTPS server storage", - "league/flysystem-aws-s3-v2": "Allows you to use S3 storage with AWS SDK v2", - "league/flysystem-aws-s3-v3": "Allows you to use S3 storage with AWS SDK v3", - "league/flysystem-azure": "Allows you to use Windows Azure Blob storage", - "league/flysystem-cached-adapter": "Flysystem adapter decorator for metadata caching", - "league/flysystem-eventable-filesystem": "Allows you to use EventableFilesystem", - "league/flysystem-rackspace": "Allows you to use Rackspace Cloud Files", - "league/flysystem-sftp": "Allows you to use SFTP server storage via phpseclib", - "league/flysystem-webdav": "Allows you to use WebDAV storage", - "league/flysystem-ziparchive": "Allows you to use ZipArchive adapter", - "spatie/flysystem-dropbox": "Allows you to use Dropbox storage", - "srmklive/flysystem-dropbox-v2": "Allows you to use Dropbox storage for PHP 5 applications" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1-dev" - } - }, - "autoload": { - "psr-4": { - "League\\Flysystem\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frenky.net" - } - ], - "description": "Filesystem abstraction: Many filesystems, one API.", - "keywords": [ - "Cloud Files", - "WebDAV", - "abstraction", - "aws", - "cloud", - "copy.com", - "dropbox", - "file systems", - "files", - "filesystem", - "filesystems", - "ftp", - "rackspace", - "remote", - "s3", - "sftp", - "storage" - ], - "funding": [ - { - "url": "https://offset.earth/frankdejonge", - "type": "other" - } - ], - "time": "2021-06-23T21:56:05+00:00" - }, - { - "name": "league/mime-type-detection", - "version": "1.7.0", - "source": { - "type": "git", - "url": "https://github.com/thephpleague/mime-type-detection.git", - "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/thephpleague/mime-type-detection/zipball/3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", - "reference": "3b9dff8aaf7323590c1d2e443db701eb1f9aa0d3", - "shasum": "" - }, - "require": { - "ext-fileinfo": "*", - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.18", - "phpstan/phpstan": "^0.12.68", - "phpunit/phpunit": "^8.5.8 || ^9.3" - }, - "type": "library", - "autoload": { - "psr-4": { - "League\\MimeTypeDetection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Frank de Jonge", - "email": "info@frankdejonge.nl" - } - ], - "description": "Mime-type detection for Flysystem", - "funding": [ - { - "url": "https://github.com/frankdejonge", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/league/flysystem", - "type": "tidelift" - } - ], - "time": "2021-01-18T20:58:21+00:00" + "time": "2022-07-30T15:56:11+00:00" }, { "name": "myclabs/deep-copy", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220" + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/776f831124e9c62e1a2c601ecc52e776d8bb7220", - "reference": "776f831124e9c62e1a2c601ecc52e776d8bb7220", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", + "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", "shasum": "" }, "require": { "php": "^7.1 || ^8.0" }, - "replace": { - "myclabs/deep-copy": "self.version" + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "doctrine/collections": "^1.0", - "doctrine/common": "^2.6", - "phpunit/phpunit": "^7.1" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", "autoload": { @@ -1415,26 +1275,30 @@ "object", "object graph" ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" + }, "funding": [ { "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", "type": "tidelift" } ], - "time": "2020-11-13T09:40:50+00:00" + "time": "2022-03-03T13:19:32+00:00" }, { "name": "nikic/php-parser", - "version": "v4.10.4", + "version": "v4.15.3", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e" + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/c6d052fc58cb876152f89f532b95a8d7907e7f0e", - "reference": "c6d052fc58cb876152f89f532b95a8d7907e7f0e", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/570e980a201d8ed0236b0a62ddf2c9cbb2034039", + "reference": "570e980a201d8ed0236b0a62ddf2c9cbb2034039", "shasum": "" }, "require": { @@ -1473,20 +1337,24 @@ "parser", "php" ], - "time": "2020-12-20T10:01:03+00:00" + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v4.15.3" + }, + "time": "2023-01-16T22:05:37+00:00" }, { "name": "phar-io/manifest", - "version": "2.0.1", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/phar-io/manifest.git", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133" + "reference": "97803eca37d319dfa7826cc2437fc020857acb53" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", - "reference": "85265efd3af7ba3ca4b2a2c34dbfc5788dd29133", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", + "reference": "97803eca37d319dfa7826cc2437fc020857acb53", "shasum": "" }, "require": { @@ -1529,20 +1397,24 @@ } ], "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "time": "2020-06-27T14:33:11+00:00" + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.3" + }, + "time": "2021-07-20T11:28:43+00:00" }, { "name": "phar-io/version", - "version": "3.0.4", + "version": "3.2.1", "source": { "type": "git", "url": "https://github.com/phar-io/version.git", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451" + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/e4782611070e50613683d2b9a57730e9a3ba5451", - "reference": "e4782611070e50613683d2b9a57730e9a3ba5451", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { @@ -1576,179 +1448,41 @@ } ], "description": "Library for handling version information and constraints", - "time": "2020-12-13T23:18:30+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.2.2", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/069a785b2141f5bcf49f3e353548dc1cce6df556", - "reference": "069a785b2141f5bcf49f3e353548dc1cce6df556", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2020-09-03T19:13:55+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.4.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "reference": "6a467b8989322d92aa1c8bf2bebcc6e5c2ba55c0", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "time": "2020-09-17T18:55:26+00:00" + "time": "2022-02-21T01:04:05+00:00" }, { "name": "phpoption/phpoption", - "version": "1.7.5", + "version": "1.9.0", "source": { "type": "git", "url": "https://github.com/schmittjoh/php-option.git", - "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525" + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/994ecccd8f3283ecf5ac33254543eb0ac946d525", - "reference": "994ecccd8f3283ecf5ac33254543eb0ac946d525", + "url": "https://api.github.com/repos/schmittjoh/php-option/zipball/dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", + "reference": "dc5ff11e274a90cc1c743f66c9ad700ce50db9ab", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0" + "php": "^7.2.5 || ^8.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.4.1", - "phpunit/phpunit": "^4.8.35 || ^5.7.27 || ^6.5.6 || ^7.0 || ^8.0 || ^9.0" + "bamarni/composer-bin-plugin": "^1.8", + "phpunit/phpunit": "^8.5.28 || ^9.5.21" }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "1.7-dev" + "dev-master": "1.9-dev" } }, "autoload": { @@ -1763,11 +1497,13 @@ "authors": [ { "name": "Johannes M. Schmitt", - "email": "schmittjoh@gmail.com" + "email": "schmittjoh@gmail.com", + "homepage": "https://github.com/schmittjoh" }, { "name": "Graham Campbell", - "email": "graham@alt-three.com" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" } ], "description": "Option Type for PHP", @@ -1777,6 +1513,10 @@ "php", "type" ], + "support": { + "issues": "https://github.com/schmittjoh/php-option/issues", + "source": "https://github.com/schmittjoh/php-option/tree/1.9.0" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -1787,90 +1527,86 @@ "type": "tidelift" } ], - "time": "2020-07-20T17:29:33+00:00" + "time": "2022-07-30T15:51:26+00:00" }, { - "name": "phpspec/prophecy", - "version": "1.12.2", + "name": "phpstan/phpstan", + "version": "1.9.14", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "245710e971a030f42e08f4912863805570f23d39" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/245710e971a030f42e08f4912863805570f23d39", - "reference": "245710e971a030f42e08f4912863805570f23d39", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e5fcc96289cf737304286a9b505fbed091f02e58", + "reference": "e5fcc96289cf737304286a9b505fbed091f02e58", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || ~8.0, <8.1", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" + "php": "^7.2|^8.0" }, - "require-dev": { - "phpspec/phpspec": "^6.0", - "phpunit/phpunit": "^8.0 || ^9.0" + "conflict": { + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.11.x-dev" - } - }, "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/phpstan/issues", + "source": "https://github.com/phpstan/phpstan/tree/1.9.14" + }, + "funding": [ + { + "url": "https://github.com/ondrejmirtes", + "type": "github" + }, { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" + "url": "https://github.com/phpstan", + "type": "github" }, { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" + "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", + "type": "tidelift" } ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "time": "2020-12-19T10:15:11+00:00" + "time": "2023-01-19T10:47:09+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "9.2.5", + "version": "9.2.24", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1" + "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/f3e026641cc91909d421802dd3ac7827ebfd97e1", - "reference": "f3e026641cc91909d421802dd3ac7827ebfd97e1", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2cf940ebc6355a9d430462811b5aaa308b174bed", + "reference": "2cf940ebc6355a9d430462811b5aaa308b174bed", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.10.2", + "nikic/php-parser": "^4.14", "php": ">=7.3", "phpunit/php-file-iterator": "^3.0.3", "phpunit/php-text-template": "^2.0.2", @@ -1917,26 +1653,30 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.24" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-11-28T06:44:49+00:00" + "time": "2023-01-26T08:26:55+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "3.0.5", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/aa4be8575f26070b100fccb67faabb28f21f66f8", - "reference": "aa4be8575f26070b100fccb67faabb28f21f66f8", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { @@ -1973,13 +1713,17 @@ "filesystem", "iterator" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-09-28T05:57:25+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", @@ -2032,6 +1776,10 @@ "keywords": [ "process" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2087,6 +1835,10 @@ "keywords": [ "template" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2142,6 +1894,10 @@ "keywords": [ "timer" ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2152,20 +1908,20 @@ }, { "name": "phpunit/phpunit", - "version": "9.5.2", + "version": "9.5.28", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4" + "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/f661659747f2f87f9e72095bb207bceb0f151cb4", - "reference": "f661659747f2f87f9e72095bb207bceb0f151cb4", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/954ca3113a03bf780d22f07bf055d883ee04b65e", + "reference": "954ca3113a03bf780d22f07bf055d883ee04b65e", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.3.1", + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -2173,31 +1929,26 @@ "ext-xml": "*", "ext-xmlwriter": "*", "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.1", + "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.3", + "phpunit/php-code-coverage": "^9.2.13", "phpunit/php-file-iterator": "^3.0.5", "phpunit/php-invoker": "^3.1.1", "phpunit/php-text-template": "^2.0.3", "phpunit/php-timer": "^5.0.2", "sebastian/cli-parser": "^1.0.1", "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", + "sebastian/comparator": "^4.0.8", "sebastian/diff": "^4.0.3", "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", + "sebastian/exporter": "^4.0.5", "sebastian/global-state": "^5.0.1", "sebastian/object-enumerator": "^4.0.3", "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^2.3", + "sebastian/type": "^3.2", "sebastian/version": "^3.0.2" }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, "suggest": { "ext-soap": "*", "ext-xdebug": "*" @@ -2237,44 +1988,52 @@ "testing", "xunit" ], + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.28" + }, "funding": [ { - "url": "https://phpunit.de/donate.html", + "url": "https://phpunit.de/sponsors.html", "type": "custom" }, { "url": "https://github.com/sebastianbergmann", "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" } ], - "time": "2021-02-02T14:45:58+00:00" + "time": "2023-01-14T12:32:24+00:00" }, { "name": "psr/log", - "version": "1.1.3", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc" + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/0f73288fd15629204f9d42b7055f72dacbe811fc", - "reference": "0f73288fd15629204f9d42b7055f72dacbe811fc", + "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", + "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-master": "3.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "Psr/Log/" + "Psr\\Log\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2284,7 +2043,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for logging libraries", @@ -2294,7 +2053,10 @@ "psr", "psr-3" ], - "time": "2020-03-23T09:12:05+00:00" + "support": { + "source": "https://github.com/php-fig/log/tree/3.0.0" + }, + "time": "2021-07-14T16:46:02+00:00" }, { "name": "psr/simple-cache", @@ -2342,6 +2104,9 @@ "psr-16", "simple-cache" ], + "support": { + "source": "https://github.com/php-fig/simple-cache/tree/master" + }, "time": "2017-10-23T01:57:42+00:00" }, { @@ -2388,6 +2153,10 @@ ], "description": "Library for parsing CLI options", "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2440,6 +2209,10 @@ ], "description": "Collection of value objects that represent the PHP code units", "homepage": "https://github.com/sebastianbergmann/code-unit", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit/issues", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2491,6 +2264,10 @@ ], "description": "Looks up which function or method a line of code belongs to", "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", + "support": { + "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2501,16 +2278,16 @@ }, { "name": "sebastian/comparator", - "version": "4.0.6", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { @@ -2561,13 +2338,17 @@ "compare", "equality" ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-10-26T15:49:45+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", @@ -2614,6 +2395,10 @@ ], "description": "Library for calculating the complexity of PHP code units", "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2676,6 +2461,10 @@ "unidiff", "unified diff" ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2686,16 +2475,16 @@ }, { "name": "sebastian/environment", - "version": "5.1.3", + "version": "5.1.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/1b5dff7bb151a4db11d49d90e5408e4e938270f7", + "reference": "1b5dff7bb151a4db11d49d90e5408e4e938270f7", "shasum": "" }, "require": { @@ -2735,26 +2524,30 @@ "environment", "hhvm" ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-09-28T05:52:38+00:00" + "time": "2022-04-03T09:37:03+00:00" }, { "name": "sebastian/exporter", - "version": "4.0.3", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65" + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/d89cc98761b8cb5a1a235a6b703ae50d34080e65", - "reference": "d89cc98761b8cb5a1a235a6b703ae50d34080e65", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", + "reference": "ac230ed27f0f98f597c8a2b6eb7ac563af5e5b9d", "shasum": "" }, "require": { @@ -2803,31 +2596,35 @@ } ], "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "homepage": "https://www.github.com/sebastianbergmann/exporter", "keywords": [ "export", "exporter" ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.5" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-09-28T05:24:23+00:00" + "time": "2022-09-14T06:03:37+00:00" }, { "name": "sebastian/global-state", - "version": "5.0.2", + "version": "5.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455" + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/a90ccbddffa067b51f574dea6eb25d5680839455", - "reference": "a90ccbddffa067b51f574dea6eb25d5680839455", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", + "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", "shasum": "" }, "require": { @@ -2868,13 +2665,17 @@ "keywords": [ "global state" ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-10-26T15:55:19+00:00" + "time": "2022-02-14T08:28:10+00:00" }, { "name": "sebastian/lines-of-code", @@ -2921,6 +2722,10 @@ ], "description": "Library for counting the lines of code in PHP source code", "homepage": "https://github.com/sebastianbergmann/lines-of-code", + "support": { + "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -2974,6 +2779,10 @@ ], "description": "Traverses array structures and object graphs to enumerate all referenced objects", "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -3025,6 +2834,10 @@ ], "description": "Allows reflection of object attributes, including inherited and non-public ones", "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -3084,6 +2897,10 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -3135,6 +2952,10 @@ ], "description": "Provides a list of PHP built-in functions that operate on resources", "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -3145,28 +2966,28 @@ }, { "name": "sebastian/type", - "version": "2.3.1", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/type.git", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2" + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/81cd61ab7bbf2de744aba0ea61fae32f721df3d2", - "reference": "81cd61ab7bbf2de744aba0ea61fae32f721df3d2", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", + "reference": "fb3fe09c5f0bae6bc27ef3ce933a1e0ed9464b6e", "shasum": "" }, "require": { "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^9.3" + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.3-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3187,13 +3008,17 @@ ], "description": "Collection of value objects that represent the types of the PHP type system", "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.0" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", "type": "github" } ], - "time": "2020-10-26T13:18:59+00:00" + "time": "2022-09-12T14:47:03+00:00" }, { "name": "sebastian/version", @@ -3236,6 +3061,10 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, "funding": [ { "url": "https://github.com/sebastianbergmann", @@ -3246,28 +3075,31 @@ }, { "name": "symfony/polyfill-ctype", - "version": "v1.22.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e" + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/c6c942b1ac76c82448322025e084cadc56048b4e", - "reference": "c6c942b1ac76c82448322025e084cadc56048b4e", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/5bbc823adecdae860bb64756d639ecfec17b050a", + "reference": "5bbc823adecdae860bb64756d639ecfec17b050a", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-ctype": "*" + }, "suggest": { "ext-ctype": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3304,6 +3136,9 @@ "polyfill", "portable" ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.27.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3318,32 +3153,35 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.22.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13" + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", - "reference": "f377a3dd1fde44d37b9831d68dc8dea3ffd28e13", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/8ad114f6b39e2c98a8b0e3bd907732c207c2b534", + "reference": "8ad114f6b39e2c98a8b0e3bd907732c207c2b534", "shasum": "" }, "require": { "php": ">=7.1" }, + "provide": { + "ext-mbstring": "*" + }, "suggest": { "ext-mbstring": "For best performance" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3381,6 +3219,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.27.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3395,20 +3236,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.22.0", + "version": "v1.27.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91" + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/dc3063ba22c2a1fd2f45ed856374d79114998f91", - "reference": "dc3063ba22c2a1fd2f45ed856374d79114998f91", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", + "reference": "7a6ff3f1959bb01aefccb463a0f2cd3d3d2fd936", "shasum": "" }, "require": { @@ -3417,7 +3258,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "1.22-dev" + "dev-main": "1.27-dev" }, "thanks": { "name": "symfony/polyfill", @@ -3461,6 +3302,9 @@ "portable", "shim" ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.27.0" + }, "funding": [ { "url": "https://symfony.com/sponsor", @@ -3475,20 +3319,20 @@ "type": "tidelift" } ], - "time": "2021-01-07T16:49:33+00:00" + "time": "2022-11-03T14:55:06+00:00" }, { "name": "theseer/tokenizer", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/theseer/tokenizer.git", - "reference": "75a63c33a8577608444246075ea0af0d052e452a" + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/75a63c33a8577608444246075ea0af0d052e452a", - "reference": "75a63c33a8577608444246075ea0af0d052e452a", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", + "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", "shasum": "" }, "require": { @@ -3515,49 +3359,57 @@ } ], "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.1" + }, "funding": [ { "url": "https://github.com/theseer", "type": "github" } ], - "time": "2020-07-12T23:59:07+00:00" + "time": "2021-07-28T10:34:58+00:00" }, { "name": "vlucas/phpdotenv", - "version": "v5.3.0", + "version": "v5.5.0", "source": { "type": "git", "url": "https://github.com/vlucas/phpdotenv.git", - "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56" + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", - "reference": "b3eac5c7ac896e52deab4a99068e3f4ab12d9e56", + "url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", + "reference": "1a7ea2afc49c3ee6d87061f5a233e3a035d0eae7", "shasum": "" }, "require": { "ext-pcre": "*", - "graham-campbell/result-type": "^1.0.1", + "graham-campbell/result-type": "^1.0.2", "php": "^7.1.3 || ^8.0", - "phpoption/phpoption": "^1.7.4", - "symfony/polyfill-ctype": "^1.17", - "symfony/polyfill-mbstring": "^1.17", - "symfony/polyfill-php80": "^1.17" + "phpoption/phpoption": "^1.8", + "symfony/polyfill-ctype": "^1.23", + "symfony/polyfill-mbstring": "^1.23.1", + "symfony/polyfill-php80": "^1.23.1" }, "require-dev": { "bamarni/composer-bin-plugin": "^1.4.1", "ext-filter": "*", - "phpunit/phpunit": "^7.5.20 || ^8.5.14 || ^9.5.1" + "phpunit/phpunit": "^7.5.20 || ^8.5.30 || ^9.5.25" }, "suggest": { "ext-filter": "Required to use the boolean validator." }, "type": "library", "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": true + }, "branch-alias": { - "dev-master": "5.3-dev" + "dev-master": "5.5-dev" } }, "autoload": { @@ -3572,13 +3424,13 @@ "authors": [ { "name": "Graham Campbell", - "email": "graham@alt-three.com", - "homepage": "https://gjcampbell.co.uk/" + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" }, { "name": "Vance Lucas", "email": "vance@vancelucas.com", - "homepage": "https://vancelucas.com/" + "homepage": "https://github.com/vlucas" } ], "description": "Loads environment variables from `.env` to `getenv()`, `$_ENV` and `$_SERVER` automagically.", @@ -3587,6 +3439,10 @@ "env", "environment" ], + "support": { + "issues": "https://github.com/vlucas/phpdotenv/issues", + "source": "https://github.com/vlucas/phpdotenv/tree/v5.5.0" + }, "funding": [ { "url": "https://github.com/GrahamCampbell", @@ -3597,56 +3453,7 @@ "type": "tidelift" } ], - "time": "2021-01-20T15:23:13+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.9.1", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/bafc69caeb4d49c39fd0779086c03a3738cbb389", - "reference": "bafc69caeb4d49c39fd0779086c03a3738cbb389", - "shasum": "" - }, - "require": { - "php": "^5.3.3 || ^7.0 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<3.9.1" - }, - "require-dev": { - "phpunit/phpunit": "^4.8.36 || ^7.5.13" - }, - "type": "library", - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "time": "2020-07-08T17:02:28+00:00" + "time": "2022-10-16T01:01:54+00:00" } ], "aliases": [], @@ -3655,8 +3462,8 @@ "prefer-stable": true, "prefer-lowest": false, "platform": { - "php": "^7.3 || ^8.0" + "php": "^8.0" }, "platform-dev": [], - "plugin-api-version": "1.1.0" + "plugin-api-version": "2.3.0" } diff --git a/src/Enums/Mode.php b/src/Enums/Mode.php new file mode 100644 index 0000000..e44a822 --- /dev/null +++ b/src/Enums/Mode.php @@ -0,0 +1,8 @@ + */ - protected $scopes = ['AaaServer.profile.READ']; - /** @var bool */ - protected $offlineMode = true; - /** @var bool */ - protected $prompt = true; - /** @var string */ - protected $state = 'test'; - /** @var string */ - protected $clientSecret; - /** @var string */ - protected $clientId; - /** @var null|ZohoAccessToken */ - protected $accessToken; - /** @var Cache\CacheItemPoolInterface|null */ - protected $cache; - /** @var AbstractProvider */ - protected $provider; - /** @var string */ - protected $cachePrefix = 'zoho_crm_'; - /** @var string|null */ - protected $refreshToken; - - public function __construct(string $clientId, string $clientSecret, string $region = Region::US, string $redirectUri = '') - { - $this->clientId = $clientId; - $this->clientSecret = $clientSecret; - $this->region = $region; - $this->redirectUri = $redirectUri; + protected ?string $grantCode = null; + protected string $state; + protected ?ZohoAccessToken $accessToken = null; + protected ?Cache\CacheItemPoolInterface $cache = null; + protected Zoho $provider; + protected string $cachePrefix = 'zoho_crm_'; + protected ?string $refreshToken = null; + /** + * @param string $clientId + * @param string $clientSecret + * @param string $region + * @param string|null $redirectUri + * @param string[] $scopes + * @param bool $offlineMode + * @param bool $prompt + */ + public function __construct( + protected string $clientId, + protected string $clientSecret, + protected string $region = Region::US, + protected ?string $redirectUri = '', + protected array $scopes = ['AaaServer.profile.READ'], + protected bool $offlineMode = true, + protected bool $prompt = true, + ) + { + $this->state = uniqid('state_'); $this->createProvider(); } + /** + * @param string[] $additionalScopes + * @return string + */ public function getAuthorizationUrl(array $additionalScopes = []): string { $scopes = array_unique(array_merge($this->scopes, $additionalScopes)); - $options = [ - 'scope' => $scopes, - 'access_type' => $this->offlineMode ? 'offline' : 'online', + 'scope' => $scopes, + 'access_type' => $this->offlineMode ? Mode::OFFLINE : Mode::ONLINE, ]; - if($this->prompt){ + if ($this->prompt) { $options['prompt'] = 'consent'; } $url = $this->provider->getAuthorizationUrl($options); - $this->state = $this->provider->getState(); return $url; } - /** - * Get the oAuth2 state variable for security checks - * @return string - */ public function getState(): string { return $this->state; } - /** - * Parse Grant Token from URL - * - * @param UriInterface $uri - * @return string|null - */ public static function parseGrantTokenFromUrl(UriInterface $uri): ?string { parse_str($uri->getQuery(), $output); - if (isset($output['code'])) { - return $output['code']; + $code = $output['code'] ?? null; + + if (is_array($code)) { + $code = implode("", $code); } - return null; + return $code; } - /** - * Get the Zoho Region - * - * @return string - */ public function getRegion(): string { return $this->region; } - /** - * Set the Zoho Region - * - * @param string $region - * @return self - */ - public function setRegion(string $region): self + public function setRegion(string $region): static { $this->region = $region; $this->createProvider(); @@ -127,13 +104,7 @@ public function setRegion(string $region): self return $this; } - /** - * Set the Grant Code - * - * @param string $grantCode - * @return self - */ - public function setGrantCode(string $grantCode): self + public function setGrantCode(string $grantCode): static { $this->grantCode = $grantCode; @@ -141,57 +112,34 @@ public function setGrantCode(string $grantCode): self } /** - * Set the Scopes - * - * @param array $scopes - * @return self + * @param string[] $scopes + * @return $this */ - public function setScopes(array $scopes): self + public function setScopes(array $scopes): static { $this->scopes = $scopes; return $this; } - /** - * Set Offline Mode - * - * @return self - */ - public function onlineMode(): self + public function onlineMode(): static { $this->offlineMode = false; return $this; } - /** - * Check if is offline - * - * @return bool - */ public function isOffline(): bool { return $this->offlineMode; } - /** - * Check is is online - * - * @return bool - */ public function isOnline(): bool { - return ! $this->offlineMode; + return !$this->offlineMode; } - /** - * Set the redirect uri - * - * @param string $redirectUri - * @return self - */ - public function setRedirectUri(string $redirectUri): self + public function setRedirectUri(string $redirectUri): static { $this->redirectUri = $redirectUri; $this->createProvider(); @@ -199,26 +147,14 @@ public function setRedirectUri(string $redirectUri): self return $this; } - /** - * Set the cache pool to use - * - * @param Cache\CacheItemPoolInterface $cacheItemPool - * @return self - */ - public function useCache(Cache\CacheItemPoolInterface $cacheItemPool): self + public function useCache(Cache\CacheItemPoolInterface $cacheItemPool, string $cachePrefix = 'zoho_crm_'): static { $this->cache = $cacheItemPool; - return $this; + return $this->setCachePrefix($cachePrefix); } - /** - * Set a different cache prefix - * - * @param string $cachePrefix - * @return $this - */ - public function setCachePrefix(string $cachePrefix): self + public function setCachePrefix(string $cachePrefix): static { $this->cachePrefix = $cachePrefix; @@ -226,10 +162,6 @@ public function setCachePrefix(string $cachePrefix): self } /** - * Get Access Token as a string - * - * @return string - * * @throws AccessDeniedException * @throws AccessTokenNotSet * @throws IdentityProviderException @@ -241,47 +173,53 @@ public function getAccessToken(): string } /** - * Get Access Token Object - * - * @return ZohoAccessToken - * * @throws AccessDeniedException * @throws AccessTokenNotSet * @throws IdentityProviderException * @throws RefreshTokenNotSet */ - public function getAccessTokenObject() + public function getAccessTokenObject(): ZohoAccessToken { - if ($this->hasAccessToken() && ! $this->accessTokenExpired()) { - return $this->accessToken; + if ($this->hasAccessToken() && !$this->accessTokenExpired()) { + /** @var ZohoAccessToken $accessToken */ + $accessToken = $this->accessToken; + return $accessToken; } // Let's try with cache! if ($this->hasCache()) { + /** @var Cache\CacheItemPoolInterface $cache */ + $cache = $this->cache; try { - $cachedAccessToken = $this->cache->getItem($this->cachePrefix . 'access_token'); + $cachedAccessToken = $cache->getItem($this->cachePrefix . 'access_token'); if ($cachedAccessToken->isHit()) { - $this->accessToken = $cachedAccessToken->get(); + /** @var ZohoAccessToken $token */ + $token = $cachedAccessToken->get(); + $this->accessToken = $token; return $this->accessToken; } - } catch (InvalidArgumentException $e) { + } catch (InvalidArgumentException) { } } // Do we have the chance to refresh the access token - if ((! $this->hasAccessToken() || $this->accessTokenExpired()) && $this->hasRefreshToken()) { + if ((!$this->hasAccessToken() || $this->accessTokenExpired()) && $this->hasRefreshToken()) { $this->refreshAccessToken(); - return $this->accessToken; + /** @var ZohoAccessToken $accessToken */ + $accessToken = $this->accessToken; + return $accessToken; } // Maybe it's a first time request, so it's actually a grant token request? - if (! $this->hasAccessToken() && $this->hasGrantCode()) { + if (!$this->hasAccessToken() && $this->hasGrantCode()) { $this->generateTokensFromGrantToken(); - return $this->accessToken; + /** @var ZohoAccessToken $accessToken */ + $accessToken = $this->accessToken; + return $accessToken; } @@ -290,31 +228,25 @@ public function getAccessTokenObject() } /** - * Generate the tokens from the grant token if set - * - * @return $this * @throws IdentityProviderException */ - protected function generateTokensFromGrantToken(): self + protected function generateTokensFromGrantToken(): static { if ($this->hasGrantCode()) { - $this->accessToken = $this->provider->getAccessToken('authorization_code', [ + /** @var ZohoAccessToken $token */ + $token = $this->provider->getAccessToken('authorization_code', [ 'code' => $this->grantCode, ]); + + $this->accessToken = $token; } return $this; } - /** - * Set the Access Token while also updating the cache - * - * @param string $token - * @return self - */ - public function setAccessToken(string $token, ?int $expiresIn = null): self + public function setAccessToken(string $token, ?int $expiresIn = null): static { - if (! $this->accessToken) { + if (!$this->accessToken) { $this->accessToken = new ZohoAccessToken([ 'access_token' => $token, ]); @@ -329,30 +261,27 @@ public function setAccessToken(string $token, ?int $expiresIn = null): self $this->accessToken = new ZohoAccessToken($values); if ($this->hasCache()) { + /** @var Cache\CacheItemPoolInterface $cache */ + $cache = $this->cache; try { - $cachedToken = $this->cache->getItem($this->cachePrefix . 'access_token'); + $cachedToken = $cache->getItem($this->cachePrefix . 'access_token'); $cachedToken->set($this->accessToken); $cachedToken->expiresAt(new \DateTime('@' . $this->accessToken->getExpires())); - $this->cache->save($cachedToken); - } catch (InvalidArgumentException $e) { + $cache->save($cachedToken); + } catch (InvalidArgumentException) { } } return $this; } - /** - * Check if the access token has expired - * - * @return bool - */ public function accessTokenExpired(): bool { - if (! $this->accessToken) { + if (!$this->accessToken) { return false; } - if (! $this->accessToken->getExpires()) { + if (!$this->accessToken->getExpires()) { return true; } @@ -360,7 +289,6 @@ public function accessTokenExpired(): bool } /** - * @return string * @throws AccessDeniedException * @throws AccessTokenNotSet * @throws IdentityProviderException @@ -368,15 +296,18 @@ public function accessTokenExpired(): bool */ public function refreshAccessToken(): string { - if (! $this->hasRefreshToken()) { + if (!$this->hasRefreshToken()) { throw new RefreshTokenNotSet(); } try { $grant = new RefreshToken(); - $this->accessToken = $this->provider->getAccessToken($grant, [ + /** @var ZohoAccessToken $token */ + $token = $this->provider->getAccessToken($grant, [ 'refresh_token' => $this->getRefreshToken(), ]); + + $this->accessToken = $token; } catch (IdentityProviderException $e) { $message = $e->getMessage(); if ($message === 'access_denied') { @@ -389,97 +320,76 @@ public function refreshAccessToken(): string $token = $this->getAccessToken(); if ($this->hasCache()) { + /** @var Cache\CacheItemPoolInterface $cache */ + $cache = $this->cache; try { - $cachedToken = $this->cache->getItem($this->cachePrefix . 'access_token'); + $cachedToken = $cache->getItem($this->cachePrefix . 'access_token'); $cachedToken->set($this->accessToken); $cachedToken->expiresAt(new \DateTime('@' . $this->accessToken->getExpires())); - $this->cache->save($cachedToken); - } catch (InvalidArgumentException $e) { + $cache->save($cachedToken); + } catch (InvalidArgumentException) { } } return $token; } - /** - * Do we have a refresh token? - * - * @return bool - */ public function hasRefreshToken(): bool { return isset($this->refreshToken); } - /** - * Do we have an access token? - * - * @return bool - */ public function hasAccessToken(): bool { - if (! $this->accessToken) { + if (!$this->accessToken) { return false; } return strlen($this->accessToken->getToken()) > 0; } - /** - * Do we have a grant code? - * - * @return bool - */ public function hasGrantCode(): bool { - return strlen($this->grantCode) > 0; + return strlen($this->grantCode ?? '') > 0; } - /** - * Is a cache set? - * - * @return bool - */ public function hasCache(): bool { return $this->cache !== null; } /** - * Get Refresh Token - * - * @return string * @throws RefreshTokenNotSet * @throws IdentityProviderException */ public function getRefreshToken(): string { if ($this->hasRefreshToken()) { - return $this->refreshToken; + /** @var string $refreshToken */ + $refreshToken = $this->refreshToken; + return $refreshToken; } // Maybe it's a first time request, so it's actually a grant token request? - if (! $this->hasRefreshToken() && $this->hasGrantCode()) { - $this->generateTokensFromGrantToken(); - $token = $this->accessToken->getRefreshToken(); + if (!$this->hasGrantCode()) { + throw new RefreshTokenNotSet(); + } - if ($token) { - $this->refreshToken = $token; + $this->generateTokensFromGrantToken(); + /** @var ZohoAccessToken $accessToken */ + $accessToken = $this->accessToken; + $token = $accessToken->getRefreshToken(); - return $this->refreshToken; - } + if (!$token) { + throw new RefreshTokenNotSet(); } - throw new RefreshTokenNotSet(); + $this->refreshToken = $token; + + return $this->refreshToken; } - /** - * Set the refresh token - * - * @param string $token - * @return self - */ - public function setRefreshToken(string $token): self + public function setRefreshToken(string $token): static { $this->refreshToken = $token; @@ -487,13 +397,9 @@ public function setRefreshToken(string $token): self } /** - * Revoke Refresh token - * - * @param string|null $refreshToken - * @return self * @throws CannotRevokeRefreshToken */ - public function revokeRefreshToken(?string $refreshToken = null): self + public function revokeRefreshToken(?string $refreshToken = null): static { if ($refreshToken === null) { $refreshToken = $this->refreshToken; @@ -516,26 +422,14 @@ public function revokeRefreshToken(?string $refreshToken = null): self } } - /** - * Toggle offline mode - * - * @param bool $enabled - * @return self - */ - public function offlineMode(bool $enabled = true): self + public function offlineMode(bool $enabled = true): static { $this->offlineMode = $enabled; return $this; } - /** - * During authorization prompt the user to confirm consent to access scopes. - * - * @param bool $enabled - * @return self - */ - public function promptForConsent(bool $enabled = true): self + public function promptForConsent(bool $enabled = true): static { $this->prompt = $enabled; @@ -543,27 +437,29 @@ public function promptForConsent(bool $enabled = true): self } /** - * Get the Resource owner - * - * @return ResourceOwnerInterface + * @throws AccessDeniedException * @throws AccessTokenNotSet + * @throws IdentityProviderException + * @throws RefreshTokenNotSet */ public function getResourceOwner(): ResourceOwnerInterface { - if (! $this->hasAccessToken() || $this->accessTokenExpired()) { + if (!$this->hasAccessToken() || $this->accessTokenExpired()) { $this->getAccessToken(); } - return $this->provider->getResourceOwner($this->accessToken); + /** @var AccessToken $token */ + $token = $this->accessToken; + return $this->provider->getResourceOwner($token); } protected function createProvider(): void { $this->provider = new Zoho([ - 'clientId' => $this->clientId, + 'clientId' => $this->clientId, 'clientSecret' => $this->clientSecret, - 'redirectUri' => $this->redirectUri, - 'dc' => $this->region, + 'redirectUri' => $this->redirectUri, + 'dc' => $this->region, ]); } } diff --git a/src/Oauth/Zoho.php b/src/Oauth/Zoho.php index 6bc5d25..5906369 100644 --- a/src/Oauth/Zoho.php +++ b/src/Oauth/Zoho.php @@ -14,11 +14,11 @@ class Zoho extends AsadZoho * The grant that was used to fetch the response can be used to provide * additional context. * - * @param array $response + * @param array $response * @param AbstractGrant $grant - * @return AccessTokenInterface + * @return ZohoAccessToken */ - protected function createAccessToken(array $response, AbstractGrant $grant) + protected function createAccessToken(array $response, AbstractGrant $grant): ZohoAccessToken { return new ZohoAccessToken($response); } diff --git a/src/Oauth/ZohoAccessToken.php b/src/Oauth/ZohoAccessToken.php index 6125555..39cc0f3 100644 --- a/src/Oauth/ZohoAccessToken.php +++ b/src/Oauth/ZohoAccessToken.php @@ -6,11 +6,12 @@ class ZohoAccessToken extends AsadZohoAccessToken { + /** + * @param array $options + */ public function __construct(array $options = []) { - if (! empty($options['expires_in_sec'])) { - $options['expires_in'] = $options['expires_in_sec']; - } + $options['expires_in'] = $options['expires_in_sec'] ?? $options['expires_in'] ?? null; parent::__construct($options); } diff --git a/tests/ApiTest.php b/tests/ApiTest.php index 6b03dba..0356c18 100644 --- a/tests/ApiTest.php +++ b/tests/ApiTest.php @@ -2,6 +2,7 @@ namespace Webleit\ZohoCrmApi\Test; +use Asad\OAuth2\Client\Provider\ZohoUser; use Cache\Adapter\PHPArray\ArrayCachePool; use GuzzleHttp\Psr7\Uri; use PHPUnit\Framework\TestCase; @@ -11,14 +12,14 @@ class ApiTest extends TestCase { - private $cachePrefix = 'testing_'; + private string $cachePrefix = 'testing_'; + protected OAuthClient $client; + /** - * @var OAuthClient + * Used for Persistent in-memory storage + * @var array $cache */ - protected $client; - - /** Used for Persistent in-memory storage */ - protected static $cache = []; + protected static array $cache = []; protected static function loadAuth(): stdClass { @@ -27,16 +28,23 @@ protected static function loadAuth(): stdClass $authFile = __DIR__ . '/config.json'; } - $auth = json_decode(file_get_contents($authFile)); + $contents = file_get_contents($authFile); + if (!$contents) { + return new stdClass(); + } + + $auth = json_decode($contents, null, 512, JSON_THROW_ON_ERROR); $envConfig = $_SERVER['OAUTH_CONFIG'] ?? $_ENV['OAUTH_CONFIG'] ?? null; if ($envConfig) { - $auth = json_decode($envConfig); + + $auth = json_decode($envConfig, null, 512, JSON_THROW_ON_ERROR); } + /** @var stdClass $auth */ $region = Region::US; if ($auth->region) { - $region = $auth->region; + $region = (string) $auth->region; } $auth->region = $region; @@ -65,7 +73,7 @@ protected function setUp(): void /** * @test */ - public function canGenerateAuthUrl() + public function canGenerateAuthUrl(): void { $url = $this->client->getAuthorizationUrl(); $this->assertIsString($url); @@ -76,7 +84,7 @@ public function canGenerateAuthUrl() /** * @test */ - public function canParseGrantTokenFromUrl() + public function canParseGrantTokenFromUrl(): void { $uri = new Uri('https://test.domain?code=test'); $code = OAuthClient::parseGrantTokenFromUrl($uri); @@ -86,7 +94,7 @@ public function canParseGrantTokenFromUrl() /** * @test */ - public function canGetAccessToken() + public function canGetAccessToken(): void { //Get Token $firstToken = $this->client->getAccessToken(); @@ -119,7 +127,7 @@ public function canGetAccessToken() /** * @test */ - public function canUseCache() + public function canUseCache(): void { $firstToken = $this->client->getAccessToken(); $secondToken = $this->client->getAccessToken(); @@ -130,16 +138,16 @@ public function canUseCache() /** * @test */ - public function canGetResourceOwner() + public function canGetResourceOwner(): void { $owner = $this->client->getResourceOwner(); - $this->assertInstanceOf(\Asad\OAuth2\Client\Provider\ZohoUser::class, $owner); + $this->assertInstanceOf(ZohoUser::class, $owner); } /** * @test */ - public function canSwitchOnline() + public function canSwitchOnline(): void { $this->client->onlineMode(); $this->assertTrue($this->client->isOnline()); @@ -149,7 +157,7 @@ public function canSwitchOnline() /** * @test */ - public function canGetRegion() + public function canGetRegion(): void { $this->assertEquals('us', $this->client->getRegion()); }