From db616e2d3b36c1e45d05e75aec16fb9727addf86 Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 19:23:57 +0100 Subject: [PATCH 01/10] [master] fix deprecation warnings, move to more modern code style --- CHANGELOG.md | 16 + README.md | 26 +- composer.json | 35 +- composer.lock | 2444 ++++++++++++----- data/.gitignore | 2 + phpcs.xml.dist | 14 + phpunit.xml.dist | 34 +- rector.config.php | 28 + src/{Dflydev/Hawk => }/Client/Client.php | 75 +- .../Hawk => }/Client/ClientBuilder.php | 4 +- .../Hawk => }/Client/ClientInterface.php | 4 +- src/{Dflydev/Hawk => }/Client/Request.php | 7 +- .../CallbackCredentialsProvider.php | 5 +- .../Hawk => }/Credentials/Credentials.php | 9 +- .../Credentials/CredentialsInterface.php | 0 .../CredentialsProviderInterface.php | 0 src/{Dflydev/Hawk => }/Crypto/Artifacts.php | 52 +- src/Crypto/Crypto.php | 94 + src/Dflydev/Hawk/Crypto/Crypto.php | 84 - .../Header/FieldValueParserException.php | 0 src/{Dflydev/Hawk => }/Header/Header.php | 18 +- .../Hawk => }/Header/HeaderFactory.php | 3 +- .../Hawk => }/Header/HeaderParser.php | 14 +- .../Header/NotHawkAuthorizationException.php | 0 .../Nonce/CallbackNonceValidator.php | 7 +- .../Nonce/DefaultNonceProviderFactory.php | 2 +- .../Hawk => }/Nonce/NonceProvider.php | 5 +- .../Nonce/NonceProviderInterface.php | 0 .../Nonce/NonceValidatorInterface.php | 0 src/{Dflydev/Hawk => }/Server/Response.php | 11 +- src/{Dflydev/Hawk => }/Server/Server.php | 55 +- .../Hawk => }/Server/ServerBuilder.php | 10 +- .../Hawk => }/Server/ServerInterface.php | 2 +- .../Server/UnauthorizedException.php | 4 +- .../Hawk => }/Time/ConstantTimeProvider.php | 5 +- .../Time/DefaultTimeProviderFactory.php | 2 +- src/{Dflydev/Hawk => }/Time/TimeProvider.php | 0 .../Hawk => }/Time/TimeProviderInterface.php | 0 .../{Dflydev/Hawk => }/Client/ClientTest.php | 22 +- tests/unit/Crypto/ArtifactsTest.php | 42 + tests/unit/Crypto/CryptoTest.php | 215 ++ .../Dflydev/Hawk/Crypto/ArtifactsTest.php | 38 - tests/unit/Dflydev/Hawk/Crypto/CryptoTest.php | 238 -- tests/unit/Dflydev/Hawk/Server/ServerTest.php | 35 - tests/unit/Server/ServerTest.php | 35 + 45 files changed, 2350 insertions(+), 1346 deletions(-) create mode 100644 CHANGELOG.md create mode 100644 data/.gitignore create mode 100644 phpcs.xml.dist create mode 100644 rector.config.php rename src/{Dflydev/Hawk => }/Client/Client.php (71%) rename src/{Dflydev/Hawk => }/Client/ClientBuilder.php (94%) rename src/{Dflydev/Hawk => }/Client/ClientInterface.php (80%) rename src/{Dflydev/Hawk => }/Client/Request.php (60%) rename src/{Dflydev/Hawk => }/Credentials/CallbackCredentialsProvider.php (70%) rename src/{Dflydev/Hawk => }/Credentials/Credentials.php (58%) rename src/{Dflydev/Hawk => }/Credentials/CredentialsInterface.php (100%) rename src/{Dflydev/Hawk => }/Credentials/CredentialsProviderInterface.php (100%) rename src/{Dflydev/Hawk => }/Crypto/Artifacts.php (52%) create mode 100644 src/Crypto/Crypto.php delete mode 100644 src/Dflydev/Hawk/Crypto/Crypto.php rename src/{Dflydev/Hawk => }/Header/FieldValueParserException.php (100%) rename src/{Dflydev/Hawk => }/Header/Header.php (68%) rename src/{Dflydev/Hawk => }/Header/HeaderFactory.php (92%) rename src/{Dflydev/Hawk => }/Header/HeaderParser.php (73%) rename src/{Dflydev/Hawk => }/Header/NotHawkAuthorizationException.php (100%) rename src/{Dflydev/Hawk => }/Nonce/CallbackNonceValidator.php (50%) rename src/{Dflydev/Hawk => }/Nonce/DefaultNonceProviderFactory.php (86%) rename src/{Dflydev/Hawk => }/Nonce/NonceProvider.php (73%) rename src/{Dflydev/Hawk => }/Nonce/NonceProviderInterface.php (100%) rename src/{Dflydev/Hawk => }/Nonce/NonceValidatorInterface.php (100%) rename src/{Dflydev/Hawk => }/Server/Response.php (57%) rename src/{Dflydev/Hawk => }/Server/Server.php (85%) rename src/{Dflydev/Hawk => }/Server/ServerBuilder.php (84%) rename src/{Dflydev/Hawk => }/Server/ServerInterface.php (91%) rename src/{Dflydev/Hawk => }/Server/UnauthorizedException.php (83%) rename src/{Dflydev/Hawk => }/Time/ConstantTimeProvider.php (68%) rename src/{Dflydev/Hawk => }/Time/DefaultTimeProviderFactory.php (77%) rename src/{Dflydev/Hawk => }/Time/TimeProvider.php (100%) rename src/{Dflydev/Hawk => }/Time/TimeProviderInterface.php (100%) rename tests/unit/{Dflydev/Hawk => }/Client/ClientTest.php (59%) create mode 100644 tests/unit/Crypto/ArtifactsTest.php create mode 100644 tests/unit/Crypto/CryptoTest.php delete mode 100644 tests/unit/Dflydev/Hawk/Crypto/ArtifactsTest.php delete mode 100644 tests/unit/Dflydev/Hawk/Crypto/CryptoTest.php delete mode 100644 tests/unit/Dflydev/Hawk/Server/ServerTest.php create mode 100644 tests/unit/Server/ServerTest.php diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..20583a6 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,16 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## 2.0.0 + +### Breaking Changes + +- PHP 8.1 is now required + +### Fixed + +- Fixed deprecation warnings of `Creation of dynamic property ... deprecated` diff --git a/README.md b/README.md index 23763dc..56b9f46 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ without setting anything to get sane defaults. build() ``` @@ -37,7 +37,7 @@ $client = Dflydev\Hawk\Client\ClientBuilder::create() setCrypto($crypto) ->setTimeProvider($timeProvider) ->setNonceProvider($nonceProvider) @@ -142,14 +142,14 @@ $isAuthenticatedResponse = $client->authenticate( build(); // Create a Hawk request based on making a POST request to a specific URL @@ -239,7 +239,7 @@ without setting anything but the credentials provider to get sane defaults. $credentialsProvider = function ($id) { if ('12345' === $id) { - return new Dflydev\Hawk\Credentials\Credentials( + return new \Dflydev\Hawk\Credentials\Credentials( 'afe89a3x', // shared key 'sha256', // default: sha256 '12345' // identifier, default: null @@ -248,7 +248,7 @@ $credentialsProvider = function ($id) { }; // Simple example -$server = Dflydev\Hawk\Server\ServerBuilder::create($credentialsProvider) +$server = \Dflydev\Hawk\Server\ServerBuilder::create($credentialsProvider) ->build() ``` @@ -259,7 +259,7 @@ $server = Dflydev\Hawk\Server\ServerBuilder::create($credentialsProvider) $credentialsProvider = function ($id) { if ('12345' === $id) { - return new Dflydev\Hawk\Credentials\Credentials( + return new \Dflydev\Hawk\Credentials\Credentials( 'afe89a3x', // shared key 'sha256', // default: sha256 '12345' // identifier, default: null @@ -268,7 +268,7 @@ $credentialsProvider = function ($id) { }; // A complete example -$server = Dflydev\Hawk\Server\ServerBuilder::create($credentialsProvider) +$server = \Dflydev\Hawk\Server\ServerBuilder::create($credentialsProvider) ->setCrypto($crypto) ->setTimeProvider($timeProvider) ->setNonceValidator($nonceValidator) @@ -307,7 +307,7 @@ try { 'hello world!' $authorization ); -} catch(Dflydev\Hawk\Server\UnauthorizedException $e) { +} catch(\Dflydev\Hawk\Server\UnauthorizedException $e) { // If authorization is incorrect (invalid mac, etc.) we can catch an // unauthorized exception. throw $e; @@ -367,7 +367,7 @@ header(sprintf("%s: %s", $header->fieldName(), $header->fieldValue())); // Create a simple credentials provider $credentialsProvider = function ($id) { if ('12345' === $id) { - return new Dflydev\Hawk\Credentials\Credentials( + return new \Dflydev\Hawk\Credentials\Credentials( 'afe89a3x', // shared key 'sha256', // default: sha256 '12345' // identifier, default: null @@ -376,7 +376,7 @@ $credentialsProvider = function ($id) { }; // Create a Hawk server -$server = Dflydev\Hawk\Server\ServerBuilder::create($credentialsProvider) +$server = \Dflydev\Hawk\Server\ServerBuilder::create($credentialsProvider) ->build() // Get the authorization header for the request; it should be in the form @@ -393,7 +393,7 @@ try { 'hello world!' $authorization ); -} catch(Dflydev\Hawk\Server\UnauthorizedException $e) { +} catch(\Dflydev\Hawk\Server\UnauthorizedException $e) { // If authorization is incorrect (invalid mac, etc.) we can catch an // unauthorized exception. throw $e; @@ -487,7 +487,7 @@ A simple implementation of `CredentialsInterface`. ```php =5.3", - "satooshi/php-coveralls": "0.6.*", - "symfony/console": ">=2.0" + "php": "^7.1 || ^8.0" + }, + "conflict": { + "doctrine/collections": "<1.6.8", + "doctrine/common": "<2.13.3 || >=3,<3.2.2" }, "require-dev": { - "ext-xdebug": "*", - "phpunit/phpunit": "3.7.*@stable" + "doctrine/collections": "^1.6.8", + "doctrine/common": "^2.13.3 || ^3.2.2", + "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, - "bin": [ - "composer/bin/test-reporter" - ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "0.1.x-dev" - } - }, "autoload": { - "psr-0": { - "CodeClimate\\Component": "src/", - "CodeClimate\\Bundle": "src/" + "files": [ + "src/DeepCopy/deep_copy.php" + ], + "psr-4": { + "DeepCopy\\": "src/DeepCopy/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ + "description": "Create deep copies (clones) of your objects", + "keywords": [ + "clone", + "copy", + "duplicate", + "object", + "object graph" + ], + "support": { + "issues": "https://github.com/myclabs/DeepCopy/issues", + "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + }, + "funding": [ { - "name": "Code Climate", - "email": "hello@codeclimate.com", - "homepage": "https://codeclimate.com" + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" } ], - "description": "PHP client for reporting test coverage to Code Climate", - "homepage": "https://github.com/codeclimate/php-test-reporter", - "keywords": [ - "codeclimate", - "coverage" - ], - "time": "2015-04-18 14:43:54" + "time": "2023-03-08T13:26:56+00:00" }, { - "name": "doctrine/instantiator", - "version": "1.0.4", + "name": "nikic/php-parser", + "version": "v5.0.1", "source": { "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119" + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/f976e5de371104877ebc89bd8fecb0019ed9c119", - "reference": "f976e5de371104877ebc89bd8fecb0019ed9c119", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/2218c2252c874a4624ab2f613d86ac32d227bc69", + "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69", "shasum": "" }, "require": { - "php": ">=5.3,<8.0-DEV" + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" }, "require-dev": { - "athletic/athletic": "~0.1.8", - "ext-pdo": "*", - "ext-phar": "*", - "phpunit/phpunit": "~4.0", - "squizlabs/php_codesniffer": "2.0.*@ALPHA" + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, + "bin": [ + "bin/php-parse" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-master": "5.0-dev" } }, "autoload": { - "psr-0": { - "Doctrine\\Instantiator\\": "src" + "psr-4": { + "PhpParser\\": "lib/PhpParser" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "http://ocramius.github.com/" + "name": "Nikita Popov" } ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://github.com/doctrine/instantiator", + "description": "A PHP parser written in PHP", "keywords": [ - "constructor", - "instantiate" + "parser", + "php" ], - "time": "2014-10-13 12:58:55" + "support": { + "issues": "https://github.com/nikic/PHP-Parser/issues", + "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.1" + }, + "time": "2024-02-21T19:24:10+00:00" }, { - "name": "guzzle/guzzle", - "version": "v3.9.3", + "name": "phar-io/manifest", + "version": "2.0.4", "source": { "type": "git", - "url": "https://github.com/guzzle/guzzle3.git", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9" + "url": "https://github.com/phar-io/manifest.git", + "reference": "54750ef60c58e43759730615a392c31c80e23176" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle3/zipball/0645b70d953bc1c067bbc8d5bc53194706b628d9", - "reference": "0645b70d953bc1c067bbc8d5bc53194706b628d9", + "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", + "reference": "54750ef60c58e43759730615a392c31c80e23176", "shasum": "" }, "require": { - "ext-curl": "*", - "php": ">=5.3.3", - "symfony/event-dispatcher": "~2.1" - }, - "replace": { - "guzzle/batch": "self.version", - "guzzle/cache": "self.version", - "guzzle/common": "self.version", - "guzzle/http": "self.version", - "guzzle/inflection": "self.version", - "guzzle/iterator": "self.version", - "guzzle/log": "self.version", - "guzzle/parser": "self.version", - "guzzle/plugin": "self.version", - "guzzle/plugin-async": "self.version", - "guzzle/plugin-backoff": "self.version", - "guzzle/plugin-cache": "self.version", - "guzzle/plugin-cookie": "self.version", - "guzzle/plugin-curlauth": "self.version", - "guzzle/plugin-error-response": "self.version", - "guzzle/plugin-history": "self.version", - "guzzle/plugin-log": "self.version", - "guzzle/plugin-md5": "self.version", - "guzzle/plugin-mock": "self.version", - "guzzle/plugin-oauth": "self.version", - "guzzle/service": "self.version", - "guzzle/stream": "self.version" - }, - "require-dev": { - "doctrine/cache": "~1.3", - "monolog/monolog": "~1.0", - "phpunit/phpunit": "3.7.*", - "psr/log": "~1.0", - "symfony/class-loader": "~2.1", - "zendframework/zend-cache": "2.*,<2.3", - "zendframework/zend-log": "2.*,<2.3" - }, - "suggest": { - "guzzlehttp/guzzle": "Guzzle 5 has moved to a new package name. The package you have installed, Guzzle 3, is deprecated." + "ext-dom": "*", + "ext-libxml": "*", + "ext-phar": "*", + "ext-xmlwriter": "*", + "phar-io/version": "^3.0.1", + "php": "^7.2 || ^8.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.9-dev" + "dev-master": "2.0.x-dev" } }, "autoload": { - "psr-0": { - "Guzzle": "src/", - "Guzzle\\Tests": "tests/" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" }, { - "name": "Guzzle Community", - "homepage": "https://github.com/guzzle/guzzle/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "description": "PHP HTTP client. This library is deprecated in favor of https://packagist.org/packages/guzzlehttp/guzzle", - "homepage": "http://guzzlephp.org/", - "keywords": [ - "client", - "curl", - "framework", - "http", - "http client", - "rest", - "web service" - ], - "time": "2015-03-18 18:23:50" + "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", + "support": { + "issues": "https://github.com/phar-io/manifest/issues", + "source": "https://github.com/phar-io/manifest/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/theseer", + "type": "github" + } + ], + "time": "2024-03-03T12:33:53+00:00" }, { - "name": "phpdocumentor/reflection-docblock", - "version": "2.0.4", + "name": "phar-io/version", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8" + "url": "https://github.com/phar-io/version.git", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/d68dbdc53dc358a816f00b300704702b2eaff7b8", - "reference": "d68dbdc53dc358a816f00b300704702b2eaff7b8", + "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", + "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "suggest": { - "dflydev/markdown": "~1.0", - "erusev/parsedown": "~1.0" + "php": "^7.2 || ^8.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { - "psr-0": { - "phpDocumentor": [ - "src/" - ] - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Mike van Riel", - "email": "mike.vanriel@naenius.com" + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + }, + { + "name": "Sebastian Heuer", + "email": "sebastian@phpeople.de", + "role": "Developer" + }, + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "Developer" } ], - "time": "2015-02-03 12:10:50" + "description": "Library for handling version information and constraints", + "support": { + "issues": "https://github.com/phar-io/version/issues", + "source": "https://github.com/phar-io/version/tree/3.2.1" + }, + "time": "2022-02-21T01:04:05+00:00" }, { - "name": "phpspec/prophecy", - "version": "1.4.0", + "name": "phpstan/phpstan", + "version": "1.10.59", "source": { "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5" + "url": "https://github.com/phpstan/phpstan.git", + "reference": "e607609388d3a6d418a50a49f7940e8086798281" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5", - "reference": "8724cd239f8ef4c046f55a3b18b4d91cc7f3e4c5", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e607609388d3a6d418a50a49f7940e8086798281", + "reference": "e607609388d3a6d418a50a49f7940e8086798281", "shasum": "" }, "require": { - "doctrine/instantiator": "^1.0.2", - "phpdocumentor/reflection-docblock": "~2.0", - "sebastian/comparator": "~1.1" + "php": "^7.2|^8.0" }, - "require-dev": { - "phpspec/phpspec": "~2.0" + "conflict": { + "phpstan/phpstan-shim": "*" }, + "bin": [ + "phpstan", + "phpstan.phar" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.4.x-dev" - } - }, "autoload": { - "psr-0": { - "Prophecy\\": "src/" - } + "files": [ + "bootstrap.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "authors": [ + "description": "PHPStan - PHP Static Analysis Tool", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "docs": "https://phpstan.org/user-guide/getting-started", + "forum": "https://github.com/phpstan/phpstan/discussions", + "issues": "https://github.com/phpstan/phpstan/issues", + "security": "https://github.com/phpstan/phpstan/security/policy", + "source": "https://github.com/phpstan/phpstan-src" + }, + "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": "2015-03-27 19:31:25" + "time": "2024-02-20T13:59:13+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "2.0.16", + "version": "11.0.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c" + "reference": "89702be0ad026873ef3a1605fe8726254eef4e2c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/934fd03eb6840508231a7f73eb8940cf32c3b66c", - "reference": "934fd03eb6840508231a7f73eb8940cf32c3b66c", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/89702be0ad026873ef3a1605fe8726254eef4e2c", + "reference": "89702be0ad026873ef3a1605fe8726254eef4e2c", "shasum": "" }, "require": { - "php": ">=5.3.3", - "phpunit/php-file-iterator": "~1.3", - "phpunit/php-text-template": "~1.2", - "phpunit/php-token-stream": "~1.3", - "sebastian/environment": "~1.0", - "sebastian/version": "~1.0" + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^5.0", + "php": ">=8.2", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-text-template": "^4.0", + "sebastian/code-unit-reverse-lookup": "^4.0", + "sebastian/complexity": "^4.0", + "sebastian/environment": "^7.0", + "sebastian/lines-of-code": "^3.0", + "sebastian/version": "^5.0", + "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "ext-xdebug": ">=2.1.4", - "phpunit/phpunit": "~4" + "phpunit/phpunit": "^11.0" }, "suggest": { - "ext-dom": "*", - "ext-xdebug": ">=2.2.1", - "ext-xmlwriter": "*" + "ext-pcov": "PHP extension that provides line coverage", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-main": "11.0-dev" } }, "autoload": { @@ -473,7 +459,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -484,29 +470,43 @@ "testing", "xunit" ], - "time": "2015-04-11 04:35:00" + "support": { + "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", + "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:34:25+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "1.4.0", + "version": "5.0.0", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb" + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a923bb15680d0089e2316f7a4af8f437046e96bb", - "reference": "a923bb15680d0089e2316f7a4af8f437046e96bb", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/99e95c94ad9500daca992354fa09d7b99abe2210", + "reference": "99e95c94ad9500daca992354fa09d7b99abe2210", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4.x-dev" + "dev-main": "5.0-dev" } }, "autoload": { @@ -521,7 +521,7 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], @@ -531,121 +531,167 @@ "filesystem", "iterator" ], - "time": "2015-04-02 05:19:05" + "support": { + "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", + "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:05:04+00:00" }, { - "name": "phpunit/php-text-template", - "version": "1.2.0", + "name": "phpunit/php-invoker", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a" + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", - "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5d8d9355a16d8cc5a1305b0a85342cfa420612be", + "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^11.0" + }, + "suggest": { + "ext-pcntl": "*" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "5.0-dev" + } + }, "autoload": { "classmap": [ - "Text/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", + "description": "Invoke callables with a timeout", + "homepage": "https://github.com/sebastianbergmann/php-invoker/", "keywords": [ - "template" + "process" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-invoker/issues", + "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2014-01-30 17:20:04" + "time": "2024-02-02T06:05:50+00:00" }, { - "name": "phpunit/php-timer", - "version": "1.0.5", + "name": "phpunit/php-text-template", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c" + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c", - "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d38f6cbff1cdb6f40b03c9811421561668cc133e", + "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "4.0-dev" + } + }, "autoload": { "classmap": [ - "PHP/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", - "include-path": [ - "" - ], "license": [ "BSD-3-Clause" ], "authors": [ { "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", + "description": "Simple template engine.", + "homepage": "https://github.com/sebastianbergmann/php-text-template/", "keywords": [ - "timer" + "template" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-text-template/issues", + "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2013-08-02 07:42:54" + "time": "2024-02-02T06:06:56+00:00" }, { - "name": "phpunit/php-token-stream", - "version": "1.4.1", + "name": "phpunit/php-timer", + "version": "7.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/php-token-stream.git", - "reference": "eab81d02569310739373308137284e0158424330" + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/eab81d02569310739373308137284e0158424330", - "reference": "eab81d02569310739373308137284e0158424330", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8a59d9e25720482ee7fcdf296595e08795b84dc5", + "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "php": ">=5.3.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.4-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -660,53 +706,71 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Wrapper around PHP's tokenizer extension.", - "homepage": "https://github.com/sebastianbergmann/php-token-stream/", + "description": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", "keywords": [ - "tokenizer" + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "security": "https://github.com/sebastianbergmann/php-timer/security/policy", + "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-04-08 04:46:07" + "time": "2024-02-02T06:08:01+00:00" }, { "name": "phpunit/phpunit", - "version": "4.6.4", + "version": "11.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "163232991e652e6efed2f8470326fffa61e848e2" + "reference": "3f4261269c91370e9b2b3f64cc76c617c442c35a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/163232991e652e6efed2f8470326fffa61e848e2", - "reference": "163232991e652e6efed2f8470326fffa61e848e2", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3f4261269c91370e9b2b3f64cc76c617c442c35a", + "reference": "3f4261269c91370e9b2b3f64cc76c617c442c35a", "shasum": "" }, "require": { "ext-dom": "*", "ext-json": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-spl": "*", - "php": ">=5.3.3", - "phpspec/prophecy": "~1.3,>=1.3.1", - "phpunit/php-code-coverage": "~2.0,>=2.0.11", - "phpunit/php-file-iterator": "~1.4", - "phpunit/php-text-template": "~1.2", - "phpunit/php-timer": "~1.0", - "phpunit/phpunit-mock-objects": "~2.3", - "sebastian/comparator": "~1.1", - "sebastian/diff": "~1.2", - "sebastian/environment": "~1.2", - "sebastian/exporter": "~1.2", - "sebastian/global-state": "~1.0", - "sebastian/version": "~1.0", - "symfony/yaml": "~2.1|~3.0" + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.10.1", + "phar-io/manifest": "^2.0.3", + "phar-io/version": "^3.0.2", + "php": ">=8.2", + "phpunit/php-code-coverage": "^11.0", + "phpunit/php-file-iterator": "^5.0", + "phpunit/php-invoker": "^5.0", + "phpunit/php-text-template": "^4.0", + "phpunit/php-timer": "^7.0", + "sebastian/cli-parser": "^3.0", + "sebastian/code-unit": "^3.0", + "sebastian/comparator": "^6.0", + "sebastian/diff": "^6.0", + "sebastian/environment": "^7.0", + "sebastian/exporter": "^6.0", + "sebastian/global-state": "^7.0", + "sebastian/object-enumerator": "^6.0", + "sebastian/type": "^5.0", + "sebastian/version": "^5.0" }, "suggest": { - "phpunit/php-invoker": "~1.1" + "ext-soap": "To be able to generate mocks based on WSDL files" }, "bin": [ "phpunit" @@ -714,10 +778,13 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.6.x-dev" + "dev-main": "11.0-dev" } }, "autoload": { + "files": [ + "src/Framework/Assert/Functions.php" + ], "classmap": [ "src/" ] @@ -740,195 +807,904 @@ "testing", "xunit" ], - "time": "2015-04-11 05:23:21" + "support": { + "issues": "https://github.com/sebastianbergmann/phpunit/issues", + "security": "https://github.com/sebastianbergmann/phpunit/security/policy", + "source": "https://github.com/sebastianbergmann/phpunit/tree/11.0.4" + }, + "funding": [ + { + "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": "2024-02-29T16:21:10+00:00" }, { - "name": "phpunit/phpunit-mock-objects", - "version": "2.3.1", + "name": "rector/rector", + "version": "1.0.2", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git", - "reference": "74ffb87f527f24616f72460e54b595f508dccb5c" + "url": "https://github.com/rectorphp/rector.git", + "reference": "7596fa6da06c6a20c012efe6bb3d9188a9113b11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/74ffb87f527f24616f72460e54b595f508dccb5c", - "reference": "74ffb87f527f24616f72460e54b595f508dccb5c", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/7596fa6da06c6a20c012efe6bb3d9188a9113b11", + "reference": "7596fa6da06c6a20c012efe6bb3d9188a9113b11", "shasum": "" }, "require": { - "doctrine/instantiator": "~1.0,>=1.0.2", - "php": ">=5.3.3", - "phpunit/php-text-template": "~1.2" - }, - "require-dev": { - "phpunit/phpunit": "~4.4" + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.10.57" }, - "suggest": { - "ext-soap": "*" + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" }, + "bin": [ + "bin/rector" + ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.3.x-dev" - } - }, "autoload": { - "classmap": [ - "src/" + "files": [ + "bootstrap.php" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "BSD-3-Clause" + "MIT" ], - "authors": [ + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/1.0.2" + }, + "funding": [ { - "name": "Sebastian Bergmann", - "email": "sb@sebastian-bergmann.de", - "role": "lead" + "url": "https://github.com/tomasvotruba", + "type": "github" } ], - "description": "Mock Object library for PHPUnit", - "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/", - "keywords": [ - "mock", - "xunit" - ], - "time": "2015-04-02 05:36:41" + "time": "2024-03-03T12:32:31+00:00" }, { - "name": "psr/log", - "version": "1.0.0", + "name": "roave/security-advisories", + "version": "dev-latest", "source": { "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b" + "url": "https://github.com/Roave/SecurityAdvisories.git", + "reference": "8f1e484da92817191c75c9b00108f13fb62fd741" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe0936ee26643249e916849d48e3a51d5f5e278b", - "reference": "fe0936ee26643249e916849d48e3a51d5f5e278b", + "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8f1e484da92817191c75c9b00108f13fb62fd741", + "reference": "8f1e484da92817191c75c9b00108f13fb62fd741", "shasum": "" }, - "type": "library", - "autoload": { - "psr-0": { - "Psr\\Log\\": "" - } - }, + "conflict": { + "3f/pygmentize": "<1.2", + "admidio/admidio": "<4.2.13", + "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", + "aheinze/cockpit": "<2.2", + "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", + "airesvsg/acf-to-rest-api": "<=3.1", + "akaunting/akaunting": "<2.1.13", + "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", + "alextselegidis/easyappointments": "<1.5", + "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", + "amazing/media2click": ">=1,<1.3.3", + "amphp/artax": "<1.0.6|>=2,<2.0.6", + "amphp/http": "<1.0.1", + "amphp/http-client": ">=4,<4.4", + "anchorcms/anchor-cms": "<=0.12.7", + "andreapollastri/cipi": "<=3.1.15", + "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", + "apache-solr-for-typo3/solr": "<2.8.3", + "apereo/phpcas": "<1.6", + "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", + "appwrite/server-ce": "<=1.2.1", + "arc/web": "<3", + "area17/twill": "<1.2.5|>=2,<2.5.3", + "artesaos/seotools": "<0.17.2", + "asymmetricrypt/asymmetricrypt": "<9.9.99", + "athlon1600/php-proxy": "<=5.1", + "athlon1600/php-proxy-app": "<=3", + "austintoddj/canvas": "<=3.4.2", + "automad/automad": "<=1.10.9", + "awesome-support/awesome-support": "<=6.0.7", + "aws/aws-sdk-php": "<3.288.1", + "azuracast/azuracast": "<0.18.3", + "backdrop/backdrop": "<1.24.2", + "backpack/crud": "<3.4.9", + "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", + "badaso/core": "<2.7", + "bagisto/bagisto": "<2.1", + "barrelstrength/sprout-base-email": "<1.2.7", + "barrelstrength/sprout-forms": "<3.9", + "barryvdh/laravel-translation-manager": "<0.6.2", + "barzahlen/barzahlen-php": "<2.0.1", + "baserproject/basercms": "<5.0.9", + "bassjobsen/bootstrap-3-typeahead": ">4.0.2", + "bigfork/silverstripe-form-capture": ">=3,<3.1.1", + "billz/raspap-webgui": "<2.9.5", + "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", + "bmarshall511/wordpress_zero_spam": "<5.2.13", + "bolt/bolt": "<3.7.2", + "bolt/core": "<=4.2", + "bottelet/flarepoint": "<2.2.1", + "bref/bref": "<2.1.13", + "brightlocal/phpwhois": "<=4.2.5", + "brotkrueml/codehighlight": "<2.7", + "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", + "brotkrueml/typo3-matomo-integration": "<1.3.2", + "buddypress/buddypress": "<7.2.1", + "bugsnag/bugsnag-laravel": ">=2,<2.0.2", + "bytefury/crater": "<6.0.2", + "cachethq/cachet": "<2.5.1", + "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", + "cardgate/magento2": "<2.0.33", + "cardgate/woocommerce": "<=3.1.15", + "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", + "cartalyst/sentry": "<=2.1.6", + "catfan/medoo": "<1.7.5", + "cecil/cecil": "<7.47.1", + "centreon/centreon": "<22.10.0.0-beta1", + "cesnet/simplesamlphp-module-proxystatistics": "<3.1", + "chriskacerguis/codeigniter-restserver": "<=2.7.1", + "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", + "ckeditor/ckeditor": "<4.24", + "cockpit-hq/cockpit": "<=2.6.3|==2.7", + "codeception/codeception": "<3.1.3|>=4,<4.1.22", + "codeigniter/framework": "<3.1.9", + "codeigniter4/framework": "<=4.4.2", + "codeigniter4/shield": "<1.0.0.0-beta8", + "codiad/codiad": "<=2.8.4", + "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", + "concrete5/concrete5": "<9.2.5", + "concrete5/core": "<8.5.8|>=9,<9.1", + "contao-components/mediaelement": ">=2.14.2,<2.21.1", + "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", + "contao/core": ">=2,<3.5.39", + "contao/core-bundle": ">=3,<3.5.35|>=4,<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", + "contao/listing-bundle": ">=4,<4.4.8", + "contao/managed-edition": "<=1.5", + "corveda/phpsandbox": "<1.3.5", + "cosenary/instagram": "<=2.3", + "craftcms/cms": "<4.6.2", + "croogo/croogo": "<4", + "cuyz/valinor": "<0.12", + "czproject/git-php": "<4.0.3", + "darylldoyle/safe-svg": "<1.9.10", + "datadog/dd-trace": ">=0.30,<0.30.2", + "datatables/datatables": "<1.10.10", + "david-garcia/phpwhois": "<=4.3.1", + "dbrisinajumi/d2files": "<1", + "dcat/laravel-admin": "<=2.1.3.0-beta", + "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", + "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", + "desperado/xml-bundle": "<=0.1.7", + "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", + "doctrine/annotations": "<1.2.7", + "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", + "doctrine/common": "<2.4.3|>=2.5,<2.5.1", + "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", + "doctrine/doctrine-bundle": "<1.5.2", + "doctrine/doctrine-module": "<=0.7.1", + "doctrine/mongodb-odm": "<1.0.2", + "doctrine/mongodb-odm-bundle": "<3.0.1", + "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", + "dolibarr/dolibarr": "<18.0.2", + "dompdf/dompdf": "<2.0.4", + "doublethreedigital/guest-entries": "<3.1.2", + "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", + "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", + "duncanmcclean/guest-entries": "<3.1.2", + "dweeves/magmi": "<=0.7.24", + "ec-cube/ec-cube": "<2.4.4", + "ecodev/newsletter": "<=4", + "ectouch/ectouch": "<=2.7.2", + "elefant/cms": "<2.0.7", + "elgg/elgg": "<3.3.24|>=4,<4.0.5", + "elijaa/phpmemcacheadmin": "<=1.3", + "encore/laravel-admin": "<=1.8.19", + "endroid/qr-code-bundle": "<3.4.2", + "enhavo/enhavo-app": "<=0.13.1", + "enshrined/svg-sanitize": "<0.15", + "erusev/parsedown": "<1.7.2", + "ether/logs": "<3.0.4", + "evolutioncms/evolution": "<=3.2.3", + "exceedone/exment": "<4.4.3|>=5,<5.0.3", + "exceedone/laravel-admin": "<2.2.3|==3", + "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", + "ezsystems/ez-support-tools": ">=2.2,<2.2.3", + "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", + "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", + "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", + "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", + "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", + "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", + "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.34", + "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", + "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", + "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", + "ezsystems/ezplatform-user": ">=1,<1.0.1", + "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", + "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", + "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", + "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", + "ezyang/htmlpurifier": "<4.1.1", + "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", + "facturascripts/facturascripts": "<=2022.08", + "feehi/cms": "<=2.1.1", + "feehi/feehicms": "<=2.1.1", + "fenom/fenom": "<=2.12.1", + "filegator/filegator": "<7.8", + "firebase/php-jwt": "<6", + "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", + "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", + "flarum/core": "<1.8.5", + "flarum/framework": "<1.8.5", + "flarum/mentions": "<1.6.3", + "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", + "flarum/tags": "<=0.1.0.0-beta13", + "floriangaerber/magnesium": "<0.3.1", + "fluidtypo3/vhs": "<5.1.1", + "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", + "fof/upload": "<1.2.3", + "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", + "fooman/tcpdf": "<6.2.22", + "forkcms/forkcms": "<5.11.1", + "fossar/tcpdf-parser": "<6.2.22", + "francoisjacquet/rosariosis": "<11", + "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", + "friendsofsymfony/oauth2-php": "<1.3", + "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", + "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", + "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", + "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", + "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1", + "froxlor/froxlor": "<=2.1.1", + "fuel/core": "<1.8.1", + "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", + "gaoming13/wechat-php-sdk": "<=1.10.2", + "genix/cms": "<=1.1.11", + "getgrav/grav": "<1.7.44", + "getkirby/cms": "<4.1.1", + "getkirby/kirby": "<=2.5.12", + "getkirby/panel": "<2.5.14", + "getkirby/starterkit": "<=3.7.0.2", + "gilacms/gila": "<=1.15.4", + "gleez/cms": "<=1.2|==2", + "globalpayments/php-sdk": "<2", + "gogentooss/samlbase": "<1.2.7", + "google/protobuf": "<3.15", + "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", + "gree/jose": "<2.2.1", + "gregwar/rst": "<1.0.3", + "grumpydictator/firefly-iii": "<6.1.7", + "gugoan/economizzer": "<=0.9.0.0-beta1", + "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", + "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", + "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", + "harvesthq/chosen": "<1.8.7", + "helloxz/imgurl": "<=2.31", + "hhxsv5/laravel-s": "<3.7.36", + "hillelcoren/invoice-ninja": "<5.3.35", + "himiklab/yii2-jqgrid-widget": "<1.0.8", + "hjue/justwriting": "<=1", + "hov/jobfair": "<1.0.13|>=2,<2.0.2", + "httpsoft/http-message": "<1.0.12", + "hyn/multi-tenant": ">=5.6,<5.7.2", + "ibexa/admin-ui": ">=4.2,<4.2.3", + "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4", + "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", + "ibexa/post-install": "<=1.0.4", + "ibexa/solr": ">=4.5,<4.5.4", + "ibexa/user": ">=4,<4.4.3", + "icecoder/icecoder": "<=8.1", + "idno/known": "<=1.3.1", + "illuminate/auth": "<5.5.10", + "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", + "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", + "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", + "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", + "impresscms/impresscms": "<=1.4.5", + "impresspages/impresspages": "<=1.0.12", + "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", + "in2code/ipandlanguageredirect": "<5.1.2", + "in2code/lux": "<17.6.1|>=18,<24.0.2", + "innologi/typo3-appointments": "<2.0.6", + "intelliants/subrion": "<4.2.2", + "islandora/islandora": ">=2,<2.4.1", + "ivankristianto/phpwhois": "<=4.3", + "jackalope/jackalope-doctrine-dbal": "<1.7.4", + "james-heinrich/getid3": "<1.9.21", + "james-heinrich/phpthumb": "<1.7.12", + "jasig/phpcas": "<1.3.3", + "jcbrand/converse.js": "<3.3.3", + "joomla/application": "<1.0.13", + "joomla/archive": "<1.1.12|>=2,<2.0.1", + "joomla/filesystem": "<1.6.2|>=2,<2.0.1", + "joomla/filter": "<1.4.4|>=2,<2.0.1", + "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", + "joomla/input": ">=2,<2.0.2", + "joomla/joomla-cms": ">=2.5,<3.9.12", + "joomla/session": "<1.3.1", + "joyqi/hyper-down": "<=2.4.27", + "jsdecena/laracom": "<2.0.9", + "jsmitty12/phpwhois": "<5.1", + "juzaweb/cms": "<=3.4", + "kazist/phpwhois": "<=4.2.6", + "kelvinmo/simplexrd": "<3.1.1", + "kevinpapst/kimai2": "<1.16.7", + "khodakhah/nodcms": "<=3", + "kimai/kimai": "<2.1", + "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", + "klaviyo/magento2-extension": ">=1,<3", + "knplabs/knp-snappy": "<=1.4.2", + "kohana/core": "<3.3.3", + "krayin/laravel-crm": "<1.2.2", + "kreait/firebase-php": ">=3.2,<3.8.1", + "la-haute-societe/tcpdf": "<6.2.22", + "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", + "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", + "laminas/laminas-http": "<2.14.2", + "laravel/fortify": "<1.11.1", + "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", + "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", + "latte/latte": "<2.10.8", + "lavalite/cms": "<=9", + "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", + "league/commonmark": "<0.18.3", + "league/flysystem": "<1.1.4|>=2,<2.1.1", + "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", + "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", + "librenms/librenms": "<2017.08.18", + "liftkit/database": "<2.13.2", + "limesurvey/limesurvey": "<3.27.19", + "livehelperchat/livehelperchat": "<=3.91", + "livewire/livewire": ">2.2.4,<2.2.6", + "lms/routes": "<2.1.1", + "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", + "luyadev/yii-helpers": "<1.2.1", + "magento/community-edition": "<2.4.3.0-patch3|>=2.4.4,<2.4.5", + "magento/core": "<=1.9.4.5", + "magento/magento1ce": "<1.9.4.3-dev", + "magento/magento1ee": ">=1,<1.14.4.3-dev", + "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", + "magneto/core": "<1.9.4.4-dev", + "maikuolan/phpmussel": ">=1,<1.6", + "mainwp/mainwp": "<=4.4.3.3", + "mantisbt/mantisbt": "<2.26.1", + "marcwillmann/turn": "<0.3.3", + "matyhtf/framework": "<3.0.6", + "mautic/core": "<4.3", + "mediawiki/core": "<1.36.2", + "mediawiki/matomo": "<2.4.3", + "mediawiki/semantic-media-wiki": "<4.0.2", + "melisplatform/melis-asset-manager": "<5.0.1", + "melisplatform/melis-cms": "<5.0.1", + "melisplatform/melis-front": "<5.0.1", + "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", + "mgallegos/laravel-jqgrid": "<=1.3", + "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", + "microsoft/microsoft-graph-beta": "<2.0.1", + "microsoft/microsoft-graph-core": "<2.0.2", + "microweber/microweber": "<=2.0.4", + "miniorange/miniorange-saml": "<1.4.3", + "mittwald/typo3_forum": "<1.2.1", + "mobiledetect/mobiledetectlib": "<2.8.32", + "modx/revolution": "<=2.8.3.0-patch", + "mojo42/jirafeau": "<4.4", + "mongodb/mongodb": ">=1,<1.9.2", + "monolog/monolog": ">=1.8,<1.12", + "moodle/moodle": "<4.3.3", + "mos/cimage": "<0.7.19", + "movim/moxl": ">=0.8,<=0.10", + "mpdf/mpdf": "<=7.1.7", + "munkireport/comment": "<4.1", + "munkireport/managedinstalls": "<2.6", + "munkireport/munkireport": ">=2.5.3,<5.6.3", + "mustache/mustache": ">=2,<2.14.1", + "namshi/jose": "<2.2", + "neoan3-apps/template": "<1.1.1", + "neorazorx/facturascripts": "<2022.04", + "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", + "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", + "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", + "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", + "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", + "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", + "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", + "nilsteampassnet/teampass": "<3.0.10", + "nonfiction/nterchange": "<4.1.1", + "notrinos/notrinos-erp": "<=0.7", + "noumo/easyii": "<=0.9", + "nukeviet/nukeviet": "<4.5.02", + "nyholm/psr7": "<1.6.1", + "nystudio107/craft-seomatic": "<3.4.12", + "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", + "october/backend": "<1.1.2", + "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", + "october/october": "<=3.4.4", + "october/rain": "<1.0.472|>=1.1,<1.1.2", + "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2", + "omeka/omeka-s": "<4.0.3", + "onelogin/php-saml": "<2.10.4", + "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", + "open-web-analytics/open-web-analytics": "<1.7.4", + "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev", + "openid/php-openid": "<2.3", + "openmage/magento-lts": "<20.5", + "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", + "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", + "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", + "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", + "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", + "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", + "oro/customer-portal": ">=4.2,<=4.2.8|>=5,<5.0.11|>=5.1,<5.1.1", + "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<5.0.8", + "oxid-esales/oxideshop-ce": "<4.5", + "packbackbooks/lti-1-3-php-library": "<5", + "padraic/humbug_get_contents": "<1.1.2", + "pagarme/pagarme-php": "<3", + "pagekit/pagekit": "<=1.0.18", + "paragonie/random_compat": "<2", + "passbolt/passbolt_api": "<2.11", + "paypal/merchant-sdk-php": "<3.12", + "pear/archive_tar": "<1.4.14", + "pear/auth": "<1.2.4", + "pear/crypt_gpg": "<1.6.7", + "pear/pear": "<=1.10.1", + "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", + "personnummer/personnummer": "<3.0.2", + "phanan/koel": "<5.1.4", + "phenx/php-svg-lib": "<0.5.2", + "php-mod/curl": "<2.3.2", + "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", + "phpems/phpems": ">=6,<=6.1.3", + "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", + "phpmailer/phpmailer": "<6.5", + "phpmussel/phpmussel": ">=1,<1.6", + "phpmyadmin/phpmyadmin": "<5.2.1", + "phpmyfaq/phpmyfaq": "<3.2.5", + "phpoffice/phpexcel": "<1.8", + "phpoffice/phpspreadsheet": "<1.16", + "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34", + "phpservermon/phpservermon": "<3.6", + "phpsysinfo/phpsysinfo": "<3.4.3", + "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", + "phpwhois/phpwhois": "<=4.2.5", + "phpxmlrpc/extras": "<0.6.1", + "phpxmlrpc/phpxmlrpc": "<4.9.2", + "pi/pi": "<=2.5", + "pimcore/admin-ui-classic-bundle": "<1.3.4", + "pimcore/customer-management-framework-bundle": "<4.0.6", + "pimcore/data-hub": "<1.2.4", + "pimcore/demo": "<10.3", + "pimcore/ecommerce-framework-bundle": "<1.0.10", + "pimcore/perspective-editor": "<1.5.1", + "pimcore/pimcore": "<11.1.1", + "pixelfed/pixelfed": "<0.11.11", + "plotly/plotly.js": "<2.25.2", + "pocketmine/bedrock-protocol": "<8.0.2", + "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", + "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", + "pressbooks/pressbooks": "<5.18", + "prestashop/autoupgrade": ">=4,<4.10.1", + "prestashop/blockreassurance": "<=5.1.3", + "prestashop/blockwishlist": ">=2,<2.1.1", + "prestashop/contactform": ">=1.0.1,<4.3", + "prestashop/gamification": "<2.3.2", + "prestashop/prestashop": "<8.1.4", + "prestashop/productcomments": "<5.0.2", + "prestashop/ps_emailsubscription": "<2.6.1", + "prestashop/ps_facetedsearch": "<3.4.1", + "prestashop/ps_linklist": "<3.1", + "privatebin/privatebin": "<1.4", + "processwire/processwire": "<=3.0.210", + "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", + "propel/propel1": ">=1,<=1.7.1", + "pterodactyl/panel": "<1.7", + "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", + "ptrofimov/beanstalk_console": "<1.7.14", + "pubnub/pubnub": "<6.1", + "pusher/pusher-php-server": "<2.2.1", + "pwweb/laravel-core": "<=0.3.6.0-beta", + "pyrocms/pyrocms": "<=3.9.1", + "rainlab/blog-plugin": "<1.4.1", + "rainlab/debugbar-plugin": "<3.1", + "rainlab/user-plugin": "<=1.4.5", + "rankmath/seo-by-rank-math": "<=1.0.95", + "rap2hpoutre/laravel-log-viewer": "<0.13", + "react/http": ">=0.7,<1.9", + "really-simple-plugins/complianz-gdpr": "<6.4.2", + "redaxo/source": "<=5.15.1", + "remdex/livehelperchat": "<3.99", + "reportico-web/reportico": "<=7.1.21", + "rhukster/dom-sanitizer": "<1.0.7", + "rmccue/requests": ">=1.6,<1.8", + "robrichards/xmlseclibs": ">=1,<3.0.4", + "roots/soil": "<4.1", + "rudloff/alltube": "<3.0.3", + "s-cart/core": "<6.9", + "s-cart/s-cart": "<6.9", + "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", + "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", + "scheb/two-factor-bundle": "<3.26|>=4,<4.11", + "sensiolabs/connect": "<4.2.3", + "serluck/phpwhois": "<=4.2.6", + "sfroemken/url_redirect": "<=1.2.1", + "sheng/yiicms": "<=1.2", + "shopware/core": "<=6.5.7.3", + "shopware/platform": "<=6.5.7.3", + "shopware/production": "<=6.3.5.2", + "shopware/shopware": "<=5.7.17", + "shopware/storefront": "<=6.4.8.1", + "shopxo/shopxo": "<2.2.6", + "showdoc/showdoc": "<2.10.4", + "silverstripe-australia/advancedreports": ">=1,<=2", + "silverstripe/admin": "<1.13.19|>=2,<2.1.8", + "silverstripe/assets": ">=1,<1.11.1", + "silverstripe/cms": "<4.11.3", + "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", + "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", + "silverstripe/framework": "<4.13.39|>=5,<5.1.11", + "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", + "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", + "silverstripe/recipe-cms": ">=4.5,<4.5.3", + "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", + "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", + "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", + "silverstripe/subsites": ">=2,<2.6.1", + "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", + "silverstripe/userforms": "<3", + "silverstripe/versioned-admin": ">=1,<1.11.1", + "simple-updates/phpwhois": "<=1", + "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", + "simplesamlphp/simplesamlphp": "<1.18.6", + "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", + "simplesamlphp/simplesamlphp-module-openid": "<1", + "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", + "simplesamlphp/xml-security": "==1.6.11", + "simplito/elliptic-php": "<1.0.6", + "sitegeist/fluid-components": "<3.5", + "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", + "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", + "slim/slim": "<2.6", + "slub/slub-events": "<3.0.3", + "smarty/smarty": "<3.1.48|>=4,<4.3.1", + "snipe/snipe-it": "<=6.2.2", + "socalnick/scn-social-auth": "<1.15.2", + "socialiteproviders/steam": "<1.1", + "spatie/browsershot": "<3.57.4", + "spipu/html2pdf": "<5.2.8", + "spoon/library": "<1.4.1", + "spoonity/tcpdf": "<6.2.22", + "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", + "ssddanbrown/bookstack": "<22.02.3", + "statamic/cms": "<4.46", + "stormpath/sdk": "<9.9.99", + "studio-42/elfinder": "<2.1.62", + "subhh/libconnect": "<7.0.8|>=8,<8.1", + "sukohi/surpass": "<1", + "sulu/sulu": "<1.6.44|>=2,<2.4.16|>=2.5,<2.5.12", + "sumocoders/framework-user-bundle": "<1.4", + "superbig/craft-audit": "<3.0.2", + "swag/paypal": "<5.4.4", + "swiftmailer/swiftmailer": ">=4,<5.4.5", + "swiftyedit/swiftyedit": "<1.2", + "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", + "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", + "sylius/grid-bundle": "<1.10.1", + "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", + "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", + "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2", + "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", + "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", + "symbiote/silverstripe-seed": "<6.0.3", + "symbiote/silverstripe-versionedfiles": "<=2.0.3", + "symfont/process": ">=0", + "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", + "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", + "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", + "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3", + "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", + "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", + "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", + "symfony/mime": ">=4.3,<4.3.8", + "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/polyfill": ">=1,<1.10", + "symfony/polyfill-php55": ">=1,<1.10", + "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", + "symfony/routing": ">=2,<2.0.19", + "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", + "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", + "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", + "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", + "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", + "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", + "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", + "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/translation": ">=2,<2.0.17", + "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", + "symfony/ux-autocomplete": "<2.11.2", + "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", + "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", + "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", + "symfony/webhook": ">=6.3,<6.3.8", + "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", + "symphonycms/symphony-2": "<2.6.4", + "t3/dce": "<0.11.5|>=2.2,<2.6.2", + "t3g/svg-sanitizer": "<1.0.3", + "t3s/content-consent": "<1.0.3|>=2,<2.0.2", + "tastyigniter/tastyigniter": "<3.3", + "tcg/voyager": "<=1.4", + "tecnickcom/tcpdf": "<6.2.22", + "terminal42/contao-tablelookupwizard": "<3.3.5", + "thelia/backoffice-default-template": ">=2.1,<2.1.2", + "thelia/thelia": ">=2.1,<2.1.3", + "theonedemon/phpwhois": "<=4.2.5", + "thinkcmf/thinkcmf": "<=5.1.7", + "thorsten/phpmyfaq": "<3.2.2", + "tikiwiki/tiki-manager": "<=17.1", + "tinymce/tinymce": "<5.10.9|>=6,<6.7.3", + "tinymighty/wiki-seo": "<1.2.2", + "titon/framework": "<9.9.99", + "tobiasbg/tablepress": "<=2.0.0.0-RC1", + "topthink/framework": "<6.0.14", + "topthink/think": "<=6.1.1", + "topthink/thinkphp": "<=3.2.3", + "torrentpier/torrentpier": "<=2.4.1", + "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", + "tribalsystems/zenario": "<=9.4.59197", + "truckersmp/phpwhois": "<=4.3.1", + "ttskch/pagination-service-provider": "<1", + "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", + "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", + "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-core": "<=8.7.56|>=9,<=9.5.45|>=10,<=10.4.42|>=11,<=11.5.34|>=12,<=12.4.10|==13", + "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", + "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", + "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", + "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", + "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", + "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", + "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", + "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", + "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", + "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", + "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", + "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", + "ua-parser/uap-php": "<3.8", + "uasoft-indonesia/badaso": "<=2.9.7", + "unisharp/laravel-filemanager": "<2.6.4", + "userfrosting/userfrosting": ">=0.3.1,<4.6.3", + "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", + "uvdesk/community-skeleton": "<=1.1.1", + "vanilla/safecurl": "<0.9.2", + "verot/class.upload.php": "<=2.1.6", + "vova07/yii2-fileapi-widget": "<0.1.9", + "vrana/adminer": "<4.8.1", + "waldhacker/hcaptcha": "<2.1.2", + "wallabag/tcpdf": "<6.2.22", + "wallabag/wallabag": "<2.6.7", + "wanglelecc/laracms": "<=1.0.3", + "web-auth/webauthn-framework": ">=3.3,<3.3.4", + "webbuilders-group/silverstripe-kapost-bridge": "<0.4", + "webcoast/deferred-image-processing": "<1.0.2", + "webklex/laravel-imap": "<5.3", + "webklex/php-imap": "<5.3", + "webpa/webpa": "<3.1.2", + "wikibase/wikibase": "<=1.39.3", + "wikimedia/parsoid": "<0.12.2", + "willdurand/js-translation-bundle": "<2.1.1", + "winter/wn-backend-module": "<1.2.4", + "winter/wn-system-module": "<1.2.4", + "wintercms/winter": "<1.2.3", + "woocommerce/woocommerce": "<6.6", + "wp-cli/wp-cli": ">=0.12,<2.5", + "wp-graphql/wp-graphql": "<=1.14.5", + "wpanel/wpanel4-cms": "<=4.3.1", + "wpcloud/wp-stateless": "<3.2", + "wwbn/avideo": "<=12.4", + "xataface/xataface": "<3", + "xpressengine/xpressengine": "<3.0.15", + "yeswiki/yeswiki": "<4.1", + "yetiforce/yetiforce-crm": "<=6.4", + "yidashi/yii2cmf": "<=2", + "yii2mod/yii2-cms": "<1.9.2", + "yiisoft/yii": "<1.1.29", + "yiisoft/yii2": "<2.0.38", + "yiisoft/yii2-authclient": "<2.2.15", + "yiisoft/yii2-bootstrap": "<2.0.4", + "yiisoft/yii2-dev": "<2.0.43", + "yiisoft/yii2-elasticsearch": "<2.0.5", + "yiisoft/yii2-gii": "<=2.2.4", + "yiisoft/yii2-jui": "<2.0.4", + "yiisoft/yii2-redis": "<2.0.8", + "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", + "yoast-seo-for-typo3/yoast_seo": "<7.2.3", + "yourls/yourls": "<=1.8.2", + "yuan1994/tpadmin": "<=1.3.12", + "zencart/zencart": "<=1.5.7.0-beta", + "zendesk/zendesk_api_client_php": "<2.2.11", + "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", + "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", + "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", + "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", + "zendframework/zend-diactoros": "<1.8.4", + "zendframework/zend-feed": "<2.10.3", + "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-http": "<2.8.1", + "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", + "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", + "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", + "zendframework/zend-validator": ">=2.3,<2.3.6", + "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", + "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", + "zendframework/zendframework": "<=3", + "zendframework/zendframework1": "<1.12.20", + "zendframework/zendopenid": "<2.0.2", + "zendframework/zendrest": "<2.0.2", + "zendframework/zendservice-amazon": "<2.0.3", + "zendframework/zendservice-api": "<1", + "zendframework/zendservice-audioscrobbler": "<2.0.2", + "zendframework/zendservice-nirvanix": "<2.0.2", + "zendframework/zendservice-slideshare": "<2.0.2", + "zendframework/zendservice-technorati": "<2.0.2", + "zendframework/zendservice-windowsazure": "<2.0.2", + "zendframework/zendxml": ">=1,<1.0.1", + "zenstruck/collection": "<0.2.1", + "zetacomponents/mail": "<1.8.2", + "zf-commons/zfc-user": "<1.2.2", + "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", + "zfr/zfr-oauth2-server-module": "<0.1.2", + "zoujingli/thinkadmin": "<=6.1.53" + }, + "default-branch": true, + "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "role": "maintainer" + }, + { + "name": "Ilya Tribusean", + "email": "slash3b@gmail.com", + "role": "maintainer" } ], - "description": "Common interface for logging libraries", + "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", "keywords": [ - "log", - "psr", - "psr-3" + "dev" + ], + "support": { + "issues": "https://github.com/Roave/SecurityAdvisories/issues", + "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" + }, + "funding": [ + { + "url": "https://github.com/Ocramius", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", + "type": "tidelift" + } ], - "time": "2012-12-21 11:40:51" + "time": "2024-03-01T21:04:56+00:00" }, { - "name": "satooshi/php-coveralls", - "version": "v0.6.1", + "name": "sebastian/cli-parser", + "version": "3.0.1", "source": { "type": "git", - "url": "https://github.com/satooshi/php-coveralls.git", - "reference": "dd0df95bd37a7cf5c5c50304dfe260ffe4b50760" + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/satooshi/php-coveralls/zipball/dd0df95bd37a7cf5c5c50304dfe260ffe4b50760", - "reference": "dd0df95bd37a7cf5c5c50304dfe260ffe4b50760", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/00a74d5568694711f0222e54fb281e1d15fdf04a", + "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a", "shasum": "" }, "require": { - "ext-curl": "*", - "ext-json": "*", - "ext-simplexml": "*", - "guzzle/guzzle": ">=3.0", - "php": ">=5.3", - "psr/log": "1.0.0", - "symfony/config": ">=2.0", - "symfony/console": ">=2.0", - "symfony/stopwatch": ">=2.2", - "symfony/yaml": ">=2.0" + "php": ">=8.2" }, "require-dev": { - "apigen/apigen": "2.8.*@stable", - "pdepend/pdepend": "dev-master", - "phpmd/phpmd": "dev-master", - "phpunit/php-invoker": ">=1.1.0,<1.2.0", - "phpunit/phpunit": "3.7.*@stable", - "sebastian/finder-facade": "dev-master", - "sebastian/phpcpd": "1.4.*@stable", - "squizlabs/php_codesniffer": "1.4.*@stable", - "theseer/fdomdocument": "dev-master" + "phpunit/phpunit": "^11.0" }, - "bin": [ - "composer/bin/coveralls" - ], "type": "library", - "autoload": { - "psr-0": { - "Contrib\\Component": "src/", - "Contrib\\Bundle": "src/" + "extra": { + "branch-alias": { + "dev-main": "3.0-dev" } }, + "autoload": { + "classmap": [ + "src/" + ] + }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Kitamura Satoshi", - "email": "with.no.parachute@gmail.com", - "homepage": "https://www.facebook.com/satooshi.jp" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "PHP client library for Coveralls API", - "homepage": "https://github.com/satooshi/php-coveralls", - "keywords": [ - "ci", - "coverage", - "github", - "test" + "description": "Library for parsing CLI options", + "homepage": "https://github.com/sebastianbergmann/cli-parser", + "support": { + "issues": "https://github.com/sebastianbergmann/cli-parser/issues", + "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2013-05-04 08:07:33" + "time": "2024-03-02T07:26:58+00:00" }, { - "name": "sebastian/comparator", - "version": "1.1.1", + "name": "sebastian/code-unit", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e" + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/1dd8869519a225f7f2b9eb663e225298fade819e", - "reference": "1dd8869519a225f7f2b9eb663e225298fade819e", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6634549cb8d702282a04a774e36a7477d2bd9015", + "reference": "6634549cb8d702282a04a774e36a7477d2bd9015", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/diff": "~1.2", - "sebastian/exporter": "~1.2" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.1.x-dev" + "dev-main": "3.0-dev" } }, "autoload": { @@ -941,56 +1717,51 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "http://www.github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" + "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", + "security": "https://github.com/sebastianbergmann/code-unit/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-01-29 16:28:08" + "time": "2024-02-02T05:50:41+00:00" }, { - "name": "sebastian/diff", - "version": "1.3.0", + "name": "sebastian/code-unit-reverse-lookup", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3" + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/863df9687835c62aa423a22412d26fa2ebde3fd3", - "reference": "863df9687835c62aa423a22412d26fa2ebde3fd3", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/df80c875d3e459b45c6039e4d9b71d4fbccae25d", + "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -1003,46 +1774,54 @@ "BSD-3-Clause" ], "authors": [ - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - }, { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" } ], - "description": "Diff implementation", - "homepage": "http://www.github.com/sebastianbergmann/diff", - "keywords": [ - "diff" + "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", + "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-02-22 15:13:53" + "time": "2024-02-02T05:52:17+00:00" }, { - "name": "sebastian/environment", - "version": "1.2.2", + "name": "sebastian/comparator", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e" + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/5a8c7d31914337b69923db26c4221b81ff5a196e", - "reference": "5a8c7d31914337b69923db26c4221b81ff5a196e", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/bd0f2fa5b9257c69903537b266ccb80fcf940db8", + "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-dom": "*", + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/diff": "^6.0", + "sebastian/exporter": "^6.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.3.x-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -1058,42 +1837,65 @@ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" + }, + { + "name": "Volker Dusch", + "email": "github@wallbash.com" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@2bepublished.at" } ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", + "description": "Provides the functionality to compare PHP values for equality", + "homepage": "https://github.com/sebastianbergmann/comparator", "keywords": [ - "Xdebug", - "environment", - "hhvm" + "comparator", + "compare", + "equality" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/comparator/issues", + "security": "https://github.com/sebastianbergmann/comparator/security/policy", + "source": "https://github.com/sebastianbergmann/comparator/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-01-01 10:01:08" + "time": "2024-02-02T05:53:45+00:00" }, { - "name": "sebastian/exporter", - "version": "1.2.0", + "name": "sebastian/complexity", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "84839970d05254c73cde183a721c7af13aede943" + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "88a434ad86150e11a606ac4866b09130712671f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/84839970d05254c73cde183a721c7af13aede943", - "reference": "84839970d05254c73cde183a721c7af13aede943", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/88a434ad86150e11a606ac4866b09130712671f0", + "reference": "88a434ad86150e11a606ac4866b09130712671f0", "shasum": "" }, "require": { - "php": ">=5.3.3", - "sebastian/recursion-context": "~1.0" + "nikic/php-parser": "^5.0", + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.2.x-dev" + "dev-main": "4.0-dev" } }, "autoload": { @@ -1107,61 +1909,120 @@ ], "authors": [ { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Library for calculating the complexity of PHP code units", + "homepage": "https://github.com/sebastianbergmann/complexity", + "support": { + "issues": "https://github.com/sebastianbergmann/complexity/issues", + "security": "https://github.com/sebastianbergmann/complexity/security/policy", + "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.0" + }, + "funding": [ { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - }, + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T05:55:19+00:00" + }, + { + "name": "sebastian/diff", + "version": "6.0.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ab83243ecc233de5655b76f577711de9f842e712" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ab83243ecc233de5655b76f577711de9f842e712", + "reference": "ab83243ecc233de5655b76f577711de9f842e712", + "shasum": "" + }, + "require": { + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "6.0-dev" + } + }, + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ { "name": "Sebastian Bergmann", "email": "sebastian@phpunit.de" }, { - "name": "Adam Harvey", - "email": "aharvey@php.net" + "name": "Kore Nordmann", + "email": "mail@kore-nordmann.de" } ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "http://www.github.com/sebastianbergmann/exporter", + "description": "Diff implementation", + "homepage": "https://github.com/sebastianbergmann/diff", "keywords": [ - "export", - "exporter" + "diff", + "udiff", + "unidiff", + "unified diff" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/diff/issues", + "security": "https://github.com/sebastianbergmann/diff/security/policy", + "source": "https://github.com/sebastianbergmann/diff/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-01-27 07:23:06" + "time": "2024-03-02T07:30:33+00:00" }, { - "name": "sebastian/global-state", - "version": "1.0.0", + "name": "sebastian/environment", + "version": "7.0.0", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01" + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c7428acdb62ece0a45e6306f1ae85e1c05b09c01", - "reference": "c7428acdb62ece0a45e6306f1ae85e1c05b09c01", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/100d8b855d7180f79f9a9a5c483f2d960581c3ea", + "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" }, "require-dev": { - "phpunit/phpunit": "~4.2" + "phpunit/phpunit": "^11.0" }, "suggest": { - "ext-uopz": "*" + "ext-posix": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0-dev" + "dev-main": "7.0-dev" } }, "autoload": { @@ -1179,37 +2040,52 @@ "email": "sebastian@phpunit.de" } ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", + "description": "Provides functionality to handle HHVM/PHP environments", + "homepage": "https://github.com/sebastianbergmann/environment", "keywords": [ - "global state" + "Xdebug", + "environment", + "hhvm" ], - "time": "2014-10-06 09:23:50" + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "security": "https://github.com/sebastianbergmann/environment/security/policy", + "source": "https://github.com/sebastianbergmann/environment/tree/7.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T05:57:54+00:00" }, { - "name": "sebastian/recursion-context", - "version": "1.0.0", + "name": "sebastian/exporter", + "version": "6.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252" + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/3989662bbb30a29d20d9faa04a846af79b276252", - "reference": "3989662bbb30a29d20d9faa04a846af79b276252", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f291e5a317c321c0381fa9ecc796fa2d21b186da", + "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-mbstring": "*", + "php": ">=8.2", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "phpunit/phpunit": "~4.4" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-main": "6.0-dev" } }, "autoload": { @@ -1222,38 +2098,75 @@ "BSD-3-Clause" ], "authors": [ + { + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, { "name": "Jeff Welch", "email": "whatthejeff@gmail.com" }, { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" + "name": "Volker Dusch", + "email": "github@wallbash.com" }, { "name": "Adam Harvey", "email": "aharvey@php.net" + }, + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" } ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-01-24 09:48:32" + "description": "Provides the functionality to export PHP variables for visualization", + "homepage": "https://www.github.com/sebastianbergmann/exporter", + "keywords": [ + "export", + "exporter" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/exporter/issues", + "security": "https://github.com/sebastianbergmann/exporter/security/policy", + "source": "https://github.com/sebastianbergmann/exporter/tree/6.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:28:20+00:00" }, { - "name": "sebastian/version", - "version": "1.0.5", + "name": "sebastian/global-state", + "version": "7.0.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4" + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", - "reference": "ab931d46cd0d3204a91e1b9a40c4bc13032b58e4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", + "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", "shasum": "" }, + "require": { + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^11.0" + }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "7.0-dev" + } + }, "autoload": { "classmap": [ "src/" @@ -1266,68 +2179,57 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-02-24 06:35:25" + "description": "Snapshotting of global state", + "homepage": "https://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "security": "https://github.com/sebastianbergmann/global-state/security/policy", + "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T07:32:10+00:00" }, { - "name": "squizlabs/php_codesniffer", - "version": "2.3.1", + "name": "sebastian/lines-of-code", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "f3100143e94bbeeaa4f1cd7c6389c3733d3d1ce1" + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/f3100143e94bbeeaa4f1cd7c6389c3733d3d1ce1", - "reference": "f3100143e94bbeeaa4f1cd7c6389c3733d3d1ce1", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/376c5b3f6b43c78fdc049740bca76a7c846706c0", + "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0", "shasum": "" }, "require": { - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.1.2" + "nikic/php-parser": "^5.0", + "php": ">=8.2" + }, + "require-dev": { + "phpunit/phpunit": "^11.0" }, - "bin": [ - "scripts/phpcs", - "scripts/phpcbf" - ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-main": "3.0-dev" } }, "autoload": { "classmap": [ - "CodeSniffer.php", - "CodeSniffer/CLI.php", - "CodeSniffer/Exception.php", - "CodeSniffer/File.php", - "CodeSniffer/Fixer.php", - "CodeSniffer/Report.php", - "CodeSniffer/Reporting.php", - "CodeSniffer/Sniff.php", - "CodeSniffer/Tokens.php", - "CodeSniffer/Reports/", - "CodeSniffer/Tokenizers/", - "CodeSniffer/DocGenerators/", - "CodeSniffer/Standards/AbstractPatternSniff.php", - "CodeSniffer/Standards/AbstractScopeSniff.php", - "CodeSniffer/Standards/AbstractVariableSniff.php", - "CodeSniffer/Standards/IncorrectPatternException.php", - "CodeSniffer/Standards/Generic/Sniffs/", - "CodeSniffer/Standards/MySource/Sniffs/", - "CodeSniffer/Standards/PEAR/Sniffs/", - "CodeSniffer/Standards/PSR1/Sniffs/", - "CodeSniffer/Standards/PSR2/Sniffs/", - "CodeSniffer/Standards/Squiz/Sniffs/", - "CodeSniffer/Standards/Zend/Sniffs/" + "src/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1336,345 +2238,457 @@ ], "authors": [ { - "name": "Greg Sherwood", + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", "role": "lead" } ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "http://www.squizlabs.com/php-codesniffer", - "keywords": [ - "phpcs", - "standards" + "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", + "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } ], - "time": "2015-04-23 03:40:59" + "time": "2024-02-02T06:00:36+00:00" }, { - "name": "symfony/config", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Config", + "name": "sebastian/object-enumerator", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/Config.git", - "reference": "d91be01336605db8da21b79bc771e46a7276d1bc" + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Config/zipball/d91be01336605db8da21b79bc771e46a7276d1bc", - "reference": "d91be01336605db8da21b79bc771e46a7276d1bc", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", + "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", "shasum": "" }, "require": { - "php": ">=5.3.3", - "symfony/filesystem": "~2.3" + "php": ">=8.2", + "sebastian/object-reflector": "^4.0", + "sebastian/recursion-context": "^6.0" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-main": "6.0-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Config\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.0" + }, + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Symfony Config Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "time": "2024-02-02T06:01:29+00:00" }, { - "name": "symfony/console", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Console", + "name": "sebastian/object-reflector", + "version": "4.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/Console.git", - "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667" + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Console/zipball/5b91dc4ed5eb08553f57f6df04c4730a73992667", - "reference": "5b91dc4ed5eb08553f57f6df04c4730a73992667", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/bb2a6255d30853425fd38f032eb64ced9f7f132d", + "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" }, "require-dev": { - "psr/log": "~1.0", - "symfony/event-dispatcher": "~2.1", - "symfony/phpunit-bridge": "~2.7", - "symfony/process": "~2.1" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/process": "" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-main": "4.0-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Console\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + } + ], + "description": "Allows reflection of object attributes, including inherited and non-public ones", + "homepage": "https://github.com/sebastianbergmann/object-reflector/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-reflector/issues", + "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.0" + }, + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Symfony Console Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "time": "2024-02-02T06:02:18+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v2.6.6", - "target-dir": "Symfony/Component/EventDispatcher", + "name": "sebastian/recursion-context", + "version": "6.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/EventDispatcher.git", - "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284" + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/70f7c8478739ad21e3deef0d977b38c77f1fb284", - "reference": "70f7c8478739ad21e3deef0d977b38c77f1fb284", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b75224967b5a466925c6d54e68edd0edf8dd4ed4", + "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" }, "require-dev": { - "psr/log": "~1.0", - "symfony/config": "~2.0,>=2.0.5", - "symfony/dependency-injection": "~2.6", - "symfony/expression-language": "~2.6", - "symfony/phpunit-bridge": "~2.7", - "symfony/stopwatch": "~2.3" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-main": "6.0-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\EventDispatcher\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de" + }, + { + "name": "Jeff Welch", + "email": "whatthejeff@gmail.com" }, { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Adam Harvey", + "email": "aharvey@php.net" } ], - "description": "Symfony EventDispatcher Component", - "homepage": "http://symfony.com", - "time": "2015-03-13 17:37:22" + "description": "Provides functionality to recursively process PHP variables", + "homepage": "https://github.com/sebastianbergmann/recursion-context", + "support": { + "issues": "https://github.com/sebastianbergmann/recursion-context/issues", + "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.0" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-02-02T06:08:48+00:00" }, { - "name": "symfony/filesystem", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Filesystem", + "name": "sebastian/type", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/Filesystem.git", - "reference": "4983964b3693e4f13449cb3800c64a9112c301b4" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Filesystem/zipball/4983964b3693e4f13449cb3800c64a9112c301b4", - "reference": "4983964b3693e4f13449cb3800c64a9112c301b4", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8502785eb3523ca0dd4afe9ca62235590020f3f", + "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=8.2" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "phpunit/phpunit": "^11.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-main": "5.0-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Filesystem\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", + "support": { + "issues": "https://github.com/sebastianbergmann/type/issues", + "security": "https://github.com/sebastianbergmann/type/security/policy", + "source": "https://github.com/sebastianbergmann/type/tree/5.0.0" + }, + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Symfony Filesystem Component", - "homepage": "http://symfony.com", - "time": "2015-03-22 16:55:57" + "time": "2024-02-02T06:09:34+00:00" }, { - "name": "symfony/stopwatch", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Stopwatch", + "name": "sebastian/version", + "version": "5.0.0", "source": { "type": "git", - "url": "https://github.com/symfony/Stopwatch.git", - "reference": "5f196e84b5640424a166d2ce9cca161ce1e9d912" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Stopwatch/zipball/5f196e84b5640424a166d2ce9cca161ce1e9d912", - "reference": "5f196e84b5640424a166d2ce9cca161ce1e9d912", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/13999475d2cb1ab33cb73403ba356a814fdbb001", + "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001", "shasum": "" }, "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "php": ">=8.2" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-main": "5.0-dev" } }, "autoload": { - "psr-0": { - "Symfony\\Component\\Stopwatch\\": "" - } + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" + } + ], + "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", + "security": "https://github.com/sebastianbergmann/version/security/policy", + "source": "https://github.com/sebastianbergmann/version/tree/5.0.0" + }, + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://github.com/sebastianbergmann", + "type": "github" } ], - "description": "Symfony Stopwatch Component", - "homepage": "http://symfony.com", - "time": "2015-03-22 16:55:57" + "time": "2024-02-02T06:10:47+00:00" }, { - "name": "symfony/yaml", - "version": "v2.6.6", - "target-dir": "Symfony/Component/Yaml", + "name": "squizlabs/php_codesniffer", + "version": "3.9.0", "source": { "type": "git", - "url": "https://github.com/symfony/Yaml.git", - "reference": "174f009ed36379a801109955fc5a71a49fe62dd4" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/Yaml/zipball/174f009ed36379a801109955fc5a71a49fe62dd4", - "reference": "174f009ed36379a801109955fc5a71a49fe62dd4", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b", + "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b", "shasum": "" }, "require": { - "php": ">=5.3.3" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" }, "require-dev": { - "symfony/phpunit-bridge": "~2.7" + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], "type": "library", "extra": { "branch-alias": { - "dev-master": "2.6-dev" + "dev-master": "3.x-dev" } }, - "autoload": { - "psr-0": { - "Symfony\\Component\\Yaml\\": "" + "notification-url": "https://packagist.org/downloads/", + "license": [ + "BSD-3-Clause" + ], + "authors": [ + { + "name": "Greg Sherwood", + "role": "Former lead" + }, + { + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } + ], + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], + "support": { + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" + }, + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" + } + ], + "time": "2024-02-16T15:06:51+00:00" + }, + { + "name": "theseer/tokenizer", + "version": "1.2.3", + "source": { + "type": "git", + "url": "https://github.com/theseer/tokenizer.git", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": "^7.2 || ^8.0" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Symfony Community", - "homepage": "http://symfony.com/contributors" - }, + "name": "Arne Blankerts", + "email": "arne@blankerts.de", + "role": "Developer" + } + ], + "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", + "support": { + "issues": "https://github.com/theseer/tokenizer/issues", + "source": "https://github.com/theseer/tokenizer/tree/1.2.3" + }, + "funding": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "url": "https://github.com/theseer", + "type": "github" } ], - "description": "Symfony Yaml Component", - "homepage": "http://symfony.com", - "time": "2015-03-30 15:54:10" + "time": "2024-03-03T12:36:25+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": { "ircmaxell/random-lib": 20, - "codeclimate/php-test-reporter": 20 + "roave/security-advisories": 20 }, "prefer-stable": false, "prefer-lowest": false, - "platform": [], - "platform-dev": [] + "platform": { + "php": "^8.2" + }, + "platform-dev": [], + "plugin-api-version": "2.6.0" } diff --git a/data/.gitignore b/data/.gitignore new file mode 100644 index 0000000..c96a04f --- /dev/null +++ b/data/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore \ No newline at end of file diff --git a/phpcs.xml.dist b/phpcs.xml.dist new file mode 100644 index 0000000..55bae07 --- /dev/null +++ b/phpcs.xml.dist @@ -0,0 +1,14 @@ + + + + + + + + + + + + src + tests + diff --git a/phpunit.xml.dist b/phpunit.xml.dist index a2437ec..1f44878 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,30 +1,20 @@ - - + - ./tests/unit/ - - - - - - ./tests/integration/ - - - - - - ./tests/functional/ + ./tests/unit - - - - ./src/ - - + + + ./src + + diff --git a/rector.config.php b/rector.config.php new file mode 100644 index 0000000..0a47752 --- /dev/null +++ b/rector.config.php @@ -0,0 +1,28 @@ +paths( + [ + __DIR__ . '/src', + __DIR__ . '/tests', + ] + ); + + $rectorConfig->sets( + [ + PHPUnitSetList::PHPUNIT_100, + PHPUnitSetList::PHPUNIT_CODE_QUALITY, + LevelSetList::UP_TO_PHP_81, + DowngradeLevelSetList::DOWN_TO_PHP_81, + SetList::CODE_QUALITY, + ] + ); +}; diff --git a/src/Dflydev/Hawk/Client/Client.php b/src/Client/Client.php similarity index 71% rename from src/Dflydev/Hawk/Client/Client.php rename to src/Client/Client.php index c085abf..3fab8cb 100644 --- a/src/Dflydev/Hawk/Client/Client.php +++ b/src/Client/Client.php @@ -5,51 +5,44 @@ use Dflydev\Hawk\Credentials\CredentialsInterface; use Dflydev\Hawk\Crypto\Artifacts; use Dflydev\Hawk\Crypto\Crypto; -use Dflydev\Hawk\Header\Header; use Dflydev\Hawk\Header\HeaderFactory; use Dflydev\Hawk\Nonce\NonceProviderInterface; use Dflydev\Hawk\Time\TimeProviderInterface; +/** + * @see \Dflydev\Hawk\Client\ClientTest + */ class Client implements ClientInterface { - private $crypto; - private $timeProvider; - private $nonceProvider; - private $localtimeOffset; - /** * @param integer $localtimeOffset */ public function __construct( - Crypto $crypto, - TimeProviderInterface $timeProvider, - NonceProviderInterface $nonceProvider, - $localtimeOffset + private readonly Crypto $crypto, + private readonly TimeProviderInterface $timeProvider, + private readonly NonceProviderInterface $nonceProvider, + private $localtimeOffset ) { - $this->crypto = $crypto; - $this->timeProvider = $timeProvider; - $this->nonceProvider = $nonceProvider; - $this->localtimeOffset = $localtimeOffset; } - public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = array()) + public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = []) { - $timestamp = isset($options['timestamp']) ? $options['timestamp'] : $this->timeProvider->createTimestamp(); + $timestamp = $options['timestamp'] ?? $this->timeProvider->createTimestamp(); if ($this->localtimeOffset) { $timestamp += $this->localtimeOffset; } - $parsed = parse_url($uri); + $parsed = parse_url((string)$uri); $host = $parsed['host']; - $resource = isset($parsed['path']) ? $parsed['path'] : ''; + $resource = $parsed['path'] ?? ''; if (isset($parsed['query'])) { - $resource .= '?'.$parsed['query']; + $resource .= '?' . $parsed['query']; } - $port = isset($parsed['port']) ? $parsed['port'] : ($parsed['scheme'] === 'https' ? 443 : 80); + $port = $parsed['port'] ?? ($parsed['scheme'] === 'https' ? 443 : 80); - $nonce = isset($options['nonce']) ? $options['nonce'] : $this->nonceProvider->createNonce(); + $nonce = $options['nonce'] ?? $this->nonceProvider->createNonce(); if (isset($options['payload']) || isset($options['content_type'])) { if (isset($options['payload']) && isset($options['content_type'])) { @@ -67,9 +60,9 @@ public function createRequest(CredentialsInterface $credentials, $uri, $method, $hash = null; } - $ext = isset($options['ext']) ? $options['ext'] : null; - $app = isset($options['app']) ? $options['app'] : null; - $dlg = isset($options['dlg']) ? $options['dlg'] : null; + $ext = $options['ext'] ?? null; + $app = $options['app'] ?? null; + $dlg = $options['dlg'] ?? null; $artifacts = new Artifacts( $method, @@ -86,11 +79,7 @@ public function createRequest(CredentialsInterface $credentials, $uri, $method, $dlg ); - $attributes = array( - 'id' => $credentials->id(), - 'ts' => $artifacts->timestamp(), - 'nonce' => $artifacts->nonce(), - ); + $attributes = ['id' => $credentials->id(), 'ts' => $artifacts->timestamp(), 'nonce' => $artifacts->nonce()]; if (null !== $hash) { $attributes['hash'] = $hash; @@ -117,12 +106,12 @@ public function authenticate( CredentialsInterface $credentials, Request $request, $headerObjectOrString, - array $options = array() + array $options = [] ) { $header = HeaderFactory::createFromHeaderObjectOrString( 'Server-Authorization', $headerObjectOrString, - function () { + function (): never { throw new \InvalidArgumentException( 'Header must either be a string or an instance of "Dflydev\Hawk\Header\Header"' ); @@ -179,24 +168,24 @@ function () { return $artifacts->hash() === $hash; } - public function createBewit(CredentialsInterface $credentials, $uri, $ttlSec, array $options = array()) + public function createBewit(CredentialsInterface $credentials, $uri, $ttlSec, array $options = []) { - $timestamp = isset($options['timestamp']) ? $options['timestamp'] : $this->timeProvider->createTimestamp(); + $timestamp = $options['timestamp'] ?? $this->timeProvider->createTimestamp(); if ($this->localtimeOffset) { $timestamp += $this->localtimeOffset; } - $parsed = parse_url($uri); + $parsed = parse_url((string)$uri); $host = $parsed['host']; - $resource = isset($parsed['path']) ? $parsed['path'] : ''; + $resource = $parsed['path'] ?? ''; if (isset($parsed['query'])) { - $resource .= '?'.$parsed['query']; + $resource .= '?' . $parsed['query']; } - $port = isset($parsed['port']) ? $parsed['port'] : ($parsed['scheme'] === 'https' ? 443 : 80); + $port = $parsed['port'] ?? ($parsed['scheme'] === 'https' ? 443 : 80); - $ext = isset($options['ext']) ? $options['ext'] : null; + $ext = $options['ext'] ?? null; $exp = $timestamp + $ttlSec; @@ -210,16 +199,16 @@ public function createBewit(CredentialsInterface $credentials, $uri, $ttlSec, ar $ext ); - $bewit = implode('\\', array( + $bewit = implode('\\', [ $credentials->id(), $exp, $this->crypto->calculateMac('bewit', $credentials, $artifacts), - $ext, - )); + $ext + ]); return str_replace( - array('+', '/', '=', "\n"), - array('-', '_', '', ''), + ['+', '/', '=', "\n"], + ['-', '_', '', ''], base64_encode($bewit) ); } diff --git a/src/Dflydev/Hawk/Client/ClientBuilder.php b/src/Client/ClientBuilder.php similarity index 94% rename from src/Dflydev/Hawk/Client/ClientBuilder.php rename to src/Client/ClientBuilder.php index 82129a9..27aa691 100644 --- a/src/Dflydev/Hawk/Client/ClientBuilder.php +++ b/src/Client/ClientBuilder.php @@ -45,7 +45,7 @@ public function setLocaltimeOffset($localtimeOffset = null) public function build() { - $crypto = $this->crypto ?: new Crypto; + $crypto = $this->crypto ?: new Crypto(); $timeProvider = $this->timeProvider ?: DefaultTimeProviderFactory::create(); $nonceProvider = $this->nonceProvider ?: DefaultNonceProviderFactory::create(); @@ -59,6 +59,6 @@ public function build() public static function create() { - return new static; + return new static(); } } diff --git a/src/Dflydev/Hawk/Client/ClientInterface.php b/src/Client/ClientInterface.php similarity index 80% rename from src/Dflydev/Hawk/Client/ClientInterface.php rename to src/Client/ClientInterface.php index 8fe0368..9a59a2e 100644 --- a/src/Dflydev/Hawk/Client/ClientInterface.php +++ b/src/Client/ClientInterface.php @@ -6,11 +6,11 @@ interface ClientInterface { - public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = array()); + public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = []); public function authenticate( CredentialsInterface $credentials, Request $request, $headerObjectOrString, - array $options = array() + array $options = [] ); } diff --git a/src/Dflydev/Hawk/Client/Request.php b/src/Client/Request.php similarity index 60% rename from src/Dflydev/Hawk/Client/Request.php rename to src/Client/Request.php index 8fc5e4d..3e1f5f8 100644 --- a/src/Dflydev/Hawk/Client/Request.php +++ b/src/Client/Request.php @@ -7,13 +7,8 @@ class Request { - private $header; - private $artifacts; - - public function __construct(Header $header, Artifacts $artifacts) + public function __construct(private readonly Header $header, private readonly Artifacts $artifacts) { - $this->header = $header; - $this->artifacts = $artifacts; } public function header() diff --git a/src/Dflydev/Hawk/Credentials/CallbackCredentialsProvider.php b/src/Credentials/CallbackCredentialsProvider.php similarity index 70% rename from src/Dflydev/Hawk/Credentials/CallbackCredentialsProvider.php rename to src/Credentials/CallbackCredentialsProvider.php index a95eaab..079993e 100644 --- a/src/Dflydev/Hawk/Credentials/CallbackCredentialsProvider.php +++ b/src/Credentials/CallbackCredentialsProvider.php @@ -4,11 +4,8 @@ class CallbackCredentialsProvider implements CredentialsProviderInterface { - private $callback; - - public function __construct($callback) + public function __construct(private $callback) { - $this->callback = $callback; } public function loadCredentialsById($id) diff --git a/src/Dflydev/Hawk/Credentials/Credentials.php b/src/Credentials/Credentials.php similarity index 58% rename from src/Dflydev/Hawk/Credentials/Credentials.php rename to src/Credentials/Credentials.php index b8fa9be..fff61de 100644 --- a/src/Dflydev/Hawk/Credentials/Credentials.php +++ b/src/Credentials/Credentials.php @@ -4,15 +4,8 @@ class Credentials implements CredentialsInterface { - private $key; - private $algorithm; - private $id; - - public function __construct($key, $algorithm = 'sha256', $id = null) + public function __construct(private $key, private $algorithm = 'sha256', private $id = null) { - $this->key = $key; - $this->algorithm = $algorithm; - $this->id = $id; } public function id() diff --git a/src/Dflydev/Hawk/Credentials/CredentialsInterface.php b/src/Credentials/CredentialsInterface.php similarity index 100% rename from src/Dflydev/Hawk/Credentials/CredentialsInterface.php rename to src/Credentials/CredentialsInterface.php diff --git a/src/Dflydev/Hawk/Credentials/CredentialsProviderInterface.php b/src/Credentials/CredentialsProviderInterface.php similarity index 100% rename from src/Dflydev/Hawk/Credentials/CredentialsProviderInterface.php rename to src/Credentials/CredentialsProviderInterface.php diff --git a/src/Dflydev/Hawk/Crypto/Artifacts.php b/src/Crypto/Artifacts.php similarity index 52% rename from src/Dflydev/Hawk/Crypto/Artifacts.php rename to src/Crypto/Artifacts.php index 785d7e0..de88f02 100644 --- a/src/Dflydev/Hawk/Crypto/Artifacts.php +++ b/src/Crypto/Artifacts.php @@ -2,47 +2,25 @@ namespace Dflydev\Hawk\Crypto; +/** + * @see \Dflydev\Hawk\Crypto\ArtifactsTest + */ class Artifacts { - private $method; - private $host; - private $port; - private $resource; - private $timestamp; - private $nonce; - private $ext; - private $payload; - private $contentType; - private $hash; - private $app; - private $dlg; - public function __construct( - $method, - $host, - $port, - $resource, - $timestamp, - $nonce, - $ext = null, - $payload = null, - $contentType = null, - $hash = null, - $app = null, - $dlg = null + private $method, + private $host, + private $port, + private $resource, + private $timestamp, + private $nonce, + private $ext = null, + private $payload = null, + private $contentType = null, + private $hash = null, + private $app = null, + private $dlg = null ) { - $this->method = $method; - $this->host = $host; - $this->port = $port; - $this->resource = $resource; - $this->timestamp = $timestamp; - $this->nonce = $nonce; - $this->ext = $ext; - $this->payload = $payload; - $this->contentType = $contentType; - $this->hash = $hash; - $this->app = $app; - $this->dlg = $dlg; } public function timestamp() diff --git a/src/Crypto/Crypto.php b/src/Crypto/Crypto.php new file mode 100644 index 0000000..8e0db27 --- /dev/null +++ b/src/Crypto/Crypto.php @@ -0,0 +1,94 @@ +generateNormalizedString($type, $attributes); + + return base64_encode( + hash_hmac( + (string) $credentials->algorithm(), + (string) $normalized, + (string) $credentials->key(), + true + ) + ); + } + + public function calculateTsMac($ts, CredentialsInterface $credentials) + { + $normalized = 'hawk.' . self::HEADER_VERSION . '.ts' . "\n" . + $ts . "\n"; + + return base64_encode(hash_hmac( + (string) $credentials->algorithm(), + $normalized, + (string) $credentials->key(), + true + )); + } + + public function fixedTimeComparison($a, $b) + { + $mismatch = strlen((string) $a) === strlen((string) $b) ? 0 : 1; + if ($mismatch !== 0) { + $b = $a; + } + + for ($i = 0; $i < strlen((string) $a); $i++) { + $ac = $a[$i]; + $bc = $b[$i]; + $mismatch += $ac === $bc ? 0 : 1; + } + + return (0 === $mismatch); + } + + private function generateNormalizedString($type, Artifacts $attributes) + { + $normalized = 'hawk.' . self::HEADER_VERSION . '.' . $type . "\n" . + $attributes->timestamp() . "\n" . + $attributes->nonce() . "\n" . + strtoupper((string) $attributes->method()) . "\n" . + $attributes->resource() . "\n" . + strtolower((string) $attributes->host()) . "\n" . + $attributes->port() . "\n" . + $attributes->hash() . "\n"; + + if ($attributes->ext()) { + // TODO: escape ext + $normalized .= $attributes->ext(); + } + + $normalized .= "\n"; + + if ($attributes->app()) { + $normalized .= $attributes->app() . "\n" . + $attributes->dlg() . "\n"; + } + + return $normalized; + } +} diff --git a/src/Dflydev/Hawk/Crypto/Crypto.php b/src/Dflydev/Hawk/Crypto/Crypto.php deleted file mode 100644 index 1fa4f32..0000000 --- a/src/Dflydev/Hawk/Crypto/Crypto.php +++ /dev/null @@ -1,84 +0,0 @@ -generateNormalizedString($type, $attributes); - - return base64_encode(hash_hmac($credentials->algorithm(), $normalized, $credentials->key(), true)); - } - - public function calculateTsMac($ts, CredentialsInterface $credentials) - { - $normalized = 'hawk.'.self::HEADER_VERSION.'.ts'."\n". - $ts."\n"; - - return base64_encode(hash_hmac( - $credentials->algorithm(), - $normalized, - $credentials->key(), - true - )); - } - - public function fixedTimeComparison($a, $b) - { - $mismatch = strlen($a) === strlen($b) ? 0 : 1; - if ($mismatch) { - $b = $a; - } - - for ($i = 0; $i < strlen($a); $i++) { - $ac = $a[$i]; - $bc = $b[$i]; - $mismatch += $ac === $bc ? 0 : 1; - } - - return (0 === $mismatch); - } - - private function generateNormalizedString($type, Artifacts $attributes) - { - $normalized = 'hawk.'.self::HEADER_VERSION.'.'.$type."\n". - $attributes->timestamp()."\n". - $attributes->nonce()."\n". - strtoupper($attributes->method())."\n". - $attributes->resource()."\n". - strtolower($attributes->host())."\n". - $attributes->port()."\n". - $attributes->hash()."\n"; - - if ($attributes->ext()) { - // TODO: escape ext - $normalized .= $attributes->ext(); - } - - $normalized .= "\n"; - - if ($attributes->app()) { - $normalized .= $attributes->app()."\n". - $attributes->dlg()."\n"; - } - - return $normalized; - } -} diff --git a/src/Dflydev/Hawk/Header/FieldValueParserException.php b/src/Header/FieldValueParserException.php similarity index 100% rename from src/Dflydev/Hawk/Header/FieldValueParserException.php rename to src/Header/FieldValueParserException.php diff --git a/src/Dflydev/Hawk/Header/Header.php b/src/Header/Header.php similarity index 68% rename from src/Dflydev/Hawk/Header/Header.php rename to src/Header/Header.php index e1c1916..609d0fc 100644 --- a/src/Dflydev/Hawk/Header/Header.php +++ b/src/Header/Header.php @@ -4,15 +4,11 @@ class Header { - private $fieldName; - private $fieldValue; - private $attributes; - - public function __construct($fieldName, $fieldValue, array $attributes = null) - { - $this->fieldName = $fieldName; - $this->fieldValue = $fieldValue; - $this->attributes = $attributes ?: array(); + public function __construct( + private $fieldName, + private $fieldValue, + private array $attributes = [] + ) { } public function fieldName() @@ -31,7 +27,7 @@ public function attributes(array $keys = null) return $this->attributes; } - $attributes = array(); + $attributes = []; foreach ($keys as $key) { if (isset($this->attributes[$key])) { $attributes[$key] = $this->attributes[$key]; @@ -46,5 +42,7 @@ public function attribute($key) if (isset($this->attributes[$key])) { return $this->attributes[$key]; } + + return null; } } diff --git a/src/Dflydev/Hawk/Header/HeaderFactory.php b/src/Header/HeaderFactory.php similarity index 92% rename from src/Dflydev/Hawk/Header/HeaderFactory.php rename to src/Header/HeaderFactory.php index 1e511b0..14feddd 100644 --- a/src/Dflydev/Hawk/Header/HeaderFactory.php +++ b/src/Header/HeaderFactory.php @@ -15,7 +15,7 @@ public static function create($fieldName, array $attributes = null) $fieldValue .= ','; } - $fieldValue .= ' '.$key.'="'.$value.'"'; + $fieldValue .= ' ' . $key . '="' . $value . '"'; } } @@ -39,5 +39,6 @@ public static function createFromHeaderObjectOrString($fieldName, $headerObjectO } else { call_user_func($onError); } + return null; } } diff --git a/src/Dflydev/Hawk/Header/HeaderParser.php b/src/Header/HeaderParser.php similarity index 73% rename from src/Dflydev/Hawk/Header/HeaderParser.php rename to src/Header/HeaderParser.php index a423a50..6d32879 100644 --- a/src/Dflydev/Hawk/Header/HeaderParser.php +++ b/src/Header/HeaderParser.php @@ -6,12 +6,12 @@ class HeaderParser { public static function parseFieldValue($fieldValue, array $requiredKeys = null) { - if (0 !== strpos($fieldValue, 'Hawk')) { - throw new NotHawkAuthorizationException; + if (!str_starts_with((string) $fieldValue, 'Hawk')) { + throw new NotHawkAuthorizationException(); } - $attributes = array(); - $fieldValue = substr($fieldValue, 5); + $attributes = []; + $fieldValue = substr((string) $fieldValue, 5); foreach (explode(', ', $fieldValue) as $part) { $equalsPos = strpos($part, '='); $key = substr($part, 0, $equalsPos); @@ -20,16 +20,16 @@ public static function parseFieldValue($fieldValue, array $requiredKeys = null) } if (null !== $requiredKeys) { - $missingKeys = array(); + $missingKeys = []; foreach ($requiredKeys as $requiredKey) { if (!isset($attributes[$requiredKey])) { $missingKeys[] = $requiredKey; } } - if (count($missingKeys)) { + if ($missingKeys !== []) { throw new FieldValueParserException( - "Field value was missing the following required key(s): ".implode(', ', $missingKeys) + "Field value was missing the following required key(s): " . implode(', ', $missingKeys) ); } } diff --git a/src/Dflydev/Hawk/Header/NotHawkAuthorizationException.php b/src/Header/NotHawkAuthorizationException.php similarity index 100% rename from src/Dflydev/Hawk/Header/NotHawkAuthorizationException.php rename to src/Header/NotHawkAuthorizationException.php diff --git a/src/Dflydev/Hawk/Nonce/CallbackNonceValidator.php b/src/Nonce/CallbackNonceValidator.php similarity index 50% rename from src/Dflydev/Hawk/Nonce/CallbackNonceValidator.php rename to src/Nonce/CallbackNonceValidator.php index 62bb53f..e969d81 100644 --- a/src/Dflydev/Hawk/Nonce/CallbackNonceValidator.php +++ b/src/Nonce/CallbackNonceValidator.php @@ -4,15 +4,12 @@ class CallbackNonceValidator implements NonceValidatorInterface { - private $callback; - - public function __construct($callback) + public function __construct(private $callback) { - $this->callback = $callback; } public function validateNonce($nonce, $timestamp) { - return call_user_func_array($this->callback, array($nonce, $timestamp)); + return call_user_func_array($this->callback, [$nonce, $timestamp]); } } diff --git a/src/Dflydev/Hawk/Nonce/DefaultNonceProviderFactory.php b/src/Nonce/DefaultNonceProviderFactory.php similarity index 86% rename from src/Dflydev/Hawk/Nonce/DefaultNonceProviderFactory.php rename to src/Nonce/DefaultNonceProviderFactory.php index f0361db..4cb87ab 100644 --- a/src/Dflydev/Hawk/Nonce/DefaultNonceProviderFactory.php +++ b/src/Nonce/DefaultNonceProviderFactory.php @@ -8,7 +8,7 @@ class DefaultNonceProviderFactory { public static function create() { - $factory = new Factory; + $factory = new Factory(); return new NonceProvider($factory->getLowStrengthGenerator()); } diff --git a/src/Dflydev/Hawk/Nonce/NonceProvider.php b/src/Nonce/NonceProvider.php similarity index 73% rename from src/Dflydev/Hawk/Nonce/NonceProvider.php rename to src/Nonce/NonceProvider.php index 3d60a6a..6390c7e 100644 --- a/src/Dflydev/Hawk/Nonce/NonceProvider.php +++ b/src/Nonce/NonceProvider.php @@ -6,11 +6,8 @@ class NonceProvider implements NonceProviderInterface { - private $generator; - - public function __construct(Generator $generator) + public function __construct(private readonly Generator $generator) { - $this->generator = $generator; } public function createNonce() diff --git a/src/Dflydev/Hawk/Nonce/NonceProviderInterface.php b/src/Nonce/NonceProviderInterface.php similarity index 100% rename from src/Dflydev/Hawk/Nonce/NonceProviderInterface.php rename to src/Nonce/NonceProviderInterface.php diff --git a/src/Dflydev/Hawk/Nonce/NonceValidatorInterface.php b/src/Nonce/NonceValidatorInterface.php similarity index 100% rename from src/Dflydev/Hawk/Nonce/NonceValidatorInterface.php rename to src/Nonce/NonceValidatorInterface.php diff --git a/src/Dflydev/Hawk/Server/Response.php b/src/Server/Response.php similarity index 57% rename from src/Dflydev/Hawk/Server/Response.php rename to src/Server/Response.php index 6f15828..f8f344a 100644 --- a/src/Dflydev/Hawk/Server/Response.php +++ b/src/Server/Response.php @@ -7,13 +7,10 @@ class Response { - private $credentials; - private $artifacts; - - public function __construct(CredentialsInterface $credentials, Artifacts $artifacts) - { - $this->credentials = $credentials; - $this->artifacts = $artifacts; + public function __construct( + private readonly CredentialsInterface $credentials, + private readonly Artifacts $artifacts + ) { } public function credentials() diff --git a/src/Dflydev/Hawk/Server/Server.php b/src/Server/Server.php similarity index 85% rename from src/Dflydev/Hawk/Server/Server.php rename to src/Server/Server.php index 1a2bab1..a5e99ab 100644 --- a/src/Dflydev/Hawk/Server/Server.php +++ b/src/Server/Server.php @@ -7,28 +7,26 @@ use Dflydev\Hawk\Credentials\CredentialsProviderInterface; use Dflydev\Hawk\Crypto\Artifacts; use Dflydev\Hawk\Crypto\Crypto; -use Dflydev\Hawk\Header\Header; use Dflydev\Hawk\Header\HeaderFactory; use Dflydev\Hawk\Nonce\CallbackNonceValidator; use Dflydev\Hawk\Nonce\NonceValidatorInterface; use Dflydev\Hawk\Time\TimeProviderInterface; +/** + * @see \Dflydev\Hawk\Server\ServerTest + */ class Server implements ServerInterface { - private $crypto; private $credentialsProvider; - private $timeProvider; private $nonceValidator; - private $timestampSkewSec; - private $localtimeOffsetSec; public function __construct( - Crypto $crypto, + private readonly Crypto $crypto, $credentialsProvider, - TimeProviderInterface $timeProvider, + private readonly TimeProviderInterface $timeProvider, $nonceValidator, - $timestampSkewSec, - $localtimeOffsetSec + private $timestampSkewSec, + private $localtimeOffsetSec ) { if (!$credentialsProvider instanceof CredentialsProviderInterface) { if (is_callable($credentialsProvider)) { @@ -49,13 +47,8 @@ public function __construct( ); } } - - $this->crypto = $crypto; $this->credentialsProvider = $credentialsProvider; - $this->timeProvider = $timeProvider; $this->nonceValidator = $nonceValidator; - $this->timestampSkewSec = $timestampSkewSec; - $this->localtimeOffsetSec = $localtimeOffsetSec; } public function authenticate( @@ -74,7 +67,7 @@ public function authenticate( $header = HeaderFactory::createFromHeaderObjectOrString( 'Authorization', $headerObjectOrString, - function () { + function (): never { throw new UnauthorizedException("Invalid Authorization header"); } ); @@ -97,7 +90,7 @@ function () { $header->attribute('dlg') ); - foreach (array('id', 'ts', 'nonce', 'mac') as $requiredAttribute) { + foreach (['id', 'ts', 'nonce', 'mac'] as $requiredAttribute) { if (null === $header->attribute($requiredAttribute)) { throw new UnauthorizedException('Missing attributes'); } @@ -137,13 +130,13 @@ function () { $ts = $this->timeProvider->createTimestamp() + $this->localtimeOffsetSec; $tsm = $this->crypto->calculateTsMac($ts, $credentials); - throw new UnauthorizedException('Stale timestamp', array('ts' => $ts, 'tsm' => $tsm)); + throw new UnauthorizedException('Stale timestamp', ['ts' => $ts, 'tsm' => $tsm]); } return new Response($credentials, $artifacts); } - public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = array()) + public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = []) { if (isset($options['payload']) || isset($options['content_type'])) { if (isset($options['payload']) && isset($options['content_type'])) { @@ -161,7 +154,7 @@ public function createHeader(CredentialsInterface $credentials, Artifacts $artif $hash = null; } - $ext = isset($options['ext']) ? $options['ext'] : null; + $ext = $options['ext'] ?? null; $responseArtifacts = new Artifacts( $artifacts->method(), @@ -178,9 +171,7 @@ public function createHeader(CredentialsInterface $credentials, Artifacts $artif $artifacts->dlg() ); - $attributes = array( - 'mac' => $this->crypto->calculateMac('response', $credentials, $responseArtifacts), - ); + $attributes = ['mac' => $this->crypto->calculateMac('response', $credentials, $responseArtifacts)]; if ($hash !== null) { $attributes['hash'] = $hash; @@ -212,22 +203,24 @@ public function authenticateBewit( // Measure now before any other processing $now = $this->timeProvider->createTimestamp() + $this->localtimeOffsetSec; - if (!preg_match( - '/^(\/.*)([\?&])bewit\=([^&$]*)(?:&(.+))?$/', - $resource, - $resourceParts - )) { + if ( + !preg_match( + '/^(\/.*)([?&])bewit=([^&$]*)(?:&(.+))?$/', + (string) $resource, + $resourceParts + ) + ) { // TODO: Should this do something else? throw new UnauthorizedException('Malformed resource or does not contan bewit'); } $bewit = base64_decode(str_replace( - array('-', '_', '', ''), - array('+', '/', '=', "\n"), + ['-', '_', '', ''], + ['+', '/', '=', "\n"], $resourceParts[3] )); - list ($id, $exp, $mac, $ext) = explode('\\', $bewit); + [$id, $exp, $mac, $ext] = explode('\\', $bewit); if ($exp < $now) { throw new UnauthorizedException('Access expired'); @@ -235,7 +228,7 @@ public function authenticateBewit( $resource = $resourceParts[1]; if (isset($resourceParts[4])) { - $resource .= $resourceParts[2].$resourceParts[4]; + $resource .= $resourceParts[2] . $resourceParts[4]; } $artifacts = new Artifacts( diff --git a/src/Dflydev/Hawk/Server/ServerBuilder.php b/src/Server/ServerBuilder.php similarity index 84% rename from src/Dflydev/Hawk/Server/ServerBuilder.php rename to src/Server/ServerBuilder.php index 9c94c41..c4b1dc0 100644 --- a/src/Dflydev/Hawk/Server/ServerBuilder.php +++ b/src/Server/ServerBuilder.php @@ -9,15 +9,13 @@ class ServerBuilder { private $crypto; - private $credentialsProvider; private $timeProvider; private $nonceValidator; private $timestampSkewSec; private $localtimeOffsetSec; - public function __construct($credentialsProvider) + public function __construct(private $credentialsProvider) { - $this->credentialsProvider = $credentialsProvider; } public function setCrypto(Crypto $crypto) @@ -57,11 +55,9 @@ public function setLocaltimeOffsetSec($localtimeOffsetSec = null) public function build() { - $crypto = $this->crypto ?: new Crypto; + $crypto = $this->crypto ?: new Crypto(); $timeProvider = $this->timeProvider ?: DefaultTimeProviderFactory::create(); - $nonceValidator = $this->nonceValidator ?: function($nonce, $timestamp) { - return true; - }; + $nonceValidator = $this->nonceValidator ?: fn($nonce, $timestamp) => true; $timestampSkewSec = $this->timestampSkewSec ?: 60; $localtimeOffsetSec = $this->localtimeOffsetSec ?: 0; diff --git a/src/Dflydev/Hawk/Server/ServerInterface.php b/src/Server/ServerInterface.php similarity index 91% rename from src/Dflydev/Hawk/Server/ServerInterface.php rename to src/Server/ServerInterface.php index c1f4986..c307114 100644 --- a/src/Dflydev/Hawk/Server/ServerInterface.php +++ b/src/Server/ServerInterface.php @@ -16,7 +16,7 @@ public function authenticate( $payload = null, $headerObjectOrString = null ); - public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = array()); + public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = []); public function authenticatePayload( CredentialsInterface $credentials, $payload, diff --git a/src/Dflydev/Hawk/Server/UnauthorizedException.php b/src/Server/UnauthorizedException.php similarity index 83% rename from src/Dflydev/Hawk/Server/UnauthorizedException.php rename to src/Server/UnauthorizedException.php index 0324ff0..1b1700d 100644 --- a/src/Dflydev/Hawk/Server/UnauthorizedException.php +++ b/src/Server/UnauthorizedException.php @@ -12,7 +12,7 @@ class UnauthorizedException extends \Exception public function __construct($message = null, array $attributes = null) { parent::__construct($message); - $this->attributes = $attributes ?: array(); + $this->attributes = $attributes ?: []; } public function getHeader() @@ -22,7 +22,7 @@ public function getHeader() } $attributes = $this->attributes; - if ($this->getMessage()) { + if ($this->getMessage() !== '' && $this->getMessage() !== '0') { $attributes['error'] = $this->getMessage(); } diff --git a/src/Dflydev/Hawk/Time/ConstantTimeProvider.php b/src/Time/ConstantTimeProvider.php similarity index 68% rename from src/Dflydev/Hawk/Time/ConstantTimeProvider.php rename to src/Time/ConstantTimeProvider.php index 45d1a23..cdeb580 100644 --- a/src/Dflydev/Hawk/Time/ConstantTimeProvider.php +++ b/src/Time/ConstantTimeProvider.php @@ -4,11 +4,8 @@ class ConstantTimeProvider implements TimeProviderInterface { - private $time; - - public function __construct($time) + public function __construct(private $time) { - $this->time = $time; } public function createTimestamp() diff --git a/src/Dflydev/Hawk/Time/DefaultTimeProviderFactory.php b/src/Time/DefaultTimeProviderFactory.php similarity index 77% rename from src/Dflydev/Hawk/Time/DefaultTimeProviderFactory.php rename to src/Time/DefaultTimeProviderFactory.php index c475bea..1eb4274 100644 --- a/src/Dflydev/Hawk/Time/DefaultTimeProviderFactory.php +++ b/src/Time/DefaultTimeProviderFactory.php @@ -6,6 +6,6 @@ class DefaultTimeProviderFactory { public static function create() { - return new TimeProvider; + return new TimeProvider(); } } diff --git a/src/Dflydev/Hawk/Time/TimeProvider.php b/src/Time/TimeProvider.php similarity index 100% rename from src/Dflydev/Hawk/Time/TimeProvider.php rename to src/Time/TimeProvider.php diff --git a/src/Dflydev/Hawk/Time/TimeProviderInterface.php b/src/Time/TimeProviderInterface.php similarity index 100% rename from src/Dflydev/Hawk/Time/TimeProviderInterface.php rename to src/Time/TimeProviderInterface.php diff --git a/tests/unit/Dflydev/Hawk/Client/ClientTest.php b/tests/unit/Client/ClientTest.php similarity index 59% rename from tests/unit/Dflydev/Hawk/Client/ClientTest.php rename to tests/unit/Client/ClientTest.php index 7bd9cf5..d5699bc 100644 --- a/tests/unit/Dflydev/Hawk/Client/ClientTest.php +++ b/tests/unit/Client/ClientTest.php @@ -1,16 +1,15 @@ build(); @@ -21,15 +20,14 @@ public function shouldCreateBewit() 'exqbZWtykFZIh2D7cXi9dA' ); - $this->assertEquals( - 'ZXhxYlpXdHlrRlpJaDJEN2NYaTlkQVwxMzY4OTk2ODAwXE8wbWhwcmdvWHFGNDhEbHc1RldBV3ZWUUlwZ0dZc3FzWDc2dHBvNkt5cUk9XA', + $this->assertSame( + 'ZXhxYlpXdHlrRlpJaDJEN2NYaTlkQVwxMzY4OTk2ODAwXE8wbWhwcmdv' . + 'WHFGNDhEbHc1RldBV3ZWUUlwZ0dZc3FzWDc2dHBvNkt5cUk9XA', $client->createBewit( $tentTestVectorsCredentials, 'https://example.com/posts', 0, - array( - 'timestamp' => 1368996800, - ) + ['timestamp' => 1368996800] ) ); } diff --git a/tests/unit/Crypto/ArtifactsTest.php b/tests/unit/Crypto/ArtifactsTest.php new file mode 100644 index 0000000..5c4dda7 --- /dev/null +++ b/tests/unit/Crypto/ArtifactsTest.php @@ -0,0 +1,42 @@ +assertSame('testmethod', $artifacts->method()); + $this->assertSame('testhost', $artifacts->host()); + $this->assertSame('testport', $artifacts->port()); + $this->assertSame('testresource', $artifacts->resource()); + $this->assertSame('testtimestamp', $artifacts->timestamp()); + $this->assertSame('testnonce', $artifacts->nonce()); + $this->assertSame('testext', $artifacts->ext()); + $this->assertSame('testpayload', $artifacts->payload()); + $this->assertSame('testcontenttype', $artifacts->contentType()); + $this->assertSame('testhash', $artifacts->hash()); + $this->assertSame('testapp', $artifacts->app()); + $this->assertSame('testdlg', $artifacts->dlg()); + } +} diff --git a/tests/unit/Crypto/CryptoTest.php b/tests/unit/Crypto/CryptoTest.php new file mode 100644 index 0000000..d66417e --- /dev/null +++ b/tests/unit/Crypto/CryptoTest.php @@ -0,0 +1,215 @@ +calculatePayloadHash( + $payload, + $algorithm, + $contentType + ); + + $this->assertEquals($expectedHash, $calculatedHash); + } + + public static function payloadDataProvider(): Generator + { + yield [ + 'neQFHgYKl/jFqDINrC21uLS0gkFglTz789rzcSr7HYU=', + '{"type":"https://tent.io/types/status/v0#"}', + 'sha256', + 'application/vnd.tent.post.v0+json' + ]; + } + + #[Test] + #[DataProvider('macDataProvider')] + public function shouldCalculateMac( + $expectedMac, + $type, + CredentialsInterface $credentials, + Artifacts $artifacts + ) { + $crypto = new Crypto(); + + $calculatedMac = $crypto->calculateMac($type, $credentials, $artifacts); + + $this->assertEquals($expectedMac, $calculatedMac); + } + + public static function macDataProvider(): Generator + { + $tentTestVectorsCredentials = new Credentials( + 'HX9QcbD-r3ItFEnRcAuOSg', + 'sha256', + 'exqbZWtykFZIh2D7cXi9dA' + ); + + $tentTestVectorsAttributes = [ + 'method' => 'POST', + 'host' => 'example.com', + 'port' => 443, + 'resource' => '/posts', + 'timestamp' => 1368996800, + 'nonce' => '3yuYCD4Z', + 'payload' => '{"type":"https://tent.io/types/status/v0#"}', + 'content_type' => 'application/vnd.tent.post.v0+json', + 'hash' => 'neQFHgYKl/jFqDINrC21uLS0gkFglTz789rzcSr7HYU=' + ]; + yield [ + // + // App request w/hash + // + '2sttHCQJG9ejj1x7eCi35FP23Miu9VtlaUgwk68DTpM=', + 'header', + $tentTestVectorsCredentials, + new Artifacts( + $tentTestVectorsAttributes['method'], + $tentTestVectorsAttributes['host'], + $tentTestVectorsAttributes['port'], + $tentTestVectorsAttributes['resource'], + $tentTestVectorsAttributes['timestamp'], + $tentTestVectorsAttributes['nonce'], + null, + $tentTestVectorsAttributes['payload'], + $tentTestVectorsAttributes['content_type'], + $tentTestVectorsAttributes['hash'], + 'wn6yzHGe5TLaT-fvOPbAyQ' + ), + ]; + yield [ + // + // Server Response (App request w/hash) + // + 'lTG3kTBr33Y97Q4KQSSamu9WY/mOUKnZzq/ho9x+yxw=', + 'response', + $tentTestVectorsCredentials, + new Artifacts( + $tentTestVectorsAttributes['method'], + $tentTestVectorsAttributes['host'], + $tentTestVectorsAttributes['port'], + $tentTestVectorsAttributes['resource'], + $tentTestVectorsAttributes['timestamp'], + $tentTestVectorsAttributes['nonce'], + null, + null, + null, + null, + 'wn6yzHGe5TLaT-fvOPbAyQ' + ), + ]; + yield [ + // + // Relationship Request + // + 'OO2ldBDSw8KmNHlEdTC4BciIl8+uiuCRvCnJ9KkcR3Y=', + 'header', + $tentTestVectorsCredentials, + new Artifacts( + $tentTestVectorsAttributes['method'], + $tentTestVectorsAttributes['host'], + $tentTestVectorsAttributes['port'], + $tentTestVectorsAttributes['resource'], + $tentTestVectorsAttributes['timestamp'], + $tentTestVectorsAttributes['nonce'] + ), + ]; + yield [ + // + // Server Response w/ hash (Relationship Request) + // + 'LvxASIZ2gop5cwE2mNervvz6WXkPmVslwm11MDgEZ5E=', + 'response', + $tentTestVectorsCredentials, + new Artifacts( + $tentTestVectorsAttributes['method'], + $tentTestVectorsAttributes['host'], + $tentTestVectorsAttributes['port'], + $tentTestVectorsAttributes['resource'], + $tentTestVectorsAttributes['timestamp'], + $tentTestVectorsAttributes['nonce'], + null, + $tentTestVectorsAttributes['payload'], + $tentTestVectorsAttributes['content_type'], + $tentTestVectorsAttributes['hash'] + ), + ]; + yield [ + // + // Bewit (GET /posts) + // + 'O0mhprgoXqF48Dlw5FWAWvVQIpgGYsqsX76tpo6KyqI=', + 'bewit', + $tentTestVectorsCredentials, + new Artifacts( + 'GET', + $tentTestVectorsAttributes['host'], + $tentTestVectorsAttributes['port'], + $tentTestVectorsAttributes['resource'], + $tentTestVectorsAttributes['timestamp'], + '' + ), + ]; + } + + #[Test] + #[DataProvider('tsMacDataProvider')] + public function shouldCalculateTsMac( + $expectedTsMac, + $ts, + CredentialsInterface $credentials + ) { + $crypto = new Crypto(); + + $calculatedTsMac = $crypto->calculateTsMac($ts, $credentials); + + $this->assertEquals($expectedTsMac, $calculatedTsMac); + } + + public static function tsMacDataProvider(): Generator + { + $tentTestVectorsCredentials = new Credentials( + 'HX9QcbD-r3ItFEnRcAuOSg', + 'sha256', + 'exqbZWtykFZIh2D7cXi9dA' + ); + + $tentTestVectorsAttributes = [ + 'method' => 'POST', + 'host' => 'example.com', + 'port' => 443, + 'resource' => '/posts', + 'timestamp' => 1368996800, + 'nonce' => '3yuYCD4Z', + 'payload' => '{"type":"https://tent.io/types/status/v0#"}', + 'content_type' => 'application/vnd.tent.post.v0+json', + 'hash' => 'neQFHgYKl/jFqDINrC21uLS0gkFglTz789rzcSr7HYU=' + ]; + + yield [ + 'HPDcD5S3Kw7LM/oyoXKcgv2Z30RnOLAI5ebXpYDGfo4=', + $tentTestVectorsAttributes['timestamp'], + $tentTestVectorsCredentials + ]; + } +} diff --git a/tests/unit/Dflydev/Hawk/Crypto/ArtifactsTest.php b/tests/unit/Dflydev/Hawk/Crypto/ArtifactsTest.php deleted file mode 100644 index 4b608d7..0000000 --- a/tests/unit/Dflydev/Hawk/Crypto/ArtifactsTest.php +++ /dev/null @@ -1,38 +0,0 @@ -assertEquals('testmethod', $artifacts->method()); - $this->assertEquals('testhost', $artifacts->host()); - $this->assertEquals('testport', $artifacts->port()); - $this->assertEquals('testresource', $artifacts->resource()); - $this->assertEquals('testtimestamp', $artifacts->timestamp()); - $this->assertEquals('testnonce', $artifacts->nonce()); - $this->assertEquals('testext', $artifacts->ext()); - $this->assertEquals('testpayload', $artifacts->payload()); - $this->assertEquals('testcontenttype', $artifacts->contentType()); - $this->assertEquals('testhash', $artifacts->hash()); - $this->assertEquals('testapp', $artifacts->app()); - $this->assertEquals('testdlg', $artifacts->dlg()); - } -} diff --git a/tests/unit/Dflydev/Hawk/Crypto/CryptoTest.php b/tests/unit/Dflydev/Hawk/Crypto/CryptoTest.php deleted file mode 100644 index e4f5ade..0000000 --- a/tests/unit/Dflydev/Hawk/Crypto/CryptoTest.php +++ /dev/null @@ -1,238 +0,0 @@ -calculatePayloadHash( - $payload, - $algorithm, - $contentType - ); - - $this->assertEquals($expectedHash, $calculatedHash); - } - - public function payloadDataProvider() - { - return array( - array( - 'neQFHgYKl/jFqDINrC21uLS0gkFglTz789rzcSr7HYU=', - '{"type":"https://tent.io/types/status/v0#"}', - 'sha256', - 'application/vnd.tent.post.v0+json' - ) - ); - } - - /** - * @test - * @dataProvider macDataProvider - */ - public function shouldCalculateMac( - $expectedMac, - $type, - CredentialsInterface $credentials, - Artifacts $artifacts - ) { - $crypto = new Crypto; - - $calculatedMac = $crypto->calculateMac($type, $credentials, $artifacts); - - $this->assertEquals($expectedMac, $calculatedMac); - } - - public function macDataProvider() - { - $tentTestVectorsCredentials = new Credentials( - 'HX9QcbD-r3ItFEnRcAuOSg', - 'sha256', - 'exqbZWtykFZIh2D7cXi9dA' - ); - - $tentTestVectorsAttributes = array( - 'method' => 'POST', - 'host' => 'example.com', - 'port' => 443, - 'resource' => '/posts', - 'timestamp' => 1368996800, - 'nonce' => '3yuYCD4Z', - 'payload' => '{"type":"https://tent.io/types/status/v0#"}', - 'content_type' => 'application/vnd.tent.post.v0+json', - 'hash' => 'neQFHgYKl/jFqDINrC21uLS0gkFglTz789rzcSr7HYU=', - ); - - return array( - array( - - // - // App request w/hash - // - - '2sttHCQJG9ejj1x7eCi35FP23Miu9VtlaUgwk68DTpM=', - - 'header', - $tentTestVectorsCredentials, - new Artifacts( - $tentTestVectorsAttributes['method'], - $tentTestVectorsAttributes['host'], - $tentTestVectorsAttributes['port'], - $tentTestVectorsAttributes['resource'], - $tentTestVectorsAttributes['timestamp'], - $tentTestVectorsAttributes['nonce'], - null, - $tentTestVectorsAttributes['payload'], - $tentTestVectorsAttributes['content_type'], - $tentTestVectorsAttributes['hash'], - 'wn6yzHGe5TLaT-fvOPbAyQ' - ), - ), - array( - - // - // Server Response (App request w/hash) - // - - 'lTG3kTBr33Y97Q4KQSSamu9WY/mOUKnZzq/ho9x+yxw=', - - 'response', - $tentTestVectorsCredentials, - new Artifacts( - $tentTestVectorsAttributes['method'], - $tentTestVectorsAttributes['host'], - $tentTestVectorsAttributes['port'], - $tentTestVectorsAttributes['resource'], - $tentTestVectorsAttributes['timestamp'], - $tentTestVectorsAttributes['nonce'], - null, - null, - null, - null, - 'wn6yzHGe5TLaT-fvOPbAyQ' - ), - ), - array( - - // - // Relationship Request - // - - 'OO2ldBDSw8KmNHlEdTC4BciIl8+uiuCRvCnJ9KkcR3Y=', - - 'header', - $tentTestVectorsCredentials, - new Artifacts( - $tentTestVectorsAttributes['method'], - $tentTestVectorsAttributes['host'], - $tentTestVectorsAttributes['port'], - $tentTestVectorsAttributes['resource'], - $tentTestVectorsAttributes['timestamp'], - $tentTestVectorsAttributes['nonce'] - ), - ), - array( - - // - // Server Response w/ hash (Relationship Request) - // - - 'LvxASIZ2gop5cwE2mNervvz6WXkPmVslwm11MDgEZ5E=', - - 'response', - $tentTestVectorsCredentials, - new Artifacts( - $tentTestVectorsAttributes['method'], - $tentTestVectorsAttributes['host'], - $tentTestVectorsAttributes['port'], - $tentTestVectorsAttributes['resource'], - $tentTestVectorsAttributes['timestamp'], - $tentTestVectorsAttributes['nonce'], - null, - $tentTestVectorsAttributes['payload'], - $tentTestVectorsAttributes['content_type'], - $tentTestVectorsAttributes['hash'] - ), - ), - array( - - // - // Bewit (GET /posts) - // - - 'O0mhprgoXqF48Dlw5FWAWvVQIpgGYsqsX76tpo6KyqI=', - - 'bewit', - $tentTestVectorsCredentials, - new Artifacts( - 'GET', - $tentTestVectorsAttributes['host'], - $tentTestVectorsAttributes['port'], - $tentTestVectorsAttributes['resource'], - $tentTestVectorsAttributes['timestamp'], - '' - ), - ), - ); - } - - /** - * @test - * @dataProvider tsMacDataProvider - */ - public function shouldCalculateTsMac( - $expectedTsMac, - $ts, - CredentialsInterface $credentials - ) { - $crypto = new Crypto; - - $calculatedTsMac = $crypto->calculateTsMac($ts, $credentials); - - $this->assertEquals($expectedTsMac, $calculatedTsMac); - } - - public function tsMacDataProvider() - { - $tentTestVectorsCredentials = new Credentials( - 'HX9QcbD-r3ItFEnRcAuOSg', - 'sha256', - 'exqbZWtykFZIh2D7cXi9dA' - ); - - $tentTestVectorsAttributes = array( - 'method' => 'POST', - 'host' => 'example.com', - 'port' => 443, - 'resource' => '/posts', - 'timestamp' => 1368996800, - 'nonce' => '3yuYCD4Z', - 'payload' => '{"type":"https://tent.io/types/status/v0#"}', - 'content_type' => 'application/vnd.tent.post.v0+json', - 'hash' => 'neQFHgYKl/jFqDINrC21uLS0gkFglTz789rzcSr7HYU=', - ); - - return array( - array( - 'HPDcD5S3Kw7LM/oyoXKcgv2Z30RnOLAI5ebXpYDGfo4=', - - $tentTestVectorsAttributes['timestamp'], - $tentTestVectorsCredentials, - ), - ); - } -} diff --git a/tests/unit/Dflydev/Hawk/Server/ServerTest.php b/tests/unit/Dflydev/Hawk/Server/ServerTest.php deleted file mode 100644 index b9a6da0..0000000 --- a/tests/unit/Dflydev/Hawk/Server/ServerTest.php +++ /dev/null @@ -1,35 +0,0 @@ -setTimeProvider(new ConstantTimeProvider(1368996800)) - ->build(); - - $response = $server->authenticateBewit( - 'example.com', - 443, - '/posts?bewit=ZXhxYlpXdHlrRlpJaDJEN2NYaTlkQVwxMzY4OTk2ODAwXE8wbWhwcmdvWHFGNDhEbHc1RldBV3ZWUUlwZ0dZc3FzWDc2dHBvNkt5cUk9XA' - ); - - $this->assertEquals('/posts', $response->artifacts()->resource()); - } -} diff --git a/tests/unit/Server/ServerTest.php b/tests/unit/Server/ServerTest.php new file mode 100644 index 0000000..c7bc21b --- /dev/null +++ b/tests/unit/Server/ServerTest.php @@ -0,0 +1,35 @@ + new Credentials( + 'HX9QcbD-r3ItFEnRcAuOSg', + 'sha256', + 'exqbZWtykFZIh2D7cXi9dA' + ); + + $server = ServerBuilder::create($credentialsProvider) + ->setTimeProvider(new ConstantTimeProvider(1368996800)) + ->build(); + + $response = $server->authenticateBewit( + 'example.com', + 443, + '/posts?bewit=ZXhxYlpXdHlrRlpJaDJEN2NYaTlkQVwxMzY4OTk2' . + 'ODAwXE8wbWhwcmdvWHFGNDhEbHc1RldBV3ZWUUlwZ0dZc3FzWDc2dHBvNkt5cUk9XA' + ); + + $this->assertSame('/posts', $response->artifacts()->resource()); + } +} From 60e35f07c664c7b65bdf5863dbcc9e1d64d0ed12 Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 19:45:50 +0100 Subject: [PATCH 02/10] [master] type all class properties and function parameters --- CHANGELOG.md | 1 + composer.json | 9 +- composer.lock | 102 +++++++++++++++++- phpstan-baseline.neon | 11 ++ phpstan.neon.dist | 16 +++ rector.config.php | 6 ++ src/Client/Client.php | 13 +-- src/Client/ClientBuilder.php | 20 ++-- src/Client/ClientInterface.php | 2 +- src/Client/Request.php | 4 +- .../CallbackCredentialsProvider.php | 2 +- src/Credentials/Credentials.php | 8 +- src/Credentials/CredentialsInterface.php | 6 +- .../CredentialsProviderInterface.php | 2 +- src/Crypto/Crypto.php | 22 ++-- src/Header/FieldValueParserException.php | 4 +- src/Header/Header.php | 18 ++-- src/Header/HeaderFactory.php | 4 +- src/Header/HeaderParser.php | 2 +- src/Header/NotHawkAuthorizationException.php | 4 +- src/Nonce/CallbackNonceValidator.php | 2 +- src/Nonce/DefaultNonceProviderFactory.php | 2 +- src/Nonce/NonceValidatorInterface.php | 2 +- src/Server/Response.php | 4 +- src/Server/Server.php | 46 ++------ src/Server/ServerBuilder.php | 28 ++--- src/Server/ServerInterface.php | 22 ++-- src/Server/UnauthorizedException.php | 8 +- src/Time/ConstantTimeProvider.php | 2 +- src/Time/DefaultTimeProviderFactory.php | 2 +- src/Time/TimeProvider.php | 2 +- src/Time/TimeProviderInterface.php | 2 +- tests/unit/Client/ClientTest.php | 2 +- tests/unit/Crypto/ArtifactsTest.php | 2 +- tests/unit/Crypto/CryptoTest.php | 28 ++--- tests/unit/Server/ServerTest.php | 4 +- 36 files changed, 266 insertions(+), 148 deletions(-) create mode 100644 phpstan-baseline.neon create mode 100644 phpstan.neon.dist diff --git a/CHANGELOG.md b/CHANGELOG.md index 20583a6..fc769b7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Breaking Changes - PHP 8.1 is now required +- All class properties and function parameters are now typed ### Fixed diff --git a/composer.json b/composer.json index c6d013b..aea4709 100644 --- a/composer.json +++ b/composer.json @@ -33,16 +33,16 @@ "rector/rector": "^1.0", "roave/security-advisories": "dev-latest", "phpunit/phpunit": "^11.0", - "squizlabs/php_codesniffer": "^3.9" + "squizlabs/php_codesniffer": "^3.9", + "phpstan/phpstan": "^1.10", + "phpstan/phpstan-phpunit": "^1.3", + "phpstan/phpstan-deprecation-rules": "^1.1" }, "extra": { "branch-alias": { "dev-master": "1.0.x-dev" } }, - "archive": { - "exclude": ["data", "tests", "rector.config.php"] - }, "scripts": { "check" : [ "@cs-check", @@ -50,6 +50,7 @@ ], "cs-check" : "phpcs --parallel=50", "cs-fix" : "phpcbf", + "phpstan": "phpstan analyse", "rector": [ "rector --config=rector.config.php", "@cs-fix" diff --git a/composer.lock b/composer.lock index 9d5385a..dcebff2 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "1b3faeb5c339f1f70e3b0b5dfadc8067", + "content-hash": "480fe45125c5add6ac6d55b6594baf99", "packages": [ { "name": "ircmaxell/random-lib", @@ -405,6 +405,106 @@ ], "time": "2024-02-20T13:59:13+00:00" }, + { + "name": "phpstan/phpstan-deprecation-rules", + "version": "1.1.4", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.10.3" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-php-parser": "^1.1", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", + "support": { + "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" + }, + "time": "2023-08-05T09:02:04+00:00" + }, + { + "name": "phpstan/phpstan-phpunit", + "version": "1.3.16", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-phpunit.git", + "reference": "d5242a59d035e46774f2e634b374bc39ff62cb95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/d5242a59d035e46774f2e634b374bc39ff62cb95", + "reference": "d5242a59d035e46774f2e634b374bc39ff62cb95", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.10" + }, + "conflict": { + "phpunit/phpunit": "<7.0" + }, + "require-dev": { + "nikic/php-parser": "^4.13.0", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-strict-rules": "^1.5.1", + "phpunit/phpunit": "^9.5" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "extension.neon", + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "PHPUnit extensions and rules for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-phpunit/issues", + "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.16" + }, + "time": "2024-02-23T09:51:20+00:00" + }, { "name": "phpunit/php-code-coverage", "version": "11.0.1", diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon new file mode 100644 index 0000000..51ee5ab --- /dev/null +++ b/phpstan-baseline.neon @@ -0,0 +1,11 @@ +parameters: + ignoreErrors: + - + message: "#^Unsafe usage of new static\\(\\)\\.$#" + count: 1 + path: src/Client/ClientBuilder.php + + - + message: "#^Unsafe usage of new static\\(\\)\\.$#" + count: 1 + path: src/Server/ServerBuilder.php diff --git a/phpstan.neon.dist b/phpstan.neon.dist new file mode 100644 index 0000000..8188701 --- /dev/null +++ b/phpstan.neon.dist @@ -0,0 +1,16 @@ +includes: + - phpstan-baseline.neon + - vendor/phpstan/phpstan-phpunit/extension.neon + - vendor/phpstan/phpstan-phpunit/rules.neon + - vendor/phpstan/phpstan-deprecation-rules/rules.neon + +parameters: + tmpDir: data/phpstan + cache: + nodesByStringCountMax: 0 + level: 5 + fileExtensions: + - php + paths: + - src + - tests diff --git a/rector.config.php b/rector.config.php index 0a47752..93eec1f 100644 --- a/rector.config.php +++ b/rector.config.php @@ -7,6 +7,9 @@ use Rector\Set\ValueObject\DowngradeLevelSetList; use Rector\Set\ValueObject\LevelSetList; use Rector\Set\ValueObject\SetList; +use Rector\TypeDeclaration\Rector\ClassMethod\AddParamTypeDeclarationRector; +use Rector\TypeDeclaration\Rector\ClassMethod\AddReturnTypeDeclarationRector; +use Rector\TypeDeclaration\Rector\Property\AddPropertyTypeDeclarationRector; return static function (RectorConfig $rectorConfig): void { $rectorConfig->paths( @@ -23,6 +26,9 @@ LevelSetList::UP_TO_PHP_81, DowngradeLevelSetList::DOWN_TO_PHP_81, SetList::CODE_QUALITY, + SetList::TYPE_DECLARATION, ] ); + + $rectorConfig->importNames(); }; diff --git a/src/Client/Client.php b/src/Client/Client.php index 3fab8cb..b318cab 100644 --- a/src/Client/Client.php +++ b/src/Client/Client.php @@ -2,6 +2,7 @@ namespace Dflydev\Hawk\Client; +use InvalidArgumentException; use Dflydev\Hawk\Credentials\CredentialsInterface; use Dflydev\Hawk\Crypto\Artifacts; use Dflydev\Hawk\Crypto\Crypto; @@ -25,7 +26,7 @@ public function __construct( ) { } - public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = []) + public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = []): Request { $timestamp = $options['timestamp'] ?? $this->timeProvider->createTimestamp(); if ($this->localtimeOffset) { @@ -50,7 +51,7 @@ public function createRequest(CredentialsInterface $credentials, $uri, $method, $contentType = $options['content_type']; $hash = $this->crypto->calculatePayloadHash($payload, $credentials->algorithm(), $contentType); } else { - throw new \InvalidArgumentException( + throw new InvalidArgumentException( "If one of 'payload' and 'content_type' are specified, both must be specified." ); } @@ -107,12 +108,12 @@ public function authenticate( Request $request, $headerObjectOrString, array $options = [] - ) { + ): bool { $header = HeaderFactory::createFromHeaderObjectOrString( 'Server-Authorization', $headerObjectOrString, function (): never { - throw new \InvalidArgumentException( + throw new InvalidArgumentException( 'Header must either be a string or an instance of "Dflydev\Hawk\Header\Header"' ); } @@ -123,7 +124,7 @@ function (): never { $payload = $options['payload']; $contentType = $options['content_type']; } else { - throw new \InvalidArgumentException( + throw new InvalidArgumentException( 'If one of "payload" and "content_type" are specified, both must be specified.' ); } @@ -168,7 +169,7 @@ function (): never { return $artifacts->hash() === $hash; } - public function createBewit(CredentialsInterface $credentials, $uri, $ttlSec, array $options = []) + public function createBewit(CredentialsInterface $credentials, $uri, $ttlSec, array $options = []): string { $timestamp = $options['timestamp'] ?? $this->timeProvider->createTimestamp(); if ($this->localtimeOffset) { diff --git a/src/Client/ClientBuilder.php b/src/Client/ClientBuilder.php index 27aa691..a45be10 100644 --- a/src/Client/ClientBuilder.php +++ b/src/Client/ClientBuilder.php @@ -10,40 +10,40 @@ class ClientBuilder { - private $crypto; - private $timeProvider; - private $nonceProvider; - private $localtimeOffset = 0; + private ?Crypto $crypto = null; + private ?TimeProviderInterface $timeProvider = null; + private ?NonceProviderInterface $nonceProvider = null; + private int $localtimeOffset = 0; - public function setCrypto(Crypto $crypto) + public function setCrypto(Crypto $crypto): static { $this->crypto = $crypto; return $this; } - public function setTimeProvider(TimeProviderInterface $timeProvider) + public function setTimeProvider(TimeProviderInterface $timeProvider): static { $this->timeProvider = $timeProvider; return $this; } - public function setNonceProvider(NonceProviderInterface $nonceProvider) + public function setNonceProvider(NonceProviderInterface $nonceProvider): static { $this->nonceProvider = $nonceProvider; return $this; } - public function setLocaltimeOffset($localtimeOffset = null) + public function setLocaltimeOffset(int $localtimeOffset = null): static { $this->localtimeOffset = $localtimeOffset; return $this; } - public function build() + public function build(): Client { $crypto = $this->crypto ?: new Crypto(); $timeProvider = $this->timeProvider ?: DefaultTimeProviderFactory::create(); @@ -57,7 +57,7 @@ public function build() ); } - public static function create() + public static function create(): static { return new static(); } diff --git a/src/Client/ClientInterface.php b/src/Client/ClientInterface.php index 9a59a2e..677a3e6 100644 --- a/src/Client/ClientInterface.php +++ b/src/Client/ClientInterface.php @@ -6,7 +6,7 @@ interface ClientInterface { - public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = []); + public function createRequest(CredentialsInterface $credentials, string $uri, string $method, array $options = []); public function authenticate( CredentialsInterface $credentials, Request $request, diff --git a/src/Client/Request.php b/src/Client/Request.php index 3e1f5f8..7bc4d32 100644 --- a/src/Client/Request.php +++ b/src/Client/Request.php @@ -11,12 +11,12 @@ public function __construct(private readonly Header $header, private readonly Ar { } - public function header() + public function header(): Header { return $this->header; } - public function artifacts() + public function artifacts(): Artifacts { return $this->artifacts; } diff --git a/src/Credentials/CallbackCredentialsProvider.php b/src/Credentials/CallbackCredentialsProvider.php index 079993e..686bb4c 100644 --- a/src/Credentials/CallbackCredentialsProvider.php +++ b/src/Credentials/CallbackCredentialsProvider.php @@ -8,7 +8,7 @@ public function __construct(private $callback) { } - public function loadCredentialsById($id) + public function loadCredentialsById(string $id): CredentialsInterface { return call_user_func($this->callback, $id); } diff --git a/src/Credentials/Credentials.php b/src/Credentials/Credentials.php index fff61de..b4708c5 100644 --- a/src/Credentials/Credentials.php +++ b/src/Credentials/Credentials.php @@ -4,21 +4,21 @@ class Credentials implements CredentialsInterface { - public function __construct(private $key, private $algorithm = 'sha256', private $id = null) + public function __construct(private string $key, private string $algorithm = 'sha256', private ?string $id = null) { } - public function id() + public function id(): ?string { return $this->id; } - public function key() + public function key(): string { return $this->key; } - public function algorithm() + public function algorithm(): string { return $this->algorithm; } diff --git a/src/Credentials/CredentialsInterface.php b/src/Credentials/CredentialsInterface.php index a32fe52..5e7000c 100644 --- a/src/Credentials/CredentialsInterface.php +++ b/src/Credentials/CredentialsInterface.php @@ -4,7 +4,7 @@ interface CredentialsInterface { - public function key(); - public function algorithm(); - public function id(); + public function key(): string; + public function algorithm(): string; + public function id(): ?string; } diff --git a/src/Credentials/CredentialsProviderInterface.php b/src/Credentials/CredentialsProviderInterface.php index 992f10d..2516927 100644 --- a/src/Credentials/CredentialsProviderInterface.php +++ b/src/Credentials/CredentialsProviderInterface.php @@ -4,5 +4,5 @@ interface CredentialsProviderInterface { - public function loadCredentialsById($id); + public function loadCredentialsById(string $id): CredentialsInterface; } diff --git a/src/Crypto/Crypto.php b/src/Crypto/Crypto.php index 8e0db27..4029c79 100644 --- a/src/Crypto/Crypto.php +++ b/src/Crypto/Crypto.php @@ -11,7 +11,7 @@ class Crypto { public const HEADER_VERSION = 1; - public function calculatePayloadHash($payload, $algorithm, $contentType) + public function calculatePayloadHash(string $payload, $algorithm, $contentType): string { [$contentType] = explode(';', (string) $contentType); $contentType = strtolower(trim($contentType)); @@ -23,34 +23,34 @@ public function calculatePayloadHash($payload, $algorithm, $contentType) return base64_encode(hash((string) $algorithm, $normalized, true)); } - public function calculateMac($type, CredentialsInterface $credentials, Artifacts $attributes) + public function calculateMac(string $type, CredentialsInterface $credentials, Artifacts $attributes): string { $normalized = $this->generateNormalizedString($type, $attributes); return base64_encode( hash_hmac( - (string) $credentials->algorithm(), - (string) $normalized, - (string) $credentials->key(), + $credentials->algorithm(), + $normalized, + $credentials->key(), true ) ); } - public function calculateTsMac($ts, CredentialsInterface $credentials) + public function calculateTsMac(int $timestamp, CredentialsInterface $credentials): string { $normalized = 'hawk.' . self::HEADER_VERSION . '.ts' . "\n" . - $ts . "\n"; + $timestamp . "\n"; return base64_encode(hash_hmac( - (string) $credentials->algorithm(), + $credentials->algorithm(), $normalized, - (string) $credentials->key(), + $credentials->key(), true )); } - public function fixedTimeComparison($a, $b) + public function fixedTimeComparison($a, $b): bool { $mismatch = strlen((string) $a) === strlen((string) $b) ? 0 : 1; if ($mismatch !== 0) { @@ -66,7 +66,7 @@ public function fixedTimeComparison($a, $b) return (0 === $mismatch); } - private function generateNormalizedString($type, Artifacts $attributes) + private function generateNormalizedString(string $type, Artifacts $attributes): string { $normalized = 'hawk.' . self::HEADER_VERSION . '.' . $type . "\n" . $attributes->timestamp() . "\n" . diff --git a/src/Header/FieldValueParserException.php b/src/Header/FieldValueParserException.php index 92cff34..3a4a849 100644 --- a/src/Header/FieldValueParserException.php +++ b/src/Header/FieldValueParserException.php @@ -2,6 +2,8 @@ namespace Dflydev\Hawk\Header; -class FieldValueParserException extends \Exception +use Exception; + +class FieldValueParserException extends Exception { } diff --git a/src/Header/Header.php b/src/Header/Header.php index 609d0fc..d6a0903 100644 --- a/src/Header/Header.php +++ b/src/Header/Header.php @@ -5,23 +5,23 @@ class Header { public function __construct( - private $fieldName, - private $fieldValue, + private string $fieldName, + private string $fieldValue, private array $attributes = [] ) { } - public function fieldName() + public function fieldName(): string { return $this->fieldName; } - public function fieldValue() + public function fieldValue(): string { return $this->fieldValue; } - public function attributes(array $keys = null) + public function attributes(array $keys = null): array { if (null === $keys) { return $this->attributes; @@ -37,12 +37,8 @@ public function attributes(array $keys = null) return $attributes; } - public function attribute($key) + public function attribute($key): ?string { - if (isset($this->attributes[$key])) { - return $this->attributes[$key]; - } - - return null; + return $this->attributes[$key] ?? null; } } diff --git a/src/Header/HeaderFactory.php b/src/Header/HeaderFactory.php index 14feddd..b3adbe3 100644 --- a/src/Header/HeaderFactory.php +++ b/src/Header/HeaderFactory.php @@ -4,7 +4,7 @@ class HeaderFactory { - public static function create($fieldName, array $attributes = null) + public static function create($fieldName, array $attributes = null): Header { $fieldValue = 'Hawk'; @@ -22,7 +22,7 @@ public static function create($fieldName, array $attributes = null) return new Header($fieldName, $fieldValue, $attributes); } - public static function createFromString($fieldName, $fieldValue, array $requiredKeys = null) + public static function createFromString($fieldName, $fieldValue, array $requiredKeys = null): Header { return static::create( $fieldName, diff --git a/src/Header/HeaderParser.php b/src/Header/HeaderParser.php index 6d32879..bf1bf47 100644 --- a/src/Header/HeaderParser.php +++ b/src/Header/HeaderParser.php @@ -4,7 +4,7 @@ class HeaderParser { - public static function parseFieldValue($fieldValue, array $requiredKeys = null) + public static function parseFieldValue($fieldValue, array $requiredKeys = null): array { if (!str_starts_with((string) $fieldValue, 'Hawk')) { throw new NotHawkAuthorizationException(); diff --git a/src/Header/NotHawkAuthorizationException.php b/src/Header/NotHawkAuthorizationException.php index 71d33fc..f3c3226 100644 --- a/src/Header/NotHawkAuthorizationException.php +++ b/src/Header/NotHawkAuthorizationException.php @@ -2,7 +2,9 @@ namespace Dflydev\Hawk\Header; -class NotHawkAuthorizationException extends \Exception +use Exception; + +class NotHawkAuthorizationException extends Exception { public function __construct() { diff --git a/src/Nonce/CallbackNonceValidator.php b/src/Nonce/CallbackNonceValidator.php index e969d81..4b7e69a 100644 --- a/src/Nonce/CallbackNonceValidator.php +++ b/src/Nonce/CallbackNonceValidator.php @@ -8,7 +8,7 @@ public function __construct(private $callback) { } - public function validateNonce($nonce, $timestamp) + public function validateNonce(string $nonce, int $timestamp) { return call_user_func_array($this->callback, [$nonce, $timestamp]); } diff --git a/src/Nonce/DefaultNonceProviderFactory.php b/src/Nonce/DefaultNonceProviderFactory.php index 4cb87ab..bddd9c9 100644 --- a/src/Nonce/DefaultNonceProviderFactory.php +++ b/src/Nonce/DefaultNonceProviderFactory.php @@ -6,7 +6,7 @@ class DefaultNonceProviderFactory { - public static function create() + public static function create(): NonceProvider { $factory = new Factory(); diff --git a/src/Nonce/NonceValidatorInterface.php b/src/Nonce/NonceValidatorInterface.php index 2a8f9c6..5aa582e 100644 --- a/src/Nonce/NonceValidatorInterface.php +++ b/src/Nonce/NonceValidatorInterface.php @@ -4,5 +4,5 @@ interface NonceValidatorInterface { - public function validateNonce($nonce, $timestamp); + public function validateNonce(string $nonce, int $timestamp); } diff --git a/src/Server/Response.php b/src/Server/Response.php index f8f344a..73a9510 100644 --- a/src/Server/Response.php +++ b/src/Server/Response.php @@ -13,12 +13,12 @@ public function __construct( ) { } - public function credentials() + public function credentials(): CredentialsInterface { return $this->credentials; } - public function artifacts() + public function artifacts(): Artifacts { return $this->artifacts; } diff --git a/src/Server/Server.php b/src/Server/Server.php index a5e99ab..04cd2e4 100644 --- a/src/Server/Server.php +++ b/src/Server/Server.php @@ -2,53 +2,29 @@ namespace Dflydev\Hawk\Server; -use Dflydev\Hawk\Credentials\CallbackCredentialsProvider; use Dflydev\Hawk\Credentials\CredentialsInterface; use Dflydev\Hawk\Credentials\CredentialsProviderInterface; use Dflydev\Hawk\Crypto\Artifacts; use Dflydev\Hawk\Crypto\Crypto; +use Dflydev\Hawk\Header\Header; use Dflydev\Hawk\Header\HeaderFactory; -use Dflydev\Hawk\Nonce\CallbackNonceValidator; use Dflydev\Hawk\Nonce\NonceValidatorInterface; use Dflydev\Hawk\Time\TimeProviderInterface; +use InvalidArgumentException; /** * @see \Dflydev\Hawk\Server\ServerTest */ class Server implements ServerInterface { - private $credentialsProvider; - private $nonceValidator; - public function __construct( private readonly Crypto $crypto, - $credentialsProvider, + private readonly CredentialsProviderInterface $credentialsProvider, private readonly TimeProviderInterface $timeProvider, - $nonceValidator, - private $timestampSkewSec, - private $localtimeOffsetSec + private readonly NonceValidatorInterface $nonceValidator, + private int $timestampSkewSec, + private int $localtimeOffsetSec ) { - if (!$credentialsProvider instanceof CredentialsProviderInterface) { - if (is_callable($credentialsProvider)) { - $credentialsProvider = new CallbackCredentialsProvider($credentialsProvider); - } else { - throw new \InvalidArgumentException( - "Credentials provider must implement CredentialsProviderInterface or must be callable" - ); - } - } - - if (!$nonceValidator instanceof NonceValidatorInterface) { - if (is_callable($nonceValidator)) { - $nonceValidator = new CallbackNonceValidator($nonceValidator); - } else { - throw new \InvalidArgumentException( - "Nonce validator must implement NonceValidatorInterface or must be callable" - ); - } - } - $this->credentialsProvider = $credentialsProvider; - $this->nonceValidator = $nonceValidator; } public function authenticate( @@ -59,7 +35,7 @@ public function authenticate( $contentType = null, $payload = null, $headerObjectOrString = null - ) { + ): Response { if (null === $headerObjectOrString) { throw new UnauthorizedException("Missing Authorization header"); } @@ -136,7 +112,7 @@ function (): never { return new Response($credentials, $artifacts); } - public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = []) + public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = []): Header { if (isset($options['payload']) || isset($options['content_type'])) { if (isset($options['payload']) && isset($options['content_type'])) { @@ -144,7 +120,7 @@ public function createHeader(CredentialsInterface $credentials, Artifacts $artif $contentType = $options['content_type']; $hash = $this->crypto->calculatePayloadHash($payload, $credentials->algorithm(), $contentType); } else { - throw new \InvalidArgumentException( + throw new InvalidArgumentException( "If one of 'payload' and 'content_type' are specified, both must be specified." ); } @@ -189,7 +165,7 @@ public function authenticatePayload( $payload, $contentType, $hash - ) { + ): bool { $calculatedHash = $this->crypto->calculatePayloadHash($payload, $credentials->algorithm(), $contentType); return $this->crypto->fixedTimeComparison($calculatedHash, $hash); @@ -199,7 +175,7 @@ public function authenticateBewit( $host, $port, $resource - ) { + ): Response { // Measure now before any other processing $now = $this->timeProvider->createTimestamp() + $this->localtimeOffsetSec; diff --git a/src/Server/ServerBuilder.php b/src/Server/ServerBuilder.php index c4b1dc0..f0f9706 100644 --- a/src/Server/ServerBuilder.php +++ b/src/Server/ServerBuilder.php @@ -3,61 +3,63 @@ namespace Dflydev\Hawk\Server; use Dflydev\Hawk\Crypto\Crypto; +use Dflydev\Hawk\Nonce\CallbackNonceValidator; +use Dflydev\Hawk\Nonce\NonceValidatorInterface; use Dflydev\Hawk\Time\DefaultTimeProviderFactory; use Dflydev\Hawk\Time\TimeProviderInterface; class ServerBuilder { - private $crypto; - private $timeProvider; - private $nonceValidator; - private $timestampSkewSec; - private $localtimeOffsetSec; + private ?Crypto $crypto = null; + private ?TimeProviderInterface $timeProvider = null; + private ?NonceValidatorInterface $nonceValidator = null; + private ?int $timestampSkewSec = null; + private ?int $localtimeOffsetSec = null; public function __construct(private $credentialsProvider) { } - public function setCrypto(Crypto $crypto) + public function setCrypto(Crypto $crypto): static { $this->crypto = $crypto; return $this; } - public function setTimeProvider(TimeProviderInterface $timeProvider) + public function setTimeProvider(TimeProviderInterface $timeProvider): static { $this->timeProvider = $timeProvider; return $this; } - public function setNonceValidator($nonceValidator) + public function setNonceValidator(NonceValidatorInterface $nonceValidator): static { $this->nonceValidator = $nonceValidator; return $this; } - public function setTimestampSkewSec($timestampSkewSec = null) + public function setTimestampSkewSec(?int $timestampSkewSec = null): static { $this->timestampSkewSec = $timestampSkewSec; return $this; } - public function setLocaltimeOffsetSec($localtimeOffsetSec = null) + public function setLocaltimeOffsetSec(?int $localtimeOffsetSec = null): static { $this->localtimeOffsetSec = $localtimeOffsetSec; return $this; } - public function build() + public function build(): Server { $crypto = $this->crypto ?: new Crypto(); $timeProvider = $this->timeProvider ?: DefaultTimeProviderFactory::create(); - $nonceValidator = $this->nonceValidator ?: fn($nonce, $timestamp) => true; + $nonceValidator = $this->nonceValidator ?: new CallbackNonceValidator(fn(string $nonce, int $timestamp): bool => true); $timestampSkewSec = $this->timestampSkewSec ?: 60; $localtimeOffsetSec = $this->localtimeOffsetSec ?: 0; @@ -71,7 +73,7 @@ public function build() ); } - public static function create($credentialsProvider) + public static function create($credentialsProvider): static { return new static($credentialsProvider); } diff --git a/src/Server/ServerInterface.php b/src/Server/ServerInterface.php index c307114..d502a5e 100644 --- a/src/Server/ServerInterface.php +++ b/src/Server/ServerInterface.php @@ -8,19 +8,21 @@ interface ServerInterface { public function authenticate( - $method, - $host, - $port, - $resource, - $contentType = null, - $payload = null, - $headerObjectOrString = null + string $method, + string $host, + int $port, + string $resource, + string $contentType = null, + mixed $payload = null, + mixed $headerObjectOrString = null ); + public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = []); + public function authenticatePayload( CredentialsInterface $credentials, - $payload, - $contentType, - $hash + mixed $payload, + string $contentType, + string $hash ); } diff --git a/src/Server/UnauthorizedException.php b/src/Server/UnauthorizedException.php index 1b1700d..92b8573 100644 --- a/src/Server/UnauthorizedException.php +++ b/src/Server/UnauthorizedException.php @@ -2,12 +2,14 @@ namespace Dflydev\Hawk\Server; +use Exception; +use Dflydev\Hawk\Header\Header; use Dflydev\Hawk\Header\HeaderFactory; -class UnauthorizedException extends \Exception +class UnauthorizedException extends Exception { - private $attributes; - private $header; + private array $attributes; + private ?Header $header = null; public function __construct($message = null, array $attributes = null) { diff --git a/src/Time/ConstantTimeProvider.php b/src/Time/ConstantTimeProvider.php index cdeb580..0562af5 100644 --- a/src/Time/ConstantTimeProvider.php +++ b/src/Time/ConstantTimeProvider.php @@ -8,7 +8,7 @@ public function __construct(private $time) { } - public function createTimestamp() + public function createTimestamp(): int { return $this->time; } diff --git a/src/Time/DefaultTimeProviderFactory.php b/src/Time/DefaultTimeProviderFactory.php index 1eb4274..df8cc7f 100644 --- a/src/Time/DefaultTimeProviderFactory.php +++ b/src/Time/DefaultTimeProviderFactory.php @@ -4,7 +4,7 @@ class DefaultTimeProviderFactory { - public static function create() + public static function create(): TimeProvider { return new TimeProvider(); } diff --git a/src/Time/TimeProvider.php b/src/Time/TimeProvider.php index a57ce1a..029a449 100644 --- a/src/Time/TimeProvider.php +++ b/src/Time/TimeProvider.php @@ -4,7 +4,7 @@ class TimeProvider implements TimeProviderInterface { - public function createTimestamp() + public function createTimestamp(): int { return time(); } diff --git a/src/Time/TimeProviderInterface.php b/src/Time/TimeProviderInterface.php index 9d48f97..4abc42a 100644 --- a/src/Time/TimeProviderInterface.php +++ b/src/Time/TimeProviderInterface.php @@ -4,5 +4,5 @@ interface TimeProviderInterface { - public function createTimestamp(); + public function createTimestamp(): int; } diff --git a/tests/unit/Client/ClientTest.php b/tests/unit/Client/ClientTest.php index d5699bc..7d9488d 100644 --- a/tests/unit/Client/ClientTest.php +++ b/tests/unit/Client/ClientTest.php @@ -10,7 +10,7 @@ class ClientTest extends TestCase { #[Test] - public function shouldCreateBewit() + public function shouldCreateBewit(): void { $client = ClientBuilder::create()->build(); diff --git a/tests/unit/Crypto/ArtifactsTest.php b/tests/unit/Crypto/ArtifactsTest.php index 5c4dda7..a2e42c3 100644 --- a/tests/unit/Crypto/ArtifactsTest.php +++ b/tests/unit/Crypto/ArtifactsTest.php @@ -9,7 +9,7 @@ class ArtifactsTest extends TestCase { #[Test] - public function shouldReturnCorrectValuesForAllFields() + public function shouldReturnCorrectValuesForAllFields(): void { $artifacts = new Artifacts( 'testmethod', diff --git a/tests/unit/Crypto/CryptoTest.php b/tests/unit/Crypto/CryptoTest.php index d66417e..cea7ff7 100644 --- a/tests/unit/Crypto/CryptoTest.php +++ b/tests/unit/Crypto/CryptoTest.php @@ -16,11 +16,11 @@ class CryptoTest extends TestCase #[Test] #[DataProvider('payloadDataProvider')] public function shouldCalculatePayloadHash( - $expectedHash, - $payload, - $algorithm, - $contentType - ) { + string $expectedHash, + string $payload, + string $algorithm, + string $contentType + ): void { $crypto = new Crypto(); $calculatedHash = $crypto->calculatePayloadHash( @@ -29,7 +29,7 @@ public function shouldCalculatePayloadHash( $contentType ); - $this->assertEquals($expectedHash, $calculatedHash); + $this->assertSame($expectedHash, $calculatedHash); } public static function payloadDataProvider(): Generator @@ -45,16 +45,16 @@ public static function payloadDataProvider(): Generator #[Test] #[DataProvider('macDataProvider')] public function shouldCalculateMac( - $expectedMac, - $type, + string $expectedMac, + string $type, CredentialsInterface $credentials, Artifacts $artifacts - ) { + ): void { $crypto = new Crypto(); $calculatedMac = $crypto->calculateMac($type, $credentials, $artifacts); - $this->assertEquals($expectedMac, $calculatedMac); + $this->assertSame($expectedMac, $calculatedMac); } public static function macDataProvider(): Generator @@ -175,15 +175,15 @@ public static function macDataProvider(): Generator #[Test] #[DataProvider('tsMacDataProvider')] public function shouldCalculateTsMac( - $expectedTsMac, - $ts, + string $expectedTsMac, + int $ts, CredentialsInterface $credentials - ) { + ): void { $crypto = new Crypto(); $calculatedTsMac = $crypto->calculateTsMac($ts, $credentials); - $this->assertEquals($expectedTsMac, $calculatedTsMac); + $this->assertSame($expectedTsMac, $calculatedTsMac); } public static function tsMacDataProvider(): Generator diff --git a/tests/unit/Server/ServerTest.php b/tests/unit/Server/ServerTest.php index c7bc21b..ddd8e16 100644 --- a/tests/unit/Server/ServerTest.php +++ b/tests/unit/Server/ServerTest.php @@ -11,9 +11,9 @@ class ServerTest extends TestCase { #[Test] - public function shouldAuthenticateBewit() + public function shouldAuthenticateBewit(): void { - $credentialsProvider = fn($id) => new Credentials( + $credentialsProvider = fn($id): Credentials => new Credentials( 'HX9QcbD-r3ItFEnRcAuOSg', 'sha256', 'exqbZWtykFZIh2D7cXi9dA' From 00beaff507c16068c62a84cb2737a8d5a8254b30 Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 20:12:27 +0100 Subject: [PATCH 03/10] [master] add more return types --- CHANGELOG.md | 1 + phpstan.neon.dist | 2 +- src/Client/Client.php | 39 ++++++++++----- src/Client/ClientInterface.php | 33 +++++++++++-- .../CallbackCredentialsProvider.php | 3 ++ src/Crypto/Artifacts.php | 48 +++++++++---------- src/Crypto/Crypto.php | 12 ++--- src/Header/Header.php | 9 +++- src/Header/HeaderFactory.php | 24 ++++++++-- src/Header/HeaderParser.php | 10 ++-- src/Nonce/CallbackNonceValidator.php | 5 +- src/Nonce/NonceProvider.php | 2 +- src/Nonce/NonceProviderInterface.php | 2 +- src/Nonce/NonceValidatorInterface.php | 2 +- src/Server/Server.php | 30 ++++++------ src/Server/ServerBuilder.php | 9 ++-- src/Server/ServerInterface.php | 24 ++++++---- src/Server/UnauthorizedException.php | 9 ++-- src/Time/ConstantTimeProvider.php | 2 +- tests/unit/Crypto/ArtifactsTest.php | 8 ++-- tests/unit/Server/ServerTest.php | 3 +- 21 files changed, 181 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fc769b7..5980ae0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - PHP 8.1 is now required - All class properties and function parameters are now typed +- All functions now are properly return typed ### Fixed diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 8188701..ab58607 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -8,7 +8,7 @@ parameters: tmpDir: data/phpstan cache: nodesByStringCountMax: 0 - level: 5 + level: 6 fileExtensions: - php paths: diff --git a/src/Client/Client.php b/src/Client/Client.php index b318cab..5f44fcb 100644 --- a/src/Client/Client.php +++ b/src/Client/Client.php @@ -2,17 +2,14 @@ namespace Dflydev\Hawk\Client; -use InvalidArgumentException; use Dflydev\Hawk\Credentials\CredentialsInterface; use Dflydev\Hawk\Crypto\Artifacts; use Dflydev\Hawk\Crypto\Crypto; use Dflydev\Hawk\Header\HeaderFactory; use Dflydev\Hawk\Nonce\NonceProviderInterface; use Dflydev\Hawk\Time\TimeProviderInterface; +use InvalidArgumentException; -/** - * @see \Dflydev\Hawk\Client\ClientTest - */ class Client implements ClientInterface { /** @@ -22,18 +19,22 @@ public function __construct( private readonly Crypto $crypto, private readonly TimeProviderInterface $timeProvider, private readonly NonceProviderInterface $nonceProvider, - private $localtimeOffset + private int $localtimeOffset ) { } - public function createRequest(CredentialsInterface $credentials, $uri, $method, array $options = []): Request - { + public function createRequest( + CredentialsInterface $credentials, + string $uri, + string $method, + array $options = [] + ): Request { $timestamp = $options['timestamp'] ?? $this->timeProvider->createTimestamp(); if ($this->localtimeOffset) { $timestamp += $this->localtimeOffset; } - $parsed = parse_url((string)$uri); + $parsed = parse_url($uri); $host = $parsed['host']; $resource = $parsed['path'] ?? ''; @@ -106,7 +107,7 @@ public function createRequest(CredentialsInterface $credentials, $uri, $method, public function authenticate( CredentialsInterface $credentials, Request $request, - $headerObjectOrString, + mixed $headerObjectOrString, array $options = [] ): bool { $header = HeaderFactory::createFromHeaderObjectOrString( @@ -169,14 +170,28 @@ function (): never { return $artifacts->hash() === $hash; } - public function createBewit(CredentialsInterface $credentials, $uri, $ttlSec, array $options = []): string - { + /** + * @param CredentialsInterface $credentials + * @param string $uri + * @param int $ttlSec + * @param array{ + * timestamp?: int, + * ext?: string, + * } $options + * @return string + */ + public function createBewit( + CredentialsInterface $credentials, + string $uri, + int $ttlSec, + array $options = [] + ): string { $timestamp = $options['timestamp'] ?? $this->timeProvider->createTimestamp(); if ($this->localtimeOffset) { $timestamp += $this->localtimeOffset; } - $parsed = parse_url((string)$uri); + $parsed = parse_url($uri); $host = $parsed['host']; $resource = $parsed['path'] ?? ''; diff --git a/src/Client/ClientInterface.php b/src/Client/ClientInterface.php index 677a3e6..8132af6 100644 --- a/src/Client/ClientInterface.php +++ b/src/Client/ClientInterface.php @@ -3,14 +3,41 @@ namespace Dflydev\Hawk\Client; use Dflydev\Hawk\Credentials\CredentialsInterface; +use Dflydev\Hawk\Header\FieldValueParserException; +use Dflydev\Hawk\Header\NotHawkAuthorizationException; interface ClientInterface { - public function createRequest(CredentialsInterface $credentials, string $uri, string $method, array $options = []); + /** + * @param array{ + * timestamp?: int, + * nonce?: string, + * payload?: mixed, + * content_type?: string, + * ext?: string, + * app?: string, + * dlg?: string, + * } $options + */ + public function createRequest( + CredentialsInterface $credentials, + string $uri, + string $method, + array $options = [] + ): Request; + + /** + * @param array{ + * payload?: mixed, + * content_type?: string, + * } $options + * @throws FieldValueParserException + * @throws NotHawkAuthorizationException + */ public function authenticate( CredentialsInterface $credentials, Request $request, - $headerObjectOrString, + mixed $headerObjectOrString, array $options = [] - ); + ): bool; } diff --git a/src/Credentials/CallbackCredentialsProvider.php b/src/Credentials/CallbackCredentialsProvider.php index 686bb4c..cdf4231 100644 --- a/src/Credentials/CallbackCredentialsProvider.php +++ b/src/Credentials/CallbackCredentialsProvider.php @@ -4,6 +4,9 @@ class CallbackCredentialsProvider implements CredentialsProviderInterface { + /** + * @param callable(string): CredentialsInterface $callback + */ public function __construct(private $callback) { } diff --git a/src/Crypto/Artifacts.php b/src/Crypto/Artifacts.php index de88f02..43c8bf9 100644 --- a/src/Crypto/Artifacts.php +++ b/src/Crypto/Artifacts.php @@ -8,77 +8,77 @@ class Artifacts { public function __construct( - private $method, - private $host, - private $port, - private $resource, - private $timestamp, - private $nonce, - private $ext = null, - private $payload = null, - private $contentType = null, - private $hash = null, - private $app = null, - private $dlg = null + private string $method, + private string $host, + private int $port, + private mixed $resource, + private int $timestamp, + private string $nonce, + private ?string $ext = null, + private mixed $payload = null, + private ?string $contentType = null, + private ?string $hash = null, + private ?string $app = null, + private ?string $dlg = null ) { } - public function timestamp() + public function timestamp(): int { return $this->timestamp; } - public function nonce() + public function nonce(): string { return $this->nonce; } - public function ext() + public function ext(): ?string { return $this->ext; } - public function payload() + public function payload(): mixed { return $this->payload; } - public function contentType() + public function contentType(): string { return $this->contentType; } - public function hash() + public function hash(): ?string { return $this->hash; } - public function app() + public function app(): ?string { return $this->app; } - public function dlg() + public function dlg(): ?string { return $this->dlg; } - public function resource() + public function resource(): mixed { return $this->resource; } - public function host() + public function host(): string { return $this->host; } - public function port() + public function port(): int { return $this->port; } - public function method() + public function method(): string { return $this->method; } diff --git a/src/Crypto/Crypto.php b/src/Crypto/Crypto.php index 4029c79..5e7aa7e 100644 --- a/src/Crypto/Crypto.php +++ b/src/Crypto/Crypto.php @@ -11,16 +11,16 @@ class Crypto { public const HEADER_VERSION = 1; - public function calculatePayloadHash(string $payload, $algorithm, $contentType): string + public function calculatePayloadHash(string $payload, string $algorithm, string $contentType): string { - [$contentType] = explode(';', (string) $contentType); + [$contentType] = explode(';', $contentType); $contentType = strtolower(trim($contentType)); $normalized = 'hawk.' . self::HEADER_VERSION . '.payload' . "\n" . $contentType . "\n" . $payload . "\n"; - return base64_encode(hash((string) $algorithm, $normalized, true)); + return base64_encode(hash($algorithm, $normalized, true)); } public function calculateMac(string $type, CredentialsInterface $credentials, Artifacts $attributes): string @@ -50,14 +50,14 @@ public function calculateTsMac(int $timestamp, CredentialsInterface $credentials )); } - public function fixedTimeComparison($a, $b): bool + public function fixedTimeComparison(string $a, string $b): bool { - $mismatch = strlen((string) $a) === strlen((string) $b) ? 0 : 1; + $mismatch = strlen($a) === strlen($b) ? 0 : 1; if ($mismatch !== 0) { $b = $a; } - for ($i = 0; $i < strlen((string) $a); $i++) { + for ($i = 0; $i < strlen($a); $i++) { $ac = $a[$i]; $bc = $b[$i]; $mismatch += $ac === $bc ? 0 : 1; diff --git a/src/Header/Header.php b/src/Header/Header.php index d6a0903..5190d82 100644 --- a/src/Header/Header.php +++ b/src/Header/Header.php @@ -4,6 +4,9 @@ class Header { + /** + * @param array $attributes + */ public function __construct( private string $fieldName, private string $fieldValue, @@ -21,6 +24,10 @@ public function fieldValue(): string return $this->fieldValue; } + /** + * @param string[]|null $keys + * @return array + */ public function attributes(array $keys = null): array { if (null === $keys) { @@ -37,7 +44,7 @@ public function attributes(array $keys = null): array return $attributes; } - public function attribute($key): ?string + public function attribute(string $key): mixed { return $this->attributes[$key] ?? null; } diff --git a/src/Header/HeaderFactory.php b/src/Header/HeaderFactory.php index b3adbe3..998e1b7 100644 --- a/src/Header/HeaderFactory.php +++ b/src/Header/HeaderFactory.php @@ -4,7 +4,10 @@ class HeaderFactory { - public static function create($fieldName, array $attributes = null): Header + /** + * @param array|null $attributes + */ + public static function create(string $fieldName, array $attributes = null): Header { $fieldValue = 'Hawk'; @@ -22,7 +25,12 @@ public static function create($fieldName, array $attributes = null): Header return new Header($fieldName, $fieldValue, $attributes); } - public static function createFromString($fieldName, $fieldValue, array $requiredKeys = null): Header + /** + * @param string[]|null $requiredKeys + * @throws FieldValueParserException + * @throws NotHawkAuthorizationException + */ + public static function createFromString(string $fieldName, string $fieldValue, array $requiredKeys = null): Header { return static::create( $fieldName, @@ -30,8 +38,16 @@ public static function createFromString($fieldName, $fieldValue, array $required ); } - public static function createFromHeaderObjectOrString($fieldName, $headerObjectOrString, $onError) - { + /** + * @param callable(): void $onError + * @throws FieldValueParserException + * @throws NotHawkAuthorizationException + */ + public static function createFromHeaderObjectOrString( + string $fieldName, + mixed $headerObjectOrString, + callable $onError + ): Header|string|null { if (is_string($headerObjectOrString)) { return static::createFromString($fieldName, $headerObjectOrString); } elseif ($headerObjectOrString instanceof Header) { diff --git a/src/Header/HeaderParser.php b/src/Header/HeaderParser.php index bf1bf47..7237f29 100644 --- a/src/Header/HeaderParser.php +++ b/src/Header/HeaderParser.php @@ -4,14 +4,18 @@ class HeaderParser { - public static function parseFieldValue($fieldValue, array $requiredKeys = null): array + /** + * @param string[]|null $requiredKeys + * @return array + */ + public static function parseFieldValue(string $fieldValue, array $requiredKeys = null): array { - if (!str_starts_with((string) $fieldValue, 'Hawk')) { + if (!str_starts_with($fieldValue, 'Hawk')) { throw new NotHawkAuthorizationException(); } $attributes = []; - $fieldValue = substr((string) $fieldValue, 5); + $fieldValue = substr($fieldValue, 5); foreach (explode(', ', $fieldValue) as $part) { $equalsPos = strpos($part, '='); $key = substr($part, 0, $equalsPos); diff --git a/src/Nonce/CallbackNonceValidator.php b/src/Nonce/CallbackNonceValidator.php index 4b7e69a..9d4fcf3 100644 --- a/src/Nonce/CallbackNonceValidator.php +++ b/src/Nonce/CallbackNonceValidator.php @@ -4,11 +4,14 @@ class CallbackNonceValidator implements NonceValidatorInterface { + /** + * @param callable(string, int): bool $callback + */ public function __construct(private $callback) { } - public function validateNonce(string $nonce, int $timestamp) + public function validateNonce(string $nonce, int $timestamp): bool { return call_user_func_array($this->callback, [$nonce, $timestamp]); } diff --git a/src/Nonce/NonceProvider.php b/src/Nonce/NonceProvider.php index 6390c7e..96a172a 100644 --- a/src/Nonce/NonceProvider.php +++ b/src/Nonce/NonceProvider.php @@ -10,7 +10,7 @@ public function __construct(private readonly Generator $generator) { } - public function createNonce() + public function createNonce(): string { return $this->generator->generateString( 32, diff --git a/src/Nonce/NonceProviderInterface.php b/src/Nonce/NonceProviderInterface.php index 8a5d789..be51592 100644 --- a/src/Nonce/NonceProviderInterface.php +++ b/src/Nonce/NonceProviderInterface.php @@ -4,5 +4,5 @@ interface NonceProviderInterface { - public function createNonce(); + public function createNonce(): string; } diff --git a/src/Nonce/NonceValidatorInterface.php b/src/Nonce/NonceValidatorInterface.php index 5aa582e..7c5beb2 100644 --- a/src/Nonce/NonceValidatorInterface.php +++ b/src/Nonce/NonceValidatorInterface.php @@ -4,5 +4,5 @@ interface NonceValidatorInterface { - public function validateNonce(string $nonce, int $timestamp); + public function validateNonce(string $nonce, int $timestamp): bool; } diff --git a/src/Server/Server.php b/src/Server/Server.php index 04cd2e4..aa2725b 100644 --- a/src/Server/Server.php +++ b/src/Server/Server.php @@ -28,13 +28,13 @@ public function __construct( } public function authenticate( - $method, - $host, - $port, - $resource, - $contentType = null, - $payload = null, - $headerObjectOrString = null + string $method, + string $host, + mixed $port, + mixed $resource, + string $contentType = null, + mixed $payload = null, + mixed $headerObjectOrString = null ): Response { if (null === $headerObjectOrString) { throw new UnauthorizedException("Missing Authorization header"); @@ -162,9 +162,9 @@ public function createHeader(CredentialsInterface $credentials, Artifacts $artif public function authenticatePayload( CredentialsInterface $credentials, - $payload, - $contentType, - $hash + mixed $payload, + string $contentType, + string $hash ): bool { $calculatedHash = $this->crypto->calculatePayloadHash($payload, $credentials->algorithm(), $contentType); @@ -172,9 +172,9 @@ public function authenticatePayload( } public function authenticateBewit( - $host, - $port, - $resource + string $host, + int $port, + mixed $resource ): Response { // Measure now before any other processing $now = $this->timeProvider->createTimestamp() + $this->localtimeOffsetSec; @@ -198,7 +198,7 @@ public function authenticateBewit( [$id, $exp, $mac, $ext] = explode('\\', $bewit); - if ($exp < $now) { + if ((int)$exp < $now) { throw new UnauthorizedException('Access expired'); } @@ -212,7 +212,7 @@ public function authenticateBewit( $host, $port, $resource, - $exp, + (int)$exp, '', $ext ); diff --git a/src/Server/ServerBuilder.php b/src/Server/ServerBuilder.php index f0f9706..efd2d4b 100644 --- a/src/Server/ServerBuilder.php +++ b/src/Server/ServerBuilder.php @@ -2,6 +2,7 @@ namespace Dflydev\Hawk\Server; +use Dflydev\Hawk\Credentials\CredentialsProviderInterface; use Dflydev\Hawk\Crypto\Crypto; use Dflydev\Hawk\Nonce\CallbackNonceValidator; use Dflydev\Hawk\Nonce\NonceValidatorInterface; @@ -16,7 +17,7 @@ class ServerBuilder private ?int $timestampSkewSec = null; private ?int $localtimeOffsetSec = null; - public function __construct(private $credentialsProvider) + public function __construct(private CredentialsProviderInterface $credentialsProvider) { } @@ -59,7 +60,9 @@ public function build(): Server { $crypto = $this->crypto ?: new Crypto(); $timeProvider = $this->timeProvider ?: DefaultTimeProviderFactory::create(); - $nonceValidator = $this->nonceValidator ?: new CallbackNonceValidator(fn(string $nonce, int $timestamp): bool => true); + $nonceValidator = $this->nonceValidator ?: new CallbackNonceValidator( + static fn(string $nonce, int $timestamp): bool => true + ); $timestampSkewSec = $this->timestampSkewSec ?: 60; $localtimeOffsetSec = $this->localtimeOffsetSec ?: 0; @@ -73,7 +76,7 @@ public function build(): Server ); } - public static function create($credentialsProvider): static + public static function create(CredentialsProviderInterface $credentialsProvider): static { return new static($credentialsProvider); } diff --git a/src/Server/ServerInterface.php b/src/Server/ServerInterface.php index d502a5e..e3c35a2 100644 --- a/src/Server/ServerInterface.php +++ b/src/Server/ServerInterface.php @@ -4,25 +4,29 @@ use Dflydev\Hawk\Credentials\CredentialsInterface; use Dflydev\Hawk\Crypto\Artifacts; +use Dflydev\Hawk\Header\Header; interface ServerInterface { public function authenticate( string $method, string $host, - int $port, - string $resource, + int $port, + mixed $resource, string $contentType = null, - mixed $payload = null, - mixed $headerObjectOrString = null - ); + mixed $payload = null, + mixed $headerObjectOrString = null + ): Response; - public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = []); + /** + * @param array $options + */ + public function createHeader(CredentialsInterface $credentials, Artifacts $artifacts, array $options = []): Header; public function authenticatePayload( CredentialsInterface $credentials, - mixed $payload, - string $contentType, - string $hash - ); + mixed $payload, + string $contentType, + string $hash + ): bool; } diff --git a/src/Server/UnauthorizedException.php b/src/Server/UnauthorizedException.php index 92b8573..faf27f4 100644 --- a/src/Server/UnauthorizedException.php +++ b/src/Server/UnauthorizedException.php @@ -8,16 +8,17 @@ class UnauthorizedException extends Exception { - private array $attributes; private ?Header $header = null; - public function __construct($message = null, array $attributes = null) + /** + * @param array $attributes + */ + public function __construct(?string $message = null, private array $attributes = []) { parent::__construct($message); - $this->attributes = $attributes ?: []; } - public function getHeader() + public function getHeader(): Header { if (null !== $this->header) { return $this->header; diff --git a/src/Time/ConstantTimeProvider.php b/src/Time/ConstantTimeProvider.php index 0562af5..f2ebd29 100644 --- a/src/Time/ConstantTimeProvider.php +++ b/src/Time/ConstantTimeProvider.php @@ -4,7 +4,7 @@ class ConstantTimeProvider implements TimeProviderInterface { - public function __construct(private $time) + public function __construct(private int $time) { } diff --git a/tests/unit/Crypto/ArtifactsTest.php b/tests/unit/Crypto/ArtifactsTest.php index a2e42c3..17c8716 100644 --- a/tests/unit/Crypto/ArtifactsTest.php +++ b/tests/unit/Crypto/ArtifactsTest.php @@ -14,9 +14,9 @@ public function shouldReturnCorrectValuesForAllFields(): void $artifacts = new Artifacts( 'testmethod', 'testhost', - 'testport', + 80, 'testresource', - 'testtimestamp', + $time = time(), 'testnonce', 'testext', 'testpayload', @@ -28,9 +28,9 @@ public function shouldReturnCorrectValuesForAllFields(): void $this->assertSame('testmethod', $artifacts->method()); $this->assertSame('testhost', $artifacts->host()); - $this->assertSame('testport', $artifacts->port()); + $this->assertSame(80, $artifacts->port()); $this->assertSame('testresource', $artifacts->resource()); - $this->assertSame('testtimestamp', $artifacts->timestamp()); + $this->assertSame($time, $artifacts->timestamp()); $this->assertSame('testnonce', $artifacts->nonce()); $this->assertSame('testext', $artifacts->ext()); $this->assertSame('testpayload', $artifacts->payload()); diff --git a/tests/unit/Server/ServerTest.php b/tests/unit/Server/ServerTest.php index ddd8e16..8b1c311 100644 --- a/tests/unit/Server/ServerTest.php +++ b/tests/unit/Server/ServerTest.php @@ -2,6 +2,7 @@ namespace Dflydev\Hawk\unit\Server; +use Dflydev\Hawk\Credentials\CallbackCredentialsProvider; use Dflydev\Hawk\Credentials\Credentials; use Dflydev\Hawk\Server\ServerBuilder; use Dflydev\Hawk\Time\ConstantTimeProvider; @@ -19,7 +20,7 @@ public function shouldAuthenticateBewit(): void 'exqbZWtykFZIh2D7cXi9dA' ); - $server = ServerBuilder::create($credentialsProvider) + $server = ServerBuilder::create(new CallbackCredentialsProvider($credentialsProvider)) ->setTimeProvider(new ConstantTimeProvider(1368996800)) ->build(); From 3ba625f245f2b916141e80aaadb57efe71a3cb0b Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 20:18:22 +0100 Subject: [PATCH 04/10] [master] fix more phpstan errors --- composer.json | 1 + phpstan.neon.dist | 2 +- src/Client/Client.php | 2 ++ src/Header/HeaderFactory.php | 13 ++++++------- src/Header/HeaderParser.php | 4 ++++ src/Server/UnauthorizedException.php | 2 +- 6 files changed, 15 insertions(+), 9 deletions(-) diff --git a/composer.json b/composer.json index aea4709..392836c 100644 --- a/composer.json +++ b/composer.json @@ -46,6 +46,7 @@ "scripts": { "check" : [ "@cs-check", + "@phpstan", "@test" ], "cs-check" : "phpcs --parallel=50", diff --git a/phpstan.neon.dist b/phpstan.neon.dist index ab58607..60d3426 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -8,7 +8,7 @@ parameters: tmpDir: data/phpstan cache: nodesByStringCountMax: 0 - level: 6 + level: 7 fileExtensions: - php paths: diff --git a/src/Client/Client.php b/src/Client/Client.php index 5f44fcb..395bebb 100644 --- a/src/Client/Client.php +++ b/src/Client/Client.php @@ -34,6 +34,7 @@ public function createRequest( $timestamp += $this->localtimeOffset; } + /** @var array{host: string, path?: string, query?: string, scheme: string, port?: int} $parsed */ $parsed = parse_url($uri); $host = $parsed['host']; $resource = $parsed['path'] ?? ''; @@ -191,6 +192,7 @@ public function createBewit( $timestamp += $this->localtimeOffset; } + /** @var array{host: string, path?: string, query?: string, scheme: string, port?: int} $parsed */ $parsed = parse_url($uri); $host = $parsed['host']; $resource = $parsed['path'] ?? ''; diff --git a/src/Header/HeaderFactory.php b/src/Header/HeaderFactory.php index 998e1b7..97b45fe 100644 --- a/src/Header/HeaderFactory.php +++ b/src/Header/HeaderFactory.php @@ -5,7 +5,7 @@ class HeaderFactory { /** - * @param array|null $attributes + * @param array|null $attributes */ public static function create(string $fieldName, array $attributes = null): Header { @@ -39,7 +39,7 @@ public static function createFromString(string $fieldName, string $fieldValue, a } /** - * @param callable(): void $onError + * @param callable(): never $onError * @throws FieldValueParserException * @throws NotHawkAuthorizationException */ @@ -47,14 +47,13 @@ public static function createFromHeaderObjectOrString( string $fieldName, mixed $headerObjectOrString, callable $onError - ): Header|string|null { + ): Header { if (is_string($headerObjectOrString)) { return static::createFromString($fieldName, $headerObjectOrString); - } elseif ($headerObjectOrString instanceof Header) { + } + if ($headerObjectOrString instanceof Header) { return $headerObjectOrString; - } else { - call_user_func($onError); } - return null; + call_user_func($onError); } } diff --git a/src/Header/HeaderParser.php b/src/Header/HeaderParser.php index 7237f29..36a051b 100644 --- a/src/Header/HeaderParser.php +++ b/src/Header/HeaderParser.php @@ -7,6 +7,7 @@ class HeaderParser /** * @param string[]|null $requiredKeys * @return array + * @throws FieldValueParserException */ public static function parseFieldValue(string $fieldValue, array $requiredKeys = null): array { @@ -18,6 +19,9 @@ public static function parseFieldValue(string $fieldValue, array $requiredKeys = $fieldValue = substr($fieldValue, 5); foreach (explode(', ', $fieldValue) as $part) { $equalsPos = strpos($part, '='); + if ($equalsPos === false) { + throw new FieldValueParserException('field did not contain a "="'); + } $key = substr($part, 0, $equalsPos); $value = substr($part, $equalsPos + 1); $attributes[$key] = trim($value, '"'); diff --git a/src/Server/UnauthorizedException.php b/src/Server/UnauthorizedException.php index faf27f4..960bf56 100644 --- a/src/Server/UnauthorizedException.php +++ b/src/Server/UnauthorizedException.php @@ -11,7 +11,7 @@ class UnauthorizedException extends Exception private ?Header $header = null; /** - * @param array $attributes + * @param array $attributes */ public function __construct(?string $message = null, private array $attributes = []) { From ad024eb55253eb0fe7164484939f4f244e1e96e3 Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 20:21:33 +0100 Subject: [PATCH 05/10] [master] fix more phpstan errors --- phpstan.neon.dist | 2 +- src/Client/ClientBuilder.php | 2 +- src/Crypto/Artifacts.php | 2 +- src/Crypto/Crypto.php | 4 ++-- src/Header/HeaderFactory.php | 2 +- src/Server/UnauthorizedException.php | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/phpstan.neon.dist b/phpstan.neon.dist index 60d3426..810a3c2 100644 --- a/phpstan.neon.dist +++ b/phpstan.neon.dist @@ -8,7 +8,7 @@ parameters: tmpDir: data/phpstan cache: nodesByStringCountMax: 0 - level: 7 + level: 8 fileExtensions: - php paths: diff --git a/src/Client/ClientBuilder.php b/src/Client/ClientBuilder.php index a45be10..e21691a 100644 --- a/src/Client/ClientBuilder.php +++ b/src/Client/ClientBuilder.php @@ -36,7 +36,7 @@ public function setNonceProvider(NonceProviderInterface $nonceProvider): static return $this; } - public function setLocaltimeOffset(int $localtimeOffset = null): static + public function setLocaltimeOffset(int $localtimeOffset): static { $this->localtimeOffset = $localtimeOffset; diff --git a/src/Crypto/Artifacts.php b/src/Crypto/Artifacts.php index 43c8bf9..473500c 100644 --- a/src/Crypto/Artifacts.php +++ b/src/Crypto/Artifacts.php @@ -43,7 +43,7 @@ public function payload(): mixed return $this->payload; } - public function contentType(): string + public function contentType(): ?string { return $this->contentType; } diff --git a/src/Crypto/Crypto.php b/src/Crypto/Crypto.php index 5e7aa7e..d156c7e 100644 --- a/src/Crypto/Crypto.php +++ b/src/Crypto/Crypto.php @@ -11,9 +11,9 @@ class Crypto { public const HEADER_VERSION = 1; - public function calculatePayloadHash(string $payload, string $algorithm, string $contentType): string + public function calculatePayloadHash(string $payload, string $algorithm, ?string $contentType): string { - [$contentType] = explode(';', $contentType); + [$contentType] = explode(';', $contentType ?? ''); $contentType = strtolower(trim($contentType)); $normalized = 'hawk.' . self::HEADER_VERSION . '.payload' . "\n" . diff --git a/src/Header/HeaderFactory.php b/src/Header/HeaderFactory.php index 97b45fe..439f2e4 100644 --- a/src/Header/HeaderFactory.php +++ b/src/Header/HeaderFactory.php @@ -22,7 +22,7 @@ public static function create(string $fieldName, array $attributes = null): Head } } - return new Header($fieldName, $fieldValue, $attributes); + return new Header($fieldName, $fieldValue, $attributes ?? []); } /** diff --git a/src/Server/UnauthorizedException.php b/src/Server/UnauthorizedException.php index 960bf56..d1074c6 100644 --- a/src/Server/UnauthorizedException.php +++ b/src/Server/UnauthorizedException.php @@ -13,7 +13,7 @@ class UnauthorizedException extends Exception /** * @param array $attributes */ - public function __construct(?string $message = null, private array $attributes = []) + public function __construct(string $message = '', private array $attributes = []) { parent::__construct($message); } From 855e80705effcd4f016755482407dcf34abfa96f Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 20:24:22 +0100 Subject: [PATCH 06/10] [master] update test namespace --- tests/{unit => Unit}/Client/ClientTest.php | 2 +- tests/{unit => Unit}/Crypto/ArtifactsTest.php | 2 +- tests/{unit => Unit}/Crypto/CryptoTest.php | 2 +- tests/{unit => Unit}/Server/ServerTest.php | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) rename tests/{unit => Unit}/Client/ClientTest.php (96%) rename tests/{unit => Unit}/Crypto/ArtifactsTest.php (97%) rename tests/{unit => Unit}/Crypto/CryptoTest.php (99%) rename tests/{unit => Unit}/Server/ServerTest.php (96%) diff --git a/tests/unit/Client/ClientTest.php b/tests/Unit/Client/ClientTest.php similarity index 96% rename from tests/unit/Client/ClientTest.php rename to tests/Unit/Client/ClientTest.php index 7d9488d..167ac62 100644 --- a/tests/unit/Client/ClientTest.php +++ b/tests/Unit/Client/ClientTest.php @@ -1,6 +1,6 @@ Date: Mon, 4 Mar 2024 20:24:28 +0100 Subject: [PATCH 07/10] [master] update travis file --- .travis.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index dd6aaec..5197f82 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,9 @@ language: php php: - - 5.3 - - 5.4 - - 5.5 - - 5.6 - - 7 + - 8.1 + - 8.2 + - 8.3 - hhvm cache: @@ -22,8 +20,7 @@ before_script: - composer install --dev --prefer-source script: - - ./vendor/bin/phpunit --coverage-clover=coverage.clover - - ./vendor/bin/phpcs --standard=PSR2 src + - composer check after_script: - wget https://scrutinizer-ci.com/ocular.phar From 939e2b9f0dd96859cb8104f7a9ce51c77e4bd853 Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 20:25:56 +0100 Subject: [PATCH 08/10] [master] update random lib --- composer.json | 2 +- composer.lock | 24 ++++++++++++++---------- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/composer.json b/composer.json index 392836c..1a51bc3 100644 --- a/composer.json +++ b/composer.json @@ -26,7 +26,7 @@ } }, "require": { - "ircmaxell/random-lib": "^1.0@dev", + "ircmaxell/random-lib": "^1.2", "php": "^8.2" }, "require-dev": { diff --git a/composer.lock b/composer.lock index dcebff2..6d63e78 100644 --- a/composer.lock +++ b/composer.lock @@ -4,29 +4,30 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "480fe45125c5add6ac6d55b6594baf99", + "content-hash": "5cfee67c2e114b5293acf9c120c9a59f", "packages": [ { "name": "ircmaxell/random-lib", - "version": "dev-master", + "version": "v1.2.0", "source": { "type": "git", "url": "https://github.com/ircmaxell/RandomLib.git", - "reference": "338d2f594f7148983805ad56f47de7e47d84b2b9" + "reference": "e9e0204f40e49fa4419946c677eccd3fa25b8cf4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/RandomLib/zipball/338d2f594f7148983805ad56f47de7e47d84b2b9", - "reference": "338d2f594f7148983805ad56f47de7e47d84b2b9", + "url": "https://api.github.com/repos/ircmaxell/RandomLib/zipball/e9e0204f40e49fa4419946c677eccd3fa25b8cf4", + "reference": "e9e0204f40e49fa4419946c677eccd3fa25b8cf4", "shasum": "" }, "require": { - "ircmaxell/security-lib": "1.1.*@dev", + "ircmaxell/security-lib": "^1.1", "php": ">=5.3.2" }, "require-dev": { - "mikey179/vfsstream": "1.1.*", - "phpunit/phpunit": "3.7.*" + "friendsofphp/php-cs-fixer": "^1.11", + "mikey179/vfsstream": "^1.6", + "phpunit/phpunit": "^4.8|^5.0" }, "type": "library", "extra": { @@ -58,7 +59,11 @@ "random-numbers", "random-strings" ], - "time": "2015-04-08T13:58:58+00:00" + "support": { + "issues": "https://github.com/ircmaxell/RandomLib/issues", + "source": "https://github.com/ircmaxell/RandomLib/tree/master" + }, + "time": "2016-09-07T15:52:06+00:00" }, { "name": "ircmaxell/security-lib", @@ -2781,7 +2786,6 @@ "aliases": [], "minimum-stability": "stable", "stability-flags": { - "ircmaxell/random-lib": 20, "roave/security-advisories": 20 }, "prefer-stable": false, From ab33d22a0419af1b2bcffee107ce3b3ed9f0c62e Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Mon, 4 Mar 2024 20:27:32 +0100 Subject: [PATCH 09/10] [master] remove composer.lock file --- .gitignore | 1 + composer.json | 2 +- composer.lock | 2798 ------------------------------------------------- 3 files changed, 2 insertions(+), 2799 deletions(-) delete mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index 57872d0..ba3a105 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,2 @@ /vendor/ +.composer.lock diff --git a/composer.json b/composer.json index 1a51bc3..a5cb7ad 100644 --- a/composer.json +++ b/composer.json @@ -27,7 +27,7 @@ }, "require": { "ircmaxell/random-lib": "^1.2", - "php": "^8.2" + "php": "^8.1" }, "require-dev": { "rector/rector": "^1.0", diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 6d63e78..0000000 --- a/composer.lock +++ /dev/null @@ -1,2798 +0,0 @@ -{ - "_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#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "5cfee67c2e114b5293acf9c120c9a59f", - "packages": [ - { - "name": "ircmaxell/random-lib", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/ircmaxell/RandomLib.git", - "reference": "e9e0204f40e49fa4419946c677eccd3fa25b8cf4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/RandomLib/zipball/e9e0204f40e49fa4419946c677eccd3fa25b8cf4", - "reference": "e9e0204f40e49fa4419946c677eccd3fa25b8cf4", - "shasum": "" - }, - "require": { - "ircmaxell/security-lib": "^1.1", - "php": ">=5.3.2" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^1.11", - "mikey179/vfsstream": "^1.6", - "phpunit/phpunit": "^4.8|^5.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-0": { - "RandomLib": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anthony Ferrara", - "email": "ircmaxell@ircmaxell.com", - "homepage": "http://blog.ircmaxell.com" - } - ], - "description": "A Library For Generating Secure Random Numbers", - "homepage": "https://github.com/ircmaxell/RandomLib", - "keywords": [ - "cryptography", - "random", - "random-numbers", - "random-strings" - ], - "support": { - "issues": "https://github.com/ircmaxell/RandomLib/issues", - "source": "https://github.com/ircmaxell/RandomLib/tree/master" - }, - "time": "2016-09-07T15:52:06+00:00" - }, - { - "name": "ircmaxell/security-lib", - "version": "v1.1.0", - "source": { - "type": "git", - "url": "https://github.com/ircmaxell/SecurityLib.git", - "reference": "f3db6de12c20c9bcd1aa3db4353a1bbe0e44e1b5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ircmaxell/SecurityLib/zipball/f3db6de12c20c9bcd1aa3db4353a1bbe0e44e1b5", - "reference": "f3db6de12c20c9bcd1aa3db4353a1bbe0e44e1b5", - "shasum": "" - }, - "require": { - "php": ">=5.3.2" - }, - "require-dev": { - "mikey179/vfsstream": "1.1.*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-0": { - "SecurityLib": "lib" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Anthony Ferrara", - "email": "ircmaxell@ircmaxell.com", - "homepage": "http://blog.ircmaxell.com" - } - ], - "description": "A Base Security Library", - "homepage": "https://github.com/ircmaxell/SecurityLib", - "time": "2015-03-20T14:31:23+00:00" - } - ], - "packages-dev": [ - { - "name": "myclabs/deep-copy", - "version": "1.11.1", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "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": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2023-03-08T13:26:56+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v5.0.1", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/2218c2252c874a4624ab2f613d86ac32d227bc69", - "reference": "2218c2252c874a4624ab2f613d86ac32d227bc69", - "shasum": "" - }, - "require": { - "ext-ctype": "*", - "ext-json": "*", - "ext-tokenizer": "*", - "php": ">=7.4" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v5.0.1" - }, - "time": "2024-02-21T19:24:10+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "54750ef60c58e43759730615a392c31c80e23176" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176", - "reference": "54750ef60c58e43759730615a392c31c80e23176", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:33:53+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.10.59", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "e607609388d3a6d418a50a49f7940e8086798281" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e607609388d3a6d418a50a49f7940e8086798281", - "reference": "e607609388d3a6d418a50a49f7940e8086798281", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "keywords": [ - "dev", - "static analysis" - ], - "support": { - "docs": "https://phpstan.org/user-guide/getting-started", - "forum": "https://github.com/phpstan/phpstan/discussions", - "issues": "https://github.com/phpstan/phpstan/issues", - "security": "https://github.com/phpstan/phpstan/security/policy", - "source": "https://github.com/phpstan/phpstan-src" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2024-02-20T13:59:13+00:00" - }, - { - "name": "phpstan/phpstan-deprecation-rules", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", - "reference": "089d8a8258ed0aeefdc7b68b6c3d25572ebfdbaa", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10.3" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-php-parser": "^1.1", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", - "support": { - "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.1.4" - }, - "time": "2023-08-05T09:02:04+00:00" - }, - { - "name": "phpstan/phpstan-phpunit", - "version": "1.3.16", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan-phpunit.git", - "reference": "d5242a59d035e46774f2e634b374bc39ff62cb95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/d5242a59d035e46774f2e634b374bc39ff62cb95", - "reference": "d5242a59d035e46774f2e634b374bc39ff62cb95", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" - }, - "conflict": { - "phpunit/phpunit": "<7.0" - }, - "require-dev": { - "nikic/php-parser": "^4.13.0", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^9.5" - }, - "type": "phpstan-extension", - "extra": { - "phpstan": { - "includes": [ - "extension.neon", - "rules.neon" - ] - } - }, - "autoload": { - "psr-4": { - "PHPStan\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPUnit extensions and rules for PHPStan", - "support": { - "issues": "https://github.com/phpstan/phpstan-phpunit/issues", - "source": "https://github.com/phpstan/phpstan-phpunit/tree/1.3.16" - }, - "time": "2024-02-23T09:51:20+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "11.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "89702be0ad026873ef3a1605fe8726254eef4e2c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/89702be0ad026873ef3a1605fe8726254eef4e2c", - "reference": "89702be0ad026873ef3a1605fe8726254eef4e2c", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^5.0", - "php": ">=8.2", - "phpunit/php-file-iterator": "^5.0", - "phpunit/php-text-template": "^4.0", - "sebastian/code-unit-reverse-lookup": "^4.0", - "sebastian/complexity": "^4.0", - "sebastian/environment": "^7.0", - "sebastian/lines-of-code": "^3.0", - "sebastian/version": "^5.0", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-pcov": "PHP extension that provides line coverage", - "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "security": "https://github.com/sebastianbergmann/php-code-coverage/security/policy", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/11.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:34:25+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "99e95c94ad9500daca992354fa09d7b99abe2210" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/99e95c94ad9500daca992354fa09d7b99abe2210", - "reference": "99e95c94ad9500daca992354fa09d7b99abe2210", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:05:04+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5d8d9355a16d8cc5a1305b0a85342cfa420612be", - "reference": "5d8d9355a16d8cc5a1305b0a85342cfa420612be", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "security": "https://github.com/sebastianbergmann/php-invoker/security/policy", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:05:50+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/d38f6cbff1cdb6f40b03c9811421561668cc133e", - "reference": "d38f6cbff1cdb6f40b03c9811421561668cc133e", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:06:56+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "7.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/8a59d9e25720482ee7fcdf296595e08795b84dc5", - "reference": "8a59d9e25720482ee7fcdf296595e08795b84dc5", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "security": "https://github.com/sebastianbergmann/php-timer/security/policy", - "source": "https://github.com/sebastianbergmann/php-timer/tree/7.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:08:01+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "11.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "3f4261269c91370e9b2b3f64cc76c617c442c35a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/3f4261269c91370e9b2b3f64cc76c617c442c35a", - "reference": "3f4261269c91370e9b2b3f64cc76c617c442c35a", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=8.2", - "phpunit/php-code-coverage": "^11.0", - "phpunit/php-file-iterator": "^5.0", - "phpunit/php-invoker": "^5.0", - "phpunit/php-text-template": "^4.0", - "phpunit/php-timer": "^7.0", - "sebastian/cli-parser": "^3.0", - "sebastian/code-unit": "^3.0", - "sebastian/comparator": "^6.0", - "sebastian/diff": "^6.0", - "sebastian/environment": "^7.0", - "sebastian/exporter": "^6.0", - "sebastian/global-state": "^7.0", - "sebastian/object-enumerator": "^6.0", - "sebastian/type": "^5.0", - "sebastian/version": "^5.0" - }, - "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "11.0-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/11.0.4" - }, - "funding": [ - { - "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": "2024-02-29T16:21:10+00:00" - }, - { - "name": "rector/rector", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/rectorphp/rector.git", - "reference": "7596fa6da06c6a20c012efe6bb3d9188a9113b11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/rectorphp/rector/zipball/7596fa6da06c6a20c012efe6bb3d9188a9113b11", - "reference": "7596fa6da06c6a20c012efe6bb3d9188a9113b11", - "shasum": "" - }, - "require": { - "php": "^7.2|^8.0", - "phpstan/phpstan": "^1.10.57" - }, - "conflict": { - "rector/rector-doctrine": "*", - "rector/rector-downgrade-php": "*", - "rector/rector-phpunit": "*", - "rector/rector-symfony": "*" - }, - "bin": [ - "bin/rector" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Instant Upgrade and Automated Refactoring of any PHP code", - "keywords": [ - "automation", - "dev", - "migration", - "refactoring" - ], - "support": { - "issues": "https://github.com/rectorphp/rector/issues", - "source": "https://github.com/rectorphp/rector/tree/1.0.2" - }, - "funding": [ - { - "url": "https://github.com/tomasvotruba", - "type": "github" - } - ], - "time": "2024-03-03T12:32:31+00:00" - }, - { - "name": "roave/security-advisories", - "version": "dev-latest", - "source": { - "type": "git", - "url": "https://github.com/Roave/SecurityAdvisories.git", - "reference": "8f1e484da92817191c75c9b00108f13fb62fd741" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Roave/SecurityAdvisories/zipball/8f1e484da92817191c75c9b00108f13fb62fd741", - "reference": "8f1e484da92817191c75c9b00108f13fb62fd741", - "shasum": "" - }, - "conflict": { - "3f/pygmentize": "<1.2", - "admidio/admidio": "<4.2.13", - "adodb/adodb-php": "<=5.20.20|>=5.21,<=5.21.3", - "aheinze/cockpit": "<2.2", - "aimeos/aimeos-typo3": "<19.10.12|>=20,<20.10.5", - "airesvsg/acf-to-rest-api": "<=3.1", - "akaunting/akaunting": "<2.1.13", - "akeneo/pim-community-dev": "<5.0.119|>=6,<6.0.53", - "alextselegidis/easyappointments": "<1.5", - "alterphp/easyadmin-extension-bundle": ">=1.2,<1.2.11|>=1.3,<1.3.1", - "amazing/media2click": ">=1,<1.3.3", - "amphp/artax": "<1.0.6|>=2,<2.0.6", - "amphp/http": "<1.0.1", - "amphp/http-client": ">=4,<4.4", - "anchorcms/anchor-cms": "<=0.12.7", - "andreapollastri/cipi": "<=3.1.15", - "andrewhaine/silverstripe-form-capture": ">=0.2,<=0.2.3|>=1,<1.0.2|>=2,<2.2.5", - "apache-solr-for-typo3/solr": "<2.8.3", - "apereo/phpcas": "<1.6", - "api-platform/core": ">=2.2,<2.2.10|>=2.3,<2.3.6|>=2.6,<2.7.10|>=3,<3.0.12|>=3.1,<3.1.3", - "appwrite/server-ce": "<=1.2.1", - "arc/web": "<3", - "area17/twill": "<1.2.5|>=2,<2.5.3", - "artesaos/seotools": "<0.17.2", - "asymmetricrypt/asymmetricrypt": "<9.9.99", - "athlon1600/php-proxy": "<=5.1", - "athlon1600/php-proxy-app": "<=3", - "austintoddj/canvas": "<=3.4.2", - "automad/automad": "<=1.10.9", - "awesome-support/awesome-support": "<=6.0.7", - "aws/aws-sdk-php": "<3.288.1", - "azuracast/azuracast": "<0.18.3", - "backdrop/backdrop": "<1.24.2", - "backpack/crud": "<3.4.9", - "bacula-web/bacula-web": "<8.0.0.0-RC2-dev", - "badaso/core": "<2.7", - "bagisto/bagisto": "<2.1", - "barrelstrength/sprout-base-email": "<1.2.7", - "barrelstrength/sprout-forms": "<3.9", - "barryvdh/laravel-translation-manager": "<0.6.2", - "barzahlen/barzahlen-php": "<2.0.1", - "baserproject/basercms": "<5.0.9", - "bassjobsen/bootstrap-3-typeahead": ">4.0.2", - "bigfork/silverstripe-form-capture": ">=3,<3.1.1", - "billz/raspap-webgui": "<2.9.5", - "bk2k/bootstrap-package": ">=7.1,<7.1.2|>=8,<8.0.8|>=9,<9.0.4|>=9.1,<9.1.3|>=10,<10.0.10|>=11,<11.0.3", - "bmarshall511/wordpress_zero_spam": "<5.2.13", - "bolt/bolt": "<3.7.2", - "bolt/core": "<=4.2", - "bottelet/flarepoint": "<2.2.1", - "bref/bref": "<2.1.13", - "brightlocal/phpwhois": "<=4.2.5", - "brotkrueml/codehighlight": "<2.7", - "brotkrueml/schema": "<1.13.1|>=2,<2.5.1", - "brotkrueml/typo3-matomo-integration": "<1.3.2", - "buddypress/buddypress": "<7.2.1", - "bugsnag/bugsnag-laravel": ">=2,<2.0.2", - "bytefury/crater": "<6.0.2", - "cachethq/cachet": "<2.5.1", - "cakephp/cakephp": "<3.10.3|>=4,<4.0.10|>=4.1,<4.1.4|>=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", - "cakephp/database": ">=4.2,<4.2.12|>=4.3,<4.3.11|>=4.4,<4.4.10", - "cardgate/magento2": "<2.0.33", - "cardgate/woocommerce": "<=3.1.15", - "cart2quote/module-quotation": ">=4.1.6,<=4.4.5|>=5,<5.4.4", - "cartalyst/sentry": "<=2.1.6", - "catfan/medoo": "<1.7.5", - "cecil/cecil": "<7.47.1", - "centreon/centreon": "<22.10.0.0-beta1", - "cesnet/simplesamlphp-module-proxystatistics": "<3.1", - "chriskacerguis/codeigniter-restserver": "<=2.7.1", - "civicrm/civicrm-core": ">=4.2,<4.2.9|>=4.3,<4.3.3", - "ckeditor/ckeditor": "<4.24", - "cockpit-hq/cockpit": "<=2.6.3|==2.7", - "codeception/codeception": "<3.1.3|>=4,<4.1.22", - "codeigniter/framework": "<3.1.9", - "codeigniter4/framework": "<=4.4.2", - "codeigniter4/shield": "<1.0.0.0-beta8", - "codiad/codiad": "<=2.8.4", - "composer/composer": "<1.10.27|>=2,<2.2.23|>=2.3,<2.7", - "concrete5/concrete5": "<9.2.5", - "concrete5/core": "<8.5.8|>=9,<9.1", - "contao-components/mediaelement": ">=2.14.2,<2.21.1", - "contao/contao": ">=4,<4.4.56|>=4.5,<4.9.40|>=4.10,<4.11.7|>=4.13,<4.13.21|>=5.1,<5.1.4", - "contao/core": ">=2,<3.5.39", - "contao/core-bundle": ">=3,<3.5.35|>=4,<4.9.42|>=4.10,<4.13.28|>=5,<5.1.10", - "contao/listing-bundle": ">=4,<4.4.8", - "contao/managed-edition": "<=1.5", - "corveda/phpsandbox": "<1.3.5", - "cosenary/instagram": "<=2.3", - "craftcms/cms": "<4.6.2", - "croogo/croogo": "<4", - "cuyz/valinor": "<0.12", - "czproject/git-php": "<4.0.3", - "darylldoyle/safe-svg": "<1.9.10", - "datadog/dd-trace": ">=0.30,<0.30.2", - "datatables/datatables": "<1.10.10", - "david-garcia/phpwhois": "<=4.3.1", - "dbrisinajumi/d2files": "<1", - "dcat/laravel-admin": "<=2.1.3.0-beta", - "derhansen/fe_change_pwd": "<2.0.5|>=3,<3.0.3", - "derhansen/sf_event_mgt": "<4.3.1|>=5,<5.1.1|>=7,<7.4", - "desperado/xml-bundle": "<=0.1.7", - "directmailteam/direct-mail": "<6.0.3|>=7,<7.0.3|>=8,<9.5.2", - "doctrine/annotations": "<1.2.7", - "doctrine/cache": ">=1,<1.3.2|>=1.4,<1.4.2", - "doctrine/common": "<2.4.3|>=2.5,<2.5.1", - "doctrine/dbal": ">=2,<2.0.8|>=2.1,<2.1.2|>=3,<3.1.4", - "doctrine/doctrine-bundle": "<1.5.2", - "doctrine/doctrine-module": "<=0.7.1", - "doctrine/mongodb-odm": "<1.0.2", - "doctrine/mongodb-odm-bundle": "<3.0.1", - "doctrine/orm": ">=2,<2.4.8|>=2.5,<2.5.1|>=2.8.3,<2.8.4", - "dolibarr/dolibarr": "<18.0.2", - "dompdf/dompdf": "<2.0.4", - "doublethreedigital/guest-entries": "<3.1.2", - "drupal/core": ">=6,<6.38|>=7,<7.96|>=8,<10.1.8|>=10.2,<10.2.2", - "drupal/drupal": ">=5,<5.11|>=6,<6.38|>=7,<7.80|>=8,<8.9.16|>=9,<9.1.12|>=9.2,<9.2.4", - "duncanmcclean/guest-entries": "<3.1.2", - "dweeves/magmi": "<=0.7.24", - "ec-cube/ec-cube": "<2.4.4", - "ecodev/newsletter": "<=4", - "ectouch/ectouch": "<=2.7.2", - "elefant/cms": "<2.0.7", - "elgg/elgg": "<3.3.24|>=4,<4.0.5", - "elijaa/phpmemcacheadmin": "<=1.3", - "encore/laravel-admin": "<=1.8.19", - "endroid/qr-code-bundle": "<3.4.2", - "enhavo/enhavo-app": "<=0.13.1", - "enshrined/svg-sanitize": "<0.15", - "erusev/parsedown": "<1.7.2", - "ether/logs": "<3.0.4", - "evolutioncms/evolution": "<=3.2.3", - "exceedone/exment": "<4.4.3|>=5,<5.0.3", - "exceedone/laravel-admin": "<2.2.3|==3", - "ezsystems/demobundle": ">=5.4,<5.4.6.1-dev", - "ezsystems/ez-support-tools": ">=2.2,<2.2.3", - "ezsystems/ezdemo-ls-extension": ">=5.4,<5.4.2.1-dev", - "ezsystems/ezfind-ls": ">=5.3,<5.3.6.1-dev|>=5.4,<5.4.11.1-dev|>=2017.12,<2017.12.0.1-dev", - "ezsystems/ezplatform": "<=1.13.6|>=2,<=2.5.24", - "ezsystems/ezplatform-admin-ui": ">=1.3,<1.3.5|>=1.4,<1.4.6|>=1.5,<1.5.29|>=2.3,<2.3.26", - "ezsystems/ezplatform-admin-ui-assets": ">=4,<4.2.1|>=5,<5.0.1|>=5.1,<5.1.1", - "ezsystems/ezplatform-graphql": ">=1.0.0.0-RC1-dev,<1.0.13|>=2.0.0.0-beta1,<2.3.12", - "ezsystems/ezplatform-kernel": "<1.2.5.1-dev|>=1.3,<1.3.34", - "ezsystems/ezplatform-rest": ">=1.2,<=1.2.2|>=1.3,<1.3.8", - "ezsystems/ezplatform-richtext": ">=2.3,<2.3.7.1-dev", - "ezsystems/ezplatform-solr-search-engine": ">=1.7,<1.7.12|>=2,<2.0.2|>=3.3,<3.3.15", - "ezsystems/ezplatform-user": ">=1,<1.0.1", - "ezsystems/ezpublish-kernel": "<6.13.8.2-dev|>=7,<7.5.31", - "ezsystems/ezpublish-legacy": "<=2017.12.7.3|>=2018.6,<=2019.03.5.1", - "ezsystems/platform-ui-assets-bundle": ">=4.2,<4.2.3", - "ezsystems/repository-forms": ">=2.3,<2.3.2.1-dev|>=2.5,<2.5.15", - "ezyang/htmlpurifier": "<4.1.1", - "facade/ignition": "<1.16.15|>=2,<2.4.2|>=2.5,<2.5.2", - "facturascripts/facturascripts": "<=2022.08", - "feehi/cms": "<=2.1.1", - "feehi/feehicms": "<=2.1.1", - "fenom/fenom": "<=2.12.1", - "filegator/filegator": "<7.8", - "firebase/php-jwt": "<6", - "fixpunkt/fp-masterquiz": "<2.2.1|>=3,<3.5.2", - "fixpunkt/fp-newsletter": "<1.1.1|>=2,<2.1.2|>=2.2,<3.2.6", - "flarum/core": "<1.8.5", - "flarum/framework": "<1.8.5", - "flarum/mentions": "<1.6.3", - "flarum/sticky": ">=0.1.0.0-beta14,<=0.1.0.0-beta15", - "flarum/tags": "<=0.1.0.0-beta13", - "floriangaerber/magnesium": "<0.3.1", - "fluidtypo3/vhs": "<5.1.1", - "fof/byobu": ">=0.3.0.0-beta2,<1.1.7", - "fof/upload": "<1.2.3", - "foodcoopshop/foodcoopshop": ">=3.2,<3.6.1", - "fooman/tcpdf": "<6.2.22", - "forkcms/forkcms": "<5.11.1", - "fossar/tcpdf-parser": "<6.2.22", - "francoisjacquet/rosariosis": "<11", - "frappant/frp-form-answers": "<3.1.2|>=4,<4.0.2", - "friendsofsymfony/oauth2-php": "<1.3", - "friendsofsymfony/rest-bundle": ">=1.2,<1.2.2", - "friendsofsymfony/user-bundle": ">=1.2,<1.3.5", - "friendsoftypo3/mediace": ">=7.6.2,<7.6.5", - "friendsoftypo3/openid": ">=4.5,<4.5.31|>=4.7,<4.7.16|>=6,<6.0.11|>=6.1,<6.1.6", - "froala/wysiwyg-editor": "<3.2.7|>=4.0.1,<=4.1.1", - "froxlor/froxlor": "<=2.1.1", - "fuel/core": "<1.8.1", - "funadmin/funadmin": "<=3.2|>=3.3.2,<=3.3.3", - "gaoming13/wechat-php-sdk": "<=1.10.2", - "genix/cms": "<=1.1.11", - "getgrav/grav": "<1.7.44", - "getkirby/cms": "<4.1.1", - "getkirby/kirby": "<=2.5.12", - "getkirby/panel": "<2.5.14", - "getkirby/starterkit": "<=3.7.0.2", - "gilacms/gila": "<=1.15.4", - "gleez/cms": "<=1.2|==2", - "globalpayments/php-sdk": "<2", - "gogentooss/samlbase": "<1.2.7", - "google/protobuf": "<3.15", - "gos/web-socket-bundle": "<1.10.4|>=2,<2.6.1|>=3,<3.3", - "gree/jose": "<2.2.1", - "gregwar/rst": "<1.0.3", - "grumpydictator/firefly-iii": "<6.1.7", - "gugoan/economizzer": "<=0.9.0.0-beta1", - "guzzlehttp/guzzle": "<6.5.8|>=7,<7.4.5", - "guzzlehttp/psr7": "<1.9.1|>=2,<2.4.5", - "haffner/jh_captcha": "<=2.1.3|>=3,<=3.0.2", - "harvesthq/chosen": "<1.8.7", - "helloxz/imgurl": "<=2.31", - "hhxsv5/laravel-s": "<3.7.36", - "hillelcoren/invoice-ninja": "<5.3.35", - "himiklab/yii2-jqgrid-widget": "<1.0.8", - "hjue/justwriting": "<=1", - "hov/jobfair": "<1.0.13|>=2,<2.0.2", - "httpsoft/http-message": "<1.0.12", - "hyn/multi-tenant": ">=5.6,<5.7.2", - "ibexa/admin-ui": ">=4.2,<4.2.3", - "ibexa/core": ">=4,<4.0.7|>=4.1,<4.1.4|>=4.2,<4.2.3|>=4.5,<4.5.4", - "ibexa/graphql": ">=2.5,<2.5.31|>=3.3,<3.3.28|>=4.2,<4.2.3", - "ibexa/post-install": "<=1.0.4", - "ibexa/solr": ">=4.5,<4.5.4", - "ibexa/user": ">=4,<4.4.3", - "icecoder/icecoder": "<=8.1", - "idno/known": "<=1.3.1", - "illuminate/auth": "<5.5.10", - "illuminate/cookie": ">=4,<=4.0.11|>=4.1,<=4.1.99999|>=4.2,<=4.2.99999|>=5,<=5.0.99999|>=5.1,<=5.1.99999|>=5.2,<=5.2.99999|>=5.3,<=5.3.99999|>=5.4,<=5.4.99999|>=5.5,<=5.5.49|>=5.6,<=5.6.99999|>=5.7,<=5.7.99999|>=5.8,<=5.8.99999|>=6,<6.18.31|>=7,<7.22.4", - "illuminate/database": "<6.20.26|>=7,<7.30.5|>=8,<8.40", - "illuminate/encryption": ">=4,<=4.0.11|>=4.1,<=4.1.31|>=4.2,<=4.2.22|>=5,<=5.0.35|>=5.1,<=5.1.46|>=5.2,<=5.2.45|>=5.3,<=5.3.31|>=5.4,<=5.4.36|>=5.5,<5.5.40|>=5.6,<5.6.15", - "illuminate/view": "<6.20.42|>=7,<7.30.6|>=8,<8.75", - "impresscms/impresscms": "<=1.4.5", - "impresspages/impresspages": "<=1.0.12", - "in2code/femanager": "<5.5.3|>=6,<6.3.4|>=7,<7.2.3", - "in2code/ipandlanguageredirect": "<5.1.2", - "in2code/lux": "<17.6.1|>=18,<24.0.2", - "innologi/typo3-appointments": "<2.0.6", - "intelliants/subrion": "<4.2.2", - "islandora/islandora": ">=2,<2.4.1", - "ivankristianto/phpwhois": "<=4.3", - "jackalope/jackalope-doctrine-dbal": "<1.7.4", - "james-heinrich/getid3": "<1.9.21", - "james-heinrich/phpthumb": "<1.7.12", - "jasig/phpcas": "<1.3.3", - "jcbrand/converse.js": "<3.3.3", - "joomla/application": "<1.0.13", - "joomla/archive": "<1.1.12|>=2,<2.0.1", - "joomla/filesystem": "<1.6.2|>=2,<2.0.1", - "joomla/filter": "<1.4.4|>=2,<2.0.1", - "joomla/framework": "<1.5.7|>=2.5.4,<=3.8.12", - "joomla/input": ">=2,<2.0.2", - "joomla/joomla-cms": ">=2.5,<3.9.12", - "joomla/session": "<1.3.1", - "joyqi/hyper-down": "<=2.4.27", - "jsdecena/laracom": "<2.0.9", - "jsmitty12/phpwhois": "<5.1", - "juzaweb/cms": "<=3.4", - "kazist/phpwhois": "<=4.2.6", - "kelvinmo/simplexrd": "<3.1.1", - "kevinpapst/kimai2": "<1.16.7", - "khodakhah/nodcms": "<=3", - "kimai/kimai": "<2.1", - "kitodo/presentation": "<3.2.3|>=3.3,<3.3.4", - "klaviyo/magento2-extension": ">=1,<3", - "knplabs/knp-snappy": "<=1.4.2", - "kohana/core": "<3.3.3", - "krayin/laravel-crm": "<1.2.2", - "kreait/firebase-php": ">=3.2,<3.8.1", - "la-haute-societe/tcpdf": "<6.2.22", - "laminas/laminas-diactoros": "<2.18.1|==2.19|==2.20|==2.21|==2.22|==2.23|>=2.24,<2.24.2|>=2.25,<2.25.2", - "laminas/laminas-form": "<2.17.1|>=3,<3.0.2|>=3.1,<3.1.1", - "laminas/laminas-http": "<2.14.2", - "laravel/fortify": "<1.11.1", - "laravel/framework": "<6.20.44|>=7,<7.30.6|>=8,<8.75", - "laravel/socialite": ">=1,<1.0.99|>=2,<2.0.10", - "latte/latte": "<2.10.8", - "lavalite/cms": "<=9", - "lcobucci/jwt": ">=3.4,<3.4.6|>=4,<4.0.4|>=4.1,<4.1.5", - "league/commonmark": "<0.18.3", - "league/flysystem": "<1.1.4|>=2,<2.1.1", - "league/oauth2-server": ">=8.3.2,<8.4.2|>=8.5,<8.5.3", - "lexik/jwt-authentication-bundle": "<2.10.7|>=2.11,<2.11.3", - "librenms/librenms": "<2017.08.18", - "liftkit/database": "<2.13.2", - "limesurvey/limesurvey": "<3.27.19", - "livehelperchat/livehelperchat": "<=3.91", - "livewire/livewire": ">2.2.4,<2.2.6", - "lms/routes": "<2.1.1", - "localizationteam/l10nmgr": "<7.4|>=8,<8.7|>=9,<9.2", - "luyadev/yii-helpers": "<1.2.1", - "magento/community-edition": "<2.4.3.0-patch3|>=2.4.4,<2.4.5", - "magento/core": "<=1.9.4.5", - "magento/magento1ce": "<1.9.4.3-dev", - "magento/magento1ee": ">=1,<1.14.4.3-dev", - "magento/product-community-edition": ">=2,<2.2.10|>=2.3,<2.3.2.0-patch2", - "magneto/core": "<1.9.4.4-dev", - "maikuolan/phpmussel": ">=1,<1.6", - "mainwp/mainwp": "<=4.4.3.3", - "mantisbt/mantisbt": "<2.26.1", - "marcwillmann/turn": "<0.3.3", - "matyhtf/framework": "<3.0.6", - "mautic/core": "<4.3", - "mediawiki/core": "<1.36.2", - "mediawiki/matomo": "<2.4.3", - "mediawiki/semantic-media-wiki": "<4.0.2", - "melisplatform/melis-asset-manager": "<5.0.1", - "melisplatform/melis-cms": "<5.0.1", - "melisplatform/melis-front": "<5.0.1", - "mezzio/mezzio-swoole": "<3.7|>=4,<4.3", - "mgallegos/laravel-jqgrid": "<=1.3", - "microsoft/microsoft-graph": ">=1.16,<1.109.1|>=2,<2.0.1", - "microsoft/microsoft-graph-beta": "<2.0.1", - "microsoft/microsoft-graph-core": "<2.0.2", - "microweber/microweber": "<=2.0.4", - "miniorange/miniorange-saml": "<1.4.3", - "mittwald/typo3_forum": "<1.2.1", - "mobiledetect/mobiledetectlib": "<2.8.32", - "modx/revolution": "<=2.8.3.0-patch", - "mojo42/jirafeau": "<4.4", - "mongodb/mongodb": ">=1,<1.9.2", - "monolog/monolog": ">=1.8,<1.12", - "moodle/moodle": "<4.3.3", - "mos/cimage": "<0.7.19", - "movim/moxl": ">=0.8,<=0.10", - "mpdf/mpdf": "<=7.1.7", - "munkireport/comment": "<4.1", - "munkireport/managedinstalls": "<2.6", - "munkireport/munkireport": ">=2.5.3,<5.6.3", - "mustache/mustache": ">=2,<2.14.1", - "namshi/jose": "<2.2", - "neoan3-apps/template": "<1.1.1", - "neorazorx/facturascripts": "<2022.04", - "neos/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "neos/form": ">=1.2,<4.3.3|>=5,<5.0.9|>=5.1,<5.1.3", - "neos/media-browser": "<7.3.19|>=8,<8.0.16|>=8.1,<8.1.11|>=8.2,<8.2.11|>=8.3,<8.3.9", - "neos/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.9.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<5.3.10|>=7,<7.0.9|>=7.1,<7.1.7|>=7.2,<7.2.6|>=7.3,<7.3.4|>=8,<8.0.2", - "neos/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", - "netgen/tagsbundle": ">=3.4,<3.4.11|>=4,<4.0.15", - "nette/application": ">=2,<2.0.19|>=2.1,<2.1.13|>=2.2,<2.2.10|>=2.3,<2.3.14|>=2.4,<2.4.16|>=3,<3.0.6", - "nette/nette": ">=2,<2.0.19|>=2.1,<2.1.13", - "nilsteampassnet/teampass": "<3.0.10", - "nonfiction/nterchange": "<4.1.1", - "notrinos/notrinos-erp": "<=0.7", - "noumo/easyii": "<=0.9", - "nukeviet/nukeviet": "<4.5.02", - "nyholm/psr7": "<1.6.1", - "nystudio107/craft-seomatic": "<3.4.12", - "nzo/url-encryptor-bundle": ">=4,<4.3.2|>=5,<5.0.1", - "october/backend": "<1.1.2", - "october/cms": "<1.0.469|==1.0.469|==1.0.471|==1.1.1", - "october/october": "<=3.4.4", - "october/rain": "<1.0.472|>=1.1,<1.1.2", - "october/system": "<1.0.476|>=1.1,<1.1.12|>=2,<2.2.34|>=3,<3.5.2", - "omeka/omeka-s": "<4.0.3", - "onelogin/php-saml": "<2.10.4", - "oneup/uploader-bundle": ">=1,<1.9.3|>=2,<2.1.5", - "open-web-analytics/open-web-analytics": "<1.7.4", - "opencart/opencart": "<=3.0.3.7|>=4,<4.0.2.3-dev", - "openid/php-openid": "<2.3", - "openmage/magento-lts": "<20.5", - "opensource-workshop/connect-cms": "<1.7.2|>=2,<2.3.2", - "orchid/platform": ">=9,<9.4.4|>=14.0.0.0-alpha4,<14.5", - "oro/calendar-bundle": ">=4.2,<=4.2.6|>=5,<=5.0.6|>=5.1,<5.1.1", - "oro/commerce": ">=4.1,<5.0.11|>=5.1,<5.1.1", - "oro/crm": ">=1.7,<1.7.4|>=3.1,<4.1.17|>=4.2,<4.2.7", - "oro/crm-call-bundle": ">=4.2,<=4.2.5|>=5,<5.0.4|>=5.1,<5.1.1", - "oro/customer-portal": ">=4.2,<=4.2.8|>=5,<5.0.11|>=5.1,<5.1.1", - "oro/platform": ">=1.7,<1.7.4|>=3.1,<3.1.29|>=4.1,<4.1.17|>=4.2,<=4.2.10|>=5,<5.0.8", - "oxid-esales/oxideshop-ce": "<4.5", - "packbackbooks/lti-1-3-php-library": "<5", - "padraic/humbug_get_contents": "<1.1.2", - "pagarme/pagarme-php": "<3", - "pagekit/pagekit": "<=1.0.18", - "paragonie/random_compat": "<2", - "passbolt/passbolt_api": "<2.11", - "paypal/merchant-sdk-php": "<3.12", - "pear/archive_tar": "<1.4.14", - "pear/auth": "<1.2.4", - "pear/crypt_gpg": "<1.6.7", - "pear/pear": "<=1.10.1", - "pegasus/google-for-jobs": "<1.5.1|>=2,<2.1.1", - "personnummer/personnummer": "<3.0.2", - "phanan/koel": "<5.1.4", - "phenx/php-svg-lib": "<0.5.2", - "php-mod/curl": "<2.3.2", - "phpbb/phpbb": "<3.2.10|>=3.3,<3.3.1", - "phpems/phpems": ">=6,<=6.1.3", - "phpfastcache/phpfastcache": "<6.1.5|>=7,<7.1.2|>=8,<8.0.7", - "phpmailer/phpmailer": "<6.5", - "phpmussel/phpmussel": ">=1,<1.6", - "phpmyadmin/phpmyadmin": "<5.2.1", - "phpmyfaq/phpmyfaq": "<3.2.5", - "phpoffice/phpexcel": "<1.8", - "phpoffice/phpspreadsheet": "<1.16", - "phpseclib/phpseclib": "<2.0.31|>=3,<3.0.34", - "phpservermon/phpservermon": "<3.6", - "phpsysinfo/phpsysinfo": "<3.4.3", - "phpunit/phpunit": ">=4.8.19,<4.8.28|>=5.0.10,<5.6.3", - "phpwhois/phpwhois": "<=4.2.5", - "phpxmlrpc/extras": "<0.6.1", - "phpxmlrpc/phpxmlrpc": "<4.9.2", - "pi/pi": "<=2.5", - "pimcore/admin-ui-classic-bundle": "<1.3.4", - "pimcore/customer-management-framework-bundle": "<4.0.6", - "pimcore/data-hub": "<1.2.4", - "pimcore/demo": "<10.3", - "pimcore/ecommerce-framework-bundle": "<1.0.10", - "pimcore/perspective-editor": "<1.5.1", - "pimcore/pimcore": "<11.1.1", - "pixelfed/pixelfed": "<0.11.11", - "plotly/plotly.js": "<2.25.2", - "pocketmine/bedrock-protocol": "<8.0.2", - "pocketmine/pocketmine-mp": "<=4.23|>=5,<5.3.1", - "pocketmine/raklib": ">=0.14,<0.14.6|>=0.15,<0.15.1", - "pressbooks/pressbooks": "<5.18", - "prestashop/autoupgrade": ">=4,<4.10.1", - "prestashop/blockreassurance": "<=5.1.3", - "prestashop/blockwishlist": ">=2,<2.1.1", - "prestashop/contactform": ">=1.0.1,<4.3", - "prestashop/gamification": "<2.3.2", - "prestashop/prestashop": "<8.1.4", - "prestashop/productcomments": "<5.0.2", - "prestashop/ps_emailsubscription": "<2.6.1", - "prestashop/ps_facetedsearch": "<3.4.1", - "prestashop/ps_linklist": "<3.1", - "privatebin/privatebin": "<1.4", - "processwire/processwire": "<=3.0.210", - "propel/propel": ">=2.0.0.0-alpha1,<=2.0.0.0-alpha7", - "propel/propel1": ">=1,<=1.7.1", - "pterodactyl/panel": "<1.7", - "ptheofan/yii2-statemachine": ">=2.0.0.0-RC1-dev,<=2", - "ptrofimov/beanstalk_console": "<1.7.14", - "pubnub/pubnub": "<6.1", - "pusher/pusher-php-server": "<2.2.1", - "pwweb/laravel-core": "<=0.3.6.0-beta", - "pyrocms/pyrocms": "<=3.9.1", - "rainlab/blog-plugin": "<1.4.1", - "rainlab/debugbar-plugin": "<3.1", - "rainlab/user-plugin": "<=1.4.5", - "rankmath/seo-by-rank-math": "<=1.0.95", - "rap2hpoutre/laravel-log-viewer": "<0.13", - "react/http": ">=0.7,<1.9", - "really-simple-plugins/complianz-gdpr": "<6.4.2", - "redaxo/source": "<=5.15.1", - "remdex/livehelperchat": "<3.99", - "reportico-web/reportico": "<=7.1.21", - "rhukster/dom-sanitizer": "<1.0.7", - "rmccue/requests": ">=1.6,<1.8", - "robrichards/xmlseclibs": ">=1,<3.0.4", - "roots/soil": "<4.1", - "rudloff/alltube": "<3.0.3", - "s-cart/core": "<6.9", - "s-cart/s-cart": "<6.9", - "sabberworm/php-css-parser": ">=1,<1.0.1|>=2,<2.0.1|>=3,<3.0.1|>=4,<4.0.1|>=5,<5.0.9|>=5.1,<5.1.3|>=5.2,<5.2.1|>=6,<6.0.2|>=7,<7.0.4|>=8,<8.0.1|>=8.1,<8.1.1|>=8.2,<8.2.1|>=8.3,<8.3.1", - "sabre/dav": ">=1.6,<1.7.11|>=1.8,<1.8.9", - "scheb/two-factor-bundle": "<3.26|>=4,<4.11", - "sensiolabs/connect": "<4.2.3", - "serluck/phpwhois": "<=4.2.6", - "sfroemken/url_redirect": "<=1.2.1", - "sheng/yiicms": "<=1.2", - "shopware/core": "<=6.5.7.3", - "shopware/platform": "<=6.5.7.3", - "shopware/production": "<=6.3.5.2", - "shopware/shopware": "<=5.7.17", - "shopware/storefront": "<=6.4.8.1", - "shopxo/shopxo": "<2.2.6", - "showdoc/showdoc": "<2.10.4", - "silverstripe-australia/advancedreports": ">=1,<=2", - "silverstripe/admin": "<1.13.19|>=2,<2.1.8", - "silverstripe/assets": ">=1,<1.11.1", - "silverstripe/cms": "<4.11.3", - "silverstripe/comments": ">=1.3,<1.9.99|>=2,<2.9.99|>=3,<3.1.1", - "silverstripe/forum": "<=0.6.1|>=0.7,<=0.7.3", - "silverstripe/framework": "<4.13.39|>=5,<5.1.11", - "silverstripe/graphql": ">=2,<2.0.5|>=3,<3.8.2|>=4,<4.3.7|>=5,<5.1.3", - "silverstripe/hybridsessions": ">=1,<2.4.1|>=2.5,<2.5.1", - "silverstripe/recipe-cms": ">=4.5,<4.5.3", - "silverstripe/registry": ">=2.1,<2.1.2|>=2.2,<2.2.1", - "silverstripe/restfulserver": ">=1,<1.0.9|>=2,<2.0.4", - "silverstripe/silverstripe-omnipay": "<2.5.2|>=3,<3.0.2|>=3.1,<3.1.4|>=3.2,<3.2.1", - "silverstripe/subsites": ">=2,<2.6.1", - "silverstripe/taxonomy": ">=1.3,<1.3.1|>=2,<2.0.1", - "silverstripe/userforms": "<3", - "silverstripe/versioned-admin": ">=1,<1.11.1", - "simple-updates/phpwhois": "<=1", - "simplesamlphp/saml2": "<1.10.6|>=2,<2.3.8|>=3,<3.1.4|==5.0.0.0-alpha12", - "simplesamlphp/simplesamlphp": "<1.18.6", - "simplesamlphp/simplesamlphp-module-infocard": "<1.0.1", - "simplesamlphp/simplesamlphp-module-openid": "<1", - "simplesamlphp/simplesamlphp-module-openidprovider": "<0.9", - "simplesamlphp/xml-security": "==1.6.11", - "simplito/elliptic-php": "<1.0.6", - "sitegeist/fluid-components": "<3.5", - "sjbr/sr-freecap": "<2.4.6|>=2.5,<2.5.3", - "slim/psr7": "<1.4.1|>=1.5,<1.5.1|>=1.6,<1.6.1", - "slim/slim": "<2.6", - "slub/slub-events": "<3.0.3", - "smarty/smarty": "<3.1.48|>=4,<4.3.1", - "snipe/snipe-it": "<=6.2.2", - "socalnick/scn-social-auth": "<1.15.2", - "socialiteproviders/steam": "<1.1", - "spatie/browsershot": "<3.57.4", - "spipu/html2pdf": "<5.2.8", - "spoon/library": "<1.4.1", - "spoonity/tcpdf": "<6.2.22", - "squizlabs/php_codesniffer": ">=1,<2.8.1|>=3,<3.0.1", - "ssddanbrown/bookstack": "<22.02.3", - "statamic/cms": "<4.46", - "stormpath/sdk": "<9.9.99", - "studio-42/elfinder": "<2.1.62", - "subhh/libconnect": "<7.0.8|>=8,<8.1", - "sukohi/surpass": "<1", - "sulu/sulu": "<1.6.44|>=2,<2.4.16|>=2.5,<2.5.12", - "sumocoders/framework-user-bundle": "<1.4", - "superbig/craft-audit": "<3.0.2", - "swag/paypal": "<5.4.4", - "swiftmailer/swiftmailer": ">=4,<5.4.5", - "swiftyedit/swiftyedit": "<1.2", - "sylius/admin-bundle": ">=1,<1.0.17|>=1.1,<1.1.9|>=1.2,<1.2.2", - "sylius/grid": ">=1,<1.1.19|>=1.2,<1.2.18|>=1.3,<1.3.13|>=1.4,<1.4.5|>=1.5,<1.5.1", - "sylius/grid-bundle": "<1.10.1", - "sylius/paypal-plugin": ">=1,<1.2.4|>=1.3,<1.3.1", - "sylius/resource-bundle": ">=1,<1.3.14|>=1.4,<1.4.7|>=1.5,<1.5.2|>=1.6,<1.6.4", - "sylius/sylius": "<1.9.10|>=1.10,<1.10.11|>=1.11,<1.11.2", - "symbiote/silverstripe-multivaluefield": ">=3,<3.0.99", - "symbiote/silverstripe-queuedjobs": ">=3,<3.0.2|>=3.1,<3.1.4|>=4,<4.0.7|>=4.1,<4.1.2|>=4.2,<4.2.4|>=4.3,<4.3.3|>=4.4,<4.4.3|>=4.5,<4.5.1|>=4.6,<4.6.4", - "symbiote/silverstripe-seed": "<6.0.3", - "symbiote/silverstripe-versionedfiles": "<=2.0.3", - "symfont/process": ">=0", - "symfony/cache": ">=3.1,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8", - "symfony/dependency-injection": ">=2,<2.0.17|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/error-handler": ">=4.4,<4.4.4|>=5,<5.0.4", - "symfony/form": ">=2.3,<2.3.35|>=2.4,<2.6.12|>=2.7,<2.7.50|>=2.8,<2.8.49|>=3,<3.4.20|>=4,<4.0.15|>=4.1,<4.1.9|>=4.2,<4.2.1", - "symfony/framework-bundle": ">=2,<2.3.18|>=2.4,<2.4.8|>=2.5,<2.5.2|>=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7|>=5.3.14,<=5.3.14|>=5.4.3,<=5.4.3|>=6.0.3,<=6.0.3", - "symfony/http-foundation": ">=2,<2.8.52|>=3,<3.4.35|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7", - "symfony/http-kernel": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", - "symfony/intl": ">=2.7,<2.7.38|>=2.8,<2.8.31|>=3,<3.2.14|>=3.3,<3.3.13", - "symfony/maker-bundle": ">=1.27,<1.29.2|>=1.30,<1.31.1", - "symfony/mime": ">=4.3,<4.3.8", - "symfony/phpunit-bridge": ">=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/polyfill": ">=1,<1.10", - "symfony/polyfill-php55": ">=1,<1.10", - "symfony/proxy-manager-bridge": ">=2.7,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.1.12|>=4.2,<4.2.7", - "symfony/routing": ">=2,<2.0.19", - "symfony/security": ">=2,<2.7.51|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.8", - "symfony/security-bundle": ">=2,<4.4.50|>=5,<5.4.20|>=6,<6.0.20|>=6.1,<6.1.12|>=6.2,<6.2.6", - "symfony/security-core": ">=2.4,<2.6.13|>=2.7,<2.7.9|>=2.7.30,<2.7.32|>=2.8,<3.4.49|>=4,<4.4.24|>=5,<5.2.9", - "symfony/security-csrf": ">=2.4,<2.7.48|>=2.8,<2.8.41|>=3,<3.3.17|>=3.4,<3.4.11|>=4,<4.0.11", - "symfony/security-guard": ">=2.8,<3.4.48|>=4,<4.4.23|>=5,<5.2.8", - "symfony/security-http": ">=2.3,<2.3.41|>=2.4,<2.7.51|>=2.8,<2.8.50|>=3,<3.4.26|>=4,<4.2.12|>=4.3,<4.3.8|>=4.4,<4.4.7|>=5,<5.0.7|>=5.1,<5.2.8|>=5.3,<5.3.2|>=5.4,<5.4.31|>=6,<6.3.8", - "symfony/serializer": ">=2,<2.0.11|>=4.1,<4.4.35|>=5,<5.3.12", - "symfony/symfony": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", - "symfony/translation": ">=2,<2.0.17", - "symfony/twig-bridge": ">=2,<4.4.51|>=5,<5.4.31|>=6,<6.3.8", - "symfony/ux-autocomplete": "<2.11.2", - "symfony/validator": ">=2,<2.0.24|>=2.1,<2.1.12|>=2.2,<2.2.5|>=2.3,<2.3.3", - "symfony/var-exporter": ">=4.2,<4.2.12|>=4.3,<4.3.8", - "symfony/web-profiler-bundle": ">=2,<2.3.19|>=2.4,<2.4.9|>=2.5,<2.5.4", - "symfony/webhook": ">=6.3,<6.3.8", - "symfony/yaml": ">=2,<2.0.22|>=2.1,<2.1.7|>=2.2.0.0-beta1,<2.2.0.0-beta2", - "symphonycms/symphony-2": "<2.6.4", - "t3/dce": "<0.11.5|>=2.2,<2.6.2", - "t3g/svg-sanitizer": "<1.0.3", - "t3s/content-consent": "<1.0.3|>=2,<2.0.2", - "tastyigniter/tastyigniter": "<3.3", - "tcg/voyager": "<=1.4", - "tecnickcom/tcpdf": "<6.2.22", - "terminal42/contao-tablelookupwizard": "<3.3.5", - "thelia/backoffice-default-template": ">=2.1,<2.1.2", - "thelia/thelia": ">=2.1,<2.1.3", - "theonedemon/phpwhois": "<=4.2.5", - "thinkcmf/thinkcmf": "<=5.1.7", - "thorsten/phpmyfaq": "<3.2.2", - "tikiwiki/tiki-manager": "<=17.1", - "tinymce/tinymce": "<5.10.9|>=6,<6.7.3", - "tinymighty/wiki-seo": "<1.2.2", - "titon/framework": "<9.9.99", - "tobiasbg/tablepress": "<=2.0.0.0-RC1", - "topthink/framework": "<6.0.14", - "topthink/think": "<=6.1.1", - "topthink/thinkphp": "<=3.2.3", - "torrentpier/torrentpier": "<=2.4.1", - "tpwd/ke_search": "<4.0.3|>=4.1,<4.6.6|>=5,<5.0.2", - "tribalsystems/zenario": "<=9.4.59197", - "truckersmp/phpwhois": "<=4.3.1", - "ttskch/pagination-service-provider": "<1", - "twig/twig": "<1.44.7|>=2,<2.15.3|>=3,<3.4.3", - "typo3/cms": "<9.5.29|>=10,<10.4.35|>=11,<11.5.23|>=12,<12.2", - "typo3/cms-backend": "<4.1.14|>=4.2,<4.2.15|>=4.3,<4.3.7|>=4.4,<4.4.4|>=7,<=7.6.50|>=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-core": "<=8.7.56|>=9,<=9.5.45|>=10,<=10.4.42|>=11,<=11.5.34|>=12,<=12.4.10|==13", - "typo3/cms-extbase": "<6.2.24|>=7,<7.6.8|==8.1.1", - "typo3/cms-fluid": "<4.3.4|>=4.4,<4.4.1", - "typo3/cms-form": ">=8,<=8.7.39|>=9,<=9.5.24|>=10,<=10.4.13|>=11,<=11.1", - "typo3/cms-frontend": "<4.3.9|>=4.4,<4.4.5", - "typo3/cms-install": "<4.1.14|>=4.2,<4.2.16|>=4.3,<4.3.9|>=4.4,<4.4.5|>=12.2,<12.4.8", - "typo3/cms-rte-ckeditor": ">=9.5,<9.5.42|>=10,<10.4.39|>=11,<11.5.30", - "typo3/flow": ">=1,<1.0.4|>=1.1,<1.1.1|>=2,<2.0.1|>=2.3,<2.3.16|>=3,<3.0.12|>=3.1,<3.1.10|>=3.2,<3.2.13|>=3.3,<3.3.13|>=4,<4.0.6", - "typo3/html-sanitizer": ">=1,<=1.5.2|>=2,<=2.1.3", - "typo3/neos": ">=1.1,<1.1.3|>=1.2,<1.2.13|>=2,<2.0.4|>=2.3,<2.3.99|>=3,<3.0.20|>=3.1,<3.1.18|>=3.2,<3.2.14|>=3.3,<3.3.23|>=4,<4.0.17|>=4.1,<4.1.16|>=4.2,<4.2.12|>=4.3,<4.3.3", - "typo3/phar-stream-wrapper": ">=1,<2.1.1|>=3,<3.1.1", - "typo3/swiftmailer": ">=4.1,<4.1.99|>=5.4,<5.4.5", - "typo3fluid/fluid": ">=2,<2.0.8|>=2.1,<2.1.7|>=2.2,<2.2.4|>=2.3,<2.3.7|>=2.4,<2.4.4|>=2.5,<2.5.11|>=2.6,<2.6.10", - "ua-parser/uap-php": "<3.8", - "uasoft-indonesia/badaso": "<=2.9.7", - "unisharp/laravel-filemanager": "<2.6.4", - "userfrosting/userfrosting": ">=0.3.1,<4.6.3", - "usmanhalalit/pixie": "<1.0.3|>=2,<2.0.2", - "uvdesk/community-skeleton": "<=1.1.1", - "vanilla/safecurl": "<0.9.2", - "verot/class.upload.php": "<=2.1.6", - "vova07/yii2-fileapi-widget": "<0.1.9", - "vrana/adminer": "<4.8.1", - "waldhacker/hcaptcha": "<2.1.2", - "wallabag/tcpdf": "<6.2.22", - "wallabag/wallabag": "<2.6.7", - "wanglelecc/laracms": "<=1.0.3", - "web-auth/webauthn-framework": ">=3.3,<3.3.4", - "webbuilders-group/silverstripe-kapost-bridge": "<0.4", - "webcoast/deferred-image-processing": "<1.0.2", - "webklex/laravel-imap": "<5.3", - "webklex/php-imap": "<5.3", - "webpa/webpa": "<3.1.2", - "wikibase/wikibase": "<=1.39.3", - "wikimedia/parsoid": "<0.12.2", - "willdurand/js-translation-bundle": "<2.1.1", - "winter/wn-backend-module": "<1.2.4", - "winter/wn-system-module": "<1.2.4", - "wintercms/winter": "<1.2.3", - "woocommerce/woocommerce": "<6.6", - "wp-cli/wp-cli": ">=0.12,<2.5", - "wp-graphql/wp-graphql": "<=1.14.5", - "wpanel/wpanel4-cms": "<=4.3.1", - "wpcloud/wp-stateless": "<3.2", - "wwbn/avideo": "<=12.4", - "xataface/xataface": "<3", - "xpressengine/xpressengine": "<3.0.15", - "yeswiki/yeswiki": "<4.1", - "yetiforce/yetiforce-crm": "<=6.4", - "yidashi/yii2cmf": "<=2", - "yii2mod/yii2-cms": "<1.9.2", - "yiisoft/yii": "<1.1.29", - "yiisoft/yii2": "<2.0.38", - "yiisoft/yii2-authclient": "<2.2.15", - "yiisoft/yii2-bootstrap": "<2.0.4", - "yiisoft/yii2-dev": "<2.0.43", - "yiisoft/yii2-elasticsearch": "<2.0.5", - "yiisoft/yii2-gii": "<=2.2.4", - "yiisoft/yii2-jui": "<2.0.4", - "yiisoft/yii2-redis": "<2.0.8", - "yikesinc/yikes-inc-easy-mailchimp-extender": "<6.8.6", - "yoast-seo-for-typo3/yoast_seo": "<7.2.3", - "yourls/yourls": "<=1.8.2", - "yuan1994/tpadmin": "<=1.3.12", - "zencart/zencart": "<=1.5.7.0-beta", - "zendesk/zendesk_api_client_php": "<2.2.11", - "zendframework/zend-cache": ">=2.4,<2.4.8|>=2.5,<2.5.3", - "zendframework/zend-captcha": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-crypt": ">=2,<2.4.9|>=2.5,<2.5.2", - "zendframework/zend-db": "<2.2.10|>=2.3,<2.3.5", - "zendframework/zend-developer-tools": ">=1.2.2,<1.2.3", - "zendframework/zend-diactoros": "<1.8.4", - "zendframework/zend-feed": "<2.10.3", - "zendframework/zend-form": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-http": "<2.8.1", - "zendframework/zend-json": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zend-ldap": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.8|>=2.3,<2.3.3", - "zendframework/zend-mail": ">=2,<2.4.11|>=2.5,<2.7.2", - "zendframework/zend-navigation": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-session": ">=2,<2.0.99|>=2.1,<2.1.99|>=2.2,<2.2.9|>=2.3,<2.3.4", - "zendframework/zend-validator": ">=2.3,<2.3.6", - "zendframework/zend-view": ">=2,<2.2.7|>=2.3,<2.3.1", - "zendframework/zend-xmlrpc": ">=2.1,<2.1.6|>=2.2,<2.2.6", - "zendframework/zendframework": "<=3", - "zendframework/zendframework1": "<1.12.20", - "zendframework/zendopenid": "<2.0.2", - "zendframework/zendrest": "<2.0.2", - "zendframework/zendservice-amazon": "<2.0.3", - "zendframework/zendservice-api": "<1", - "zendframework/zendservice-audioscrobbler": "<2.0.2", - "zendframework/zendservice-nirvanix": "<2.0.2", - "zendframework/zendservice-slideshare": "<2.0.2", - "zendframework/zendservice-technorati": "<2.0.2", - "zendframework/zendservice-windowsazure": "<2.0.2", - "zendframework/zendxml": ">=1,<1.0.1", - "zenstruck/collection": "<0.2.1", - "zetacomponents/mail": "<1.8.2", - "zf-commons/zfc-user": "<1.2.2", - "zfcampus/zf-apigility-doctrine": ">=1,<1.0.3", - "zfr/zfr-oauth2-server-module": "<0.1.2", - "zoujingli/thinkadmin": "<=6.1.53" - }, - "default-branch": true, - "type": "metapackage", - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "role": "maintainer" - }, - { - "name": "Ilya Tribusean", - "email": "slash3b@gmail.com", - "role": "maintainer" - } - ], - "description": "Prevents installation of composer packages with known security vulnerabilities: no API, simply require it", - "keywords": [ - "dev" - ], - "support": { - "issues": "https://github.com/Roave/SecurityAdvisories/issues", - "source": "https://github.com/Roave/SecurityAdvisories/tree/latest" - }, - "funding": [ - { - "url": "https://github.com/Ocramius", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/roave/security-advisories", - "type": "tidelift" - } - ], - "time": "2024-03-01T21:04:56+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "3.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/00a74d5568694711f0222e54fb281e1d15fdf04a", - "reference": "00a74d5568694711f0222e54fb281e1d15fdf04a", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "security": "https://github.com/sebastianbergmann/cli-parser/security/policy", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/3.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:26:58+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "6634549cb8d702282a04a774e36a7477d2bd9015" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/6634549cb8d702282a04a774e36a7477d2bd9015", - "reference": "6634549cb8d702282a04a774e36a7477d2bd9015", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "security": "https://github.com/sebastianbergmann/code-unit/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:50:41+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/df80c875d3e459b45c6039e4d9b71d4fbccae25d", - "reference": "df80c875d3e459b45c6039e4d9b71d4fbccae25d", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "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", - "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:52:17+00:00" - }, - { - "name": "sebastian/comparator", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/bd0f2fa5b9257c69903537b266ccb80fcf940db8", - "reference": "bd0f2fa5b9257c69903537b266ccb80fcf940db8", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/diff": "^6.0", - "sebastian/exporter": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:53:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "88a434ad86150e11a606ac4866b09130712671f0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/88a434ad86150e11a606ac4866b09130712671f0", - "reference": "88a434ad86150e11a606ac4866b09130712671f0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:55:19+00:00" - }, - { - "name": "sebastian/diff", - "version": "6.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "ab83243ecc233de5655b76f577711de9f842e712" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ab83243ecc233de5655b76f577711de9f842e712", - "reference": "ab83243ecc233de5655b76f577711de9f842e712", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/6.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:30:33+00:00" - }, - { - "name": "sebastian/environment", - "version": "7.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/100d8b855d7180f79f9a9a5c483f2d960581c3ea", - "reference": "100d8b855d7180f79f9a9a5c483f2d960581c3ea", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/7.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T05:57:54+00:00" - }, - { - "name": "sebastian/exporter", - "version": "6.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/f291e5a317c321c0381fa9ecc796fa2d21b186da", - "reference": "f291e5a317c321c0381fa9ecc796fa2d21b186da", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": ">=8.2", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/6.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:28:20+00:00" - }, - { - "name": "sebastian/global-state", - "version": "7.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", - "reference": "c3a307e832f2e69c7ef869e31fc644fde0e7cb3e", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "7.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "https://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/7.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-03-02T07:32:10+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/376c5b3f6b43c78fdc049740bca76a7c846706c0", - "reference": "376c5b3f6b43c78fdc049740bca76a7c846706c0", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^5.0", - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:00:36+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", - "reference": "f75f6c460da0bbd9668f43a3dde0ec0ba7faa678", - "shasum": "" - }, - "require": { - "php": ">=8.2", - "sebastian/object-reflector": "^4.0", - "sebastian/recursion-context": "^6.0" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:01:29+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "4.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/bb2a6255d30853425fd38f032eb64ced9f7f132d", - "reference": "bb2a6255d30853425fd38f032eb64ced9f7f132d", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "security": "https://github.com/sebastianbergmann/object-reflector/security/policy", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/4.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:02:18+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "6.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/b75224967b5a466925c6d54e68edd0edf8dd4ed4", - "reference": "b75224967b5a466925c6d54e68edd0edf8dd4ed4", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "6.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "https://github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "security": "https://github.com/sebastianbergmann/recursion-context/security/policy", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/6.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:08:48+00:00" - }, - { - "name": "sebastian/type", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b8502785eb3523ca0dd4afe9ca62235590020f3f", - "reference": "b8502785eb3523ca0dd4afe9ca62235590020f3f", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "require-dev": { - "phpunit/phpunit": "^11.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "security": "https://github.com/sebastianbergmann/type/security/policy", - "source": "https://github.com/sebastianbergmann/type/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:09:34+00:00" - }, - { - "name": "sebastian/version", - "version": "5.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/13999475d2cb1ab33cb73403ba356a814fdbb001", - "reference": "13999475d2cb1ab33cb73403ba356a814fdbb001", - "shasum": "" - }, - "require": { - "php": ">=8.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "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", - "security": "https://github.com/sebastianbergmann/version/security/policy", - "source": "https://github.com/sebastianbergmann/version/tree/5.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2024-02-02T06:10:47+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.9.0", - "source": { - "type": "git", - "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b", - "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" - }, - "bin": [ - "bin/phpcbf", - "bin/phpcs" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "Former lead" - }, - { - "name": "Juliette Reinders Folmer", - "role": "Current lead" - }, - { - "name": "Contributors", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards", - "static analysis" - ], - "support": { - "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", - "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", - "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", - "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" - }, - "funding": [ - { - "url": "https://github.com/PHPCSStandards", - "type": "github" - }, - { - "url": "https://github.com/jrfnl", - "type": "github" - }, - { - "url": "https://opencollective.com/php_codesniffer", - "type": "open_collective" - } - ], - "time": "2024-02-16T15:06:51+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.3", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.3" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2024-03-03T12:36:25+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": { - "roave/security-advisories": 20 - }, - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.2" - }, - "platform-dev": [], - "plugin-api-version": "2.6.0" -} From 9291b16896072601202e9aab5eaa4d0226a6157c Mon Sep 17 00:00:00 2001 From: Anna Damm Date: Tue, 5 Mar 2024 09:25:55 +0100 Subject: [PATCH 10/10] [master] update branch alias --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index a5cb7ad..7d303e1 100644 --- a/composer.json +++ b/composer.json @@ -40,7 +40,7 @@ }, "extra": { "branch-alias": { - "dev-master": "1.0.x-dev" + "dev-main": "2.0.x-dev" } }, "scripts": {