From ecb1f1a2187fbd37c52e24dcf0d753da13f7ffdd Mon Sep 17 00:00:00 2001 From: simonhammes Date: Fri, 20 Jun 2025 23:57:07 +0200 Subject: [PATCH 1/7] Update PHPStan dependencies Signed-off-by: simonhammes --- composer.json | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/composer.json b/composer.json index dec37f8..ee7e055 100644 --- a/composer.json +++ b/composer.json @@ -20,10 +20,10 @@ }, "require-dev": { "guzzlehttp/guzzle": "^6.3|^7.0", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5.4", - "phpstan/phpstan-phpunit": "^1.1.0", - "phpstan/phpstan-strict-rules": "^1.1.0", + "phpstan/extension-installer": "^1.4", + "phpstan/phpstan": "^2.1", + "phpstan/phpstan-phpunit": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", "phpunit/phpunit": "^9.4", "squizlabs/php_codesniffer": "^3.6", "symfony/polyfill-apcu": "^1.6" From a407f5bad638356b4f03eeb751bbb59bd845303f Mon Sep 17 00:00:00 2001 From: simonhammes Date: Fri, 20 Jun 2025 23:58:31 +0200 Subject: [PATCH 2/7] Commit composer.lock Closes https://github.com/PromPHP/prometheus_client_php/issues/34 Signed-off-by: simonhammes --- .gitignore | 1 - composer.lock | 2732 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 2732 insertions(+), 1 deletion(-) create mode 100644 composer.lock diff --git a/.gitignore b/.gitignore index fc951dd..1985f55 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,5 @@ /vendor/ *.iml /.idea/ -composer.lock composer.phar .phpunit.result.cache diff --git a/composer.lock b/composer.lock new file mode 100644 index 0000000..760e060 --- /dev/null +++ b/composer.lock @@ -0,0 +1,2732 @@ +{ + "_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": "10af1ad047d35c906b1381a8249cb062", + "packages": [], + "packages-dev": [ + { + "name": "doctrine/instantiator", + "version": "2.0.0", + "source": { + "type": "git", + "url": "https://github.com/doctrine/instantiator.git", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "shasum": "" + }, + "require": { + "php": "^8.1" + }, + "require-dev": { + "doctrine/coding-standard": "^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" + } + ], + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", + "keywords": [ + "constructor", + "instantiate" + ], + "support": { + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" + }, + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" + } + ], + "time": "2022-12-30T00:23:10+00:00" + }, + { + "name": "guzzlehttp/guzzle", + "version": "7.9.3", + "source": { + "type": "git", + "url": "https://github.com/guzzle/guzzle.git", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "reference": "7b2f29fe81dc4da0ca0ea7d42107a0845946ea77", + "shasum": "" + }, + "require": { + "ext-json": "*", + "guzzlehttp/promises": "^1.5.3 || ^2.0.3", + "guzzlehttp/psr7": "^2.7.0", + "php": "^7.2.5 || ^8.0", + "psr/http-client": "^1.0", + "symfony/deprecation-contracts": "^2.2 || ^3.0" + }, + "provide": { + "psr/http-client-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "ext-curl": "*", + "guzzle/client-integration-tests": "3.0.2", + "php-http/message-factory": "^1.1", + "phpunit/phpunit": "^8.5.39 || ^9.6.20", + "psr/log": "^1.1 || ^2.0 || ^3.0" + }, + "suggest": { + "ext-curl": "Required for CURL handler support", + "ext-intl": "Required for Internationalized Domain Name (IDN) support", + "psr/log": "Required for using the Log middleware" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "GuzzleHttp\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Jeremy Lindblom", + "email": "jeremeamia@gmail.com", + "homepage": "https://github.com/jeremeamia" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle is a PHP HTTP client library", + "keywords": [ + "client", + "curl", + "framework", + "http", + "http client", + "psr-18", + "psr-7", + "rest", + "web service" + ], + "support": { + "issues": "https://github.com/guzzle/guzzle/issues", + "source": "https://github.com/guzzle/guzzle/tree/7.9.3" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/guzzle", + "type": "tidelift" + } + ], + "time": "2025-03-27T13:37:11+00:00" + }, + { + "name": "guzzlehttp/promises", + "version": "2.2.0", + "source": { + "type": "git", + "url": "https://github.com/guzzle/promises.git", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/promises/zipball/7c69f28996b0a6920945dd20b3857e499d9ca96c", + "reference": "7c69f28996b0a6920945dd20b3857e499d9ca96c", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Promise\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + } + ], + "description": "Guzzle promises library", + "keywords": [ + "promise" + ], + "support": { + "issues": "https://github.com/guzzle/promises/issues", + "source": "https://github.com/guzzle/promises/tree/2.2.0" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/promises", + "type": "tidelift" + } + ], + "time": "2025-03-27T13:27:01+00:00" + }, + { + "name": "guzzlehttp/psr7", + "version": "2.7.1", + "source": { + "type": "git", + "url": "https://github.com/guzzle/psr7.git", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "reference": "c2270caaabe631b3b44c85f99e5a04bbb8060d16", + "shasum": "" + }, + "require": { + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" + }, + "provide": { + "psr/http-factory-implementation": "1.0", + "psr/http-message-implementation": "1.0" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" + }, + "suggest": { + "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" + }, + "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, + "autoload": { + "psr-4": { + "GuzzleHttp\\Psr7\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Graham Campbell", + "email": "hello@gjcampbell.co.uk", + "homepage": "https://github.com/GrahamCampbell" + }, + { + "name": "Michael Dowling", + "email": "mtdowling@gmail.com", + "homepage": "https://github.com/mtdowling" + }, + { + "name": "George Mponos", + "email": "gmponos@gmail.com", + "homepage": "https://github.com/gmponos" + }, + { + "name": "Tobias Nyholm", + "email": "tobias.nyholm@gmail.com", + "homepage": "https://github.com/Nyholm" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://github.com/sagikazarmark" + }, + { + "name": "Tobias Schultze", + "email": "webmaster@tubo-world.de", + "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" + } + ], + "description": "PSR-7 message implementation that also provides common utility methods", + "keywords": [ + "http", + "message", + "psr-7", + "request", + "response", + "stream", + "uri", + "url" + ], + "support": { + "issues": "https://github.com/guzzle/psr7/issues", + "source": "https://github.com/guzzle/psr7/tree/2.7.1" + }, + "funding": [ + { + "url": "https://github.com/GrahamCampbell", + "type": "github" + }, + { + "url": "https://github.com/Nyholm", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/guzzlehttp/psr7", + "type": "tidelift" + } + ], + "time": "2025-03-27T12:30:47+00:00" + }, + { + "name": "myclabs/deep-copy", + "version": "1.13.1", + "source": { + "type": "git", + "url": "https://github.com/myclabs/DeepCopy.git", + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/1720ddd719e16cf0db4eb1c6eca108031636d46c", + "reference": "1720ddd719e16cf0db4eb1c6eca108031636d46c", + "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", + "phpspec/prophecy": "^1.10", + "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.13.1" + }, + "funding": [ + { + "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", + "type": "tidelift" + } + ], + "time": "2025-04-29T12:36:36+00:00" + }, + { + "name": "nikic/php-parser", + "version": "v5.5.0", + "source": { + "type": "git", + "url": "https://github.com/nikic/PHP-Parser.git", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/ae59794362fe85e051a58ad36b289443f57be7a9", + "reference": "ae59794362fe85e051a58ad36b289443f57be7a9", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "ext-json": "*", + "ext-tokenizer": "*", + "php": ">=7.4" + }, + "require-dev": { + "ircmaxell/php-yacc": "^0.0.7", + "phpunit/phpunit": "^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.5.0" + }, + "time": "2025-05-31T08:24:38+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/extension-installer", + "version": "1.4.3", + "source": { + "type": "git", + "url": "https://github.com/phpstan/extension-installer.git", + "reference": "85e90b3942d06b2326fba0403ec24fe912372936" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/extension-installer/zipball/85e90b3942d06b2326fba0403ec24fe912372936", + "reference": "85e90b3942d06b2326fba0403ec24fe912372936", + "shasum": "" + }, + "require": { + "composer-plugin-api": "^2.0", + "php": "^7.2 || ^8.0", + "phpstan/phpstan": "^1.9.0 || ^2.0" + }, + "require-dev": { + "composer/composer": "^2.0", + "php-parallel-lint/php-parallel-lint": "^1.2.0", + "phpstan/phpstan-strict-rules": "^0.11 || ^0.12 || ^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPStan\\ExtensionInstaller\\Plugin" + }, + "autoload": { + "psr-4": { + "PHPStan\\ExtensionInstaller\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Composer plugin for automatic installation of PHPStan extensions", + "keywords": [ + "dev", + "static analysis" + ], + "support": { + "issues": "https://github.com/phpstan/extension-installer/issues", + "source": "https://github.com/phpstan/extension-installer/tree/1.4.3" + }, + "time": "2024-09-04T20:21:43+00:00" + }, + { + "name": "phpstan/phpstan", + "version": "2.1.17", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan.git", + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/89b5ef665716fa2a52ecd2633f21007a6a349053", + "reference": "89b5ef665716fa2a52ecd2633f21007a6a349053", + "shasum": "" + }, + "require": { + "php": "^7.4|^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" + } + ], + "time": "2025-05-21T20:55:28+00:00" + }, + { + "name": "phpstan/phpstan-phpunit", + "version": "2.0.6", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-phpunit.git", + "reference": "6b92469f8a7995e626da3aa487099617b8dfa260" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-phpunit/zipball/6b92469f8a7995e626da3aa487099617b8dfa260", + "reference": "6b92469f8a7995e626da3aa487099617b8dfa260", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0.4" + }, + "conflict": { + "phpunit/phpunit": "<7.0" + }, + "require-dev": { + "nikic/php-parser": "^5", + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-strict-rules": "^2.0", + "phpunit/phpunit": "^9.6" + }, + "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/2.0.6" + }, + "time": "2025-03-26T12:47:06+00:00" + }, + { + "name": "phpstan/phpstan-strict-rules", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/phpstan/phpstan-strict-rules.git", + "reference": "3e139cbe67fafa3588e1dbe27ca50f31fdb6236a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/3e139cbe67fafa3588e1dbe27ca50f31fdb6236a", + "reference": "3e139cbe67fafa3588e1dbe27ca50f31fdb6236a", + "shasum": "" + }, + "require": { + "php": "^7.4 || ^8.0", + "phpstan/phpstan": "^2.0.4" + }, + "require-dev": { + "php-parallel-lint/php-parallel-lint": "^1.2", + "phpstan/phpstan-deprecation-rules": "^2.0", + "phpstan/phpstan-phpunit": "^2.0", + "phpunit/phpunit": "^9.6" + }, + "type": "phpstan-extension", + "extra": { + "phpstan": { + "includes": [ + "rules.neon" + ] + } + }, + "autoload": { + "psr-4": { + "PHPStan\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Extra strict and opinionated rules for PHPStan", + "support": { + "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/2.0.4" + }, + "time": "2025-03-18T11:42:40+00:00" + }, + { + "name": "phpunit/php-code-coverage", + "version": "9.2.32", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-code-coverage.git", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5", + "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "ext-libxml": "*", + "ext-xmlwriter": "*", + "nikic/php-parser": "^4.19.1 || ^5.1.0", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-text-template": "^2.0.4", + "sebastian/code-unit-reverse-lookup": "^2.0.3", + "sebastian/complexity": "^2.0.3", + "sebastian/environment": "^5.1.5", + "sebastian/lines-of-code": "^1.0.4", + "sebastian/version": "^3.0.2", + "theseer/tokenizer": "^1.2.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.6" + }, + "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": "9.2.x-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/9.2.32" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-08-22T04:23:01+00:00" + }, + { + "name": "phpunit/php-file-iterator", + "version": "3.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-file-iterator.git", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "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", + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2021-12-02T12:48:52+00:00" + }, + { + "name": "phpunit/php-invoker", + "version": "3.1.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-invoker.git", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "ext-pcntl": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-pcntl": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.1-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", + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:58:55+00:00" + }, + { + "name": "phpunit/php-text-template", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-text-template.git", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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", + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T05:33:50+00:00" + }, + { + "name": "phpunit/php-timer", + "version": "5.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/php-timer.git", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Utility class for timing", + "homepage": "https://github.com/sebastianbergmann/php-timer/", + "keywords": [ + "timer" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/php-timer/issues", + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:16:10+00:00" + }, + { + "name": "phpunit/phpunit", + "version": "9.6.23", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/phpunit.git", + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "reference": "43d2cb18d0675c38bd44982a5d1d88f6d53d8d95", + "shasum": "" + }, + "require": { + "doctrine/instantiator": "^1.5.0 || ^2", + "ext-dom": "*", + "ext-json": "*", + "ext-libxml": "*", + "ext-mbstring": "*", + "ext-xml": "*", + "ext-xmlwriter": "*", + "myclabs/deep-copy": "^1.13.1", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.32", + "phpunit/php-file-iterator": "^3.0.6", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.4", + "phpunit/php-timer": "^5.0.3", + "sebastian/cli-parser": "^1.0.2", + "sebastian/code-unit": "^1.0.8", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.6", + "sebastian/environment": "^5.1.5", + "sebastian/exporter": "^4.0.6", + "sebastian/global-state": "^5.0.7", + "sebastian/object-enumerator": "^4.0.4", + "sebastian/resource-operations": "^3.0.4", + "sebastian/type": "^3.2.1", + "sebastian/version": "^3.0.2" + }, + "suggest": { + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" + }, + "bin": [ + "phpunit" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "9.6-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/9.6.23" + }, + "funding": [ + { + "url": "https://phpunit.de/sponsors.html", + "type": "custom" + }, + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + }, + { + "url": "https://liberapay.com/sebastianbergmann", + "type": "liberapay" + }, + { + "url": "https://thanks.dev/u/gh/sebastianbergmann", + "type": "thanks_dev" + }, + { + "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", + "type": "tidelift" + } + ], + "time": "2025-05-02T06:40:34+00:00" + }, + { + "name": "psr/http-client", + "version": "1.0.3", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-client.git", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-client/zipball/bb5906edc1c324c9a05aa0873d40117941e5fa90", + "reference": "bb5906edc1c324c9a05aa0873d40117941e5fa90", + "shasum": "" + }, + "require": { + "php": "^7.0 || ^8.0", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Client\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP clients", + "homepage": "https://github.com/php-fig/http-client", + "keywords": [ + "http", + "http-client", + "psr", + "psr-18" + ], + "support": { + "source": "https://github.com/php-fig/http-client" + }, + "time": "2023-09-23T14:17:50+00:00" + }, + { + "name": "psr/http-factory", + "version": "1.1.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-factory.git", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-factory/zipball/2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "reference": "2b4765fddfe3b508ac62f829e852b1501d3f6e8a", + "shasum": "" + }, + "require": { + "php": ">=7.1", + "psr/http-message": "^1.0 || ^2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "PSR-17: Common interfaces for PSR-7 HTTP message factories", + "keywords": [ + "factory", + "http", + "message", + "psr", + "psr-17", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-factory" + }, + "time": "2024-04-15T12:06:14+00:00" + }, + { + "name": "psr/http-message", + "version": "2.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/http-message.git", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "shasum": "" + }, + "require": { + "php": "^7.2 || ^8.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\Http\\Message\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "https://www.php-fig.org/" + } + ], + "description": "Common interface for HTTP messages", + "homepage": "https://github.com/php-fig/http-message", + "keywords": [ + "http", + "http-message", + "psr", + "psr-7", + "request", + "response" + ], + "support": { + "source": "https://github.com/php-fig/http-message/tree/2.0" + }, + "time": "2023-04-04T09:54:51+00:00" + }, + { + "name": "ralouphie/getallheaders", + "version": "3.0.3", + "source": { + "type": "git", + "url": "https://github.com/ralouphie/getallheaders.git", + "reference": "120b605dfeb996808c31b6477290a714d356e822" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ralouphie/getallheaders/zipball/120b605dfeb996808c31b6477290a714d356e822", + "reference": "120b605dfeb996808c31b6477290a714d356e822", + "shasum": "" + }, + "require": { + "php": ">=5.6" + }, + "require-dev": { + "php-coveralls/php-coveralls": "^2.1", + "phpunit/phpunit": "^5 || ^6.5" + }, + "type": "library", + "autoload": { + "files": [ + "src/getallheaders.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ralph Khattar", + "email": "ralph.khattar@gmail.com" + } + ], + "description": "A polyfill for getallheaders.", + "support": { + "issues": "https://github.com/ralouphie/getallheaders/issues", + "source": "https://github.com/ralouphie/getallheaders/tree/develop" + }, + "time": "2019-03-08T08:55:37+00:00" + }, + { + "name": "sebastian/cli-parser", + "version": "1.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/cli-parser.git", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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", + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:27:43+00:00" + }, + { + "name": "sebastian/code-unit", + "version": "1.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit.git", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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", + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:08:54+00:00" + }, + { + "name": "sebastian/code-unit-reverse-lookup", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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", + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T05:30:19+00:00" + }, + { + "name": "sebastian/comparator", + "version": "4.0.8", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/comparator.git", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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", + "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.8" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2022-09-14T12:41:17+00:00" + }, + { + "name": "sebastian/complexity", + "version": "2.0.3", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/complexity.git", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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", + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:19:30+00:00" + }, + { + "name": "sebastian/diff", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/diff.git", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3", + "symfony/process": "^4.2 || ^5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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", + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:30:58+00:00" + }, + { + "name": "sebastian/environment", + "version": "5.1.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/environment.git", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-posix": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.1-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": "http://www.github.com/sebastianbergmann/environment", + "keywords": [ + "Xdebug", + "environment", + "hhvm" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/environment/issues", + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:03:51+00:00" + }, + { + "name": "sebastian/exporter", + "version": "4.0.6", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/exporter.git", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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", + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:33:00+00:00" + }, + { + "name": "sebastian/global-state", + "version": "5.0.7", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/global-state.git", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "ext-dom": "*", + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "5.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": "http://www.github.com/sebastianbergmann/global-state", + "keywords": [ + "global state" + ], + "support": { + "issues": "https://github.com/sebastianbergmann/global-state/issues", + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-02T06:35:11+00:00" + }, + { + "name": "sebastian/lines-of-code", + "version": "1.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/lines-of-code.git", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "shasum": "" + }, + "require": { + "nikic/php-parser": "^4.18 || ^5.0", + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.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", + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-12-22T06:20:34+00:00" + }, + { + "name": "sebastian/object-enumerator", + "version": "4.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-enumerator.git", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", + "shasum": "" + }, + "require": { + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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": "Traverses array structures and object graphs to enumerate all referenced objects", + "homepage": "https://github.com/sebastianbergmann/object-enumerator/", + "support": { + "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:12:34+00:00" + }, + { + "name": "sebastian/object-reflector", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/object-reflector.git", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.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", + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-10-26T13:14:26+00:00" + }, + { + "name": "sebastian/recursion-context", + "version": "4.0.5", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/recursion-context.git", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "4.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", + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:07:39+00:00" + }, + { + "name": "sebastian/resource-operations", + "version": "3.0.4", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "reference": "05d5692a7993ecccd56a03e40cd7e5b09b1d404e", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.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" + } + ], + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", + "support": { + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.4" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2024-03-14T16:00:52+00:00" + }, + { + "name": "sebastian/type", + "version": "3.2.1", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.2-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", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2023-02-03T06:13:03+00:00" + }, + { + "name": "sebastian/version", + "version": "3.0.2", + "source": { + "type": "git", + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", + "shasum": "" + }, + "require": { + "php": ">=7.3" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "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 that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", + "support": { + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" + }, + "funding": [ + { + "url": "https://github.com/sebastianbergmann", + "type": "github" + } + ], + "time": "2020-09-28T06:39:44+00:00" + }, + { + "name": "squizlabs/php_codesniffer", + "version": "3.13.2", + "source": { + "type": "git", + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/5b5e3821314f947dd040c70f7992a64eac89025c", + "reference": "5b5e3821314f947dd040c70f7992a64eac89025c", + "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" + }, + { + "url": "https://thanks.dev/u/gh/phpcsstandards", + "type": "thanks_dev" + } + ], + "time": "2025-06-17T22:17:01+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v3.6.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/63afe740e99a13ba87ec199bb07bbdee937a5b62", + "reference": "63afe740e99a13ba87ec199bb07bbdee937a5b62", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/contracts", + "name": "symfony/contracts" + }, + "branch-alias": { + "dev-main": "3.6-dev" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.6.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-25T14:21:43+00:00" + }, + { + "name": "symfony/polyfill-apcu", + "version": "v1.32.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-apcu.git", + "reference": "9cba05c714911d416f478a74d1758865f7373c3f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-apcu/zipball/9cba05c714911d416f478a74d1758865f7373c3f", + "reference": "9cba05c714911d416f478a74d1758865f7373c3f", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "url": "https://github.com/symfony/polyfill", + "name": "symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Apcu\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting apcu_* functions to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "apcu", + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-apcu/tree/v1.32.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-10T14:38: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": {}, + "prefer-stable": true, + "prefer-lowest": false, + "platform": { + "php": "^7.4|^8.0", + "ext-json": "*" + }, + "platform-dev": {}, + "plugin-api-version": "2.6.0" +} From 47ed09255526e7a5db8a84eee3a8c9aaae33d109 Mon Sep 17 00:00:00 2001 From: simonhammes Date: Fri, 20 Jun 2025 23:59:33 +0200 Subject: [PATCH 3/7] Fix PHPStan issues Signed-off-by: simonhammes --- phpstan/include-by-php-version.php | 4 ---- phpstan/php-74.neon | 6 ------ src/Prometheus/Storage/APCng.php | 2 +- src/Prometheus/Storage/PDO.php | 4 ++-- src/Prometheus/Storage/Redis.php | 2 +- src/Prometheus/Storage/RedisNg.php | 5 +---- 6 files changed, 5 insertions(+), 18 deletions(-) delete mode 100644 phpstan/php-74.neon diff --git a/phpstan/include-by-php-version.php b/phpstan/include-by-php-version.php index d84c21b..5dc16e9 100644 --- a/phpstan/include-by-php-version.php +++ b/phpstan/include-by-php-version.php @@ -4,10 +4,6 @@ $includes = []; -if (PHP_VERSION_ID >= 70400) { - $includes[] = __DIR__ . '/php-74.neon'; -} - if (PHP_VERSION_ID >= 80000) { $includes[] = __DIR__ . '/php-80.neon'; } diff --git a/phpstan/php-74.neon b/phpstan/php-74.neon deleted file mode 100644 index 5a41331..0000000 --- a/phpstan/php-74.neon +++ /dev/null @@ -1,6 +0,0 @@ -parameters: - ignoreErrors: - - - message: "#^Strict comparison using === between non\\-empty\\-array\\ and false will always evaluate to false\\.$#" - count: 1 - path: ../src/Prometheus/Storage/RedisNg.php diff --git a/src/Prometheus/Storage/APCng.php b/src/Prometheus/Storage/APCng.php index b37cffb..97cfb75 100644 --- a/src/Prometheus/Storage/APCng.php +++ b/src/Prometheus/Storage/APCng.php @@ -438,7 +438,7 @@ private function buildPermutationTree(array $labelValues): \Generator /** @phpst if (count($labelValues) > 0) { $lastIndex = array_key_last($labelValues); $currentValue = array_pop($labelValues); - if ($currentValue != null) { + if ($currentValue !== null) { foreach ($this->buildPermutationTree($labelValues) as $prefix) { foreach ($currentValue as $value) { yield $prefix + [$lastIndex => $value]; diff --git a/src/Prometheus/Storage/PDO.php b/src/Prometheus/Storage/PDO.php index 80b6ec5..9d97e2f 100644 --- a/src/Prometheus/Storage/PDO.php +++ b/src/Prometheus/Storage/PDO.php @@ -597,7 +597,7 @@ protected function createTables(): void $this->database->query($sql); - $hash_size = $driver == 'sqlite' ? 32 : 64; + $hash_size = $driver === 'sqlite' ? 32 : 64; switch ($driver) { case 'pgsql': @@ -627,7 +627,7 @@ protected function createTables(): void $this->database->query($sql); - $timestamp_type = $driver == 'sqlite' ? 'timestamp' : 'int'; + $timestamp_type = $driver === 'sqlite' ? 'timestamp' : 'int'; $sqlIndex = null; switch ($driver) { diff --git a/src/Prometheus/Storage/Redis.php b/src/Prometheus/Storage/Redis.php index 730fac8..0ae1a97 100644 --- a/src/Prometheus/Storage/Redis.php +++ b/src/Prometheus/Storage/Redis.php @@ -429,7 +429,7 @@ private function collectHistograms(): array $allLabelValues = []; foreach (array_keys($raw) as $k) { $d = json_decode($k, true); - if ($d['b'] == 'sum') { + if ($d['b'] === 'sum') { continue; } $allLabelValues[] = $d['labelValues']; diff --git a/src/Prometheus/Storage/RedisNg.php b/src/Prometheus/Storage/RedisNg.php index a5bfc36..807ed6d 100644 --- a/src/Prometheus/Storage/RedisNg.php +++ b/src/Prometheus/Storage/RedisNg.php @@ -428,7 +428,7 @@ private function collectHistograms(): array $allLabelValues = []; foreach (array_keys($raw) as $k) { $d = json_decode($k, true); - if ($d['b'] == 'sum') { + if ($d['b'] === 'sum') { continue; } $allLabelValues[] = $d['labelValues']; @@ -534,9 +534,6 @@ private function collectSummaries(): array $samples = []; foreach ($values as $valueKey) { $rawValue = explode(":", $valueKey); - if ($rawValue === false) { - continue; - } $encodedLabelValues = $rawValue[2]; $decodedLabelValues = $this->decodeLabelValues($encodedLabelValues); From cd87946d2dc2a137434714d1f168f986b1e4cd13 Mon Sep 17 00:00:00 2001 From: simonhammes Date: Sat, 21 Jun 2025 08:11:39 +0200 Subject: [PATCH 4/7] docker-compose -> docker compose Signed-off-by: simonhammes --- README.APCng.md | 2 +- README.md | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/README.APCng.md b/README.APCng.md index b197b19..51bbb12 100644 --- a/README.APCng.md +++ b/README.APCng.md @@ -47,7 +47,7 @@ The following table compares `APC` and `APCng` processing time for a series of o | APCng 100k keys / 2500 metrics | 274.7 | 84.0 | 34.6 | 4092.4 | 52.9x | | APCng 1M keys / 2500 metrics | 187.8 | 87.7 | 40.7 | 5396.4 | 50.1x | -The suite of engine-performance tests can be automatically executed by running `docker-compose run phpunit vendor/bin/phpunit tests/Test --group Performance`. This set of tests in not part of the default unit tests which get run, since they take quite a while to complete. Any significant change to the APC or APCng code should be followed by a performance-test run to quantify the before/after impact of the change. Currently this is triggered manually, but it could be automated as part of a Github workflow. +The suite of engine-performance tests can be automatically executed by running `docker compose run phpunit vendor/bin/phpunit tests/Test --group Performance`. This set of tests in not part of the default unit tests which get run, since they take quite a while to complete. Any significant change to the APC or APCng code should be followed by a performance-test run to quantify the before/after impact of the change. Currently this is triggered manually, but it could be automated as part of a Github workflow. ## Known limitations One thing to note, the current implementation of the `Summary` observer should be avoided on busy servers. This is true for both the `APC` and `APCng` storage engines. The reason is simple: each observation (call to increment, set, etc) results in a new item being written to APCu. The default TTL for these items is 600 seconds. On a busy server that might be getting 1000 requests/second, that results in 600,000 APC cache items continually churning in and out of existence. This can put some interesting pressure on APCu, which could lead to rapid fragmentation of APCu memory. Definitely test before deploying in production. diff --git a/README.md b/README.md index 3866cfd..608a492 100644 --- a/README.md +++ b/README.md @@ -143,7 +143,7 @@ composer require promphp/prometheus_push_gateway_php Start a Redis instance: ``` -docker-compose up redis +docker compose up redis ``` Run the tests: @@ -157,16 +157,16 @@ composer install ## Black box testing -Just start the nginx, fpm & Redis setup with docker-compose: +Just start the nginx, fpm & Redis setup with Docker Compose: ``` -docker-compose up +docker compose up ``` Pick the adapter you want to test. ``` -docker-compose run phpunit env ADAPTER=apc vendor/bin/phpunit tests/Test/ -docker-compose run phpunit env ADAPTER=apcng vendor/bin/phpunit tests/Test/ -docker-compose run phpunit env ADAPTER=redis vendor/bin/phpunit tests/Test/ +docker compose run phpunit env ADAPTER=apc vendor/bin/phpunit tests/Test/ +docker compose run phpunit env ADAPTER=apcng vendor/bin/phpunit tests/Test/ +docker compose run phpunit env ADAPTER=redis vendor/bin/phpunit tests/Test/ ``` ## Performance testing @@ -178,6 +178,6 @@ phpunit vendor/bin/phpunit tests/Test/ --group Performance The test can also be run inside a container. ``` -docker-compose up -docker-compose run phpunit vendor/bin/phpunit tests/Test/ --group Performance +docker compose up +docker compose run phpunit vendor/bin/phpunit tests/Test/ --group Performance ``` From c00c839a162ace3d6d4a72450ebee812ca3913db Mon Sep 17 00:00:00 2001 From: simonhammes Date: Sat, 21 Jun 2025 08:47:36 +0200 Subject: [PATCH 5/7] Rename abstract test classes to fix PHPUnit warning Signed-off-by: simonhammes --- tests/Test/Prometheus/APC/CollectorRegistryTest.php | 4 ++-- tests/Test/Prometheus/APC/CounterTest.php | 4 ++-- tests/Test/Prometheus/APC/GaugeTest.php | 4 ++-- tests/Test/Prometheus/APC/HistogramTest.php | 4 ++-- tests/Test/Prometheus/APC/SummaryTest.php | 4 ++-- tests/Test/Prometheus/APCng/CollectorRegistryTest.php | 4 ++-- tests/Test/Prometheus/APCng/CounterTest.php | 4 ++-- tests/Test/Prometheus/APCng/GaugeTest.php | 4 ++-- tests/Test/Prometheus/APCng/HistogramTest.php | 4 ++-- tests/Test/Prometheus/APCng/SummaryTest.php | 4 ++-- ...RegistryTest.php => AbstractCollectorRegistryTestCase.php} | 2 +- .../{AbstractCounterTest.php => AbstractCounterTestCase.php} | 2 +- .../{AbstractGaugeTest.php => AbstractGaugeTestCase.php} | 2 +- ...bstractHistogramTest.php => AbstractHistogramTestCase.php} | 2 +- .../{AbstractSummaryTest.php => AbstractSummaryTestCase.php} | 2 +- tests/Test/Prometheus/InMemory/CollectorRegistryTest.php | 4 ++-- tests/Test/Prometheus/InMemory/CounterTest.php | 4 ++-- tests/Test/Prometheus/InMemory/GaugeTest.php | 4 ++-- tests/Test/Prometheus/InMemory/HistogramTest.php | 4 ++-- tests/Test/Prometheus/InMemory/SummaryTest.php | 4 ++-- tests/Test/Prometheus/PDO/CollectorRegistryTest.php | 4 ++-- tests/Test/Prometheus/PDO/CounterTest.php | 4 ++-- tests/Test/Prometheus/PDO/GaugeTest.php | 4 ++-- tests/Test/Prometheus/PDO/HistogramTest.php | 4 ++-- tests/Test/Prometheus/PDO/SummaryTest.php | 4 ++-- tests/Test/Prometheus/Redis/CollectorRegistryTest.php | 4 ++-- tests/Test/Prometheus/Redis/CounterTest.php | 4 ++-- tests/Test/Prometheus/Redis/CounterWithPrefixTest.php | 4 ++-- tests/Test/Prometheus/Redis/GaugeTest.php | 4 ++-- tests/Test/Prometheus/Redis/GaugeWithPrefixTest.php | 4 ++-- tests/Test/Prometheus/Redis/HistogramTest.php | 4 ++-- tests/Test/Prometheus/Redis/HistogramWithPrefixTest.php | 4 ++-- tests/Test/Prometheus/Redis/SummaryTest.php | 4 ++-- tests/Test/Prometheus/Redis/SummaryWithPrefixTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/CollectorRegistryTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/CounterTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/CounterWithPrefixTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/GaugeTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/GaugeWithPrefixTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/HistogramTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/HistogramWithPrefixTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/SummaryTest.php | 4 ++-- tests/Test/Prometheus/RedisNg/SummaryWithPrefixTest.php | 4 ++-- 43 files changed, 81 insertions(+), 81 deletions(-) rename tests/Test/Prometheus/{AbstractCollectorRegistryTest.php => AbstractCollectorRegistryTestCase.php} (99%) rename tests/Test/Prometheus/{AbstractCounterTest.php => AbstractCounterTestCase.php} (99%) rename tests/Test/Prometheus/{AbstractGaugeTest.php => AbstractGaugeTestCase.php} (99%) rename tests/Test/Prometheus/{AbstractHistogramTest.php => AbstractHistogramTestCase.php} (99%) rename tests/Test/Prometheus/{AbstractSummaryTest.php => AbstractSummaryTestCase.php} (99%) diff --git a/tests/Test/Prometheus/APC/CollectorRegistryTest.php b/tests/Test/Prometheus/APC/CollectorRegistryTest.php index 41d17ca..8b62eb5 100644 --- a/tests/Test/Prometheus/APC/CollectorRegistryTest.php +++ b/tests/Test/Prometheus/APC/CollectorRegistryTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\APC; use Prometheus\Storage\APC; -use Test\Prometheus\AbstractCollectorRegistryTest; +use Test\Prometheus\AbstractCollectorRegistryTestCase; /** * @requires extension apcu */ -class CollectorRegistryTest extends AbstractCollectorRegistryTest +class CollectorRegistryTest extends AbstractCollectorRegistryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APC/CounterTest.php b/tests/Test/Prometheus/APC/CounterTest.php index cd86ac8..86cb568 100644 --- a/tests/Test/Prometheus/APC/CounterTest.php +++ b/tests/Test/Prometheus/APC/CounterTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APC; use Prometheus\Storage\APC; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class CounterTest extends AbstractCounterTest +class CounterTest extends AbstractCounterTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APC/GaugeTest.php b/tests/Test/Prometheus/APC/GaugeTest.php index 0d839cf..d27d134 100644 --- a/tests/Test/Prometheus/APC/GaugeTest.php +++ b/tests/Test/Prometheus/APC/GaugeTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APC; use Prometheus\Storage\APC; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class GaugeTest extends AbstractGaugeTest +class GaugeTest extends AbstractGaugeTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APC/HistogramTest.php b/tests/Test/Prometheus/APC/HistogramTest.php index d4d2eed..b81a98b 100644 --- a/tests/Test/Prometheus/APC/HistogramTest.php +++ b/tests/Test/Prometheus/APC/HistogramTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APC; use Prometheus\Storage\APC; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class HistogramTest extends AbstractHistogramTest +class HistogramTest extends AbstractHistogramTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APC/SummaryTest.php b/tests/Test/Prometheus/APC/SummaryTest.php index 941efc5..213792b 100644 --- a/tests/Test/Prometheus/APC/SummaryTest.php +++ b/tests/Test/Prometheus/APC/SummaryTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APC; use Prometheus\Storage\APC; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class SummaryTest extends AbstractSummaryTest +class SummaryTest extends AbstractSummaryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APCng/CollectorRegistryTest.php b/tests/Test/Prometheus/APCng/CollectorRegistryTest.php index 3fef1e8..1e61b91 100644 --- a/tests/Test/Prometheus/APCng/CollectorRegistryTest.php +++ b/tests/Test/Prometheus/APCng/CollectorRegistryTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\APCng; use Prometheus\Storage\APCng; -use Test\Prometheus\AbstractCollectorRegistryTest; +use Test\Prometheus\AbstractCollectorRegistryTestCase; /** * @requires extension apcu */ -class CollectorRegistryTest extends AbstractCollectorRegistryTest +class CollectorRegistryTest extends AbstractCollectorRegistryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APCng/CounterTest.php b/tests/Test/Prometheus/APCng/CounterTest.php index a190a16..ff9b253 100644 --- a/tests/Test/Prometheus/APCng/CounterTest.php +++ b/tests/Test/Prometheus/APCng/CounterTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APCng; use Prometheus\Storage\APCng; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class CounterTest extends AbstractCounterTest +class CounterTest extends AbstractCounterTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APCng/GaugeTest.php b/tests/Test/Prometheus/APCng/GaugeTest.php index 43c312d..1c53b3b 100644 --- a/tests/Test/Prometheus/APCng/GaugeTest.php +++ b/tests/Test/Prometheus/APCng/GaugeTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APCng; use Prometheus\Storage\APCng; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class GaugeTest extends AbstractGaugeTest +class GaugeTest extends AbstractGaugeTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APCng/HistogramTest.php b/tests/Test/Prometheus/APCng/HistogramTest.php index 7102130..5b9b77d 100644 --- a/tests/Test/Prometheus/APCng/HistogramTest.php +++ b/tests/Test/Prometheus/APCng/HistogramTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APCng; use Prometheus\Storage\APCng; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class HistogramTest extends AbstractHistogramTest +class HistogramTest extends AbstractHistogramTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/APCng/SummaryTest.php b/tests/Test/Prometheus/APCng/SummaryTest.php index 0a92a5f..73b3a80 100644 --- a/tests/Test/Prometheus/APCng/SummaryTest.php +++ b/tests/Test/Prometheus/APCng/SummaryTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\APCng; use Prometheus\Storage\APCng; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension apcu */ -class SummaryTest extends AbstractSummaryTest +class SummaryTest extends AbstractSummaryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/AbstractCollectorRegistryTest.php b/tests/Test/Prometheus/AbstractCollectorRegistryTestCase.php similarity index 99% rename from tests/Test/Prometheus/AbstractCollectorRegistryTest.php rename to tests/Test/Prometheus/AbstractCollectorRegistryTestCase.php index 93c1435..23eb8d8 100644 --- a/tests/Test/Prometheus/AbstractCollectorRegistryTest.php +++ b/tests/Test/Prometheus/AbstractCollectorRegistryTestCase.php @@ -11,7 +11,7 @@ use Prometheus\Exception\MetricsRegistrationException; use Prometheus\Exception\MetricNotFoundException; -abstract class AbstractCollectorRegistryTest extends TestCase +abstract class AbstractCollectorRegistryTestCase extends TestCase { /** * @var Adapter diff --git a/tests/Test/Prometheus/AbstractCounterTest.php b/tests/Test/Prometheus/AbstractCounterTestCase.php similarity index 99% rename from tests/Test/Prometheus/AbstractCounterTest.php rename to tests/Test/Prometheus/AbstractCounterTestCase.php index 880b825..4bc3db0 100644 --- a/tests/Test/Prometheus/AbstractCounterTest.php +++ b/tests/Test/Prometheus/AbstractCounterTestCase.php @@ -14,7 +14,7 @@ /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -abstract class AbstractCounterTest extends TestCase +abstract class AbstractCounterTestCase extends TestCase { /** * @var Adapter diff --git a/tests/Test/Prometheus/AbstractGaugeTest.php b/tests/Test/Prometheus/AbstractGaugeTestCase.php similarity index 99% rename from tests/Test/Prometheus/AbstractGaugeTest.php rename to tests/Test/Prometheus/AbstractGaugeTestCase.php index 1e31272..4faeea5 100644 --- a/tests/Test/Prometheus/AbstractGaugeTest.php +++ b/tests/Test/Prometheus/AbstractGaugeTestCase.php @@ -14,7 +14,7 @@ /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -abstract class AbstractGaugeTest extends TestCase +abstract class AbstractGaugeTestCase extends TestCase { /** * @var Adapter diff --git a/tests/Test/Prometheus/AbstractHistogramTest.php b/tests/Test/Prometheus/AbstractHistogramTestCase.php similarity index 99% rename from tests/Test/Prometheus/AbstractHistogramTest.php rename to tests/Test/Prometheus/AbstractHistogramTestCase.php index b68084f..9275919 100644 --- a/tests/Test/Prometheus/AbstractHistogramTest.php +++ b/tests/Test/Prometheus/AbstractHistogramTestCase.php @@ -15,7 +15,7 @@ /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -abstract class AbstractHistogramTest extends TestCase +abstract class AbstractHistogramTestCase extends TestCase { use AlmostIdenticalFloatArraysAssertionTrait; diff --git a/tests/Test/Prometheus/AbstractSummaryTest.php b/tests/Test/Prometheus/AbstractSummaryTestCase.php similarity index 99% rename from tests/Test/Prometheus/AbstractSummaryTest.php rename to tests/Test/Prometheus/AbstractSummaryTestCase.php index 2cd0baa..e66fbc0 100644 --- a/tests/Test/Prometheus/AbstractSummaryTest.php +++ b/tests/Test/Prometheus/AbstractSummaryTestCase.php @@ -15,7 +15,7 @@ /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -abstract class AbstractSummaryTest extends TestCase +abstract class AbstractSummaryTestCase extends TestCase { use AlmostIdenticalFloatArraysAssertionTrait; diff --git a/tests/Test/Prometheus/InMemory/CollectorRegistryTest.php b/tests/Test/Prometheus/InMemory/CollectorRegistryTest.php index 27377e3..f1ed63d 100644 --- a/tests/Test/Prometheus/InMemory/CollectorRegistryTest.php +++ b/tests/Test/Prometheus/InMemory/CollectorRegistryTest.php @@ -5,9 +5,9 @@ namespace Test\Prometheus\InMemory; use Prometheus\Storage\InMemory; -use Test\Prometheus\AbstractCollectorRegistryTest; +use Test\Prometheus\AbstractCollectorRegistryTestCase; -class CollectorRegistryTest extends AbstractCollectorRegistryTest +class CollectorRegistryTest extends AbstractCollectorRegistryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/InMemory/CounterTest.php b/tests/Test/Prometheus/InMemory/CounterTest.php index 544950c..e873236 100644 --- a/tests/Test/Prometheus/InMemory/CounterTest.php +++ b/tests/Test/Prometheus/InMemory/CounterTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\InMemory; use Prometheus\Storage\InMemory; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class CounterTest extends AbstractCounterTest +class CounterTest extends AbstractCounterTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/InMemory/GaugeTest.php b/tests/Test/Prometheus/InMemory/GaugeTest.php index 0e74ca7..fcd1933 100644 --- a/tests/Test/Prometheus/InMemory/GaugeTest.php +++ b/tests/Test/Prometheus/InMemory/GaugeTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\InMemory; use Prometheus\Storage\InMemory; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class GaugeTest extends AbstractGaugeTest +class GaugeTest extends AbstractGaugeTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/InMemory/HistogramTest.php b/tests/Test/Prometheus/InMemory/HistogramTest.php index 1a8057e..53dc5d1 100644 --- a/tests/Test/Prometheus/InMemory/HistogramTest.php +++ b/tests/Test/Prometheus/InMemory/HistogramTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\InMemory; use Prometheus\Storage\InMemory; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class HistogramTest extends AbstractHistogramTest +class HistogramTest extends AbstractHistogramTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/InMemory/SummaryTest.php b/tests/Test/Prometheus/InMemory/SummaryTest.php index 1188b81..d3e8da9 100644 --- a/tests/Test/Prometheus/InMemory/SummaryTest.php +++ b/tests/Test/Prometheus/InMemory/SummaryTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\InMemory; use Prometheus\Storage\InMemory; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class SummaryTest extends AbstractSummaryTest +class SummaryTest extends AbstractSummaryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/PDO/CollectorRegistryTest.php b/tests/Test/Prometheus/PDO/CollectorRegistryTest.php index 30fbc64..bd3b1eb 100644 --- a/tests/Test/Prometheus/PDO/CollectorRegistryTest.php +++ b/tests/Test/Prometheus/PDO/CollectorRegistryTest.php @@ -5,9 +5,9 @@ namespace Test\Prometheus\PDO; use Prometheus\Storage\PDO; -use Test\Prometheus\AbstractCollectorRegistryTest; +use Test\Prometheus\AbstractCollectorRegistryTestCase; -class CollectorRegistryTest extends AbstractCollectorRegistryTest +class CollectorRegistryTest extends AbstractCollectorRegistryTestCase { use PdoCredentialsTrait; diff --git a/tests/Test/Prometheus/PDO/CounterTest.php b/tests/Test/Prometheus/PDO/CounterTest.php index de15d83..1d8edb7 100644 --- a/tests/Test/Prometheus/PDO/CounterTest.php +++ b/tests/Test/Prometheus/PDO/CounterTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\PDO; use Prometheus\Storage\PDO; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class CounterTest extends AbstractCounterTest +class CounterTest extends AbstractCounterTestCase { use PdoCredentialsTrait; diff --git a/tests/Test/Prometheus/PDO/GaugeTest.php b/tests/Test/Prometheus/PDO/GaugeTest.php index 182ecea..9c23f80 100644 --- a/tests/Test/Prometheus/PDO/GaugeTest.php +++ b/tests/Test/Prometheus/PDO/GaugeTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\PDO; use Prometheus\Storage\PDO; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class GaugeTest extends AbstractGaugeTest +class GaugeTest extends AbstractGaugeTestCase { use PdoCredentialsTrait; diff --git a/tests/Test/Prometheus/PDO/HistogramTest.php b/tests/Test/Prometheus/PDO/HistogramTest.php index 634995a..01c9667 100644 --- a/tests/Test/Prometheus/PDO/HistogramTest.php +++ b/tests/Test/Prometheus/PDO/HistogramTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\PDO; use Prometheus\Storage\PDO; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class HistogramTest extends AbstractHistogramTest +class HistogramTest extends AbstractHistogramTestCase { use PdoCredentialsTrait; diff --git a/tests/Test/Prometheus/PDO/SummaryTest.php b/tests/Test/Prometheus/PDO/SummaryTest.php index c384592..cd5c57e 100644 --- a/tests/Test/Prometheus/PDO/SummaryTest.php +++ b/tests/Test/Prometheus/PDO/SummaryTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\PDO; use Prometheus\Storage\PDO; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ */ -class SummaryTest extends AbstractSummaryTest +class SummaryTest extends AbstractSummaryTestCase { use PdoCredentialsTrait; diff --git a/tests/Test/Prometheus/Redis/CollectorRegistryTest.php b/tests/Test/Prometheus/Redis/CollectorRegistryTest.php index e0c661f..ab101d8 100644 --- a/tests/Test/Prometheus/Redis/CollectorRegistryTest.php +++ b/tests/Test/Prometheus/Redis/CollectorRegistryTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractCollectorRegistryTest; +use Test\Prometheus\AbstractCollectorRegistryTestCase; /** * @requires extension redis */ -class CollectorRegistryTest extends AbstractCollectorRegistryTest +class CollectorRegistryTest extends AbstractCollectorRegistryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/CounterTest.php b/tests/Test/Prometheus/Redis/CounterTest.php index df0c2b4..95341c4 100644 --- a/tests/Test/Prometheus/Redis/CounterTest.php +++ b/tests/Test/Prometheus/Redis/CounterTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class CounterTest extends AbstractCounterTest +class CounterTest extends AbstractCounterTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/CounterWithPrefixTest.php b/tests/Test/Prometheus/Redis/CounterWithPrefixTest.php index ab1ab55..a72bf2d 100644 --- a/tests/Test/Prometheus/Redis/CounterWithPrefixTest.php +++ b/tests/Test/Prometheus/Redis/CounterWithPrefixTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class CounterWithPrefixTest extends AbstractCounterTest +class CounterWithPrefixTest extends AbstractCounterTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/GaugeTest.php b/tests/Test/Prometheus/Redis/GaugeTest.php index fa53a45..6afc2b3 100644 --- a/tests/Test/Prometheus/Redis/GaugeTest.php +++ b/tests/Test/Prometheus/Redis/GaugeTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class GaugeTest extends AbstractGaugeTest +class GaugeTest extends AbstractGaugeTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/GaugeWithPrefixTest.php b/tests/Test/Prometheus/Redis/GaugeWithPrefixTest.php index 3606e68..c97ad71 100644 --- a/tests/Test/Prometheus/Redis/GaugeWithPrefixTest.php +++ b/tests/Test/Prometheus/Redis/GaugeWithPrefixTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class GaugeWithPrefixTest extends AbstractGaugeTest +class GaugeWithPrefixTest extends AbstractGaugeTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/HistogramTest.php b/tests/Test/Prometheus/Redis/HistogramTest.php index 0b6e61a..eba728f 100644 --- a/tests/Test/Prometheus/Redis/HistogramTest.php +++ b/tests/Test/Prometheus/Redis/HistogramTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class HistogramTest extends AbstractHistogramTest +class HistogramTest extends AbstractHistogramTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/HistogramWithPrefixTest.php b/tests/Test/Prometheus/Redis/HistogramWithPrefixTest.php index 042ac63..f6d88fd 100644 --- a/tests/Test/Prometheus/Redis/HistogramWithPrefixTest.php +++ b/tests/Test/Prometheus/Redis/HistogramWithPrefixTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class HistogramWithPrefixTest extends AbstractHistogramTest +class HistogramWithPrefixTest extends AbstractHistogramTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/SummaryTest.php b/tests/Test/Prometheus/Redis/SummaryTest.php index d6b0c59..c4b550f 100644 --- a/tests/Test/Prometheus/Redis/SummaryTest.php +++ b/tests/Test/Prometheus/Redis/SummaryTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class SummaryTest extends AbstractSummaryTest +class SummaryTest extends AbstractSummaryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/Redis/SummaryWithPrefixTest.php b/tests/Test/Prometheus/Redis/SummaryWithPrefixTest.php index 3fd91fa..2b98198 100644 --- a/tests/Test/Prometheus/Redis/SummaryWithPrefixTest.php +++ b/tests/Test/Prometheus/Redis/SummaryWithPrefixTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\Redis; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class SummaryWithPrefixTest extends AbstractSummaryTest +class SummaryWithPrefixTest extends AbstractSummaryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/CollectorRegistryTest.php b/tests/Test/Prometheus/RedisNg/CollectorRegistryTest.php index f164731..94dd0ee 100644 --- a/tests/Test/Prometheus/RedisNg/CollectorRegistryTest.php +++ b/tests/Test/Prometheus/RedisNg/CollectorRegistryTest.php @@ -5,12 +5,12 @@ namespace Test\Prometheus\RedisNg; use Prometheus\Storage\Redis; -use Test\Prometheus\AbstractCollectorRegistryTest; +use Test\Prometheus\AbstractCollectorRegistryTestCase; /** * @requires extension redis */ -class CollectorRegistryTest extends AbstractCollectorRegistryTest +class CollectorRegistryTest extends AbstractCollectorRegistryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/CounterTest.php b/tests/Test/Prometheus/RedisNg/CounterTest.php index b497a8f..9ec2c93 100644 --- a/tests/Test/Prometheus/RedisNg/CounterTest.php +++ b/tests/Test/Prometheus/RedisNg/CounterTest.php @@ -5,13 +5,13 @@ namespace Test\Prometheus\RedisNg; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class CounterTest extends AbstractCounterTest +class CounterTest extends AbstractCounterTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/CounterWithPrefixTest.php b/tests/Test/Prometheus/RedisNg/CounterWithPrefixTest.php index a28c122..131f15d 100644 --- a/tests/Test/Prometheus/RedisNg/CounterWithPrefixTest.php +++ b/tests/Test/Prometheus/RedisNg/CounterWithPrefixTest.php @@ -6,13 +6,13 @@ use Prometheus\Storage\Redis; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractCounterTest; +use Test\Prometheus\AbstractCounterTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class CounterWithPrefixTest extends AbstractCounterTest +class CounterWithPrefixTest extends AbstractCounterTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/GaugeTest.php b/tests/Test/Prometheus/RedisNg/GaugeTest.php index cc1f5ca..37b3d0d 100644 --- a/tests/Test/Prometheus/RedisNg/GaugeTest.php +++ b/tests/Test/Prometheus/RedisNg/GaugeTest.php @@ -6,13 +6,13 @@ use Prometheus\Storage\Redis; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class GaugeTest extends AbstractGaugeTest +class GaugeTest extends AbstractGaugeTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/GaugeWithPrefixTest.php b/tests/Test/Prometheus/RedisNg/GaugeWithPrefixTest.php index 0b9cf5a..0df1114 100644 --- a/tests/Test/Prometheus/RedisNg/GaugeWithPrefixTest.php +++ b/tests/Test/Prometheus/RedisNg/GaugeWithPrefixTest.php @@ -6,13 +6,13 @@ use Prometheus\Storage\Redis; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractGaugeTest; +use Test\Prometheus\AbstractGaugeTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class GaugeWithPrefixTest extends AbstractGaugeTest +class GaugeWithPrefixTest extends AbstractGaugeTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/HistogramTest.php b/tests/Test/Prometheus/RedisNg/HistogramTest.php index 1ea1e83..f30c5af 100644 --- a/tests/Test/Prometheus/RedisNg/HistogramTest.php +++ b/tests/Test/Prometheus/RedisNg/HistogramTest.php @@ -6,13 +6,13 @@ use Prometheus\Storage\Redis; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class HistogramTest extends AbstractHistogramTest +class HistogramTest extends AbstractHistogramTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/HistogramWithPrefixTest.php b/tests/Test/Prometheus/RedisNg/HistogramWithPrefixTest.php index 04cae29..7bfdbf9 100644 --- a/tests/Test/Prometheus/RedisNg/HistogramWithPrefixTest.php +++ b/tests/Test/Prometheus/RedisNg/HistogramWithPrefixTest.php @@ -6,13 +6,13 @@ use Prometheus\Storage\Redis; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractHistogramTest; +use Test\Prometheus\AbstractHistogramTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class HistogramWithPrefixTest extends AbstractHistogramTest +class HistogramWithPrefixTest extends AbstractHistogramTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/SummaryTest.php b/tests/Test/Prometheus/RedisNg/SummaryTest.php index ec5912b..e3448b3 100644 --- a/tests/Test/Prometheus/RedisNg/SummaryTest.php +++ b/tests/Test/Prometheus/RedisNg/SummaryTest.php @@ -6,13 +6,13 @@ use Prometheus\Storage\Redis; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class SummaryTest extends AbstractSummaryTest +class SummaryTest extends AbstractSummaryTestCase { public function configureAdapter(): void { diff --git a/tests/Test/Prometheus/RedisNg/SummaryWithPrefixTest.php b/tests/Test/Prometheus/RedisNg/SummaryWithPrefixTest.php index d96e45e..7aeb41b 100644 --- a/tests/Test/Prometheus/RedisNg/SummaryWithPrefixTest.php +++ b/tests/Test/Prometheus/RedisNg/SummaryWithPrefixTest.php @@ -6,13 +6,13 @@ use Prometheus\Storage\Redis; use Prometheus\Storage\RedisNg; -use Test\Prometheus\AbstractSummaryTest; +use Test\Prometheus\AbstractSummaryTestCase; /** * See https://prometheus.io/docs/instrumenting/exposition_formats/ * @requires extension redis */ -class SummaryWithPrefixTest extends AbstractSummaryTest +class SummaryWithPrefixTest extends AbstractSummaryTestCase { public function configureAdapter(): void { From 9c282a5cafd9cc136fb59a7c6742aa46571d051d Mon Sep 17 00:00:00 2001 From: simonhammes Date: Sat, 21 Jun 2025 09:04:26 +0200 Subject: [PATCH 6/7] Fix PHPStan error Signed-off-by: simonhammes --- src/Prometheus/Storage/APCng.php | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Prometheus/Storage/APCng.php b/src/Prometheus/Storage/APCng.php index 97cfb75..68454b1 100644 --- a/src/Prometheus/Storage/APCng.php +++ b/src/Prometheus/Storage/APCng.php @@ -438,11 +438,10 @@ private function buildPermutationTree(array $labelValues): \Generator /** @phpst if (count($labelValues) > 0) { $lastIndex = array_key_last($labelValues); $currentValue = array_pop($labelValues); - if ($currentValue !== null) { - foreach ($this->buildPermutationTree($labelValues) as $prefix) { - foreach ($currentValue as $value) { - yield $prefix + [$lastIndex => $value]; - } + + foreach ($this->buildPermutationTree($labelValues) as $prefix) { + foreach ($currentValue as $value) { + yield $prefix + [$lastIndex => $value]; } } } else { From a59533d7df43ec6be74206237857d64da11707b9 Mon Sep 17 00:00:00 2001 From: simonhammes Date: Sat, 21 Jun 2025 09:08:00 +0200 Subject: [PATCH 7/7] Remove deprecated --no-suggest flag Signed-off-by: simonhammes --- .github/workflows/blackbox.yml | 2 +- .github/workflows/checks.yml | 4 ++-- .github/workflows/tests.yml | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/workflows/blackbox.yml b/.github/workflows/blackbox.yml index 9128684..931e1dd 100644 --- a/.github/workflows/blackbox.yml +++ b/.github/workflows/blackbox.yml @@ -30,7 +30,7 @@ jobs: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Install dependencies - run: composer install --prefer-dist --no-interaction --no-suggest + run: composer install --prefer-dist --no-interaction - name: Compose Blackbox environment run: docker compose up -d diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index b83c817..c45ec12 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -28,7 +28,7 @@ jobs: coverage: none - name: Install dependencies - run: composer install --prefer-dist --no-interaction --no-suggest + run: composer install --prefer-dist --no-interaction - name: Run PHP Code Sniffer run: ./vendor/bin/phpcs @@ -58,6 +58,6 @@ jobs: tools: "cs2pr" - name: Install dependencies - run: composer install --prefer-dist --no-interaction --no-suggest + run: composer install --prefer-dist --no-interaction - name: Run PHPStan run: "vendor/bin/phpstan analyse --autoload-file tests/bootstrap.php --error-format=checkstyle | cs2pr" diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 78a3122..4048204 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -62,7 +62,7 @@ jobs: coverage: none - name: Install dependencies - run: composer update --prefer-dist --no-interaction --no-suggest + run: composer update --prefer-dist --no-interaction - name: Start Redis uses: supercharge/redis-github-action@1.1.0