diff --git a/.env.example b/.env.example
index c4915ff..f2c8418 100644
--- a/.env.example
+++ b/.env.example
@@ -3,7 +3,7 @@ BUILD_ROOT_PATH=/app/
PROJECT_NAME=dhii_containers
PHP_BUILD_VERSION=7.4
-PHP_TEST_VERSION=8.2
+PHP_TEST_VERSION=8.1
XDEBUG_VERSION=3.2.2
-HOST_IP_ADDRESS=127.0.0.1
+HOST_IP_ADDRESS=host-gateway
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7b588a2..8215f1e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -17,11 +17,10 @@ jobs:
strategy:
matrix:
php-versions:
- - '7.4'
- - '8.0'
- '8.1'
- '8.2'
- '8.3'
+ - '8.4'
name: PHP ${{ matrix.php-versions }}
steps:
- uses: actions/checkout@v2
diff --git a/.gitignore b/.gitignore
index 1138a36..f532795 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,3 +11,4 @@
/.idea/misc.xml
.phpunit.result.cache
/.env
+/.phpunit.cache
diff --git a/.idea/codeception.xml b/.idea/codeception.xml
deleted file mode 100644
index 330f2dd..0000000
--- a/.idea/codeception.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/.idea/containers.iml b/.idea/containers.iml
index b54113e..139310b 100644
--- a/.idea/containers.iml
+++ b/.idea/containers.iml
@@ -2,8 +2,12 @@
+
+
+
+
@@ -12,9 +16,7 @@
-
-
@@ -22,9 +24,7 @@
-
-
@@ -40,7 +40,6 @@
-
@@ -73,8 +72,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
\ No newline at end of file
diff --git a/.idea/php.xml b/.idea/php.xml
index d0fd0fe..87a3a22 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -1,5 +1,10 @@
+
+
+
+
+
@@ -13,6 +18,7 @@
+
@@ -22,9 +28,7 @@
-
-
@@ -32,9 +36,7 @@
-
-
@@ -50,7 +52,6 @@
-
@@ -92,6 +93,25 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -105,9 +125,9 @@
-
+
-
+
@@ -122,14 +142,14 @@
-
- /usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
+
+ /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-pcntl.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
/usr/local/etc/php/php.ini
-
+
@@ -140,6 +160,7 @@
+
@@ -158,7 +179,6 @@
-
@@ -174,8 +194,8 @@
-
- /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
+
+ /usr/local/etc/php/conf.d/docker-php-ext-opcache.ini, /usr/local/etc/php/conf.d/docker-php-ext-sodium.ini
/usr/local/etc/php/php.ini
@@ -188,6 +208,7 @@
+
@@ -220,7 +241,7 @@
-
+
diff --git a/.idea/phpspec.xml b/.idea/phpspec.xml
index ec7e1d4..33107fd 100644
--- a/.idea/phpspec.xml
+++ b/.idea/phpspec.xml
@@ -5,9 +5,6 @@
-
-
-
\ No newline at end of file
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 929e569..d177784 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,13 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/)
and this project adheres to [Semantic Versioning](http://semver.org/).
## [[*next-version*]] - YYYY-MM-DD
+### Changed
+- **Dropped support for PHP < 8.1** (#32).
+- Added type declarations throughout the codebase (#32).
+- `TaggingServiceProvider` now silently skips non-documentable values (#32).
+
+### Fixed
+- Type inconsistencies reported by Psalm (#32),
## [0.2.0-alpha1] - 2024-09-22
### Added
diff --git a/composer.json b/composer.json
index 2903cd0..76dbaa2 100644
--- a/composer.json
+++ b/composer.json
@@ -16,14 +16,14 @@
"minimum-stability": "dev",
"prefer-stable": false,
"require": {
- "php": "^7.4 | ^8.0",
+ "php": "^8.1",
"dhii/collections-interface": "^0.4.0-alpha2",
"container-interop/service-provider": "^0.4"
},
"require-dev": {
- "slevomat/coding-standard": "^6.0",
- "phpunit/phpunit": "^9.0",
- "vimeo/psalm": "^5.0",
+ "slevomat/coding-standard": "^8.0",
+ "phpunit/phpunit": "^10.0",
+ "vimeo/psalm": "^6.0",
"gmazzap/andrew": "^1.1",
"psr/container": "^2.0",
"psr/simple-cache": "^1.0",
diff --git a/composer.lock b/composer.lock
index 36c875e..fefae8f 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
- "content-hash": "4a0a03723e92b74d821d53755e41aa82",
+ "content-hash": "d5b4094391e0af3120929d7bb92bb7d9",
"packages": [
{
"name": "container-interop/service-provider",
@@ -64,11 +64,654 @@
"slevomat/coding-standard": "^6.0",
"vimeo/psalm": "^4.6.2 | ^5.0"
},
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Dhii\\Collection\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Dhii Team",
+ "email": "development@dhii.co"
+ },
+ {
+ "name": "Anton Ukhanev",
+ "email": "xedin.unknown@gmail.com"
+ }
+ ],
+ "description": "A highly ISP-compliant collection of interfaces that represent maps and lists.",
+ "support": {
+ "issues": "https://github.com/Dhii/collections-interface/issues",
+ "source": "https://github.com/Dhii/collections-interface/tree/0.4.x"
+ },
+ "time": "2024-09-21T21:40:54+00:00"
+ },
+ {
+ "name": "psr/container",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/php-fig/container.git",
+ "reference": "707984727bd5b2b670e59559d3ed2500240cf875"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/php-fig/container/zipball/707984727bd5b2b670e59559d3ed2500240cf875",
+ "reference": "707984727bd5b2b670e59559d3ed2500240cf875",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4.0"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "2.0.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Psr\\Container\\": "src/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "PHP-FIG",
+ "homepage": "https://www.php-fig.org/"
+ }
+ ],
+ "description": "Common Container Interface (PHP FIG PSR-11)",
+ "homepage": "https://github.com/php-fig/container",
+ "keywords": [
+ "PSR-11",
+ "container",
+ "container-interface",
+ "container-interop",
+ "psr"
+ ],
+ "support": {
+ "issues": "https://github.com/php-fig/container/issues",
+ "source": "https://github.com/php-fig/container"
+ },
+ "time": "2023-09-22T11:11:30+00:00"
+ }
+ ],
+ "packages-dev": [
+ {
+ "name": "amphp/amp",
+ "version": "3.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/amp.git",
+ "reference": "8f0b0d7d1ac826dd7f009ed9c1e7aa1d30f5dcdc"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/amp/zipball/8f0b0d7d1ac826dd7f009ed9c1e7aa1d30f5dcdc",
+ "reference": "8f0b0d7d1ac826dd7f009ed9c1e7aa1d30f5dcdc",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "6.15.1"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php",
+ "src/Future/functions.php",
+ "src/Internal/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ }
+ ],
+ "description": "A non-blocking concurrency framework for PHP applications.",
+ "homepage": "https://amphp.org/amp",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "awaitable",
+ "concurrency",
+ "event",
+ "event-loop",
+ "future",
+ "non-blocking",
+ "promise"
+ ],
+ "support": {
+ "issues": "https://github.com/amphp/amp/issues",
+ "source": "https://github.com/amphp/amp/tree/3.x"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2026-02-25T04:08:38+00:00"
+ },
+ {
+ "name": "amphp/byte-stream",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/byte-stream.git",
+ "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/byte-stream/zipball/55a6bd071aec26fa2a3e002618c20c35e3df1b46",
+ "reference": "55a6bd071aec26fa2a3e002618c20c35e3df1b46",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "amphp/parser": "^1.1",
+ "amphp/pipeline": "^1",
+ "amphp/serialization": "^1",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2.3"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.22.1"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php",
+ "src/Internal/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\ByteStream\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A stream abstraction to make working with non-blocking I/O simple.",
+ "homepage": "https://amphp.org/byte-stream",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "non-blocking",
+ "stream"
+ ],
+ "support": {
+ "issues": "https://github.com/amphp/byte-stream/issues",
+ "source": "https://github.com/amphp/byte-stream/tree/v2.1.2"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2025-03-16T17:10:27+00:00"
+ },
+ {
+ "name": "amphp/cache",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/cache.git",
+ "reference": "e6d0bf9d8c28e1099ace3e4918d8e760e4028441"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/cache/zipball/e6d0bf9d8c28e1099ace3e4918d8e760e4028441",
+ "reference": "e6d0bf9d8c28e1099ace3e4918d8e760e4028441",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3.1",
+ "amphp/serialization": "^1",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.4"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Amp\\Cache\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ }
+ ],
+ "description": "A fiber-aware cache API based on Amp and Revolt.",
+ "homepage": "https://amphp.org/cache",
+ "support": {
+ "issues": "https://github.com/amphp/cache/issues",
+ "source": "https://github.com/amphp/cache/tree/2.x"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2025-01-26T18:16:13+00:00"
+ },
+ {
+ "name": "amphp/dns",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/dns.git",
+ "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/dns/zipball/78eb3db5fc69bf2fc0cb503c4fcba667bc223c71",
+ "reference": "78eb3db5fc69bf2fc0cb503c4fcba667bc223c71",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/cache": "^2",
+ "amphp/parser": "^1",
+ "amphp/process": "^2",
+ "daverandom/libdns": "^2.0.2",
+ "ext-filter": "*",
+ "ext-json": "*",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.20"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\Dns\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Chris Wright",
+ "email": "addr@daverandom.com"
+ },
+ {
+ "name": "Daniel Lowrey",
+ "email": "rdlowrey@php.net"
+ },
+ {
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ }
+ ],
+ "description": "Async DNS resolution for Amp.",
+ "homepage": "https://github.com/amphp/dns",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "client",
+ "dns",
+ "resolve"
+ ],
+ "support": {
+ "issues": "https://github.com/amphp/dns/issues",
+ "source": "https://github.com/amphp/dns/tree/v2.4.0"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2025-01-19T15:43:40+00:00"
+ },
+ {
+ "name": "amphp/parallel",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/parallel.git",
+ "reference": "296b521137a54d3a02425b464e5aee4c93db2c60"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/parallel/zipball/296b521137a54d3a02425b464e5aee4c93db2c60",
+ "reference": "296b521137a54d3a02425b464e5aee4c93db2c60",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/cache": "^2",
+ "amphp/parser": "^1",
+ "amphp/pipeline": "^1",
+ "amphp/process": "^2",
+ "amphp/serialization": "^1",
+ "amphp/socket": "^2",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.18"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/Context/functions.php",
+ "src/Context/Internal/functions.php",
+ "src/Ipc/functions.php",
+ "src/Worker/functions.php"
+ ],
+ "psr-4": {
+ "Amp\\Parallel\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ },
+ {
+ "name": "Stephen Coakley",
+ "email": "me@stephencoakley.com"
+ }
+ ],
+ "description": "Parallel processing component for Amp.",
+ "homepage": "https://github.com/amphp/parallel",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "concurrent",
+ "multi-processing",
+ "multi-threading"
+ ],
+ "support": {
+ "issues": "https://github.com/amphp/parallel/issues",
+ "source": "https://github.com/amphp/parallel/tree/2.x"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2025-11-15T06:23:42+00:00"
+ },
+ {
+ "name": "amphp/parser",
+ "version": "1.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/parser.git",
+ "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/parser/zipball/3cf1f8b32a0171d4b1bed93d25617637a77cded7",
+ "reference": "3cf1f8b32a0171d4b1bed93d25617637a77cded7",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=7.4"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.4"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Amp\\Parser\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "A generator parser to make streaming parsers simple.",
+ "homepage": "https://github.com/amphp/parser",
+ "keywords": [
+ "async",
+ "non-blocking",
+ "parser",
+ "stream"
+ ],
+ "support": {
+ "issues": "https://github.com/amphp/parser/issues",
+ "source": "https://github.com/amphp/parser/tree/v1.1.1"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2024-03-21T19:16:53+00:00"
+ },
+ {
+ "name": "amphp/pipeline",
+ "version": "1.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/pipeline.git",
+ "reference": "6ebb05d8b6878b0988391fe064fe61ac0f4e0e8f"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/pipeline/zipball/6ebb05d8b6878b0988391fe064fe61ac0f4e0e8f",
+ "reference": "6ebb05d8b6878b0988391fe064fe61ac0f4e0e8f",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "6.15.1"
+ },
+ "default-branch": true,
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "Amp\\Pipeline\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "Asynchronous iterators and operators.",
+ "homepage": "https://amphp.org/pipeline",
+ "keywords": [
+ "amp",
+ "amphp",
+ "async",
+ "io",
+ "iterator",
+ "non-blocking"
+ ],
+ "support": {
+ "issues": "https://github.com/amphp/pipeline/issues",
+ "source": "https://github.com/amphp/pipeline/tree/1.x"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2026-02-28T19:35:26+00:00"
+ },
+ {
+ "name": "amphp/process",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/amphp/process.git",
+ "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/amphp/process/zipball/52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d",
+ "reference": "52e08c09dec7511d5fbc1fb00d3e4e79fc77d58d",
+ "shasum": ""
+ },
+ "require": {
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/sync": "^2",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.4"
+ },
"default-branch": true,
"type": "library",
"autoload": {
+ "files": [
+ "src/functions.php"
+ ],
"psr-4": {
- "Dhii\\Collection\\": "src"
+ "Amp\\Process\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -77,48 +720,64 @@
],
"authors": [
{
- "name": "Dhii Team",
- "email": "development@dhii.co"
+ "name": "Bob Weinand",
+ "email": "bobwei9@hotmail.com"
},
{
- "name": "Anton Ukhanev",
- "email": "xedin.unknown@gmail.com"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "description": "A highly ISP-compliant collection of interfaces that represent maps and lists.",
+ "description": "A fiber-aware process manager based on Amp and Revolt.",
+ "homepage": "https://amphp.org/process",
"support": {
- "issues": "https://github.com/Dhii/collections-interface/issues",
- "source": "https://github.com/Dhii/collections-interface/tree/0.4.x"
+ "issues": "https://github.com/amphp/process/issues",
+ "source": "https://github.com/amphp/process/tree/v2.0.3"
},
- "time": "2024-09-21T21:40:54+00:00"
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2024-04-19T03:13:44+00:00"
},
{
- "name": "psr/container",
- "version": "dev-master",
+ "name": "amphp/serialization",
+ "version": "1.x-dev",
"source": {
"type": "git",
- "url": "https://github.com/php-fig/container.git",
- "reference": "707984727bd5b2b670e59559d3ed2500240cf875"
+ "url": "https://github.com/amphp/serialization.git",
+ "reference": "21116dcd1221e0d1817e02a6e2b0c52a9a317327"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/container/zipball/707984727bd5b2b670e59559d3ed2500240cf875",
- "reference": "707984727bd5b2b670e59559d3ed2500240cf875",
+ "url": "https://api.github.com/repos/amphp/serialization/zipball/21116dcd1221e0d1817e02a6e2b0c52a9a317327",
+ "reference": "21116dcd1221e0d1817e02a6e2b0c52a9a317327",
"shasum": ""
},
"require": {
- "php": ">=7.4.0"
+ "php": ">=7.4"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "ext-json": "*",
+ "ext-zlib": "*",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.4"
},
"default-branch": true,
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.0.x-dev"
- }
- },
"autoload": {
+ "files": [
+ "src/functions.php"
+ ],
"psr-4": {
- "Psr\\Container\\": "src/"
+ "Amp\\Serialization\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -127,66 +786,76 @@
],
"authors": [
{
- "name": "PHP-FIG",
- "homepage": "https://www.php-fig.org/"
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
}
],
- "description": "Common Container Interface (PHP FIG PSR-11)",
- "homepage": "https://github.com/php-fig/container",
+ "description": "Serialization tools for IPC and data storage in PHP.",
+ "homepage": "https://github.com/amphp/serialization",
"keywords": [
- "PSR-11",
- "container",
- "container-interface",
- "container-interop",
- "psr"
+ "async",
+ "asynchronous",
+ "serialization",
+ "serialize"
],
"support": {
- "issues": "https://github.com/php-fig/container/issues",
- "source": "https://github.com/php-fig/container"
+ "issues": "https://github.com/amphp/serialization/issues",
+ "source": "https://github.com/amphp/serialization/tree/1.x"
},
- "time": "2023-09-22T11:11:30+00:00"
- }
- ],
- "packages-dev": [
+ "funding": [
+ {
+ "url": "https://github.com/amphp",
+ "type": "github"
+ }
+ ],
+ "time": "2023-08-29T20:22:27+00:00"
+ },
{
- "name": "amphp/amp",
+ "name": "amphp/socket",
"version": "2.x-dev",
"source": {
"type": "git",
- "url": "https://github.com/amphp/amp.git",
- "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d"
+ "url": "https://github.com/amphp/socket.git",
+ "reference": "93ed36129dc54453803bb15282dfd1680c347836"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/amp/zipball/ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
- "reference": "ded3d9be08f526089eb7ee8d9f16a9768f9dec2d",
+ "url": "https://api.github.com/repos/amphp/socket/zipball/93ed36129dc54453803bb15282dfd1680c347836",
+ "reference": "93ed36129dc54453803bb15282dfd1680c347836",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/dns": "^2",
+ "ext-openssl": "*",
+ "kelunik/certificate": "^1.1",
+ "league/uri": "^7",
+ "league/uri-interfaces": "^7",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1"
},
"require-dev": {
- "amphp/php-cs-fixer-config": "dev-master",
- "amphp/phpunit-util": "^1",
- "ext-json": "*",
- "jetbrains/phpstorm-stubs": "^2019.3",
- "phpunit/phpunit": "^7 | ^8 | ^9",
- "react/promise": "^2",
- "vimeo/psalm": "^3.12"
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "amphp/process": "^2",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.20"
},
+ "default-branch": true,
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "2.x-dev"
- }
- },
"autoload": {
"files": [
- "lib/functions.php",
- "lib/Internal/functions.php"
+ "src/functions.php",
+ "src/Internal/functions.php",
+ "src/SocketAddress/functions.php"
],
"psr-4": {
- "Amp\\": "lib"
+ "Amp\\Socket\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -196,38 +865,31 @@
"authors": [
{
"name": "Daniel Lowrey",
- "email": "rdlowrey@php.net"
+ "email": "rdlowrey@gmail.com"
},
{
"name": "Aaron Piotrowski",
"email": "aaron@trowski.com"
},
- {
- "name": "Bob Weinand",
- "email": "bobwei9@hotmail.com"
- },
{
"name": "Niklas Keller",
"email": "me@kelunik.com"
}
],
- "description": "A non-blocking concurrency framework for PHP applications.",
- "homepage": "https://amphp.org/amp",
+ "description": "Non-blocking socket connection / server implementations based on Amp and Revolt.",
+ "homepage": "https://github.com/amphp/socket",
"keywords": [
+ "amp",
"async",
- "asynchronous",
- "awaitable",
- "concurrency",
- "event",
- "event-loop",
- "future",
+ "encryption",
"non-blocking",
- "promise"
+ "sockets",
+ "tcp",
+ "tls"
],
"support": {
- "irc": "irc://irc.freenode.org/amphp",
- "issues": "https://github.com/amphp/amp/issues",
- "source": "https://github.com/amphp/amp/tree/2.x"
+ "issues": "https://github.com/amphp/socket/issues",
+ "source": "https://github.com/amphp/socket/tree/2.x"
},
"funding": [
{
@@ -235,41 +897,43 @@
"type": "github"
}
],
- "time": "2024-03-21T18:52:26+00:00"
+ "time": "2026-02-12T21:15:57+00:00"
},
{
- "name": "amphp/byte-stream",
- "version": "1.x-dev",
+ "name": "amphp/sync",
+ "version": "2.x-dev",
"source": {
"type": "git",
- "url": "https://github.com/amphp/byte-stream.git",
- "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc"
+ "url": "https://github.com/amphp/sync.git",
+ "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/amphp/byte-stream/zipball/4f0e968ba3798a423730f567b1b50d3441c16ddc",
- "reference": "4f0e968ba3798a423730f567b1b50d3441c16ddc",
+ "url": "https://api.github.com/repos/amphp/sync/zipball/217097b785130d77cfcc58ff583cf26cd1770bf1",
+ "reference": "217097b785130d77cfcc58ff583cf26cd1770bf1",
"shasum": ""
},
"require": {
- "amphp/amp": "^2",
- "php": ">=7.1"
+ "amphp/amp": "^3",
+ "amphp/pipeline": "^1",
+ "amphp/serialization": "^1",
+ "php": ">=8.1",
+ "revolt/event-loop": "^1 || ^0.2"
},
"require-dev": {
- "amphp/php-cs-fixer-config": "dev-master",
- "amphp/phpunit-util": "^1.4",
- "friendsofphp/php-cs-fixer": "^2.3",
- "jetbrains/phpstorm-stubs": "^2019.3",
- "phpunit/phpunit": "^6 || ^7 || ^8",
- "psalm/phar": "^3.11.4"
+ "amphp/php-cs-fixer-config": "^2",
+ "amphp/phpunit-util": "^3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "5.23"
},
+ "default-branch": true,
"type": "library",
"autoload": {
"files": [
- "lib/functions.php"
+ "src/functions.php"
],
"psr-4": {
- "Amp\\ByteStream\\": "lib"
+ "Amp\\Sync\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -284,21 +948,24 @@
{
"name": "Niklas Keller",
"email": "me@kelunik.com"
+ },
+ {
+ "name": "Stephen Coakley",
+ "email": "me@stephencoakley.com"
}
],
- "description": "A stream abstraction to make working with non-blocking I/O simple.",
- "homepage": "https://amphp.org/byte-stream",
+ "description": "Non-blocking synchronization primitives for PHP based on Amp and Revolt.",
+ "homepage": "https://github.com/amphp/sync",
"keywords": [
- "amp",
- "amphp",
"async",
- "io",
- "non-blocking",
- "stream"
+ "asynchronous",
+ "mutex",
+ "semaphore",
+ "synchronization"
],
"support": {
- "issues": "https://github.com/amphp/byte-stream/issues",
- "source": "https://github.com/amphp/byte-stream/tree/windows-test-failures"
+ "issues": "https://github.com/amphp/sync/issues",
+ "source": "https://github.com/amphp/sync/tree/v2.3.0"
},
"funding": [
{
@@ -306,7 +973,7 @@
"type": "github"
}
],
- "time": "2024-04-13T18:00:56+00:00"
+ "time": "2024-08-03T19:31:26+00:00"
},
{
"name": "composer/pcre",
@@ -314,12 +981,12 @@
"source": {
"type": "git",
"url": "https://github.com/composer/pcre.git",
- "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4"
+ "reference": "cc69ce9877ca31cb8fb3e87cb89792f2c139f87b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4",
- "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4",
+ "url": "https://api.github.com/repos/composer/pcre/zipball/cc69ce9877ca31cb8fb3e87cb89792f2c139f87b",
+ "reference": "cc69ce9877ca31cb8fb3e87cb89792f2c139f87b",
"shasum": ""
},
"require": {
@@ -329,20 +996,21 @@
"phpstan/phpstan": "<1.11.10"
},
"require-dev": {
- "phpstan/phpstan": "^1.11.10",
- "phpstan/phpstan-strict-rules": "^1.1",
+ "phpstan/phpstan": "^1.12 || ^2",
+ "phpstan/phpstan-deprecation-rules": "^1 || ^2",
+ "phpstan/phpstan-strict-rules": "^1 || ^2",
"phpunit/phpunit": "^8 || ^9"
},
"default-branch": true,
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "3.x-dev"
- },
"phpstan": {
"includes": [
"extension.neon"
]
+ },
+ "branch-alias": {
+ "dev-main": "3.x-dev"
}
},
"autoload": {
@@ -370,7 +1038,7 @@
],
"support": {
"issues": "https://github.com/composer/pcre/issues",
- "source": "https://github.com/composer/pcre/tree/3.3.1"
+ "source": "https://github.com/composer/pcre/tree/main"
},
"funding": [
{
@@ -380,13 +1048,9 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-08-27T18:44:43+00:00"
+ "time": "2025-12-03T10:22:10+00:00"
},
{
"name": "composer/semver",
@@ -394,12 +1058,12 @@
"source": {
"type": "git",
"url": "https://github.com/composer/semver.git",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12"
+ "reference": "38ccbbfd0098b205e4d947f18e3f1f321803b067"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
- "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12",
+ "url": "https://api.github.com/repos/composer/semver/zipball/38ccbbfd0098b205e4d947f18e3f1f321803b067",
+ "reference": "38ccbbfd0098b205e4d947f18e3f1f321803b067",
"shasum": ""
},
"require": {
@@ -442,7 +1106,7 @@
"homepage": "http://robbast.nl"
}
],
- "description": "Semver library that offers utilities, version constraint parsing and validation.",
+ "description": "Version comparison library that offers utilities, version constraint parsing and validation.",
"keywords": [
"semantic",
"semver",
@@ -452,7 +1116,7 @@
"support": {
"irc": "ircs://irc.libera.chat:6697/composer",
"issues": "https://github.com/composer/semver/issues",
- "source": "https://github.com/composer/semver/tree/3.4.3"
+ "source": "https://github.com/composer/semver/tree/main"
},
"funding": [
{
@@ -462,13 +1126,9 @@
{
"url": "https://github.com/composer",
"type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
}
],
- "time": "2024-09-19T14:15:21+00:00"
+ "time": "2025-12-03T10:22:06+00:00"
},
{
"name": "composer/xdebug-handler",
@@ -497,76 +1157,175 @@
"type": "library",
"autoload": {
"psr-4": {
- "Composer\\XdebugHandler\\": "src"
+ "Composer\\XdebugHandler\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "John Stevenson",
+ "email": "john-stevenson@blueyonder.co.uk"
+ }
+ ],
+ "description": "Restarts a process without Xdebug.",
+ "keywords": [
+ "Xdebug",
+ "performance"
+ ],
+ "support": {
+ "irc": "ircs://irc.libera.chat:6697/composer",
+ "issues": "https://github.com/composer/xdebug-handler/issues",
+ "source": "https://github.com/composer/xdebug-handler/tree/3.0.5"
+ },
+ "funding": [
+ {
+ "url": "https://packagist.com",
+ "type": "custom"
+ },
+ {
+ "url": "https://github.com/composer",
+ "type": "github"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/composer/composer",
+ "type": "tidelift"
+ }
+ ],
+ "time": "2024-05-06T16:37:16+00:00"
+ },
+ {
+ "name": "danog/advanced-json-rpc",
+ "version": "v3.2.3",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/danog/php-advanced-json-rpc.git",
+ "reference": "ae703ea7b4811797a10590b6078de05b3b33dd91"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/danog/php-advanced-json-rpc/zipball/ae703ea7b4811797a10590b6078de05b3b33dd91",
+ "reference": "ae703ea7b4811797a10590b6078de05b3b33dd91",
+ "shasum": ""
+ },
+ "require": {
+ "netresearch/jsonmapper": "^5",
+ "php": ">=8.1",
+ "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0 || ^6"
+ },
+ "replace": {
+ "felixfbecker/php-advanced-json-rpc": "^3"
+ },
+ "require-dev": {
+ "phpunit/phpunit": "^9"
+ },
+ "type": "library",
+ "autoload": {
+ "psr-4": {
+ "AdvancedJsonRpc\\": "lib/"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "ISC"
+ ],
+ "authors": [
+ {
+ "name": "Felix Becker",
+ "email": "felix.b@outlook.com"
+ },
+ {
+ "name": "Daniil Gentili",
+ "email": "daniil@daniil.it"
+ }
+ ],
+ "description": "A more advanced JSONRPC implementation",
+ "support": {
+ "issues": "https://github.com/danog/php-advanced-json-rpc/issues",
+ "source": "https://github.com/danog/php-advanced-json-rpc/tree/v3.2.3"
+ },
+ "time": "2026-01-12T21:07:10+00:00"
+ },
+ {
+ "name": "daverandom/libdns",
+ "version": "2.x-dev",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/DaveRandom/LibDNS.git",
+ "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/DaveRandom/LibDNS/zipball/b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a",
+ "reference": "b84c94e8fe6b7ee4aecfe121bfe3b6177d303c8a",
+ "shasum": ""
+ },
+ "require": {
+ "ext-ctype": "*",
+ "php": ">=7.1"
+ },
+ "suggest": {
+ "ext-intl": "Required for IDN support"
+ },
+ "type": "library",
+ "autoload": {
+ "files": [
+ "src/functions.php"
+ ],
+ "psr-4": {
+ "LibDNS\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
- "authors": [
- {
- "name": "John Stevenson",
- "email": "john-stevenson@blueyonder.co.uk"
- }
- ],
- "description": "Restarts a process without Xdebug.",
+ "description": "DNS protocol implementation written in pure PHP",
"keywords": [
- "Xdebug",
- "performance"
+ "dns"
],
"support": {
- "irc": "ircs://irc.libera.chat:6697/composer",
- "issues": "https://github.com/composer/xdebug-handler/issues",
- "source": "https://github.com/composer/xdebug-handler/tree/3.0.5"
+ "issues": "https://github.com/DaveRandom/LibDNS/issues",
+ "source": "https://github.com/DaveRandom/LibDNS/tree/2.x"
},
- "funding": [
- {
- "url": "https://packagist.com",
- "type": "custom"
- },
- {
- "url": "https://github.com/composer",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/composer/composer",
- "type": "tidelift"
- }
- ],
- "time": "2024-05-06T16:37:16+00:00"
+ "time": "2024-04-12T12:12:48+00:00"
},
{
"name": "dealerdirect/phpcodesniffer-composer-installer",
- "version": "v0.7.2",
+ "version": "v1.2.0",
"source": {
"type": "git",
- "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git",
- "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db"
+ "url": "https://github.com/PHPCSStandards/composer-installer.git",
+ "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
- "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db",
+ "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/845eb62303d2ca9b289ef216356568ccc075ffd1",
+ "reference": "845eb62303d2ca9b289ef216356568ccc075ffd1",
"shasum": ""
},
"require": {
- "composer-plugin-api": "^1.0 || ^2.0",
- "php": ">=5.3",
- "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0"
+ "composer-plugin-api": "^2.2",
+ "php": ">=5.4",
+ "squizlabs/php_codesniffer": "^3.1.0 || ^4.0"
},
"require-dev": {
- "composer/composer": "*",
- "php-parallel-lint/php-parallel-lint": "^1.3.1",
- "phpcompatibility/php-compatibility": "^9.0"
+ "composer/composer": "^2.2",
+ "ext-json": "*",
+ "ext-zip": "*",
+ "php-parallel-lint/php-parallel-lint": "^1.4.0",
+ "phpcompatibility/php-compatibility": "^9.0 || ^10.0.0@dev",
+ "yoast/phpunit-polyfills": "^1.0"
},
"type": "composer-plugin",
"extra": {
- "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
+ "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin"
},
"autoload": {
"psr-4": {
- "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
+ "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -576,17 +1335,16 @@
"authors": [
{
"name": "Franck Nijhof",
- "email": "franck.nijhof@dealerdirect.com",
- "homepage": "http://www.frenck.nl",
- "role": "Developer / IT Manager"
+ "email": "opensource@frenck.dev",
+ "homepage": "https://frenck.dev",
+ "role": "Open source developer"
},
{
"name": "Contributors",
- "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors"
+ "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors"
}
],
"description": "PHP_CodeSniffer Standards Composer Installer Plugin",
- "homepage": "http://www.dealerdirect.com",
"keywords": [
"PHPCodeSniffer",
"PHP_CodeSniffer",
@@ -606,10 +1364,29 @@
"tests"
],
"support": {
- "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues",
- "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer"
+ "issues": "https://github.com/PHPCSStandards/composer-installer/issues",
+ "security": "https://github.com/PHPCSStandards/composer-installer/security/policy",
+ "source": "https://github.com/PHPCSStandards/composer-installer"
},
- "time": "2022-02-04T12:51:07+00:00"
+ "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-11-11T04:32:07+00:00"
},
{
"name": "dnoegel/php-xdg-base-dir",
@@ -649,119 +1426,52 @@
"time": "2019-12-04T15:06:13+00:00"
},
{
- "name": "doctrine/instantiator",
- "version": "1.5.x-dev",
+ "name": "doctrine/deprecations",
+ "version": "1.2.x-dev",
"source": {
"type": "git",
- "url": "https://github.com/doctrine/instantiator.git",
- "reference": "12be2483e1f0e850b353e26869e4e6c038459501"
+ "url": "https://github.com/doctrine/deprecations.git",
+ "reference": "a2d13f1c09db71b0688cbdbcd17e569ec489c44b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/doctrine/instantiator/zipball/12be2483e1f0e850b353e26869e4e6c038459501",
- "reference": "12be2483e1f0e850b353e26869e4e6c038459501",
+ "url": "https://api.github.com/repos/doctrine/deprecations/zipball/a2d13f1c09db71b0688cbdbcd17e569ec489c44b",
+ "reference": "a2d13f1c09db71b0688cbdbcd17e569ec489c44b",
"shasum": ""
},
"require": {
"php": "^7.1 || ^8.0"
},
- "require-dev": {
- "doctrine/coding-standard": "^9 || ^12",
- "ext-pdo": "*",
- "ext-phar": "*",
- "phpbench/phpbench": "^0.16 || ^1",
- "phpstan/phpstan": "^1.4",
- "phpstan/phpstan-phpunit": "^1",
- "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6",
- "vimeo/psalm": "^4.30 || ^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/1.5.x"
- },
- "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": "2023-12-09T14:16:53+00:00"
- },
- {
- "name": "felixfbecker/advanced-json-rpc",
- "version": "v3.2.1",
- "source": {
- "type": "git",
- "url": "https://github.com/felixfbecker/php-advanced-json-rpc.git",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/felixfbecker/php-advanced-json-rpc/zipball/b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "reference": "b5f37dbff9a8ad360ca341f3240dc1c168b45447",
- "shasum": ""
- },
- "require": {
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "php": "^7.1 || ^8.0",
- "phpdocumentor/reflection-docblock": "^4.3.4 || ^5.0.0"
+ "conflict": {
+ "phpunit/phpunit": "<=7.5 || >=14"
},
"require-dev": {
- "phpunit/phpunit": "^7.0 || ^8.0"
+ "doctrine/coding-standard": "^9 || ^12 || ^14",
+ "phpstan/phpstan": "1.4.10 || 2.1.30",
+ "phpstan/phpstan-phpunit": "^1.0 || ^2",
+ "phpunit/phpunit": "^7.5 || ^8.5 || ^9.6 || ^10.5 || ^11.5 || ^12.4 || ^13.0",
+ "psr/log": "^1 || ^2 || ^3"
+ },
+ "suggest": {
+ "psr/log": "Allows logging deprecations via PSR-3 logger implementation"
},
"type": "library",
"autoload": {
"psr-4": {
- "AdvancedJsonRpc\\": "lib/"
+ "Doctrine\\Deprecations\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
- "ISC"
- ],
- "authors": [
- {
- "name": "Felix Becker",
- "email": "felix.b@outlook.com"
- }
+ "MIT"
],
- "description": "A more advanced JSONRPC implementation",
+ "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.",
+ "homepage": "https://www.doctrine-project.org/",
"support": {
- "issues": "https://github.com/felixfbecker/php-advanced-json-rpc/issues",
- "source": "https://github.com/felixfbecker/php-advanced-json-rpc/tree/v3.2.1"
+ "issues": "https://github.com/doctrine/deprecations/issues",
+ "source": "https://github.com/doctrine/deprecations/tree/1.2.x"
},
- "time": "2021-06-11T22:34:44+00:00"
+ "time": "2026-02-07T07:33:44+00:00"
},
{
"name": "felixfbecker/language-server-protocol",
@@ -816,22 +1526,22 @@
],
"support": {
"issues": "https://github.com/felixfbecker/php-language-server-protocol/issues",
- "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/master"
+ "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3"
},
"time": "2024-04-30T00:40:11+00:00"
},
{
"name": "fidry/cpu-core-counter",
- "version": "1.2.0",
+ "version": "1.3.0",
"source": {
"type": "git",
"url": "https://github.com/theofidry/cpu-core-counter.git",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f"
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f",
- "reference": "8520451a140d3f46ac33042715115e290cf5785f",
+ "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/db9508f7b1474469d9d3c53b86f817e344732678",
+ "reference": "db9508f7b1474469d9d3c53b86f817e344732678",
"shasum": ""
},
"require": {
@@ -841,10 +1551,10 @@
"fidry/makefile": "^0.2.0",
"fidry/php-cs-fixer-config": "^1.1.2",
"phpstan/extension-installer": "^1.2.0",
- "phpstan/phpstan": "^1.9.2",
- "phpstan/phpstan-deprecation-rules": "^1.0.0",
- "phpstan/phpstan-phpunit": "^1.2.2",
- "phpstan/phpstan-strict-rules": "^1.4.4",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-deprecation-rules": "^2.0.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
"phpunit/phpunit": "^8.5.31 || ^9.5.26",
"webmozarts/strict-phpunit": "^7.5"
},
@@ -871,7 +1581,7 @@
],
"support": {
"issues": "https://github.com/theofidry/cpu-core-counter/issues",
- "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0"
+ "source": "https://github.com/theofidry/cpu-core-counter/tree/1.3.0"
},
"funding": [
{
@@ -879,7 +1589,7 @@
"type": "github"
}
],
- "time": "2024-08-06T10:04:20+00:00"
+ "time": "2025-08-14T07:29:31+00:00"
},
{
"name": "gmazzap/andrew",
@@ -936,18 +1646,261 @@
},
"time": "2016-09-15T17:29:10+00:00"
},
+ {
+ "name": "kelunik/certificate",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/kelunik/certificate.git",
+ "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/kelunik/certificate/zipball/7e00d498c264d5eb4f78c69f41c8bd6719c0199e",
+ "reference": "7e00d498c264d5eb4f78c69f41c8bd6719c0199e",
+ "shasum": ""
+ },
+ "require": {
+ "ext-openssl": "*",
+ "php": ">=7.0"
+ },
+ "require-dev": {
+ "amphp/php-cs-fixer-config": "^2",
+ "phpunit/phpunit": "^6 | 7 | ^8 | ^9"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Kelunik\\Certificate\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "Access certificate details and transform between different formats.",
+ "keywords": [
+ "DER",
+ "certificate",
+ "certificates",
+ "openssl",
+ "pem",
+ "x509"
+ ],
+ "support": {
+ "issues": "https://github.com/kelunik/certificate/issues",
+ "source": "https://github.com/kelunik/certificate/tree/v1.1.3"
+ },
+ "time": "2023-02-03T21:26:53+00:00"
+ },
+ {
+ "name": "league/uri",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/uri.git",
+ "reference": "cf23cfb5eef8f1f4dde9dc658eda45644a01eb10"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/uri/zipball/cf23cfb5eef8f1f4dde9dc658eda45644a01eb10",
+ "reference": "cf23cfb5eef8f1f4dde9dc658eda45644a01eb10",
+ "shasum": ""
+ },
+ "require": {
+ "league/uri-interfaces": "^7.8.1",
+ "php": "^8.1",
+ "psr/http-factory": "^1"
+ },
+ "conflict": {
+ "league/uri-schemes": "^1.0"
+ },
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-dom": "to convert the URI into an HTML anchor tag",
+ "ext-fileinfo": "to create Data URI from file contennts",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "ext-uri": "to use the PHP native URI class",
+ "jeremykendall/php-domain-parser": "to further parse the URI host and resolve its Public Suffix and Top Level Domain",
+ "league/uri-components": "to provide additional tools to manipulate URI objects components",
+ "league/uri-polyfill": "to backport the PHP URI extension for older versions of PHP",
+ "php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "URI manipulation library",
+ "homepage": "https://uri.thephpleague.com",
+ "keywords": [
+ "URN",
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "middleware",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc2141",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "rfc8141",
+ "uri",
+ "uri-template",
+ "url",
+ "ws"
+ ],
+ "support": {
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2026-03-15T20:31:30+00:00"
+ },
+ {
+ "name": "league/uri-interfaces",
+ "version": "dev-master",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/thephpleague/uri-interfaces.git",
+ "reference": "b5fcab24ed6e23c3501d0c6a9f66024786404c9c"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/b5fcab24ed6e23c3501d0c6a9f66024786404c9c",
+ "reference": "b5fcab24ed6e23c3501d0c6a9f66024786404c9c",
+ "shasum": ""
+ },
+ "require": {
+ "ext-filter": "*",
+ "php": "^8.1",
+ "psr/http-message": "^1.1 || ^2.0"
+ },
+ "suggest": {
+ "ext-bcmath": "to improve IPV4 host parsing",
+ "ext-gmp": "to improve IPV4 host parsing",
+ "ext-intl": "to handle IDN host with the best performance",
+ "php-64bit": "to improve IPV4 host parsing",
+ "rowbot/url": "to handle URLs using the WHATWG URL Living Standard specification",
+ "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-master": "7.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "League\\Uri\\": ""
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Ignace Nyamagana Butera",
+ "email": "nyamsprod@gmail.com",
+ "homepage": "https://nyamsprod.com"
+ }
+ ],
+ "description": "Common tools for parsing and resolving RFC3987/RFC3986 URI",
+ "homepage": "https://uri.thephpleague.com",
+ "keywords": [
+ "data-uri",
+ "file-uri",
+ "ftp",
+ "hostname",
+ "http",
+ "https",
+ "parse_str",
+ "parse_url",
+ "psr-7",
+ "query-string",
+ "querystring",
+ "rfc3986",
+ "rfc3987",
+ "rfc6570",
+ "uri",
+ "url",
+ "ws"
+ ],
+ "support": {
+ "docs": "https://uri.thephpleague.com",
+ "forum": "https://thephpleague.slack.com",
+ "issues": "https://github.com/thephpleague/uri-src/issues",
+ "source": "https://github.com/thephpleague/uri-interfaces/tree/master"
+ },
+ "funding": [
+ {
+ "url": "https://github.com/sponsors/nyamsprod",
+ "type": "github"
+ }
+ ],
+ "time": "2026-03-15T20:31:30+00:00"
+ },
{
"name": "myclabs/deep-copy",
"version": "1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/myclabs/DeepCopy.git",
- "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c"
+ "reference": "5ee4e978b7fec6dbd844282126a5a32daa2044c6"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
- "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c",
+ "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/5ee4e978b7fec6dbd844282126a5a32daa2044c6",
+ "reference": "5ee4e978b7fec6dbd844282126a5a32daa2044c6",
"shasum": ""
},
"require": {
@@ -987,7 +1940,7 @@
],
"support": {
"issues": "https://github.com/myclabs/DeepCopy/issues",
- "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0"
+ "source": "https://github.com/myclabs/DeepCopy/tree/1.x"
},
"funding": [
{
@@ -995,20 +1948,20 @@
"type": "tidelift"
}
],
- "time": "2024-06-12T14:39:25+00:00"
+ "time": "2025-12-30T16:10:21+00:00"
},
{
"name": "netresearch/jsonmapper",
- "version": "v4.5.0",
+ "version": "v5.0.1",
"source": {
"type": "git",
"url": "https://github.com/cweiske/jsonmapper.git",
- "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5"
+ "reference": "980674efdda65913492d29a8fd51c82270dd37bb"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
- "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5",
+ "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/980674efdda65913492d29a8fd51c82270dd37bb",
+ "reference": "980674efdda65913492d29a8fd51c82270dd37bb",
"shasum": ""
},
"require": {
@@ -1044,39 +1997,42 @@
"support": {
"email": "cweiske@cweiske.de",
"issues": "https://github.com/cweiske/jsonmapper/issues",
- "source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0"
+ "source": "https://github.com/cweiske/jsonmapper/tree/v5.0.1"
},
- "time": "2024-09-08T10:13:13+00:00"
+ "time": "2026-02-22T16:28:03+00:00"
},
{
"name": "nikic/php-parser",
- "version": "4.x-dev",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/nikic/PHP-Parser.git",
- "reference": "6de6ede1cb2fdff2837c5c92bc13263b5cb42d9e"
+ "reference": "50f0d9c9d0e3cff1163c959c50aaaaa4a7115f08"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/6de6ede1cb2fdff2837c5c92bc13263b5cb42d9e",
- "reference": "6de6ede1cb2fdff2837c5c92bc13263b5cb42d9e",
+ "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/50f0d9c9d0e3cff1163c959c50aaaaa4a7115f08",
+ "reference": "50f0d9c9d0e3cff1163c959c50aaaaa4a7115f08",
"shasum": ""
},
"require": {
+ "ext-ctype": "*",
+ "ext-json": "*",
"ext-tokenizer": "*",
- "php": ">=7.1"
+ "php": ">=7.4"
},
"require-dev": {
"ircmaxell/php-yacc": "^0.0.7",
- "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0"
+ "phpunit/phpunit": "^9.0"
},
+ "default-branch": true,
"bin": [
"bin/php-parse"
],
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.9-dev"
+ "dev-master": "5.x-dev"
}
},
"autoload": {
@@ -1100,9 +2056,9 @@
],
"support": {
"issues": "https://github.com/nikic/PHP-Parser/issues",
- "source": "https://github.com/nikic/PHP-Parser/tree/4.x"
+ "source": "https://github.com/nikic/PHP-Parser/tree/master"
},
- "time": "2024-09-21T13:58:16+00:00"
+ "time": "2026-02-26T13:20:22+00:00"
},
{
"name": "phar-io/manifest",
@@ -1110,12 +2066,12 @@
"source": {
"type": "git",
"url": "https://github.com/phar-io/manifest.git",
- "reference": "54750ef60c58e43759730615a392c31c80e23176"
+ "reference": "c581d4941e196459bf76c945a8ca922963a66708"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phar-io/manifest/zipball/54750ef60c58e43759730615a392c31c80e23176",
- "reference": "54750ef60c58e43759730615a392c31c80e23176",
+ "url": "https://api.github.com/repos/phar-io/manifest/zipball/c581d4941e196459bf76c945a8ca922963a66708",
+ "reference": "c581d4941e196459bf76c945a8ca922963a66708",
"shasum": ""
},
"require": {
@@ -1162,7 +2118,7 @@
"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"
+ "source": "https://github.com/phar-io/manifest/tree/master"
},
"funding": [
{
@@ -1170,7 +2126,7 @@
"type": "github"
}
],
- "time": "2024-03-03T12:33:53+00:00"
+ "time": "2025-11-27T15:23:09+00:00"
},
{
"name": "phar-io/version",
@@ -1278,29 +2234,38 @@
},
{
"name": "phpdocumentor/reflection-docblock",
- "version": "5.3.0",
+ "version": "6.x-dev",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/ReflectionDocBlock.git",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170"
+ "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170",
- "reference": "622548b623e81ca6d78b721c5e029f4ce664f170",
+ "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/7bae67520aa9f5ecc506d646810bd40d9da54582",
+ "reference": "7bae67520aa9f5ecc506d646810bd40d9da54582",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^1.1",
"ext-filter": "*",
- "php": "^7.2 || ^8.0",
+ "php": "^7.4 || ^8.0",
"phpdocumentor/reflection-common": "^2.2",
- "phpdocumentor/type-resolver": "^1.3",
- "webmozart/assert": "^1.9.1"
+ "phpdocumentor/type-resolver": "^2.0",
+ "phpstan/phpdoc-parser": "^2.0",
+ "webmozart/assert": "^1.9.1 || ^2"
},
"require-dev": {
- "mockery/mockery": "~1.3.2",
- "psalm/phar": "^4.8"
+ "mockery/mockery": "~1.3.5 || ~1.6.0",
+ "phpstan/extension-installer": "^1.1",
+ "phpstan/phpstan": "^1.8",
+ "phpstan/phpstan-mockery": "^1.1",
+ "phpstan/phpstan-webmozart-assert": "^1.2",
+ "phpunit/phpunit": "^9.5",
+ "psalm/phar": "^5.26",
+ "shipmonk/dead-code-detector": "^0.5.1"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
@@ -1323,47 +2288,51 @@
},
{
"name": "Jaap van Otterdijk",
- "email": "account@ijaap.nl"
+ "email": "opensource@ijaap.nl"
}
],
"description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.",
"support": {
"issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues",
- "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0"
+ "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/6.x"
},
- "time": "2021-10-19T17:43:47+00:00"
+ "time": "2026-03-18T20:49:53+00:00"
},
{
"name": "phpdocumentor/type-resolver",
- "version": "1.6.2",
+ "version": "2.x-dev",
"source": {
"type": "git",
"url": "https://github.com/phpDocumentor/TypeResolver.git",
- "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d"
+ "reference": "b2abba83bb2d04969e64b5b87e1406048488058f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
- "reference": "48f445a408c131e38cab1c235aa6d2bb7a0bb20d",
+ "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/b2abba83bb2d04969e64b5b87e1406048488058f",
+ "reference": "b2abba83bb2d04969e64b5b87e1406048488058f",
"shasum": ""
},
"require": {
+ "doctrine/deprecations": "^1.0",
"php": "^7.4 || ^8.0",
- "phpdocumentor/reflection-common": "^2.0"
+ "phpdocumentor/reflection-common": "^2.0",
+ "phpstan/phpdoc-parser": "^2.0"
},
"require-dev": {
"ext-tokenizer": "*",
- "phpstan/extension-installer": "^1.1",
- "phpstan/phpstan": "^1.8",
- "phpstan/phpstan-phpunit": "^1.1",
+ "phpbench/phpbench": "^1.2",
+ "phpstan/extension-installer": "^1.4",
+ "phpstan/phpstan": "^2.1",
+ "phpstan/phpstan-phpunit": "^2.0",
"phpunit/phpunit": "^9.5",
- "rector/rector": "^0.13.9",
- "vimeo/psalm": "^4.25"
+ "psalm/phar": "^4"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-1.x": "1.x-dev"
+ "dev-1.x": "1.x-dev",
+ "dev-2.x": "2.x-dev"
}
},
"autoload": {
@@ -1384,45 +2353,40 @@
"description": "A PSR-5 based resolver of Class names, Types and Structural Element Names",
"support": {
"issues": "https://github.com/phpDocumentor/TypeResolver/issues",
- "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.2"
+ "source": "https://github.com/phpDocumentor/TypeResolver/tree/2.x"
},
- "time": "2022-10-14T12:47:21+00:00"
+ "time": "2026-01-22T20:53:16+00:00"
},
{
"name": "phpstan/phpdoc-parser",
- "version": "0.4.9",
+ "version": "2.3.x-dev",
"source": {
"type": "git",
"url": "https://github.com/phpstan/phpdoc-parser.git",
- "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531"
+ "reference": "4d4ad14907af751b3f924d6083492c2f22a76c00"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/98a088b17966bdf6ee25c8a4b634df313d8aa531",
- "reference": "98a088b17966bdf6ee25c8a4b634df313d8aa531",
+ "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/4d4ad14907af751b3f924d6083492c2f22a76c00",
+ "reference": "4d4ad14907af751b3f924d6083492c2f22a76c00",
"shasum": ""
},
"require": {
- "php": "^7.1 || ^8.0"
+ "php": "^7.4 || ^8.0"
},
"require-dev": {
- "consistence/coding-standard": "^3.5",
- "ergebnis/composer-normalize": "^2.0.2",
- "jakub-onderka/php-parallel-lint": "^0.9.2",
- "phing/phing": "^2.16.0",
- "phpstan/extension-installer": "^1.0",
- "phpstan/phpstan": "^0.12.26",
- "phpstan/phpstan-strict-rules": "^0.12",
- "phpunit/phpunit": "^6.3",
- "slevomat/coding-standard": "^4.7.2",
- "symfony/process": "^4.0"
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "0.4-dev"
- }
+ "doctrine/annotations": "^2.0",
+ "nikic/php-parser": "^5.3.0",
+ "php-parallel-lint/php-parallel-lint": "^1.2",
+ "phpstan/extension-installer": "^1.0",
+ "phpstan/phpstan": "^2.0",
+ "phpstan/phpstan-phpunit": "^2.0",
+ "phpstan/phpstan-strict-rules": "^2.0",
+ "phpunit/phpunit": "^9.6",
+ "symfony/process": "^5.2"
},
+ "default-branch": true,
+ "type": "library",
"autoload": {
"psr-4": {
"PHPStan\\PhpDocParser\\": [
@@ -1437,41 +2401,41 @@
"description": "PHPDoc parser with support for nullable, intersection and generic types",
"support": {
"issues": "https://github.com/phpstan/phpdoc-parser/issues",
- "source": "https://github.com/phpstan/phpdoc-parser/tree/master"
+ "source": "https://github.com/phpstan/phpdoc-parser/tree/2.3.x"
},
- "time": "2020-08-03T20:32:43+00:00"
+ "time": "2026-02-26T12:23:26+00:00"
},
{
"name": "phpunit/php-code-coverage",
- "version": "9.2.x-dev",
+ "version": "10.1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-code-coverage.git",
- "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5"
+ "reference": "11775ba4125a1e8ab6ab9c21e0607d9a484744dd"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/85402a822d1ecf1db1096959413d35e1c37cf1a5",
- "reference": "85402a822d1ecf1db1096959413d35e1c37cf1a5",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/11775ba4125a1e8ab6ab9c21e0607d9a484744dd",
+ "reference": "11775ba4125a1e8ab6ab9c21e0607d9a484744dd",
"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",
+ "nikic/php-parser": "^4.19.1 || ^5.4.0",
+ "php": ">=8.1",
+ "phpunit/php-file-iterator": "^4.1.0",
+ "phpunit/php-text-template": "^3.0.1",
+ "sebastian/code-unit-reverse-lookup": "^3.0.0",
+ "sebastian/complexity": "^3.2.0",
+ "sebastian/environment": "^6.1.0",
+ "sebastian/lines-of-code": "^2.0.2",
+ "sebastian/version": "^4.0.1",
"theseer/tokenizer": "^1.2.3"
},
"require-dev": {
- "phpunit/phpunit": "^9.6"
+ "phpunit/phpunit": "^10.5.40"
},
"suggest": {
"ext-pcov": "PHP extension that provides line coverage",
@@ -1480,7 +2444,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-main": "9.2.x-dev"
+ "dev-main": "10.1.x-dev"
}
},
"autoload": {
@@ -1509,40 +2473,52 @@
"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"
+ "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1"
},
"funding": [
{
"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/php-code-coverage",
+ "type": "tidelift"
}
],
- "time": "2024-08-22T04:23:01+00:00"
+ "time": "2025-12-19T18:25:59+00:00"
},
{
"name": "phpunit/php-file-iterator",
- "version": "3.0.x-dev",
+ "version": "4.1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-file-iterator.git",
- "reference": "38b24367e1b340aa78b96d7cab042942d917bb84"
+ "reference": "97ecb4b0a29cf3befdf5bef6d7c5872a5f7129b4"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/38b24367e1b340aa78b96d7cab042942d917bb84",
- "reference": "38b24367e1b340aa78b96d7cab042942d917bb84",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/97ecb4b0a29cf3befdf5bef6d7c5872a5f7129b4",
+ "reference": "97ecb4b0a29cf3befdf5bef6d7c5872a5f7129b4",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "4.1-dev"
}
},
"autoload": {
@@ -1569,36 +2545,49 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-file-iterator/issues",
- "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0"
+ "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1"
},
"funding": [
{
"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/php-file-iterator",
+ "type": "tidelift"
}
],
- "time": "2022-02-11T16:23:04+00:00"
+ "time": "2025-09-26T11:51:04+00:00"
},
{
"name": "phpunit/php-invoker",
- "version": "3.1.1",
+ "version": "4.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-invoker.git",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67"
+ "reference": "d1ddfa07b25ece41c8e5ee3f3bdd4fd969b0b395"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
- "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/d1ddfa07b25ece41c8e5ee3f3bdd4fd969b0b395",
+ "reference": "d1ddfa07b25ece41c8e5ee3f3bdd4fd969b0b395",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
"ext-pcntl": "*",
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"suggest": {
"ext-pcntl": "*"
@@ -1606,7 +2595,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.1-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -1632,40 +2621,53 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-invoker/issues",
- "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1"
+ "security": "https://github.com/sebastianbergmann/php-invoker/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0"
},
"funding": [
{
"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/php-invoker",
+ "type": "tidelift"
}
],
- "time": "2020-09-28T05:58:55+00:00"
+ "time": "2025-09-26T11:55:50+00:00"
},
{
"name": "phpunit/php-text-template",
- "version": "2.0.4",
+ "version": "3.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-text-template.git",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28"
+ "reference": "33ec41b1b3bc7b06f3e5443183d5be875a6a613c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
- "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/33ec41b1b3bc7b06f3e5443183d5be875a6a613c",
+ "reference": "33ec41b1b3bc7b06f3e5443183d5be875a6a613c",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -1691,40 +2693,53 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-text-template/issues",
- "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4"
+ "security": "https://github.com/sebastianbergmann/php-text-template/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0"
},
"funding": [
{
"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/php-text-template",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T05:33:50+00:00"
+ "time": "2025-09-26T12:00:11+00:00"
},
{
"name": "phpunit/php-timer",
- "version": "5.0.3",
+ "version": "6.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/php-timer.git",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2"
+ "reference": "fb4639c8b216b81813c588d0adf1fe88ec66239e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
- "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2",
+ "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/fb4639c8b216b81813c588d0adf1fe88ec66239e",
+ "reference": "fb4639c8b216b81813c588d0adf1fe88ec66239e",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -1750,62 +2765,73 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/php-timer/issues",
- "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3"
+ "security": "https://github.com/sebastianbergmann/php-timer/security/policy",
+ "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0"
},
"funding": [
{
"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/php-timer",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T13:16:10+00:00"
+ "time": "2025-09-26T12:05:28+00:00"
},
{
"name": "phpunit/phpunit",
- "version": "9.6.x-dev",
+ "version": "10.5.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
- "reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa"
+ "reference": "51b1715e0d2781a6c7be69b011e4f1b42112ffc8"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
- "reference": "de6abf3b6f8dd955fac3caad3af7a9504e8c2ffa",
+ "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/51b1715e0d2781a6c7be69b011e4f1b42112ffc8",
+ "reference": "51b1715e0d2781a6c7be69b011e4f1b42112ffc8",
"shasum": ""
},
"require": {
- "doctrine/instantiator": "^1.5.0 || ^2",
"ext-dom": "*",
"ext-json": "*",
"ext-libxml": "*",
"ext-mbstring": "*",
"ext-xml": "*",
"ext-xmlwriter": "*",
- "myclabs/deep-copy": "^1.12.0",
+ "myclabs/deep-copy": "^1.13.4",
"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"
+ "php": ">=8.1",
+ "phpunit/php-code-coverage": "^10.1.16",
+ "phpunit/php-file-iterator": "^4.1.0",
+ "phpunit/php-invoker": "^4.0.0",
+ "phpunit/php-text-template": "^3.0.1",
+ "phpunit/php-timer": "^6.0.0",
+ "sebastian/cli-parser": "^2.0.1",
+ "sebastian/code-unit": "^2.0.0",
+ "sebastian/comparator": "^5.0.5",
+ "sebastian/diff": "^5.1.1",
+ "sebastian/environment": "^6.1.0",
+ "sebastian/exporter": "^5.1.4",
+ "sebastian/global-state": "^6.0.2",
+ "sebastian/object-enumerator": "^5.0.0",
+ "sebastian/recursion-context": "^5.0.1",
+ "sebastian/type": "^4.0.0",
+ "sebastian/version": "^4.0.1"
},
"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"
+ "ext-soap": "To be able to generate mocks based on WSDL files"
},
"bin": [
"phpunit"
@@ -1813,7 +2839,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "9.6-dev"
+ "dev-main": "10.5-dev"
}
},
"autoload": {
@@ -1845,23 +2871,15 @@
"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"
+ "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5"
},
"funding": [
{
- "url": "https://phpunit.de/sponsors.html",
- "type": "custom"
- },
- {
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
- },
- {
- "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit",
- "type": "tidelift"
+ "url": "https://phpunit.de/sponsoring.html",
+ "type": "other"
}
],
- "time": "2024-09-19T10:50:18+00:00"
+ "time": "2026-03-07T17:10:43+00:00"
},
{
"name": "psr/cache",
@@ -1912,32 +2930,142 @@
},
"time": "2016-08-06T20:24:11+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": "dev-master",
+ "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"
+ },
+ "default-branch": true,
+ "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": "psr/log",
- "version": "1.1.4",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/php-fig/log.git",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11"
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11",
- "reference": "d49695b909c3b7628b6289db5479a1c204601f11",
+ "url": "https://api.github.com/repos/php-fig/log/zipball/f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
+ "reference": "f16e1d5863e37f8d8c2a01719f5b34baa2b714d3",
"shasum": ""
},
"require": {
- "php": ">=5.3.0"
+ "php": ">=8.0.0"
},
+ "default-branch": true,
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.1.x-dev"
+ "dev-master": "3.x-dev"
}
},
"autoload": {
"psr-4": {
- "Psr\\Log\\": "Psr/Log/"
+ "Psr\\Log\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -1958,9 +3086,9 @@
"psr-3"
],
"support": {
- "source": "https://github.com/php-fig/log/tree/1.1.4"
+ "source": "https://github.com/php-fig/log/tree/3.0.2"
},
- "time": "2021-05-03T11:20:27+00:00"
+ "time": "2024-09-11T13:17:53+00:00"
},
{
"name": "psr/simple-cache",
@@ -2013,30 +3141,103 @@
},
"time": "2017-10-23T01:57:42+00:00"
},
+ {
+ "name": "revolt/event-loop",
+ "version": "dev-main",
+ "source": {
+ "type": "git",
+ "url": "https://github.com/revoltphp/event-loop.git",
+ "reference": "41f9c458c096aaf0ccc2cdc8e8f6f42dee3c8322"
+ },
+ "dist": {
+ "type": "zip",
+ "url": "https://api.github.com/repos/revoltphp/event-loop/zipball/41f9c458c096aaf0ccc2cdc8e8f6f42dee3c8322",
+ "reference": "41f9c458c096aaf0ccc2cdc8e8f6f42dee3c8322",
+ "shasum": ""
+ },
+ "require": {
+ "php": ">=8.1"
+ },
+ "require-dev": {
+ "ext-json": "*",
+ "jetbrains/phpstorm-stubs": "^2019.3",
+ "phpunit/phpunit": "^9",
+ "psalm/phar": "^5.15"
+ },
+ "default-branch": true,
+ "type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "1.x-dev"
+ }
+ },
+ "autoload": {
+ "psr-4": {
+ "Revolt\\": "src"
+ }
+ },
+ "notification-url": "https://packagist.org/downloads/",
+ "license": [
+ "MIT"
+ ],
+ "authors": [
+ {
+ "name": "Aaron Piotrowski",
+ "email": "aaron@trowski.com"
+ },
+ {
+ "name": "Cees-Jan Kiewiet",
+ "email": "ceesjank@gmail.com"
+ },
+ {
+ "name": "Christian Lück",
+ "email": "christian@clue.engineering"
+ },
+ {
+ "name": "Niklas Keller",
+ "email": "me@kelunik.com"
+ }
+ ],
+ "description": "Rock-solid event loop for concurrent PHP applications.",
+ "keywords": [
+ "async",
+ "asynchronous",
+ "concurrency",
+ "event",
+ "event-loop",
+ "non-blocking",
+ "scheduler"
+ ],
+ "support": {
+ "issues": "https://github.com/revoltphp/event-loop/issues",
+ "source": "https://github.com/revoltphp/event-loop/tree/main"
+ },
+ "time": "2025-11-27T07:04:11+00:00"
+ },
{
"name": "sebastian/cli-parser",
- "version": "1.0.x-dev",
+ "version": "2.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/cli-parser.git",
- "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b"
+ "reference": "079406160fa9290d5a7f585602e0fe5b5f003756"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
- "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b",
+ "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/079406160fa9290d5a7f585602e0fe5b5f003756",
+ "reference": "079406160fa9290d5a7f585602e0fe5b5f003756",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "2.0-dev"
}
},
"autoload": {
@@ -2059,40 +3260,53 @@
"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"
+ "security": "https://github.com/sebastianbergmann/cli-parser/security/policy",
+ "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0"
},
"funding": [
{
"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/sebastian/cli-parser",
+ "type": "tidelift"
}
],
- "time": "2024-03-02T06:27:43+00:00"
+ "time": "2025-12-20T08:57:34+00:00"
},
{
"name": "sebastian/code-unit",
- "version": "1.0.8",
+ "version": "2.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit.git",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120"
+ "reference": "807b5e65ab7b7b16e1928d924c7973aa451fa295"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120",
- "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/807b5e65ab7b7b16e1928d924c7973aa451fa295",
+ "reference": "807b5e65ab7b7b16e1928d924c7973aa451fa295",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "2.0-dev"
}
},
"autoload": {
@@ -2115,7 +3329,8 @@
"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"
+ "security": "https://github.com/sebastianbergmann/code-unit/security/policy",
+ "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0"
},
"funding": [
{
@@ -2123,32 +3338,32 @@
"type": "github"
}
],
- "time": "2020-10-26T13:08:54+00:00"
+ "time": "2025-01-01T09:30:48+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
- "version": "2.0.3",
+ "version": "3.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5"
+ "reference": "9f7c12369107fdb7a91016bf88f27d39872a88ea"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
- "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5",
+ "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/9f7c12369107fdb7a91016bf88f27d39872a88ea",
+ "reference": "9f7c12369107fdb7a91016bf88f27d39872a88ea",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -2170,7 +3385,8 @@
"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"
+ "security": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/security/policy",
+ "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0"
},
"funding": [
{
@@ -2178,34 +3394,36 @@
"type": "github"
}
],
- "time": "2020-09-28T05:30:19+00:00"
+ "time": "2025-01-01T09:31:34+00:00"
},
{
"name": "sebastian/comparator",
- "version": "4.0.x-dev",
+ "version": "5.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/comparator.git",
- "reference": "b247957a1c8dc81a671770f74b479c0a78a818f1"
+ "reference": "8d8209833d5f3f3eb8da4401a975302c58da4e64"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/b247957a1c8dc81a671770f74b479c0a78a818f1",
- "reference": "b247957a1c8dc81a671770f74b479c0a78a818f1",
+ "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/8d8209833d5f3f3eb8da4401a975302c58da4e64",
+ "reference": "8d8209833d5f3f3eb8da4401a975302c58da4e64",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/diff": "^4.0",
- "sebastian/exporter": "^4.0"
+ "ext-dom": "*",
+ "ext-mbstring": "*",
+ "php": ">=8.1",
+ "sebastian/diff": "^5.0",
+ "sebastian/exporter": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -2244,41 +3462,54 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/comparator/issues",
- "source": "https://github.com/sebastianbergmann/comparator/tree/4.0"
+ "security": "https://github.com/sebastianbergmann/comparator/security/policy",
+ "source": "https://github.com/sebastianbergmann/comparator/tree/5.0"
},
"funding": [
{
"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/sebastian/comparator",
+ "type": "tidelift"
}
],
- "time": "2022-09-14T12:46:14+00:00"
+ "time": "2026-01-24T09:31:40+00:00"
},
{
"name": "sebastian/complexity",
- "version": "2.0.x-dev",
+ "version": "3.2.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/complexity.git",
- "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a"
+ "reference": "72cbad467aed5fc740e4e4c00218f4f4a6ad4297"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a",
- "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a",
+ "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/72cbad467aed5fc740e4e4c00218f4f4a6ad4297",
+ "reference": "72cbad467aed5fc740e4e4c00218f4f4a6ad4297",
"shasum": ""
},
"require": {
"nikic/php-parser": "^4.18 || ^5.0",
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "3.2-dev"
}
},
"autoload": {
@@ -2301,41 +3532,54 @@
"homepage": "https://github.com/sebastianbergmann/complexity",
"support": {
"issues": "https://github.com/sebastianbergmann/complexity/issues",
- "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3"
+ "security": "https://github.com/sebastianbergmann/complexity/security/policy",
+ "source": "https://github.com/sebastianbergmann/complexity/tree/3.2"
},
"funding": [
{
"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/sebastian/complexity",
+ "type": "tidelift"
}
],
- "time": "2023-12-22T06:19:30+00:00"
+ "time": "2025-09-26T09:25:14+00:00"
},
{
"name": "sebastian/diff",
- "version": "4.0.x-dev",
+ "version": "5.1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/diff.git",
- "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc"
+ "reference": "74776e712e4b0c27d7e421b88af13875adb5999b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc",
- "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc",
+ "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/74776e712e4b0c27d7e421b88af13875adb5999b",
+ "reference": "74776e712e4b0c27d7e421b88af13875adb5999b",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3",
- "symfony/process": "^4.2 || ^5"
+ "phpunit/phpunit": "^10.5",
+ "symfony/process": "^6.4"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "5.1-dev"
}
},
"autoload": {
@@ -2367,35 +3611,48 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/diff/issues",
- "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6"
+ "security": "https://github.com/sebastianbergmann/diff/security/policy",
+ "source": "https://github.com/sebastianbergmann/diff/tree/5.1"
},
"funding": [
{
"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/sebastian/diff",
+ "type": "tidelift"
}
],
- "time": "2024-03-02T06:30:58+00:00"
+ "time": "2025-09-26T09:34:04+00:00"
},
{
"name": "sebastian/environment",
- "version": "5.1.x-dev",
+ "version": "6.1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/environment.git",
- "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed"
+ "reference": "dd79e32fa7fb850456bbea2e8b984b0768dbce7a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
- "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed",
+ "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/dd79e32fa7fb850456bbea2e8b984b0768dbce7a",
+ "reference": "dd79e32fa7fb850456bbea2e8b984b0768dbce7a",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"suggest": {
"ext-posix": "*"
@@ -2403,7 +3660,7 @@
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.1-dev"
+ "dev-main": "6.1-dev"
}
},
"autoload": {
@@ -2422,7 +3679,7 @@
}
],
"description": "Provides functionality to handle HHVM/PHP environments",
- "homepage": "http://www.github.com/sebastianbergmann/environment",
+ "homepage": "https://github.com/sebastianbergmann/environment",
"keywords": [
"Xdebug",
"environment",
@@ -2430,42 +3687,55 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/environment/issues",
- "source": "https://github.com/sebastianbergmann/environment/tree/5.1"
+ "security": "https://github.com/sebastianbergmann/environment/security/policy",
+ "source": "https://github.com/sebastianbergmann/environment/tree/6.1"
},
"funding": [
{
"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/sebastian/environment",
+ "type": "tidelift"
}
],
- "time": "2023-02-03T06:03:51+00:00"
+ "time": "2025-09-26T09:48:52+00:00"
},
{
"name": "sebastian/exporter",
- "version": "4.0.x-dev",
+ "version": "5.1.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/exporter.git",
- "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72"
+ "reference": "674f8e4778fa027ec7b098e09ec6637b723bfbc2"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72",
- "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72",
+ "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/674f8e4778fa027ec7b098e09ec6637b723bfbc2",
+ "reference": "674f8e4778fa027ec7b098e09ec6637b723bfbc2",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/recursion-context": "^4.0"
+ "ext-mbstring": "*",
+ "php": ">=8.1",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "ext-mbstring": "*",
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "5.1-dev"
}
},
"autoload": {
@@ -2507,46 +3777,56 @@
],
"support": {
"issues": "https://github.com/sebastianbergmann/exporter/issues",
- "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6"
+ "security": "https://github.com/sebastianbergmann/exporter/security/policy",
+ "source": "https://github.com/sebastianbergmann/exporter/tree/5.1"
},
"funding": [
{
"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/sebastian/exporter",
+ "type": "tidelift"
}
],
- "time": "2024-03-02T06:33:00+00:00"
+ "time": "2025-09-26T11:20:41+00:00"
},
{
"name": "sebastian/global-state",
- "version": "5.0.x-dev",
+ "version": "6.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/global-state.git",
- "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9"
+ "reference": "71ab95cd8df46b8413ae5a6d82ccfde4b607c743"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
- "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9",
+ "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/71ab95cd8df46b8413ae5a6d82ccfde4b607c743",
+ "reference": "71ab95cd8df46b8413ae5a6d82ccfde4b607c743",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
+ "php": ">=8.1",
+ "sebastian/object-reflector": "^3.0",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
"ext-dom": "*",
- "phpunit/phpunit": "^9.3"
- },
- "suggest": {
- "ext-uopz": "*"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "5.0-dev"
+ "dev-main": "6.0-dev"
}
},
"autoload": {
@@ -2565,47 +3845,60 @@
}
],
"description": "Snapshotting of global state",
- "homepage": "http://www.github.com/sebastianbergmann/global-state",
+ "homepage": "https://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"
+ "security": "https://github.com/sebastianbergmann/global-state/security/policy",
+ "source": "https://github.com/sebastianbergmann/global-state/tree/6.0"
},
"funding": [
{
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
+ "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/sebastian/global-state",
+ "type": "tidelift"
}
],
- "time": "2024-03-02T06:35:11+00:00"
+ "time": "2025-09-26T11:27:56+00:00"
},
{
"name": "sebastian/lines-of-code",
- "version": "1.0.x-dev",
+ "version": "2.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/lines-of-code.git",
- "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5"
+ "reference": "f3a9f1083457e342c2f9a0b577c511d9c20be488"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5",
- "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5",
+ "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/f3a9f1083457e342c2f9a0b577c511d9c20be488",
+ "reference": "f3a9f1083457e342c2f9a0b577c511d9c20be488",
"shasum": ""
},
"require": {
"nikic/php-parser": "^4.18 || ^5.0",
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "1.0-dev"
+ "dev-main": "2.0-dev"
}
},
"autoload": {
@@ -2628,42 +3921,55 @@
"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"
+ "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy",
+ "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0"
},
"funding": [
{
"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/sebastian/lines-of-code",
+ "type": "tidelift"
}
],
- "time": "2023-12-22T06:20:34+00:00"
+ "time": "2025-09-26T11:34:22+00:00"
},
{
"name": "sebastian/object-enumerator",
- "version": "4.0.4",
+ "version": "5.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-enumerator.git",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71"
+ "reference": "ded04261fddbfb6755b7176685fd7975b874a128"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71",
- "reference": "5c9eeac41b290a3712d88851518825ad78f45c71",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/ded04261fddbfb6755b7176685fd7975b874a128",
+ "reference": "ded04261fddbfb6755b7176685fd7975b874a128",
"shasum": ""
},
"require": {
- "php": ">=7.3",
- "sebastian/object-reflector": "^2.0",
- "sebastian/recursion-context": "^4.0"
+ "php": ">=8.1",
+ "sebastian/object-reflector": "^3.0",
+ "sebastian/recursion-context": "^5.0"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -2685,40 +3991,53 @@
"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"
+ "security": "https://github.com/sebastianbergmann/object-enumerator/security/policy",
+ "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0"
},
"funding": [
{
"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/sebastian/object-enumerator",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T13:12:34+00:00"
+ "time": "2025-09-26T11:40:22+00:00"
},
{
"name": "sebastian/object-reflector",
- "version": "2.0.4",
+ "version": "3.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/object-reflector.git",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7"
+ "reference": "e16b906e486daae949005a62576318be23e31670"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
- "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7",
+ "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/e16b906e486daae949005a62576318be23e31670",
+ "reference": "e16b906e486daae949005a62576318be23e31670",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "2.0-dev"
+ "dev-main": "3.0-dev"
}
},
"autoload": {
@@ -2740,40 +4059,53 @@
"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"
+ "security": "https://github.com/sebastianbergmann/object-reflector/security/policy",
+ "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0"
},
"funding": [
{
"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/sebastian/object-reflector",
+ "type": "tidelift"
}
],
- "time": "2020-10-26T13:14:26+00:00"
+ "time": "2025-09-26T11:45:14+00:00"
},
{
"name": "sebastian/recursion-context",
- "version": "4.0.x-dev",
+ "version": "5.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/recursion-context.git",
- "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1"
+ "reference": "2b64fcfd962e68d303f86608aca2cf882adbca74"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
- "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1",
+ "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/2b64fcfd962e68d303f86608aca2cf882adbca74",
+ "reference": "2b64fcfd962e68d303f86608aca2cf882adbca74",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.3"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "4.0-dev"
+ "dev-main": "5.0-dev"
}
},
"autoload": {
@@ -2803,95 +4135,53 @@
"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"
+ "security": "https://github.com/sebastianbergmann/recursion-context/security/policy",
+ "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0"
},
"funding": [
{
"url": "https://github.com/sebastianbergmann",
"type": "github"
- }
- ],
- "time": "2023-02-03T06:07:39+00:00"
- },
- {
- "name": "sebastian/resource-operations",
- "version": "dev-main",
- "source": {
- "type": "git",
- "url": "https://github.com/sebastianbergmann/resource-operations.git",
- "reference": "ff553e7482dcee39fa4acc2b175d6ddeb0f7bc25"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/ff553e7482dcee39fa4acc2b175d6ddeb0f7bc25",
- "reference": "ff553e7482dcee39fa4acc2b175d6ddeb0f7bc25",
- "shasum": ""
- },
- "require": {
- "php": ">=7.3"
- },
- "require-dev": {
- "phpunit/phpunit": "^9.0"
- },
- "default-branch": true,
- "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/main"
- },
- "funding": [
+ "url": "https://liberapay.com/sebastianbergmann",
+ "type": "liberapay"
+ },
{
- "url": "https://github.com/sebastianbergmann",
- "type": "github"
+ "url": "https://thanks.dev/u/gh/sebastianbergmann",
+ "type": "thanks_dev"
+ },
+ {
+ "url": "https://tidelift.com/funding/github/packagist/sebastian/recursion-context",
+ "type": "tidelift"
}
],
- "time": "2024-03-14T18:47:08+00:00"
+ "time": "2025-09-26T12:13:15+00:00"
},
{
"name": "sebastian/type",
- "version": "3.2.x-dev",
+ "version": "4.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/type.git",
- "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7"
+ "reference": "68153740a6f11fc82a96e260ef47041967ee1c58"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
- "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7",
+ "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/68153740a6f11fc82a96e260ef47041967ee1c58",
+ "reference": "68153740a6f11fc82a96e260ef47041967ee1c58",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"require-dev": {
- "phpunit/phpunit": "^9.5"
+ "phpunit/phpunit": "^10.5"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.2-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -2914,37 +4204,50 @@
"homepage": "https://github.com/sebastianbergmann/type",
"support": {
"issues": "https://github.com/sebastianbergmann/type/issues",
- "source": "https://github.com/sebastianbergmann/type/tree/3.2"
+ "security": "https://github.com/sebastianbergmann/type/security/policy",
+ "source": "https://github.com/sebastianbergmann/type/tree/4.0"
},
"funding": [
{
"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/sebastian/type",
+ "type": "tidelift"
}
],
- "time": "2023-02-03T06:13:03+00:00"
+ "time": "2025-09-26T12:18:14+00:00"
},
{
"name": "sebastian/version",
- "version": "3.0.x-dev",
+ "version": "4.0.x-dev",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/version.git",
- "reference": "c6c1022351a901512170118436c764e473f6de8c"
+ "reference": "c8104a729707d949f2132fad0a41c42b7cac080f"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c",
- "reference": "c6c1022351a901512170118436c764e473f6de8c",
+ "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c8104a729707d949f2132fad0a41c42b7cac080f",
+ "reference": "c8104a729707d949f2132fad0a41c42b7cac080f",
"shasum": ""
},
"require": {
- "php": ">=7.3"
+ "php": ">=8.1"
},
"type": "library",
"extra": {
"branch-alias": {
- "dev-master": "3.0-dev"
+ "dev-main": "4.0-dev"
}
},
"autoload": {
@@ -2967,54 +4270,68 @@
"homepage": "https://github.com/sebastianbergmann/version",
"support": {
"issues": "https://github.com/sebastianbergmann/version/issues",
- "source": "https://github.com/sebastianbergmann/version/tree/3.0.2"
+ "security": "https://github.com/sebastianbergmann/version/security/policy",
+ "source": "https://github.com/sebastianbergmann/version/tree/4.0"
},
"funding": [
{
"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/sebastian/version",
+ "type": "tidelift"
}
],
- "time": "2020-09-28T06:39:44+00:00"
+ "time": "2025-09-26T12:27:17+00:00"
},
{
"name": "slevomat/coding-standard",
- "version": "6.4.1",
+ "version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/slevomat/coding-standard.git",
- "reference": "696dcca217d0c9da2c40d02731526c1e25b65346"
+ "reference": "8426a689f225da6852db17c0d805b7791db9df6b"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/696dcca217d0c9da2c40d02731526c1e25b65346",
- "reference": "696dcca217d0c9da2c40d02731526c1e25b65346",
+ "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/8426a689f225da6852db17c0d805b7791db9df6b",
+ "reference": "8426a689f225da6852db17c0d805b7791db9df6b",
"shasum": ""
},
"require": {
- "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7",
- "php": "^7.1 || ^8.0",
- "phpstan/phpdoc-parser": "0.4.5 - 0.4.9",
- "squizlabs/php_codesniffer": "^3.5.6"
+ "dealerdirect/phpcodesniffer-composer-installer": "^0.7 || ^1.2.0",
+ "php": "^7.4 || ^8.0",
+ "phpstan/phpdoc-parser": "^2.3.2",
+ "squizlabs/php_codesniffer": "^4.0.1"
},
"require-dev": {
- "phing/phing": "2.16.3",
- "php-parallel-lint/php-parallel-lint": "1.2.0",
- "phpstan/phpstan": "0.12.48",
- "phpstan/phpstan-deprecation-rules": "0.12.5",
- "phpstan/phpstan-phpunit": "0.12.16",
- "phpstan/phpstan-strict-rules": "0.12.5",
- "phpunit/phpunit": "7.5.20|8.5.5|9.4.0"
+ "phing/phing": "3.0.1|3.1.2",
+ "php-parallel-lint/php-parallel-lint": "1.4.0",
+ "phpstan/phpstan": "2.1.40",
+ "phpstan/phpstan-deprecation-rules": "2.0.4",
+ "phpstan/phpstan-phpunit": "2.0.16",
+ "phpstan/phpstan-strict-rules": "2.0.10",
+ "phpunit/phpunit": "9.6.34|10.5.63|11.4.4|11.5.50|12.5.14"
},
+ "default-branch": true,
"type": "phpcodesniffer-standard",
"extra": {
"branch-alias": {
- "dev-master": "6.x-dev"
+ "dev-master": "8.x-dev"
}
},
"autoload": {
"psr-4": {
- "SlevomatCodingStandard\\": "SlevomatCodingStandard"
+ "SlevomatCodingStandard\\": "SlevomatCodingStandard/"
}
},
"notification-url": "https://packagist.org/downloads/",
@@ -3022,9 +4339,13 @@
"MIT"
],
"description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.",
+ "keywords": [
+ "dev",
+ "phpcs"
+ ],
"support": {
"issues": "https://github.com/slevomat/coding-standard/issues",
- "source": "https://github.com/slevomat/coding-standard/tree/6.4.1"
+ "source": "https://github.com/slevomat/coding-standard/tree/master"
},
"funding": [
{
@@ -3036,33 +4357,38 @@
"type": "tidelift"
}
],
- "time": "2020-10-05T12:39:37+00:00"
+ "time": "2026-03-15T10:50:11+00:00"
},
{
"name": "spatie/array-to-xml",
- "version": "v2.x-dev",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/spatie/array-to-xml.git",
- "reference": "ea4881f7b6f33fe1d685efad3d419a519dca9d95"
+ "reference": "47e78cfb1986ad4a7e118f6f930dbc3748d6e36e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/ea4881f7b6f33fe1d685efad3d419a519dca9d95",
- "reference": "ea4881f7b6f33fe1d685efad3d419a519dca9d95",
+ "url": "https://api.github.com/repos/spatie/array-to-xml/zipball/47e78cfb1986ad4a7e118f6f930dbc3748d6e36e",
+ "reference": "47e78cfb1986ad4a7e118f6f930dbc3748d6e36e",
"shasum": ""
},
"require": {
"ext-dom": "*",
- "php": "^7.4|^8.0"
+ "php": "^8.0"
},
"require-dev": {
- "mockery/mockery": "^1.2",
- "pestphp/pest": "^1.21",
- "phpunit/phpunit": "^9.0",
- "spatie/pest-plugin-snapshots": "^1.1"
+ "mockery/mockery": "^1.6",
+ "pestphp/pest": "^1.23 || ^2.0 || ^3.0 || ^4.0",
+ "spatie/pest-plugin-snapshots": "^1.1 || ^2.0"
},
+ "default-branch": true,
"type": "library",
+ "extra": {
+ "branch-alias": {
+ "dev-main": "3.x-dev"
+ }
+ },
"autoload": {
"psr-4": {
"Spatie\\ArrayToXml\\": "src"
@@ -3088,7 +4414,7 @@
"xml"
],
"support": {
- "source": "https://github.com/spatie/array-to-xml/tree/v2"
+ "source": "https://github.com/spatie/array-to-xml/tree/main"
},
"funding": [
{
@@ -3100,30 +4426,34 @@
"type": "github"
}
],
- "time": "2023-04-25T11:18:36+00:00"
+ "time": "2026-01-12T19:48:06+00:00"
},
{
"name": "squizlabs/php_codesniffer",
- "version": "dev-master",
+ "version": "4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git",
- "reference": "92c8ef54357ea09d93f8efa043d7c9c0a71ae094"
+ "reference": "9dfea15a05f25a3e64e21f61ab6bf4b88209a05e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/92c8ef54357ea09d93f8efa043d7c9c0a71ae094",
- "reference": "92c8ef54357ea09d93f8efa043d7c9c0a71ae094",
+ "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/9dfea15a05f25a3e64e21f61ab6bf4b88209a05e",
+ "reference": "9dfea15a05f25a3e64e21f61ab6bf4b88209a05e",
"shasum": ""
},
"require": {
"ext-simplexml": "*",
"ext-tokenizer": "*",
"ext-xmlwriter": "*",
- "php": ">=5.4.0"
+ "php": ">=7.2.0"
},
"require-dev": {
- "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4"
+ "phpunit/phpunit": "^8.4.0 || ^9.3.4 || ^10.5.32 || 11.3.3 - 11.5.28 || ^11.5.31"
+ },
+ "suggest": {
+ "ext-iconv": "For accurate character length calculation when the checked files contain multi-byte characters.",
+ "ext-pcntl": "For parallel processing support via the --parallel CLI option."
},
"default-branch": true,
"bin": [
@@ -3131,11 +4461,6 @@
"bin/phpcs"
],
"type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "3.x-dev"
- }
- },
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
@@ -3154,7 +4479,7 @@
"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.",
+ "description": "PHP_CodeSniffer tokenizes PHP files and detects violations of a defined set of coding standards.",
"homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer",
"keywords": [
"phpcs",
@@ -3179,58 +4504,57 @@
{
"url": "https://opencollective.com/php_codesniffer",
"type": "open_collective"
+ },
+ {
+ "url": "https://thanks.dev/u/gh/phpcsstandards",
+ "type": "thanks_dev"
}
],
- "time": "2024-09-18T16:46:38+00:00"
+ "time": "2026-03-21T01:27:33+00:00"
},
{
"name": "symfony/console",
- "version": "5.4.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
- "reference": "5b5a0aa66e3296e303e22490f90f521551835a83"
+ "reference": "49257c96304c508223815ee965c251e7c79e614e"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/console/zipball/5b5a0aa66e3296e303e22490f90f521551835a83",
- "reference": "5b5a0aa66e3296e303e22490f90f521551835a83",
+ "url": "https://api.github.com/repos/symfony/console/zipball/49257c96304c508223815ee965c251e7c79e614e",
+ "reference": "49257c96304c508223815ee965c251e7c79e614e",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
- "symfony/deprecation-contracts": "^2.1|^3",
+ "php": ">=8.1",
+ "symfony/deprecation-contracts": "^2.5|^3",
"symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php73": "^1.9",
- "symfony/polyfill-php80": "^1.16",
- "symfony/service-contracts": "^1.1|^2|^3",
- "symfony/string": "^5.1|^6.0"
+ "symfony/service-contracts": "^2.5|^3",
+ "symfony/string": "^5.4|^6.0|^7.0"
},
"conflict": {
- "psr/log": ">=3",
- "symfony/dependency-injection": "<4.4",
- "symfony/dotenv": "<5.1",
- "symfony/event-dispatcher": "<4.4",
- "symfony/lock": "<4.4",
- "symfony/process": "<4.4"
+ "symfony/dependency-injection": "<5.4",
+ "symfony/dotenv": "<5.4",
+ "symfony/event-dispatcher": "<5.4",
+ "symfony/lock": "<5.4",
+ "symfony/process": "<5.4"
},
"provide": {
- "psr/log-implementation": "1.0|2.0"
+ "psr/log-implementation": "1.0|2.0|3.0"
},
"require-dev": {
- "psr/log": "^1|^2",
- "symfony/config": "^4.4|^5.0|^6.0",
- "symfony/dependency-injection": "^4.4|^5.0|^6.0",
- "symfony/event-dispatcher": "^4.4|^5.0|^6.0",
- "symfony/lock": "^4.4|^5.0|^6.0",
- "symfony/process": "^4.4|^5.0|^6.0",
- "symfony/var-dumper": "^4.4|^5.0|^6.0"
- },
- "suggest": {
- "psr/log": "For using the console logger",
- "symfony/event-dispatcher": "",
- "symfony/lock": "",
- "symfony/process": ""
+ "psr/log": "^1|^2|^3",
+ "symfony/config": "^5.4|^6.0|^7.0",
+ "symfony/dependency-injection": "^5.4|^6.0|^7.0",
+ "symfony/event-dispatcher": "^5.4|^6.0|^7.0",
+ "symfony/http-foundation": "^6.4|^7.0",
+ "symfony/http-kernel": "^6.4|^7.0",
+ "symfony/lock": "^5.4|^6.0|^7.0",
+ "symfony/messenger": "^5.4|^6.0|^7.0",
+ "symfony/process": "^5.4|^6.0|^7.0",
+ "symfony/stopwatch": "^5.4|^6.0|^7.0",
+ "symfony/var-dumper": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -3264,7 +4588,7 @@
"terminal"
],
"support": {
- "source": "https://github.com/symfony/console/tree/5.4"
+ "source": "https://github.com/symfony/console/tree/6.4"
},
"funding": [
{
@@ -3275,38 +4599,43 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-20T07:56:40+00:00"
+ "time": "2026-03-06T13:31:08+00:00"
},
{
"name": "symfony/deprecation-contracts",
- "version": "2.5.x-dev",
+ "version": "dev-main",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
- "reference": "d36279a5a4bc7f3ca2c412839f10d7c0aa2c1a02"
+ "reference": "bbd66f9d55454b9b7a66a9cebe77523806a3288a"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/d36279a5a4bc7f3ca2c412839f10d7c0aa2c1a02",
- "reference": "d36279a5a4bc7f3ca2c412839f10d7c0aa2c1a02",
+ "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/bbd66f9d55454b9b7a66a9cebe77523806a3288a",
+ "reference": "bbd66f9d55454b9b7a66a9cebe77523806a3288a",
"shasum": ""
},
"require": {
- "php": ">=7.1"
+ "php": ">=8.1"
},
+ "default-branch": true,
"type": "library",
"extra": {
- "branch-alias": {
- "dev-main": "2.5-dev"
- },
"thanks": {
- "name": "symfony/contracts",
- "url": "https://github.com/symfony/contracts"
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.7-dev"
}
},
"autoload": {
@@ -3331,7 +4660,7 @@
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/deprecation-contracts/tree/2.5"
+ "source": "https://github.com/symfony/deprecation-contracts/tree/main"
},
"funding": [
{
@@ -3342,35 +4671,38 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-04-18T08:26:06+00:00"
+ "time": "2026-01-05T13:30:16+00:00"
},
{
"name": "symfony/filesystem",
- "version": "5.4.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/filesystem.git",
- "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc"
+ "reference": "01ffe0411b842f93c571e5c391f289c3fdd498c3"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/filesystem/zipball/76c3818964e9d32be3862c9318ae3ba9aa280ddc",
- "reference": "76c3818964e9d32be3862c9318ae3ba9aa280ddc",
+ "url": "https://api.github.com/repos/symfony/filesystem/zipball/01ffe0411b842f93c571e5c391f289c3fdd498c3",
+ "reference": "01ffe0411b842f93c571e5c391f289c3fdd498c3",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
- "symfony/polyfill-mbstring": "~1.8",
- "symfony/polyfill-php80": "^1.16"
+ "symfony/polyfill-mbstring": "~1.8"
},
"require-dev": {
- "symfony/process": "^5.4|^6.4"
+ "symfony/process": "^5.4|^6.4|^7.0"
},
"type": "library",
"autoload": {
@@ -3398,7 +4730,7 @@
"description": "Provides basic utilities for the filesystem",
"homepage": "https://symfony.com",
"support": {
- "source": "https://github.com/symfony/filesystem/tree/5.4"
+ "source": "https://github.com/symfony/filesystem/tree/6.4"
},
"funding": [
{
@@ -3409,12 +4741,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-16T14:52:48+00:00"
+ "time": "2026-02-24T17:51:06+00:00"
},
{
"name": "symfony/polyfill-ctype",
@@ -3443,8 +4779,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -3478,7 +4814,7 @@
"portable"
],
"support": {
- "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0"
+ "source": "https://github.com/symfony/polyfill-ctype/tree/v1.33.0"
},
"funding": [
{
@@ -3489,6 +4825,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -3502,12 +4842,12 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-grapheme.git",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe"
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
- "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe",
+ "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/380872130d3a5dd3ace2f4010d95125fde5d5c70",
+ "reference": "380872130d3a5dd3ace2f4010d95125fde5d5c70",
"shasum": ""
},
"require": {
@@ -3520,8 +4860,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -3557,7 +4897,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0"
+ "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.33.0"
},
"funding": [
{
@@ -3568,12 +4908,16 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-09T11:45:10+00:00"
+ "time": "2025-06-27T09:58:17+00:00"
},
{
"name": "symfony/polyfill-intl-normalizer",
@@ -3599,8 +4943,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -3639,7 +4983,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0"
+ "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.33.0"
},
"funding": [
{
@@ -3650,6 +4994,10 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
@@ -3663,15 +5011,16 @@
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-mbstring.git",
- "reference": "2369cb908b33d7b7518cce042615de430142497f"
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/2369cb908b33d7b7518cce042615de430142497f",
- "reference": "2369cb908b33d7b7518cce042615de430142497f",
+ "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/6d857f4d76bd4b343eac26d6b539585d2bc56493",
+ "reference": "6d857f4d76bd4b343eac26d6b539585d2bc56493",
"shasum": ""
},
"require": {
+ "ext-iconv": "*",
"php": ">=7.2"
},
"provide": {
@@ -3684,8 +5033,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -3720,7 +5069,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-mbstring/tree/1.x"
+ "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.33.0"
},
"funding": [
{
@@ -3731,25 +5080,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-10T14:38:51+00:00"
+ "time": "2024-12-23T08:48:59+00:00"
},
{
- "name": "symfony/polyfill-php73",
+ "name": "symfony/polyfill-php84",
"version": "1.x-dev",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php73.git",
- "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb"
+ "url": "https://github.com/symfony/polyfill-php84.git",
+ "reference": "4acd8b3205f17b5811d5e036e89690fe8baad365"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
- "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb",
+ "url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/4acd8b3205f17b5811d5e036e89690fe8baad365",
+ "reference": "4acd8b3205f17b5811d5e036e89690fe8baad365",
"shasum": ""
},
"require": {
@@ -3759,8 +5112,8 @@
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/polyfill",
+ "name": "symfony/polyfill"
}
},
"autoload": {
@@ -3768,7 +5121,7 @@
"bootstrap.php"
],
"psr-4": {
- "Symfony\\Polyfill\\Php73\\": ""
+ "Symfony\\Polyfill\\Php84\\": ""
},
"classmap": [
"Resources/stubs"
@@ -3788,7 +5141,7 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions",
+ "description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
@@ -3797,7 +5150,7 @@
"shim"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0"
+ "source": "https://github.com/symfony/polyfill-php84/tree/1.x"
},
"funding": [
{
@@ -3808,47 +5161,56 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-09T11:45:10+00:00"
+ "time": "2025-08-20T10:44:59+00:00"
},
{
- "name": "symfony/polyfill-php80",
- "version": "1.x-dev",
+ "name": "symfony/service-contracts",
+ "version": "dev-main",
"source": {
"type": "git",
- "url": "https://github.com/symfony/polyfill-php80.git",
- "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8"
+ "url": "https://github.com/symfony/service-contracts.git",
+ "reference": "d714f7788dd07a4a93cd0d6cc63fbf487ba67014"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
- "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8",
+ "url": "https://api.github.com/repos/symfony/service-contracts/zipball/d714f7788dd07a4a93cd0d6cc63fbf487ba67014",
+ "reference": "d714f7788dd07a4a93cd0d6cc63fbf487ba67014",
"shasum": ""
},
"require": {
- "php": ">=7.2"
+ "php": ">=8.1",
+ "psr/container": "^1.1|^2.0",
+ "symfony/deprecation-contracts": "^2.5|^3"
+ },
+ "conflict": {
+ "ext-psr": "<1.1|>=2"
},
"default-branch": true,
"type": "library",
"extra": {
"thanks": {
- "name": "symfony/polyfill",
- "url": "https://github.com/symfony/polyfill"
+ "url": "https://github.com/symfony/contracts",
+ "name": "symfony/contracts"
+ },
+ "branch-alias": {
+ "dev-main": "3.7-dev"
}
},
"autoload": {
- "files": [
- "bootstrap.php"
- ],
"psr-4": {
- "Symfony\\Polyfill\\Php80\\": ""
+ "Symfony\\Contracts\\Service\\": ""
},
- "classmap": [
- "Resources/stubs"
+ "exclude-from-classmap": [
+ "/Test/"
]
},
"notification-url": "https://packagist.org/downloads/",
@@ -3856,10 +5218,6 @@
"MIT"
],
"authors": [
- {
- "name": "Ion Bazan",
- "email": "ion.bazan@gmail.com"
- },
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
@@ -3869,16 +5227,18 @@
"homepage": "https://symfony.com/contributors"
}
],
- "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions",
+ "description": "Generic abstractions related to writing services",
"homepage": "https://symfony.com",
"keywords": [
- "compatibility",
- "polyfill",
- "portable",
- "shim"
+ "abstractions",
+ "contracts",
+ "decoupling",
+ "interfaces",
+ "interoperability",
+ "standards"
],
"support": {
- "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0"
+ "source": "https://github.com/symfony/service-contracts/tree/main"
},
"funding": [
{
@@ -3890,103 +5250,45 @@
"type": "github"
},
{
- "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
- "type": "tidelift"
- }
- ],
- "time": "2024-09-09T11:45:10+00:00"
- },
- {
- "name": "symfony/service-contracts",
- "version": "v1.1.2",
- "source": {
- "type": "git",
- "url": "https://github.com/symfony/service-contracts.git",
- "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0"
- },
- "dist": {
- "type": "zip",
- "url": "https://api.github.com/repos/symfony/service-contracts/zipball/191afdcb5804db960d26d8566b7e9a2843cab3a0",
- "reference": "191afdcb5804db960d26d8566b7e9a2843cab3a0",
- "shasum": ""
- },
- "require": {
- "php": "^7.1.3"
- },
- "suggest": {
- "psr/container": "",
- "symfony/service-implementation": ""
- },
- "type": "library",
- "extra": {
- "branch-alias": {
- "dev-master": "1.1-dev"
- }
- },
- "autoload": {
- "psr-4": {
- "Symfony\\Contracts\\Service\\": ""
- }
- },
- "notification-url": "https://packagist.org/downloads/",
- "license": [
- "MIT"
- ],
- "authors": [
- {
- "name": "Nicolas Grekas",
- "email": "p@tchwork.com"
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
},
{
- "name": "Symfony Community",
- "homepage": "https://symfony.com/contributors"
+ "url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
+ "type": "tidelift"
}
],
- "description": "Generic abstractions related to writing services",
- "homepage": "https://symfony.com",
- "keywords": [
- "abstractions",
- "contracts",
- "decoupling",
- "interfaces",
- "interoperability",
- "standards"
- ],
- "support": {
- "source": "https://github.com/symfony/service-contracts/tree/v1.1.2"
- },
- "time": "2019-05-28T07:50:59+00:00"
+ "time": "2026-03-15T18:28:19+00:00"
},
{
"name": "symfony/string",
- "version": "5.4.x-dev",
+ "version": "6.4.x-dev",
"source": {
"type": "git",
"url": "https://github.com/symfony/string.git",
- "reference": "832caa16b6d9aac6bf11747315225f5aba384c24"
+ "reference": "2adaf4106f2ef4c67271971bde6d3fe0a6936432"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/symfony/string/zipball/832caa16b6d9aac6bf11747315225f5aba384c24",
- "reference": "832caa16b6d9aac6bf11747315225f5aba384c24",
+ "url": "https://api.github.com/repos/symfony/string/zipball/2adaf4106f2ef4c67271971bde6d3fe0a6936432",
+ "reference": "2adaf4106f2ef4c67271971bde6d3fe0a6936432",
"shasum": ""
},
"require": {
- "php": ">=7.2.5",
+ "php": ">=8.1",
"symfony/polyfill-ctype": "~1.8",
"symfony/polyfill-intl-grapheme": "~1.0",
"symfony/polyfill-intl-normalizer": "~1.0",
- "symfony/polyfill-mbstring": "~1.0",
- "symfony/polyfill-php80": "~1.15"
+ "symfony/polyfill-mbstring": "~1.0"
},
"conflict": {
- "symfony/translation-contracts": ">=3.0"
+ "symfony/translation-contracts": "<2.5"
},
"require-dev": {
- "symfony/error-handler": "^4.4|^5.0|^6.0",
- "symfony/http-client": "^4.4|^5.0|^6.0",
- "symfony/translation-contracts": "^1.1|^2",
- "symfony/var-exporter": "^4.4|^5.0|^6.0"
+ "symfony/http-client": "^5.4|^6.0|^7.0",
+ "symfony/intl": "^6.2|^7.0",
+ "symfony/translation-contracts": "^2.5|^3.0",
+ "symfony/var-exporter": "^5.4|^6.0|^7.0"
},
"type": "library",
"autoload": {
@@ -4025,7 +5327,7 @@
"utf8"
],
"support": {
- "source": "https://github.com/symfony/string/tree/5.4"
+ "source": "https://github.com/symfony/string/tree/6.4"
},
"funding": [
{
@@ -4036,25 +5338,29 @@
"url": "https://github.com/fabpot",
"type": "github"
},
+ {
+ "url": "https://github.com/nicolas-grekas",
+ "type": "github"
+ },
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
- "time": "2024-09-20T07:56:40+00:00"
+ "time": "2026-02-08T20:44:54+00:00"
},
{
"name": "theseer/tokenizer",
- "version": "1.2.3",
+ "version": "1.3.1",
"source": {
"type": "git",
"url": "https://github.com/theseer/tokenizer.git",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2"
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/theseer/tokenizer/zipball/737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
- "reference": "737eda637ed5e28c3413cb1ebe8bb52cbf1ca7a2",
+ "url": "https://api.github.com/repos/theseer/tokenizer/zipball/b7489ce515e168639d17feec34b8847c326b0b3c",
+ "reference": "b7489ce515e168639d17feec34b8847c326b0b3c",
"shasum": ""
},
"require": {
@@ -4083,7 +5389,7 @@
"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"
+ "source": "https://github.com/theseer/tokenizer/tree/1.3.1"
},
"funding": [
{
@@ -4091,28 +5397,30 @@
"type": "github"
}
],
- "time": "2024-03-03T12:36:25+00:00"
+ "time": "2025-11-17T20:03:58+00:00"
},
{
"name": "vimeo/psalm",
- "version": "5.x-dev",
+ "version": "6.x-dev",
"source": {
"type": "git",
"url": "https://github.com/vimeo/psalm.git",
- "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0"
+ "reference": "f1f5de594dc76faf8784e02d3dc4716c91c6f6ac"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/vimeo/psalm/zipball/d747f6500b38ac4f7dfc5edbcae6e4b637d7add0",
- "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0",
+ "url": "https://api.github.com/repos/vimeo/psalm/zipball/f1f5de594dc76faf8784e02d3dc4716c91c6f6ac",
+ "reference": "f1f5de594dc76faf8784e02d3dc4716c91c6f6ac",
"shasum": ""
},
"require": {
- "amphp/amp": "^2.4.2",
- "amphp/byte-stream": "^1.5",
+ "amphp/amp": "^3",
+ "amphp/byte-stream": "^2",
+ "amphp/parallel": "^2.3",
"composer-runtime-api": "^2",
"composer/semver": "^1.4 || ^2.0 || ^3.0",
"composer/xdebug-handler": "^2.0 || ^3.0",
+ "danog/advanced-json-rpc": "^3.1",
"dnoegel/php-xdg-base-dir": "^0.1.1",
"ext-ctype": "*",
"ext-dom": "*",
@@ -4121,27 +5429,26 @@
"ext-mbstring": "*",
"ext-simplexml": "*",
"ext-tokenizer": "*",
- "felixfbecker/advanced-json-rpc": "^3.1",
- "felixfbecker/language-server-protocol": "^1.5.2",
+ "felixfbecker/language-server-protocol": "^1.5.3",
"fidry/cpu-core-counter": "^0.4.1 || ^0.5.1 || ^1.0.0",
- "netresearch/jsonmapper": "^1.0 || ^2.0 || ^3.0 || ^4.0",
- "nikic/php-parser": "^4.17",
- "php": "^7.4 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0",
- "sebastian/diff": "^4.0 || ^5.0 || ^6.0",
+ "netresearch/jsonmapper": "^5.0",
+ "nikic/php-parser": "^5.0.0",
+ "php": "~8.1.31 || ~8.2.27 || ~8.3.16 || ~8.4.3 || ~8.5.0",
+ "sebastian/diff": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0",
"spatie/array-to-xml": "^2.17.0 || ^3.0",
- "symfony/console": "^4.1.6 || ^5.0 || ^6.0 || ^7.0",
- "symfony/filesystem": "^5.4 || ^6.0 || ^7.0"
- },
- "conflict": {
- "nikic/php-parser": "4.17.0"
+ "symfony/console": "^6.0 || ^7.0 || ^8.0",
+ "symfony/filesystem": "~6.3.12 || ~6.4.3 || ^7.0.3 || ^8.0",
+ "symfony/polyfill-php84": "^1.31.0"
},
"provide": {
"psalm/psalm": "self.version"
},
"require-dev": {
- "amphp/phpunit-util": "^2.0",
+ "amphp/phpunit-util": "^3",
"bamarni/composer-bin-plugin": "^1.4",
"brianium/paratest": "^6.9",
+ "danog/class-finder": "^0.4.8",
+ "dg/bypass-finals": "^1.5",
"ext-curl": "*",
"mockery/mockery": "^1.5",
"nunomaduro/mock-final-classes": "^1.1",
@@ -4149,10 +5456,10 @@
"phpstan/phpdoc-parser": "^1.6",
"phpunit/phpunit": "^9.6",
"psalm/plugin-mockery": "^1.1",
- "psalm/plugin-phpunit": "^0.18",
+ "psalm/plugin-phpunit": "^0.19",
"slevomat/coding-standard": "^8.4",
"squizlabs/php_codesniffer": "^3.6",
- "symfony/process": "^4.4 || ^5.0 || ^6.0 || ^7.0"
+ "symfony/process": "^6.0 || ^7.0 || ^8.0"
},
"suggest": {
"ext-curl": "In order to send data to shepherd",
@@ -4164,16 +5471,19 @@
"psalm-language-server",
"psalm-plugin",
"psalm-refactor",
+ "psalm-review",
"psalter"
],
"type": "project",
"extra": {
"branch-alias": {
- "dev-master": "5.x-dev",
- "dev-4.x": "4.x-dev",
- "dev-3.x": "3.x-dev",
+ "dev-1.x": "1.x-dev",
"dev-2.x": "2.x-dev",
- "dev-1.x": "1.x-dev"
+ "dev-3.x": "3.x-dev",
+ "dev-4.x": "4.x-dev",
+ "dev-5.x": "5.x-dev",
+ "dev-6.x": "6.x-dev",
+ "dev-master": "7.x-dev"
}
},
"autoload": {
@@ -4188,6 +5498,10 @@
"authors": [
{
"name": "Matthew Brown"
+ },
+ {
+ "name": "Daniil Gentili",
+ "email": "daniil@daniil.it"
}
],
"description": "A static analysis tool for finding errors in PHP applications",
@@ -4202,32 +5516,32 @@
"issues": "https://github.com/vimeo/psalm/issues",
"source": "https://github.com/vimeo/psalm"
},
- "time": "2024-09-08T18:53:08+00:00"
+ "time": "2026-03-19T10:56:09+00:00"
},
{
"name": "webmozart/assert",
- "version": "1.11.0",
+ "version": "1.12.1",
"source": {
"type": "git",
"url": "https://github.com/webmozarts/assert.git",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991"
+ "reference": "9be6926d8b485f55b9229203f962b51ed377ba68"
},
"dist": {
"type": "zip",
- "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991",
- "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991",
+ "url": "https://api.github.com/repos/webmozarts/assert/zipball/9be6926d8b485f55b9229203f962b51ed377ba68",
+ "reference": "9be6926d8b485f55b9229203f962b51ed377ba68",
"shasum": ""
},
"require": {
"ext-ctype": "*",
+ "ext-date": "*",
+ "ext-filter": "*",
"php": "^7.2 || ^8.0"
},
- "conflict": {
- "phpstan/phpstan": "<0.12.20",
- "vimeo/psalm": "<4.6.1 || 4.6.2"
- },
- "require-dev": {
- "phpunit/phpunit": "^8.5.13"
+ "suggest": {
+ "ext-intl": "",
+ "ext-simplexml": "",
+ "ext-spl": ""
},
"type": "library",
"extra": {
@@ -4258,9 +5572,9 @@
],
"support": {
"issues": "https://github.com/webmozarts/assert/issues",
- "source": "https://github.com/webmozarts/assert/tree/1.11.0"
+ "source": "https://github.com/webmozarts/assert/tree/1.12.1"
},
- "time": "2022-06-03T18:03:27+00:00"
+ "time": "2025-10-29T15:56:20+00:00"
},
{
"name": "wildwolf/psr-cache-common",
@@ -4367,12 +5681,12 @@
],
"aliases": [],
"minimum-stability": "dev",
- "stability-flags": [],
+ "stability-flags": {},
"prefer-stable": false,
"prefer-lowest": false,
"platform": {
- "php": "^7.4 | ^8.0"
+ "php": "^8.1"
},
- "platform-dev": [],
- "plugin-api-version": "2.6.0"
+ "platform-dev": {},
+ "plugin-api-version": "2.9.0"
}
diff --git a/docker/Dockerfile b/docker/Dockerfile
index 3962986..86532d3 100644
--- a/docker/Dockerfile
+++ b/docker/Dockerfile
@@ -9,6 +9,7 @@ ARG BUILD_ROOT_PATH
RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
RUN apt-get update
RUN apt-get install -y zip unzip curl git
+RUN git config --global --add safe.directory "${BUILD_ROOT_PATH}"
RUN php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
RUN php composer-setup.php --install-dir=/usr/bin --filename=composer
RUN php -r "unlink('composer-setup.php');"
diff --git a/phpcs.xml.dist b/phpcs.xml.dist
index 70cc8d1..0bf3008 100644
--- a/phpcs.xml.dist
+++ b/phpcs.xml.dist
@@ -7,7 +7,7 @@
-
+
@@ -17,8 +17,8 @@
-
-
+
+
@@ -30,6 +30,7 @@
+
diff --git a/phpunit.xml.dist b/phpunit.xml.dist
index 78e56c6..0116e6a 100644
--- a/phpunit.xml.dist
+++ b/phpunit.xml.dist
@@ -3,13 +3,8 @@
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
colors="true"
bootstrap="tests/bootstrap.php"
- xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/9.3/phpunit.xsd"
+ xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/10.5/phpunit.xsd"
>
-
-
- src
-
-
@@ -25,4 +20,9 @@
tests/system
+
+
+ src
+
+
diff --git a/psalm-baseline.xml b/psalm-baseline.xml
deleted file mode 100644
index eeb1f9d..0000000
--- a/psalm-baseline.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-
-
-
-
- extensions]]>
- factories]]>
-
-
-
-
-
-
-
-
-
-
-
- $c->get($serviceName)]]>
-
-
-
-
-
-
-
-
-
-
diff --git a/psalm.xml.dist b/psalm.xml.dist
index 898390b..bb595ca 100644
--- a/psalm.xml.dist
+++ b/psalm.xml.dist
@@ -19,7 +19,6 @@
throwExceptionOnError="false"
hideExternalErrors="true"
allowFileIncludes="true"
- errorBaseline="psalm-baseline.xml"
>
@@ -136,7 +135,6 @@
-
@@ -146,5 +144,11 @@
+
+
+
+
+
+
diff --git a/src/AliasingContainer.php b/src/AliasingContainer.php
index eab1ce6..6f54ee4 100644
--- a/src/AliasingContainer.php
+++ b/src/AliasingContainer.php
@@ -22,16 +22,15 @@ class AliasingContainer implements ContainerInterface
/**
* @since [*next-version*]
*
- * @var PsrContainerInterface
*/
- protected $inner;
+ protected PsrContainerInterface $inner;
/**
* @since [*next-version*]
*
* @var array
*/
- protected $aliases;
+ protected array $aliases;
/**
* Constructor.
@@ -50,7 +49,8 @@ public function __construct(PsrContainerInterface $inner, array $aliases)
/**
* @inheritdoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
return $this->inner->get($this->getInnerKey($key));
}
@@ -58,6 +58,7 @@ public function get(string $key)
/**
* @inheritdoc
*/
+ #[\Override]
public function has(string $key): bool
{
return $this->inner->has($this->getInnerKey($key));
diff --git a/src/CachingContainer.php b/src/CachingContainer.php
index c4a61ee..f72b5ef 100644
--- a/src/CachingContainer.php
+++ b/src/CachingContainer.php
@@ -22,10 +22,9 @@ class CachingContainer implements ContainerInterface
use StringTranslatingTrait;
/** @var array */
- protected $cache;
+ protected array $cache;
- /** @var PsrContainerInterface */
- protected $container;
+ protected PsrContainerInterface $container;
/**
* @param PsrContainerInterface $container The container to cache entries from.
@@ -39,7 +38,8 @@ public function __construct(PsrContainerInterface $container)
/**
* {@inheritDoc}
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
/**
* @psalm-suppress InvalidCatch
@@ -70,6 +70,7 @@ public function get(string $key)
/**
* {@inheritDoc}
*/
+ #[\Override]
public function has(string $key): bool
{
/**
@@ -109,9 +110,8 @@ public function has(string $key): bool
* @return mixed The cached value.
*
* @throws Exception If problem caching.
- * @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint
*/
- protected function getCached(string $key, callable $generator)
+ protected function getCached(string $key, callable $generator): mixed
{
if (!array_key_exists($key, $this->cache)) {
$value = $this->invokeGenerator($generator);
@@ -143,9 +143,8 @@ protected function hasCached(string $key): bool
* @return mixed The generated result.
*
* @throws Exception If problem generating.
- * @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint
*/
- protected function invokeGenerator(callable $generator)
+ protected function invokeGenerator(callable $generator): mixed
{
$result = $generator();
return $result;
diff --git a/src/CompositeCachingServiceProvider.php b/src/CompositeCachingServiceProvider.php
index 14b6feb..a8aa319 100644
--- a/src/CompositeCachingServiceProvider.php
+++ b/src/CompositeCachingServiceProvider.php
@@ -15,17 +15,17 @@ class CompositeCachingServiceProvider implements ServiceProviderInterface
/**
* @var iterable
*/
- protected $providers;
+ protected iterable $providers;
/**
* @var ?iterable
*/
- protected $factories;
+ protected ?iterable $factories;
/**
* @var ?iterable
*/
- protected $extensions;
+ protected ?iterable $extensions;
/**
* @param iterable $providers
@@ -43,7 +43,8 @@ public function __construct(iterable $providers)
* @psalm-suppress InvalidNullableReturnType
* It isn't actually going to return null ever, because $factories will be filled during indexing.
*/
- public function getFactories()
+ #[\Override]
+ public function getFactories(): array
{
if (!is_array($this->factories)) {
$this->indexProviderDefinitions($this->providers);
@@ -62,7 +63,8 @@ public function getFactories()
* @psalm-suppress InvalidNullableReturnType
* It isn't actually going to return null ever, because $factories will be filled during indexing.
*/
- public function getExtensions()
+ #[\Override]
+ public function getExtensions(): array
{
if (!is_array($this->extensions)) {
$this->indexProviderDefinitions($this->providers);
diff --git a/src/CompositeContainer.php b/src/CompositeContainer.php
index 89a2aa5..ef8cfc1 100644
--- a/src/CompositeContainer.php
+++ b/src/CompositeContainer.php
@@ -19,7 +19,7 @@ class CompositeContainer implements ContainerInterface
/**
* @var iterable
*/
- protected $containers;
+ protected iterable $containers;
/**
* @param iterable $containers The list of containers.
@@ -32,7 +32,8 @@ public function __construct(iterable $containers)
/**
* {@inheritDoc}
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
foreach ($this->containers as $index => $container) {
/**
@@ -69,6 +70,7 @@ public function get(string $key)
/**
* {@inheritDoc}
*/
+ #[\Override]
public function has(string $key): bool
{
foreach ($this->containers as $index => $container) {
diff --git a/src/DataStructureBasedFactory.php b/src/DataStructureBasedFactory.php
index d1b785f..f7e7796 100644
--- a/src/DataStructureBasedFactory.php
+++ b/src/DataStructureBasedFactory.php
@@ -12,10 +12,7 @@
*/
class DataStructureBasedFactory implements DataStructureBasedFactoryInterface
{
- /**
- * @var WritableMapFactoryInterface
- */
- protected $containerFactory;
+ protected WritableMapFactoryInterface $containerFactory;
public function __construct(WritableMapFactoryInterface $containerFactory)
{
$this->containerFactory = $containerFactory;
@@ -24,6 +21,7 @@ public function __construct(WritableMapFactoryInterface $containerFactory)
/**
* @inheritDoc
*/
+ #[\Override]
public function createContainerFromArray(array $structure): WritableMapInterface
{
$map = [];
diff --git a/src/DataStructureBasedFactoryInterface.php b/src/DataStructureBasedFactoryInterface.php
index 05afa4b..da14249 100644
--- a/src/DataStructureBasedFactoryInterface.php
+++ b/src/DataStructureBasedFactoryInterface.php
@@ -22,5 +22,6 @@ interface DataStructureBasedFactoryInterface extends WritableMapFactoryInterface
*
* @throws Exception If problem creating.
*/
+ #[\Override]
public function createContainerFromArray(array $structure): WritableMapInterface;
}
diff --git a/src/DelegatingContainer.php b/src/DelegatingContainer.php
index 0b36cd0..c7871b9 100644
--- a/src/DelegatingContainer.php
+++ b/src/DelegatingContainer.php
@@ -16,21 +16,15 @@ class DelegatingContainer implements ContainerInterface
{
use StringTranslatingTrait;
- /**
- * @var ServiceProviderInterface
- */
- protected $provider;
+ protected ServiceProviderInterface $provider;
- /**
- * @var PsrContainerInterface|null
- */
- protected $parent;
+ protected ?PsrContainerInterface $parent;
/**
* Keys represent the list of service names accessed recursively, in order of access
* @var array
*/
- protected $stack = [];
+ protected array $stack = [];
/**
*/
@@ -43,7 +37,8 @@ public function __construct(ServiceProviderInterface $provider, PsrContainerInte
/**
* {@inheritDoc}
*/
- public function get(string $id)
+ #[\Override]
+ public function get(string $id): mixed
{
if (array_key_exists($id, $this->stack)) {
$trace = implode(' -> ', array_keys($this->stack)) . ' -> ' . $id;
@@ -67,6 +62,7 @@ public function get(string $id)
/**
* {@inheritDoc}
*/
+ #[\Override]
public function has(string $id): bool
{
$services = $this->provider->getFactories();
@@ -86,7 +82,7 @@ public function has(string $id): bool
* @throws NotFoundException If no factory corresponds to the given $key.
* @throws ContainerException If an error occurred while creating the service.
*/
- protected function createService(string $key)
+ protected function createService(string $key): mixed
{
$provider = $this->provider;
$services = $provider->getFactories();
@@ -140,9 +136,8 @@ protected function createService(string $key)
* @return mixed The service created by the factory.
*
* @throws UnexpectedValueException If factory could not be invoked.
- * @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint
*/
- protected function invokeFactory(callable $factory)
+ protected function invokeFactory(callable $factory): mixed
{
if (!is_callable($factory)) {
throw new UnexpectedValueException(
@@ -167,9 +162,8 @@ protected function invokeFactory(callable $factory)
* @return mixed The extended service.
*
* @throws UnexpectedValueException If extension cannot be invoked.
- * @phpcsSuppress SlevomatCodingStandard.TypeHints.ReturnTypeHint.MissingNativeTypeHint
*/
- protected function invokeExtension(callable $extension, $service)
+ protected function invokeExtension(callable $extension, mixed $service): mixed
{
if (!is_callable($extension)) {
throw new UnexpectedValueException(
diff --git a/src/DeprefixingContainer.php b/src/DeprefixingContainer.php
index cd41b11..28ee631 100644
--- a/src/DeprefixingContainer.php
+++ b/src/DeprefixingContainer.php
@@ -19,23 +19,20 @@ class DeprefixingContainer implements ContainerInterface
/**
* @since [*next-version*]
*
- * @var PsrContainerInterface
*/
- protected $inner;
+ protected PsrContainerInterface $inner;
/**
* @since [*next-version*]
*
- * @var string
*/
- protected $prefix;
+ protected string $prefix;
/**
* @since [*next-version*]
*
- * @var bool
*/
- protected $strict;
+ protected bool $strict;
/**
* Constructor.
@@ -57,7 +54,8 @@ public function __construct(PsrContainerInterface $container, string $prefix, bo
/**
* @inheritdoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
/**
* @psalm-suppress InvalidCatch
@@ -78,6 +76,7 @@ public function get(string $key)
/**
* @inheritdoc
*/
+ #[\Override]
public function has(string $key): bool
{
$realKey = $this->getInnerKey($key);
diff --git a/src/Dictionary.php b/src/Dictionary.php
index ad7525e..dba4611 100644
--- a/src/Dictionary.php
+++ b/src/Dictionary.php
@@ -23,7 +23,7 @@ class Dictionary implements
use StringTranslatingTrait;
/** @var array */
- protected $data;
+ protected array $data;
/**
* @param array $data The key-value map of data.
@@ -36,7 +36,8 @@ public function __construct(array $data)
/**
* {@inheritDoc}
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
if (!array_key_exists($key, $this->data)) {
throw new NotFoundException(
@@ -52,6 +53,7 @@ public function get(string $key)
/**
* {@inheritDoc}
*/
+ #[\Override]
public function has(string $key): bool
{
$isHas = array_key_exists($key, $this->data);
@@ -62,6 +64,7 @@ public function has(string $key): bool
/**
* {@inheritDoc}
*/
+ #[\Override]
public function getIterator(): Traversable
{
return new ArrayIterator($this->data);
@@ -73,6 +76,7 @@ public function getIterator(): Traversable
* Psalm complains that the declared return type is more specific than inferred.
* This is not true, as it promises to return the interface.
*/
+ #[\Override]
public function withMappings(array $mappings): WritableContainerInterface
{
$dictionary = $this->cloneMe();
@@ -91,6 +95,7 @@ public function withMappings(array $mappings): WritableContainerInterface
* Psalm complains that the declared return type is more specific than inferred.
* This is not true, as it promises to return the interface.
*/
+ #[\Override]
public function withAddedMappings(array $mappings): WritableContainerInterface
{
$dictionary = $this->cloneMe();
@@ -109,6 +114,7 @@ public function withAddedMappings(array $mappings): WritableContainerInterface
* Psalm complains that the declared return type is more specific than inferred.
* This is not true, as it promises to return the interface.
*/
+ #[\Override]
public function withoutKeys(array $keys): WritableContainerInterface
{
$dictionary = $this->cloneMe();
diff --git a/src/DictionaryFactory.php b/src/DictionaryFactory.php
index 211200e..7a4696a 100644
--- a/src/DictionaryFactory.php
+++ b/src/DictionaryFactory.php
@@ -15,6 +15,7 @@ class DictionaryFactory implements WritableMapFactoryInterface
/**
* @inheritDoc
*/
+ #[\Override]
public function createContainerFromArray(array $data): WritableMapInterface
{
return new Dictionary($data);
diff --git a/src/Exception/ContainerException.php b/src/Exception/ContainerException.php
index 0f5dc65..034c7bc 100644
--- a/src/Exception/ContainerException.php
+++ b/src/Exception/ContainerException.php
@@ -16,18 +16,21 @@
*/
class ContainerException extends Exception implements ContainerExceptionInterface
{
- /**
- * @var ContainerInterface|null
- */
- protected $container;
+ protected ?ContainerInterface $container = null;
/**
* @param string $message The exception message.
* @param int $code The exception code.
* @param Throwable|null $previous The inner exception, if any.
*/
- public function __construct(string $message = "", int $code = 0, Throwable $previous = null)
- {
+ public function __construct(
+ string $message = "",
+ int $code = 0,
+ Throwable $previous = null,
+ ?ContainerInterface $container = null
+ ) {
parent::__construct($message, $code, $previous);
+ // TODO: Implement getter
+ $this->container = $container;
}
}
diff --git a/src/FlashContainer.php b/src/FlashContainer.php
index 6e7bf68..7b2e767 100644
--- a/src/FlashContainer.php
+++ b/src/FlashContainer.php
@@ -23,12 +23,10 @@ class FlashContainer implements
MutableContainerInterface,
ClearableContainerInterface
{
- /** @var MutableContainerInterface */
- protected $data;
- /** @var string */
- protected $dataKey;
+ protected MutableContainerInterface $data;
+ protected string $dataKey;
/** @var array */
- protected $flashData = [];
+ protected array $flashData = [];
/**
* @param MutableContainerInterface $data The storage.
@@ -58,6 +56,7 @@ public function init(): void
/**
* @inheritDoc
*/
+ #[\Override]
public function has(string $key): bool
{
return array_key_exists($key, $this->flashData);
@@ -68,7 +67,8 @@ public function has(string $key): bool
*
* Retrieves the value for the specified key from memory.
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
if (!array_key_exists($key, $this->flashData)) {
throw new NotFoundException(sprintf('Flash data not found for key "%1$s"', $key));
@@ -82,6 +82,7 @@ public function get(string $key)
*
* Assigns the given value to the specified key in memory, and persists this change in storage.
*/
+ #[\Override]
public function set(string $key, $value): void
{
$this->flashData[$key] = $value;
@@ -93,6 +94,7 @@ public function set(string $key, $value): void
*
* Removes the specified key from memory, and persists this change in storage.
*/
+ #[\Override]
public function unset(string $key): void
{
if (!array_key_exists($key, $this->flashData)) {
@@ -108,6 +110,7 @@ public function unset(string $key): void
*
* Clears all of this instance's data from memory.
*/
+ #[\Override]
public function clear(): void
{
$this->flashData = [];
diff --git a/src/HierarchyContainer.php b/src/HierarchyContainer.php
index 8f59fb4..f16151a 100644
--- a/src/HierarchyContainer.php
+++ b/src/HierarchyContainer.php
@@ -43,7 +43,7 @@ class HierarchyContainer implements ContainerInterface
*
* @var mixed[]
*/
- protected $data;
+ protected array $data;
/**
* Constructor.
@@ -60,7 +60,8 @@ public function __construct(array $data)
/**
* @inheritDoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
if (!array_key_exists($key, $this->data)) {
throw new NotFoundException("Key '{$key}' does not exist", 0, null);
@@ -82,6 +83,7 @@ public function get(string $key)
/**
* @inheritDoc
*/
+ #[\Override]
public function has(string $key): bool
{
return array_key_exists($key, $this->data);
diff --git a/src/MappingContainer.php b/src/MappingContainer.php
index 61ceada..51b4e12 100644
--- a/src/MappingContainer.php
+++ b/src/MappingContainer.php
@@ -39,8 +39,7 @@ class MappingContainer implements ContainerInterface
/** @var callable */
protected $callback;
- /** @var PsrContainerInterface */
- protected $inner;
+ protected PsrContainerInterface $inner;
/**
* @param PsrContainerInterface $inner The container instance to decorate.
@@ -58,7 +57,8 @@ public function __construct(PsrContainerInterface $inner, callable $callback)
/**
* @inheritdoc
*/
- public function get($key)
+ #[\Override]
+ public function get(string $key): mixed
{
return ($this->callback)($this->inner->get($key), $key, $this);
}
@@ -66,6 +66,7 @@ public function get($key)
/**
* @inheritdoc
*/
+ #[\Override]
public function has(string $key): bool
{
return $this->inner->has($key);
diff --git a/src/MaskingContainer.php b/src/MaskingContainer.php
index 0995f91..2117d4c 100644
--- a/src/MaskingContainer.php
+++ b/src/MaskingContainer.php
@@ -18,20 +18,14 @@ class MaskingContainer implements ContainerInterface
{
use StringTranslatingTrait;
- /**
- * @var PsrContainerInterface
- */
- protected $inner;
+ protected PsrContainerInterface $inner;
/**
* @var bool[]
*/
- protected $mask;
+ protected array $mask;
- /**
- * @var bool
- */
- protected $defMask;
+ protected bool $defMask;
/**
* Constructor.
@@ -53,7 +47,8 @@ public function __construct(PsrContainerInterface $inner, bool $defaultMask, arr
/**
* @inheritdoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
if (!$this->isExposed($key)) {
throw new NotFoundException(
@@ -69,6 +64,7 @@ public function get(string $key)
/**
* @inheritdoc
*/
+ #[\Override]
public function has(string $key): bool
{
return $this->isExposed($key) && $this->inner->has($key);
diff --git a/src/NoOpContainer.php b/src/NoOpContainer.php
index ad41c05..f061d70 100644
--- a/src/NoOpContainer.php
+++ b/src/NoOpContainer.php
@@ -29,7 +29,8 @@ class NoOpContainer implements
/**
* @inheritDoc
*/
- public function get(string $id)
+ #[\Override]
+ public function get(string $id): mixed
{
throw new NotFoundException('NoOp container cannot have values');
}
@@ -37,6 +38,7 @@ public function get(string $id)
/**
* @inheritDoc
*/
+ #[\Override]
public function has(string $id): bool
{
return false;
@@ -45,6 +47,7 @@ public function has(string $id): bool
/**
* @inheritDoc
*/
+ #[\Override]
public function set(string $key, $value): void
{
// Do nothing
@@ -53,6 +56,7 @@ public function set(string $key, $value): void
/**
* @inheritDoc
*/
+ #[\Override]
public function unset(string $key): void
{
throw new ContainerException('NoOp container cannot have values');
@@ -61,6 +65,7 @@ public function unset(string $key): void
/**
* @inheritDoc
*/
+ #[\Override]
public function clear(): void
{
// Do nothing
@@ -69,6 +74,7 @@ public function clear(): void
/**
* @inheritDoc
*/
+ #[\Override]
public function withMappings(array $mappings): WritableContainerInterface
{
return clone $this;
@@ -77,6 +83,7 @@ public function withMappings(array $mappings): WritableContainerInterface
/**
* @inheritDoc
*/
+ #[\Override]
public function withAddedMappings(array $mappings): WritableContainerInterface
{
return clone $this;
@@ -85,6 +92,7 @@ public function withAddedMappings(array $mappings): WritableContainerInterface
/**
* @inheritDoc
*/
+ #[\Override]
public function withoutKeys(array $keys): WritableContainerInterface
{
return clone $this;
@@ -93,6 +101,7 @@ public function withoutKeys(array $keys): WritableContainerInterface
/**
* @inheritDoc
*/
+ #[\Override]
public function getIterator(): Traversable
{
return new ArrayIterator([]);
diff --git a/src/PathContainer.php b/src/PathContainer.php
index 94138d9..70efeb6 100644
--- a/src/PathContainer.php
+++ b/src/PathContainer.php
@@ -49,11 +49,10 @@
*/
class PathContainer implements ContainerInterface
{
- /** @var PsrContainerInterface */
- protected $inner;
+ protected PsrContainerInterface $inner;
/** @var non-empty-string */
- protected $delimiter;
+ protected string $delimiter;
/**
* @param PsrContainerInterface $inner The container instance to decorate.
@@ -68,7 +67,8 @@ public function __construct(PsrContainerInterface $inner, string $delimiter = '/
/**
* @inheritDoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
$tKey = (strpos($key, $this->delimiter) === 0)
? substr($key, strlen($this->delimiter))
@@ -108,6 +108,7 @@ public function get(string $key)
/**
* @inheritDoc
*/
+ #[\Override]
public function has(string $key): bool
{
/**
diff --git a/src/PrefixingContainer.php b/src/PrefixingContainer.php
index 1766ec7..1c1c423 100644
--- a/src/PrefixingContainer.php
+++ b/src/PrefixingContainer.php
@@ -18,14 +18,11 @@
*/
class PrefixingContainer implements ContainerInterface
{
- /** @var PsrContainerInterface */
- protected $inner;
+ protected PsrContainerInterface $inner;
- /** @var string */
- protected $prefix;
+ protected string $prefix;
- /** @var bool */
- protected $strict;
+ protected bool $strict;
/**
* @param PsrContainerInterface $container The container whose keys to prefix.
@@ -43,7 +40,8 @@ public function __construct(PsrContainerInterface $container, string $prefix, bo
/**
* @inheritdoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
if (!$this->isPrefixed($key) && $this->strict) {
throw new NotFoundException(sprintf('Key "%s" does not exist', $key));
@@ -68,6 +66,7 @@ public function get(string $key)
/**
* @inheritdoc
*/
+ #[\Override]
public function has(string $key): bool
{
if (!$this->isPrefixed($key) && $this->strict) {
diff --git a/src/ProxyContainer.php b/src/ProxyContainer.php
index b65e5b7..dbf3483 100644
--- a/src/ProxyContainer.php
+++ b/src/ProxyContainer.php
@@ -18,10 +18,7 @@ class ProxyContainer implements BaseContainerInterface
{
use StringTranslatingTrait;
- /**
- * @var ?BaseContainerInterface
- */
- protected $innerContainer;
+ protected ?BaseContainerInterface $innerContainer;
/**
* @param BaseContainerInterface|null $innerContainer The inner container, if any.
@@ -35,7 +32,8 @@ public function __construct(BaseContainerInterface $innerContainer = null)
/**
* @inheritDoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
if (!($this->innerContainer instanceof BaseContainerInterface)) {
throw new ContainerException($this->__('Inner container not set'));
@@ -47,6 +45,7 @@ public function get(string $key)
/**
* @inheritDoc
*/
+ #[\Override]
public function has(string $key): bool
{
if (!($this->innerContainer instanceof BaseContainerInterface)) {
diff --git a/src/SegmentingContainer.php b/src/SegmentingContainer.php
index 15639e9..52c1b67 100644
--- a/src/SegmentingContainer.php
+++ b/src/SegmentingContainer.php
@@ -54,20 +54,11 @@
*/
class SegmentingContainer implements ContainerInterface
{
- /**
- * @var PsrContainerInterface
- */
- protected $inner;
+ protected PsrContainerInterface $inner;
- /**
- * @var string
- */
- protected $root;
+ protected string $root;
- /**
- * @var string
- */
- protected $delimiter;
+ protected string $delimiter;
/**
* Constructor.
@@ -87,7 +78,8 @@ public function __construct(PsrContainerInterface $inner, string $delimiter = '/
/**
* @inheritdoc
*/
- public function get(string $key)
+ #[\Override]
+ public function get(string $key): mixed
{
$tKey = ltrim($key, $this->delimiter);
$tRoot = rtrim($this->root, $this->delimiter);
@@ -107,6 +99,7 @@ public function get(string $key)
/**
* @inheritdoc
*/
+ #[\Override]
public function has(string $key): bool
{
return $this->inner->has($key);
diff --git a/src/ServiceProvider.php b/src/ServiceProvider.php
index 4ef6ec7..2ee6011 100644
--- a/src/ServiceProvider.php
+++ b/src/ServiceProvider.php
@@ -35,7 +35,8 @@ public function __construct(array $factories, array $extensions)
/**
* {@inheritDoc}
*/
- public function getFactories()
+ #[\Override]
+ public function getFactories(): array
{
return $this->factories;
}
@@ -43,7 +44,8 @@ public function getFactories()
/**
* {@inheritDoc}
*/
- public function getExtensions()
+ #[\Override]
+ public function getExtensions(): array
{
return $this->extensions;
}
diff --git a/src/SimpleCacheContainer.php b/src/SimpleCacheContainer.php
index 392ad51..c994758 100644
--- a/src/SimpleCacheContainer.php
+++ b/src/SimpleCacheContainer.php
@@ -15,14 +15,8 @@ class SimpleCacheContainer implements
MutableContainerInterface,
ClearableContainerInterface
{
- /**
- * @var CacheInterface
- */
- protected $storage;
- /**
- * @var int
- */
- protected $ttl;
+ protected CacheInterface $storage;
+ protected int $ttl;
public function __construct(CacheInterface $storage, int $ttl)
{
@@ -33,7 +27,8 @@ public function __construct(CacheInterface $storage, int $ttl)
/**
* @inheritDoc
*/
- public function get(string $id)
+ #[\Override]
+ public function get(string $id): mixed
{
$storage = $this->storage;
@@ -53,6 +48,7 @@ public function get(string $id)
/**
* @inheritDoc
*/
+ #[\Override]
public function has(string $id): bool
{
$storage = $this->storage;
@@ -69,6 +65,7 @@ public function has(string $id): bool
/**
* @inheritDoc
*/
+ #[\Override]
public function set(string $key, $value): void
{
$storage = $this->storage;
@@ -88,6 +85,7 @@ public function set(string $key, $value): void
/**
* @inheritDoc
*/
+ #[\Override]
public function unset(string $key): void
{
$storage = $this->storage;
@@ -102,6 +100,7 @@ public function unset(string $key): void
/**
* @inheritDoc
*/
+ #[\Override]
public function clear(): void
{
$storage = $this->storage;
diff --git a/src/TaggingServiceProvider.php b/src/TaggingServiceProvider.php
index f091162..89c0aa0 100644
--- a/src/TaggingServiceProvider.php
+++ b/src/TaggingServiceProvider.php
@@ -4,6 +4,7 @@
namespace Dhii\Container;
+use Closure;
use Interop\Container\ServiceProviderInterface;
use Psr\Container\ContainerInterface;
use ReflectionException;
@@ -45,6 +46,7 @@ public function __construct(ServiceProviderInterface $inner)
/**
* @inheritDoc
*/
+ #[\Override]
public function getFactories()
{
return $this->factories;
@@ -53,6 +55,7 @@ public function getFactories()
/**
* @inheritDoc
*/
+ #[\Override]
public function getExtensions()
{
return $this->extensions;
@@ -68,11 +71,12 @@ protected function indexTags(): void
$tags = [];
foreach ($this->factories as $serviceName => $factory) {
- if (is_string($factory)) {
+ // String and array callables may not have tags
+ if (is_string($factory) || is_array($factory)) {
continue;
}
- $reflection = is_object($factory) && get_class($factory) === 'Closure'
+ $reflection = get_class($factory) === Closure::class
? new ReflectionFunction($factory)
: new ReflectionObject($factory);
$docBlock = $reflection->getDocComment();
@@ -84,7 +88,7 @@ protected function indexTags(): void
$factoryTags = $this->getTagsFromDocBlock($docBlock);
foreach ($factoryTags as $tag) {
- if (!isset($tags[$tag]) || !is_array($tags[$tag])) {
+ if (!isset($tags[$tag])) {
$tags[$tag] = [];
}
$tags[$tag][] = $serviceName;
@@ -96,7 +100,7 @@ protected function indexTags(): void
$this->extensions[$tag] = function (ContainerInterface $c, array $prev) use ($taggedServiceNames): array {
return array_merge(
$prev,
- array_map(fn (string $serviceName) => $c->get($serviceName), $taggedServiceNames)
+ array_map(fn (string $serviceName): mixed => $c->get($serviceName), $taggedServiceNames)
);
};
}
diff --git a/src/Util/StringTranslatingTrait.php b/src/Util/StringTranslatingTrait.php
index f2d2776..01a4c6e 100644
--- a/src/Util/StringTranslatingTrait.php
+++ b/src/Util/StringTranslatingTrait.php
@@ -41,10 +41,11 @@ protected function __(string $string, array $args = array(), $context = null): s
* @since [*next-version*]
*
* @param string $string The string to translate.
- * @param string $context The context to translate the string in.
+ * @param ?string $context The context to translate the string in.
*
* @return string The translated string.
* phpcs:disable PSR2.Methods.MethodDeclaration.Underscore
+ * @psalm-suppress PossiblyUnusedParam This implementation doesn't use context, and that's OK.
*/
protected function _translate(string $string, string $context = null): string
{
diff --git a/tests/functional/CachingContainerTest.php b/tests/functional/CachingContainerTest.php
index 1119299..cc3ac93 100644
--- a/tests/functional/CachingContainerTest.php
+++ b/tests/functional/CachingContainerTest.php
@@ -80,7 +80,10 @@ public function testHas()
$container = $this->createContainer([
$key1 => uniqid('value'),
]);
- $container->method('has')->withConsecutive([$key1], [$key2])->willReturnOnConsecutiveCalls(true, false);
+ $container->method('has')->with(...$this->consecutive([$key1], [$key2]))
+ ->willReturnCallback(function ($key) use ($key1) {
+ return $key === $key1;
+ });
$subject = $this->createSubject([$container]);
}
diff --git a/tests/functional/DataStructureBasedFactoryTest.php b/tests/functional/DataStructureBasedFactoryTest.php
index 91545f1..ae52047 100644
--- a/tests/functional/DataStructureBasedFactoryTest.php
+++ b/tests/functional/DataStructureBasedFactoryTest.php
@@ -16,7 +16,7 @@ class DataStructureBasedFactoryTest extends TestCase
public function createInstance(WritableMapFactoryInterface $mapFactory): TestSubject
{
$mock = $this->getMockBuilder(TestSubject::class)
- ->setMethods(null)
+ ->onlyMethods([])
->setConstructorArgs([$mapFactory])
->getMock();
@@ -40,7 +40,7 @@ public function createConfiguredInstance(): TestSubject
public function createWritableMapFactory(): DictionaryFactory
{
$mock = $this->getMockBuilder(DictionaryFactory::class)
- ->setMethods(null)
+ ->onlyMethods([])
->getMock();
return $mock;
diff --git a/tests/functional/DeprefixingContainerTest.php b/tests/functional/DeprefixingContainerTest.php
index cf8dcfb..cc26661 100644
--- a/tests/functional/DeprefixingContainerTest.php
+++ b/tests/functional/DeprefixingContainerTest.php
@@ -4,6 +4,7 @@
use Dhii\Container\DeprefixingContainer;
use Dhii\Container\Exception\NotFoundException;
+use Dhii\Container\TestHelpers\ComponentMockeryTrait;
use Dhii\Container\TestHelpers\ContainerMock;
use Exception;
use PHPUnit\Framework\TestCase;
@@ -11,6 +12,7 @@
class DeprefixingContainerTest extends TestCase
{
+ use ComponentMockeryTrait;
/**
* Tests that the subject is able to delegate retrieval to the inner container with a prefixed key.
*
@@ -48,8 +50,8 @@ public function testGetNonStrict()
$inner = ContainerMock::create($this);
$inner->method('get')
- ->withConsecutive([$prefix . $serviceKey], [$serviceKey])
- ->willReturnCallback(function () use ($serviceVal) {
+ ->with(...$this->consecutive([$prefix . $serviceKey], [$serviceKey]))
+ ->willReturnCallback(function ($key) use ($serviceKey, $prefix, $serviceVal) {
static $count = 1;
// Throw the first time
@@ -128,7 +130,7 @@ public function testHasNonStrict()
$inner = ContainerMock::create($this);
$inner->method('has')
- ->withConsecutive([$prefix . $serviceKey], [$serviceKey])
+ ->with(...$this->consecutive([$prefix . $serviceKey], [$serviceKey]))
->willReturnCallback(function () {
static $count = 1;
diff --git a/tests/functional/FlashContainerTest.php b/tests/functional/FlashContainerTest.php
index 6a9a277..d3fb0fc 100644
--- a/tests/functional/FlashContainerTest.php
+++ b/tests/functional/FlashContainerTest.php
@@ -34,8 +34,8 @@ protected function createSubject(MutableContainerInterface $storage, string $key
protected function createStorage(array $data): MutableContainerInterface
{
$mock = $this->getMockBuilder(MutableContainerInterface::class)
- ->setMethods(['has', 'get', 'set', 'unset'])
- ->getMockForAbstractClass();
+ ->onlyMethods(['has', 'get', 'set', 'unset'])
+ ->getMock();
$mock->method('has')
->with($this->isType('string'))
diff --git a/tests/functional/SegmentingContainerTest.php b/tests/functional/SegmentingContainerTest.php
index 0e21246..fcfb917 100644
--- a/tests/functional/SegmentingContainerTest.php
+++ b/tests/functional/SegmentingContainerTest.php
@@ -3,6 +3,7 @@
namespace Dhii\Container\FuncTest;
use Dhii\Container\SegmentingContainer;
+use Dhii\Container\TestHelpers\ComponentMockeryTrait;
use Dhii\Container\TestHelpers\ContainerMock;
use Exception;
use PHPUnit\Framework\TestCase;
@@ -11,6 +12,7 @@
class SegmentingContainerTest extends TestCase
{
+ use ComponentMockeryTrait;
/**
* Tests that the subject correctly returns intermediate containers when fetching non-existent keys.
*
@@ -59,8 +61,10 @@ public function testGetDeep()
$inner = ContainerMock::create($this);
// Container only returns true for full path
$inner->method('has')
- ->withConsecutive([$key1], [$key2], [$key3])
- ->willReturnOnConsecutiveCalls(false, false, true);
+ ->with(...$this->consecutive([$key1], [$key2], [$key3]))
+ ->willReturnCallback(function ($key) use ($key1, $key2, $key3) {
+ return $key === $key3;
+ });
// Container returns value for full path
$inner->method('get')->with($key3)->willReturn($value);
}
@@ -103,8 +107,10 @@ public function testGetPath()
$inner = ContainerMock::create($this);
// Container only returns true for full path
$inner->method('has')
- ->withConsecutive([$key1], [$key2])
- ->willReturnOnConsecutiveCalls(false, true);
+ ->with(...$this->consecutive([$key1], [$key2]))
+ ->willReturnCallback(function ($key) use ($key1, $key2) {
+ return $key === $key2;
+ });
// Container returns value for full path
$inner->method('get')->with($key2)->willReturn($value);
}
diff --git a/tests/functional/TaggingServiceProviderTest.php b/tests/functional/TaggingServiceProviderTest.php
index ea54013..e4ce024 100644
--- a/tests/functional/TaggingServiceProviderTest.php
+++ b/tests/functional/TaggingServiceProviderTest.php
@@ -6,6 +6,7 @@
use Dhii\Container\DelegatingContainer;
use Dhii\Container\ServiceProvider;
use Dhii\Container\TaggingServiceProvider;
+use Dhii\Container\TestHelpers\MethodClass;
use Exception;
use PHPUnit\Framework\TestCase;
@@ -60,4 +61,74 @@ public function __invoke(): string
$result = $container->get('serviceD');
$this->assertEquals('ABCD', $result);
}
+
+ /**
+ * Tests that tag detection is silently skilled for array and string callables, which cannot have reflections.
+ *
+ * @throws Exception If problem testing.
+ */
+ public function testArrayAndStringCallables()
+ {
+ $instance = new MethodClass();
+
+ $factories = [
+ 'serviceW' =>
+ /**
+ * This docblock isn't applied to anything
+ *
+ * @tag my_tag
+ */
+ 'uniqid',
+ 'serviceX' =>
+ /**
+ * This docblock isn't applied to anything
+ *
+ * @tag my_tag
+ */
+ [$instance, 'instanceMethod'],
+ 'serviceY' =>
+ /**
+ * This docblock isn't applied to anything
+ *
+ * @tag my_tag
+ */
+ [MethodClass::class, 'staticMethod'],
+ 'serviceZ' =>
+ /**
+ * This docblock isn't applied to anything
+ *
+ * @tag my_tag
+ */
+ sprintf('%1$s::%2$s', MethodClass::class, 'staticMethod'),
+ 'serviceA' =>
+ /**
+ * @tag my_tag
+ */
+ fn (): string => 'A',
+ 'serviceB' =>
+ /** @tag my_tag */
+ function (): string {
+ return 'B';
+ },
+ 'serviceC' =>
+ /**
+ * @tag my_tag
+ */
+ new class () {
+ public function __invoke(): string
+ {
+ return 'C';
+ }
+ },
+ 'serviceD' => fn (ContainerInterface $c): string =>
+ implode('', array_merge($c->get('my_tag'), ['D'])),
+ ];
+ $extensions = [];
+ $inner = new ServiceProvider($factories, $extensions);
+ $subject = new TaggingServiceProvider($inner);
+ $container = new DelegatingContainer($subject, null);
+
+ $result = $container->get('serviceD');
+ $this->assertEquals('ABCD', $result);
+ }
}
diff --git a/tests/helpers/ContainerMock.php b/tests/helpers/ContainerMock.php
index 20dfbca..72d9c47 100644
--- a/tests/helpers/ContainerMock.php
+++ b/tests/helpers/ContainerMock.php
@@ -14,6 +14,8 @@
*/
class ContainerMock extends AbstractMockHelper implements ContainerInterface
{
+ use ComponentMockeryTrait;
+
/**
* Index of current expectation.
*
@@ -104,9 +106,10 @@ public function expectGet(array $expectations)
$args = array_map(function ($key) {
return [$key];
}, $keys);
+ $args = array_pad($args, 2, []); // Must be 2 or more for `consecutive()`
$this->mock->method('get')
- ->withConsecutive(...$args)
+ ->with(...$this->consecutive(...$args))
->willReturnCallback(function ($arg) use ($keys, $values) {
static $idx = -1;
$idx++;
@@ -132,7 +135,7 @@ public function expectGet(array $expectations)
});
$this->mock->method('has')
- ->withConsecutive(...$args)
+ ->with(...$this->consecutive(...$args))
->willReturnCallback(function ($arg) use ($keys, $values) {
static $idx = -1;
$idx++;
diff --git a/tests/helpers/MethodClass.php b/tests/helpers/MethodClass.php
new file mode 100644
index 0000000..31bcedc
--- /dev/null
+++ b/tests/helpers/MethodClass.php
@@ -0,0 +1,24 @@
+getMockBuilder(TestSubject::class)
- ->setMethods(null)
+ ->onlyMethods([])
->getMock();
return $mock;