From 7f522bec3d9e9b814fd30b0fbbf9c034da0cd0f8 Mon Sep 17 00:00:00 2001 From: Cees-Jan Kiewiet Date: Sun, 16 Jun 2024 19:07:34 +0200 Subject: [PATCH] Add AddOns --- composer.json | 15 +- composer.lock | 2134 ++++++++--------- ...ctList_.php.twig => AbstractList.php.twig} | 9 +- etc/qa/.phpunit.cache/test-results | 2 +- etc/qa/phpstan.neon | 6 +- src/App.php | 86 +- src/Composer/Collector.php | 37 + src/Composer/Installer.php | 251 +- src/Composer/Item.php | 30 + src/Composer/Plugin.php | 65 + src/Consumer.php | 75 + src/Kubernetes/Helm/QueueConsumersValues.php | 17 +- src/Manager.php | 63 +- src/Worker.php | 6 +- tests/Angry.php | 21 + tests/AppTest.php | 80 + tests/Composer/InstallerTest.php | 165 ++ tests/Composer/ItemTest.php | 36 + tests/ConsumerFactory.php | 42 + tests/Kubernetes/Helm/CronJobsValuesTest.php | 41 + tests/ManagerTest.php | 112 + tests/Sad.php | 9 + 22 files changed, 1845 insertions(+), 1457 deletions(-) rename etc/generated_templates/{AbstractList_.php.twig => AbstractList.php.twig} (62%) create mode 100644 src/Composer/Collector.php create mode 100644 src/Composer/Item.php create mode 100644 src/Composer/Plugin.php create mode 100644 src/Consumer.php create mode 100644 tests/Angry.php create mode 100644 tests/Composer/InstallerTest.php create mode 100644 tests/Composer/ItemTest.php create mode 100644 tests/ConsumerFactory.php create mode 100644 tests/Kubernetes/Helm/CronJobsValuesTest.php create mode 100644 tests/ManagerTest.php create mode 100644 tests/Sad.php diff --git a/composer.json b/composer.json index c53a593..1827d56 100644 --- a/composer.json +++ b/composer.json @@ -5,25 +5,28 @@ "type": "composer-plugin", "require": { "php": "^8.2", + "ext-json": "^8.2", "composer-plugin-api": "^2.0", - "illuminate/collections": "^8.54 || ^9 || ^10", "mammatus/app": "dev-master", - "mammatus/kubernetes-attributes": "dev-main", - "mammatus/kubernetes-events": "dev-main", + "mammatus/kubernetes-attributes": "^1", + "mammatus/kubernetes-contracts": "^1", + "mammatus/kubernetes-events": "^1", "mammatus/life-cycle-events": "^2", "mammatus/queue-attributes": "dev-main", "mammatus/queue-contracts": "dev-main", "psr/container": "^1.1.2", + "psr/event-dispatcher": "^1.0", "psr/log": "^2", "queue-interop/queue-interop": "*", "react/async": "^4.2", + "react/event-loop": "^1.5", + "react/promise": "^3.2", "roave/better-reflection": "^6.26", "wyrihaximus/broadcast-contracts": "^1.3", - "wyrihaximus/list-classes-in-directory": "^1.6", + "wyrihaximus/generative-composer-plugin-tooling": "^1", "wyrihaximus/monolog-factory": "^2", "wyrihaximus/psr-3-context-logger": "^2.0", - "wyrihaximus/simple-twig": "^2.1", - "wyrihaximus/string-get-in": "^1.1", + "wyrihaximus/simple-twig": "^2.2.1", "wyrihaximus/ticking-promise": "^3.1" }, "require-dev": { diff --git a/composer.lock b/composer.lock index 7c90455..b3c8cf5 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": "ae1b00a38d823d04b62e7f68a63f8abc", + "content-hash": "05821f2df184fe4f6074c2e88253e06e", "packages": [ { "name": "bramus/ansi-php", @@ -104,16 +104,16 @@ }, { "name": "composer/ca-bundle", - "version": "1.5.0", + "version": "1.5.2", "source": { "type": "git", "url": "https://github.com/composer/ca-bundle.git", - "reference": "0c5ccfcfea312b5c5a190a21ac5cef93f74baf99" + "reference": "48a792895a2b7a6ee65dd5442c299d7b835b6137" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/ca-bundle/zipball/0c5ccfcfea312b5c5a190a21ac5cef93f74baf99", - "reference": "0c5ccfcfea312b5c5a190a21ac5cef93f74baf99", + "url": "https://api.github.com/repos/composer/ca-bundle/zipball/48a792895a2b7a6ee65dd5442c299d7b835b6137", + "reference": "48a792895a2b7a6ee65dd5442c299d7b835b6137", "shasum": "" }, "require": { @@ -123,8 +123,8 @@ }, "require-dev": { "phpstan/phpstan": "^1.10", - "psr/log": "^1.0", - "symfony/phpunit-bridge": "^4.2 || ^5", + "phpunit/phpunit": "^8 || ^9", + "psr/log": "^1.0 || ^2.0 || ^3.0", "symfony/process": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, "type": "library", @@ -160,7 +160,7 @@ "support": { "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/ca-bundle/issues", - "source": "https://github.com/composer/ca-bundle/tree/1.5.0" + "source": "https://github.com/composer/ca-bundle/tree/1.5.2" }, "funding": [ { @@ -176,20 +176,20 @@ "type": "tidelift" } ], - "time": "2024-03-15T14:00:32+00:00" + "time": "2024-09-25T07:49:53+00:00" }, { "name": "composer/class-map-generator", - "version": "1.1.1", + "version": "1.4.0", "source": { "type": "git", "url": "https://github.com/composer/class-map-generator.git", - "reference": "8286a62d243312ed99b3eee20d5005c961adb311" + "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/class-map-generator/zipball/8286a62d243312ed99b3eee20d5005c961adb311", - "reference": "8286a62d243312ed99b3eee20d5005c961adb311", + "url": "https://api.github.com/repos/composer/class-map-generator/zipball/98bbf6780e56e0fd2404fe4b82eb665a0f93b783", + "reference": "98bbf6780e56e0fd2404fe4b82eb665a0f93b783", "shasum": "" }, "require": { @@ -202,8 +202,8 @@ "phpstan/phpstan-deprecation-rules": "^1", "phpstan/phpstan-phpunit": "^1", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/filesystem": "^5.4 || ^6", - "symfony/phpunit-bridge": "^5" + "phpunit/phpunit": "^8", + "symfony/filesystem": "^5.4 || ^6" }, "type": "library", "extra": { @@ -233,7 +233,7 @@ ], "support": { "issues": "https://github.com/composer/class-map-generator/issues", - "source": "https://github.com/composer/class-map-generator/tree/1.1.1" + "source": "https://github.com/composer/class-map-generator/tree/1.4.0" }, "funding": [ { @@ -249,52 +249,52 @@ "type": "tidelift" } ], - "time": "2024-03-15T12:53:41+00:00" + "time": "2024-10-03T18:14:00+00:00" }, { "name": "composer/composer", - "version": "2.7.6", + "version": "2.8.1", "source": { "type": "git", "url": "https://github.com/composer/composer.git", - "reference": "fabd995783b633829fd4280e272284b39b6ae702" + "reference": "e52b8672276cf436670cdd6bd5de4353740e83b2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/composer/zipball/fabd995783b633829fd4280e272284b39b6ae702", - "reference": "fabd995783b633829fd4280e272284b39b6ae702", + "url": "https://api.github.com/repos/composer/composer/zipball/e52b8672276cf436670cdd6bd5de4353740e83b2", + "reference": "e52b8672276cf436670cdd6bd5de4353740e83b2", "shasum": "" }, "require": { - "composer/ca-bundle": "^1.0", - "composer/class-map-generator": "^1.0", + "composer/ca-bundle": "^1.5", + "composer/class-map-generator": "^1.4.0", "composer/metadata-minifier": "^1.0", - "composer/pcre": "^2.1 || ^3.1", - "composer/semver": "^3.2.5", + "composer/pcre": "^2.2 || ^3.2", + "composer/semver": "^3.3", "composer/spdx-licenses": "^1.5.7", "composer/xdebug-handler": "^2.0.2 || ^3.0.3", - "justinrainbow/json-schema": "^5.2.11", + "justinrainbow/json-schema": "^5.3", "php": "^7.2.5 || ^8.0", "psr/log": "^1.0 || ^2.0 || ^3.0", - "react/promise": "^2.8 || ^3", + "react/promise": "^3.2", "seld/jsonlint": "^1.4", "seld/phar-utils": "^1.2", "seld/signal-handler": "^2.0", - "symfony/console": "^5.4.11 || ^6.0.11 || ^7", - "symfony/filesystem": "^5.4 || ^6.0 || ^7", - "symfony/finder": "^5.4 || ^6.0 || ^7", + "symfony/console": "^5.4.35 || ^6.3.12 || ^7.0.3", + "symfony/filesystem": "^5.4.35 || ^6.3.12 || ^7.0.3", + "symfony/finder": "^5.4.35 || ^6.3.12 || ^7.0.3", "symfony/polyfill-php73": "^1.24", "symfony/polyfill-php80": "^1.24", "symfony/polyfill-php81": "^1.24", - "symfony/process": "^5.4 || ^6.0 || ^7" + "symfony/process": "^5.4.35 || ^6.3.12 || ^7.0.3" }, "require-dev": { - "phpstan/phpstan": "^1.9.3", - "phpstan/phpstan-deprecation-rules": "^1", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1", - "phpstan/phpstan-symfony": "^1.2.10", - "symfony/phpunit-bridge": "^6.4.1 || ^7.0.1" + "phpstan/phpstan": "^1.11.8", + "phpstan/phpstan-deprecation-rules": "^1.2.0", + "phpstan/phpstan-phpunit": "^1.4.0", + "phpstan/phpstan-strict-rules": "^1.6.0", + "phpstan/phpstan-symfony": "^1.4.0", + "symfony/phpunit-bridge": "^6.4.3 || ^7.0.1" }, "suggest": { "ext-openssl": "Enabling the openssl extension allows you to access https URLs for repositories and packages", @@ -307,7 +307,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "2.7-dev" + "dev-main": "2.8-dev" }, "phpstan": { "includes": [ @@ -347,7 +347,7 @@ "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/composer/issues", "security": "https://github.com/composer/composer/security/policy", - "source": "https://github.com/composer/composer/tree/2.7.6" + "source": "https://github.com/composer/composer/tree/2.8.1" }, "funding": [ { @@ -363,7 +363,7 @@ "type": "tidelift" } ], - "time": "2024-05-04T21:03:15+00:00" + "time": "2024-10-04T09:31:01+00:00" }, { "name": "composer/metadata-minifier", @@ -436,30 +436,38 @@ }, { "name": "composer/pcre", - "version": "3.1.3", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/composer/pcre.git", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8" + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/pcre/zipball/5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", - "reference": "5b16e25a5355f1f3afdfc2f954a0a80aec4826a8", + "url": "https://api.github.com/repos/composer/pcre/zipball/63aaeac21d7e775ff9bc9d45021e1745c97521c4", + "reference": "63aaeac21d7e775ff9bc9d45021e1745c97521c4", "shasum": "" }, "require": { "php": "^7.4 || ^8.0" }, + "conflict": { + "phpstan/phpstan": "<1.11.10" + }, "require-dev": { - "phpstan/phpstan": "^1.3", + "phpstan/phpstan": "^1.11.10", "phpstan/phpstan-strict-rules": "^1.1", - "symfony/phpunit-bridge": "^5" + "phpunit/phpunit": "^8 || ^9" }, "type": "library", "extra": { "branch-alias": { "dev-main": "3.x-dev" + }, + "phpstan": { + "includes": [ + "extension.neon" + ] } }, "autoload": { @@ -487,7 +495,7 @@ ], "support": { "issues": "https://github.com/composer/pcre/issues", - "source": "https://github.com/composer/pcre/tree/3.1.3" + "source": "https://github.com/composer/pcre/tree/3.3.1" }, "funding": [ { @@ -503,20 +511,20 @@ "type": "tidelift" } ], - "time": "2024-03-19T10:26:25+00:00" + "time": "2024-08-27T18:44:43+00:00" }, { "name": "composer/semver", - "version": "3.4.0", + "version": "3.3.2", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32" + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/35e8d0af4486141bc745f23a29cc2091eb624a32", - "reference": "35e8d0af4486141bc745f23a29cc2091eb624a32", + "url": "https://api.github.com/repos/composer/semver/zipball/3953f23262f2bff1919fc82183ad9acb13ff62c9", + "reference": "3953f23262f2bff1919fc82183ad9acb13ff62c9", "shasum": "" }, "require": { @@ -566,9 +574,9 @@ "versioning" ], "support": { - "irc": "ircs://irc.libera.chat:6697/composer", + "irc": "irc://irc.freenode.org/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/3.4.0" + "source": "https://github.com/composer/semver/tree/3.3.2" }, "funding": [ { @@ -584,7 +592,7 @@ "type": "tidelift" } ], - "time": "2023-08-31T09:50:34+00:00" + "time": "2022-04-01T19:23:25+00:00" }, { "name": "composer/spdx-licenses", @@ -892,201 +900,6 @@ }, "time": "2014-12-15T23:03:51+00:00" }, - { - "name": "illuminate/collections", - "version": "v10.48.10", - "source": { - "type": "git", - "url": "https://github.com/illuminate/collections.git", - "reference": "f9589f1063a449111dcaa1d68285b507d9483a95" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/collections/zipball/f9589f1063a449111dcaa1d68285b507d9483a95", - "reference": "f9589f1063a449111dcaa1d68285b507d9483a95", - "shasum": "" - }, - "require": { - "illuminate/conditionable": "^10.0", - "illuminate/contracts": "^10.0", - "illuminate/macroable": "^10.0", - "php": "^8.1" - }, - "suggest": { - "symfony/var-dumper": "Required to use the dump method (^6.2)." - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "autoload": { - "files": [ - "helpers.php" - ], - "psr-4": { - "Illuminate\\Support\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Collections package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2024-03-20T20:09:13+00:00" - }, - { - "name": "illuminate/conditionable", - "version": "v10.48.10", - "source": { - "type": "git", - "url": "https://github.com/illuminate/conditionable.git", - "reference": "d0958e4741fc9d6f516a552060fd1b829a85e009" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/conditionable/zipball/d0958e4741fc9d6f516a552060fd1b829a85e009", - "reference": "d0958e4741fc9d6f516a552060fd1b829a85e009", - "shasum": "" - }, - "require": { - "php": "^8.0.2" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Support\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Conditionable package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2023-02-03T08:06:17+00:00" - }, - { - "name": "illuminate/contracts", - "version": "v10.48.10", - "source": { - "type": "git", - "url": "https://github.com/illuminate/contracts.git", - "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/contracts/zipball/8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", - "reference": "8d7152c4a1f5d9cf7da3e8b71f23e4556f6138ac", - "shasum": "" - }, - "require": { - "php": "^8.1", - "psr/container": "^1.1.1|^2.0.1", - "psr/simple-cache": "^1.0|^2.0|^3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Contracts\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Contracts package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2024-01-15T18:52:32+00:00" - }, - { - "name": "illuminate/macroable", - "version": "v10.48.10", - "source": { - "type": "git", - "url": "https://github.com/illuminate/macroable.git", - "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/illuminate/macroable/zipball/dff667a46ac37b634dcf68909d9d41e94dc97c27", - "reference": "dff667a46ac37b634dcf68909d9d41e94dc97c27", - "shasum": "" - }, - "require": { - "php": "^8.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "10.x-dev" - } - }, - "autoload": { - "psr-4": { - "Illuminate\\Support\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Taylor Otwell", - "email": "taylor@laravel.com" - } - ], - "description": "The Illuminate Macroable package.", - "homepage": "https://laravel.com", - "support": { - "issues": "https://github.com/laravel/framework/issues", - "source": "https://github.com/laravel/framework" - }, - "time": "2023-06-05T12:46:42+00:00" - }, { "name": "jetbrains/phpstorm-stubs", "version": "v2023.3", @@ -1137,20 +950,20 @@ }, { "name": "justinrainbow/json-schema", - "version": "v5.2.13", + "version": "5.3.0", "source": { "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793" + "url": "https://github.com/jsonrainbow/json-schema.git", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/fbbe7e5d79f618997bc3332a6f49246036c45793", - "reference": "fbbe7e5d79f618997bc3332a6f49246036c45793", + "url": "https://api.github.com/repos/jsonrainbow/json-schema/zipball/feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", + "reference": "feb2ca6dd1cebdaf1ed60a4c8de2e53ce11c4fd8", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=7.1" }, "require-dev": { "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", @@ -1161,11 +974,6 @@ "bin/validate-json" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { "JsonSchema\\": "src/JsonSchema/" @@ -1200,33 +1008,34 @@ "schema" ], "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/v5.2.13" + "issues": "https://github.com/jsonrainbow/json-schema/issues", + "source": "https://github.com/jsonrainbow/json-schema/tree/5.3.0" }, - "time": "2023-09-26T02:20:38+00:00" + "time": "2024-07-06T21:00:26+00:00" }, { "name": "laravel/serializable-closure", - "version": "v1.3.3", + "version": "v1.3.5", "source": { "type": "git", "url": "https://github.com/laravel/serializable-closure.git", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754" + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/3dbf8a8e914634c48d389c1234552666b3d43754", - "reference": "3dbf8a8e914634c48d389c1234552666b3d43754", + "url": "https://api.github.com/repos/laravel/serializable-closure/zipball/1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", + "reference": "1dc4a3dbfa2b7628a3114e43e32120cce7cdda9c", "shasum": "" }, "require": { "php": "^7.3|^8.0" }, "require-dev": { - "nesbot/carbon": "^2.61", + "illuminate/support": "^8.0|^9.0|^10.0|^11.0", + "nesbot/carbon": "^2.61|^3.0", "pestphp/pest": "^1.21.3", "phpstan/phpstan": "^1.8.2", - "symfony/var-dumper": "^5.4.11" + "symfony/var-dumper": "^5.4.11|^6.2.0|^7.0.0" }, "type": "library", "extra": { @@ -1263,38 +1072,38 @@ "issues": "https://github.com/laravel/serializable-closure/issues", "source": "https://github.com/laravel/serializable-closure" }, - "time": "2023-11-08T14:08:06+00:00" + "time": "2024-09-23T13:33:08+00:00" }, { "name": "lcobucci/clock", - "version": "3.2.0", + "version": "3.3.1", "source": { "type": "git", "url": "https://github.com/lcobucci/clock.git", - "reference": "6f28b826ea01306b07980cb8320ab30b966cd715" + "reference": "db3713a61addfffd615b79bf0bc22f0ccc61b86b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/lcobucci/clock/zipball/6f28b826ea01306b07980cb8320ab30b966cd715", - "reference": "6f28b826ea01306b07980cb8320ab30b966cd715", + "url": "https://api.github.com/repos/lcobucci/clock/zipball/db3713a61addfffd615b79bf0bc22f0ccc61b86b", + "reference": "db3713a61addfffd615b79bf0bc22f0ccc61b86b", "shasum": "" }, "require": { - "php": "~8.2.0 || ~8.3.0", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", "psr/clock": "^1.0" }, "provide": { "psr/clock-implementation": "1.0" }, "require-dev": { - "infection/infection": "^0.27", - "lcobucci/coding-standard": "^11.0.0", + "infection/infection": "^0.29", + "lcobucci/coding-standard": "^11.1.0", "phpstan/extension-installer": "^1.3.1", "phpstan/phpstan": "^1.10.25", "phpstan/phpstan-deprecation-rules": "^1.1.3", "phpstan/phpstan-phpunit": "^1.3.13", "phpstan/phpstan-strict-rules": "^1.5.1", - "phpunit/phpunit": "^10.2.3" + "phpunit/phpunit": "^11.3.6" }, "type": "library", "autoload": { @@ -1315,7 +1124,7 @@ "description": "Yet another clock abstraction", "support": { "issues": "https://github.com/lcobucci/clock/issues", - "source": "https://github.com/lcobucci/clock/tree/3.2.0" + "source": "https://github.com/lcobucci/clock/tree/3.3.1" }, "funding": [ { @@ -1327,7 +1136,7 @@ "type": "patreon" } ], - "time": "2023-11-17T17:00:27+00:00" + "time": "2024-09-24T20:45:14+00:00" }, { "name": "league/tactician", @@ -1488,25 +1297,25 @@ }, { "name": "mammatus/kubernetes-attributes", - "version": "dev-main", + "version": "1.0.0", "source": { "type": "git", "url": "https://github.com/MammatusPHP/kubernetes-attributes.git", - "reference": "e4470b218b8a4333b13944bbad2a3722b8f4e897" + "reference": "38a8cf2b42d4fb63ef017aaf1a39e593a553f107" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MammatusPHP/kubernetes-attributes/zipball/e4470b218b8a4333b13944bbad2a3722b8f4e897", - "reference": "e4470b218b8a4333b13944bbad2a3722b8f4e897", + "url": "https://api.github.com/repos/MammatusPHP/kubernetes-attributes/zipball/38a8cf2b42d4fb63ef017aaf1a39e593a553f107", + "reference": "38a8cf2b42d4fb63ef017aaf1a39e593a553f107", "shasum": "" }, "require": { + "mammatus/kubernetes-contracts": "^1", "php": "^8.2" }, "require-dev": { - "wyrihaximus/async-test-utilities": "^8.0.1" + "wyrihaximus/test-utilities": "^6.0.10" }, - "default-branch": true, "type": "library", "extra": { "php-di-definitions": { @@ -1532,31 +1341,79 @@ "description": "⏱️ Cron manager", "support": { "issues": "https://github.com/MammatusPHP/kubernetes-attributes/issues", - "source": "https://github.com/MammatusPHP/kubernetes-attributes/tree/main" + "source": "https://github.com/MammatusPHP/kubernetes-attributes/tree/1.0.0" + }, + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2024-10-16T14:49:48+00:00" + }, + { + "name": "mammatus/kubernetes-contracts", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/MammatusPHP/kubernetes-contracts.git", + "reference": "1afad0371601808e5ec104f63790dad656f0184a" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/MammatusPHP/kubernetes-contracts/zipball/1afad0371601808e5ec104f63790dad656f0184a", + "reference": "1afad0371601808e5ec104f63790dad656f0184a", + "shasum": "" + }, + "require": { + "php": "^8.2" + }, + "require-dev": { + "wyrihaximus/test-utilities": "^6.0.10" + }, + "type": "library", + "autoload": { + "psr-4": { + "Mammatus\\Kubernetes\\Contracts\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Kubernetes contracts", + "support": { + "issues": "https://github.com/MammatusPHP/kubernetes-contracts/issues", + "source": "https://github.com/MammatusPHP/kubernetes-contracts/tree/1.0.0" }, - "time": "2024-04-20T12:19:17+00:00" + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2024-10-15T13:08:32+00:00" }, { "name": "mammatus/kubernetes-events", - "version": "dev-main", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/MammatusPHP/kubernetes-events.git", - "reference": "e1bea8365ddbe6b27ad7c7ea2ecec4a037857160" + "reference": "86826fe5b3be715c16773f85f94a2d214dfd08d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MammatusPHP/kubernetes-events/zipball/e1bea8365ddbe6b27ad7c7ea2ecec4a037857160", - "reference": "e1bea8365ddbe6b27ad7c7ea2ecec4a037857160", + "url": "https://api.github.com/repos/MammatusPHP/kubernetes-events/zipball/86826fe5b3be715c16773f85f94a2d214dfd08d8", + "reference": "86826fe5b3be715c16773f85f94a2d214dfd08d8", "shasum": "" }, "require": { "php": "^8.2" }, "require-dev": { - "wyrihaximus/async-test-utilities": "^8.0.1" + "wyrihaximus/test-utilities": "^6.0.10" }, - "default-branch": true, "type": "library", "extra": { "php-di-definitions": { @@ -1582,9 +1439,15 @@ "description": "⏱️ Cron manager", "support": { "issues": "https://github.com/MammatusPHP/kubernetes-events/issues", - "source": "https://github.com/MammatusPHP/kubernetes-events/tree/main" + "source": "https://github.com/MammatusPHP/kubernetes-events/tree/1.0.1" }, - "time": "2024-04-20T08:45:32+00:00" + "funding": [ + { + "url": "https://github.com/WyriHaximus", + "type": "github" + } + ], + "time": "2024-10-16T22:11:30+00:00" }, { "name": "mammatus/life-cycle-events", @@ -1635,15 +1498,16 @@ "source": { "type": "git", "url": "https://github.com/MammatusPHP/queue-attributes.git", - "reference": "8b8f38d859771d2dcf0924c9722d535f6da71d48" + "reference": "c4f0e3cb5b884b94e63d7304b562b9c3c0ba7e36" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MammatusPHP/queue-attributes/zipball/8b8f38d859771d2dcf0924c9722d535f6da71d48", - "reference": "8b8f38d859771d2dcf0924c9722d535f6da71d48", + "url": "https://api.github.com/repos/MammatusPHP/queue-attributes/zipball/c4f0e3cb5b884b94e63d7304b562b9c3c0ba7e36", + "reference": "c4f0e3cb5b884b94e63d7304b562b9c3c0ba7e36", "shasum": "" }, "require": { + "mammatus/kubernetes-contracts": "^1", "php": "^8.2" }, "require-dev": { @@ -1671,7 +1535,7 @@ "type": "github" } ], - "time": "2024-05-08T01:04:01+00:00" + "time": "2024-10-21T17:44:38+00:00" }, { "name": "mammatus/queue-contracts", @@ -1766,16 +1630,16 @@ }, { "name": "monolog/monolog", - "version": "3.6.0", + "version": "3.7.0", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654" + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", - "reference": "4b18b21a5527a3d5ffdac2fd35d3ab25a9597654", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/f4393b648b78a5408747de94fca38beb5f7e9ef8", + "reference": "f4393b648b78a5408747de94fca38beb5f7e9ef8", "shasum": "" }, "require": { @@ -1851,7 +1715,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/3.6.0" + "source": "https://github.com/Seldaek/monolog/tree/3.7.0" }, "funding": [ { @@ -1863,20 +1727,20 @@ "type": "tidelift" } ], - "time": "2024-04-12T21:02:21+00:00" + "time": "2024-06-28T09:40:51+00:00" }, { "name": "nikic/php-parser", - "version": "v4.19.1", + "version": "v4.19.4", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b" + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/4e1b88d21c69391150ace211e9eaf05810858d0b", - "reference": "4e1b88d21c69391150ace211e9eaf05810858d0b", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", "shasum": "" }, "require": { @@ -1885,7 +1749,7 @@ }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" }, "bin": [ "bin/php-parse" @@ -1917,9 +1781,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.1" + "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" }, - "time": "2024-03-17T08:10:35+00:00" + "time": "2024-09-29T15:01:53+00:00" }, { "name": "php-di-definitions/definitions-gatherer", @@ -2086,16 +1950,16 @@ }, { "name": "php-di/php-di", - "version": "7.0.6", + "version": "7.0.7", "source": { "type": "git", "url": "https://github.com/PHP-DI/PHP-DI.git", - "reference": "8097948a89f6ec782839b3e958432f427cac37fd" + "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/8097948a89f6ec782839b3e958432f427cac37fd", - "reference": "8097948a89f6ec782839b3e958432f427cac37fd", + "url": "https://api.github.com/repos/PHP-DI/PHP-DI/zipball/e87435e3c0e8f22977adc5af0d5cdcc467e15cf1", + "reference": "e87435e3c0e8f22977adc5af0d5cdcc467e15cf1", "shasum": "" }, "require": { @@ -2143,7 +2007,7 @@ ], "support": { "issues": "https://github.com/PHP-DI/PHP-DI/issues", - "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.6" + "source": "https://github.com/PHP-DI/PHP-DI/tree/7.0.7" }, "funding": [ { @@ -2155,7 +2019,7 @@ "type": "tidelift" } ], - "time": "2023-11-02T10:04:50+00:00" + "time": "2024-07-21T15:55:45+00:00" }, { "name": "psr/clock", @@ -2353,57 +2217,6 @@ }, "time": "2021-07-14T16:41:46+00:00" }, - { - "name": "psr/simple-cache", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", - "shasum": "" - }, - "require": { - "php": ">=8.0.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\SimpleCache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for simple caching", - "keywords": [ - "cache", - "caching", - "psr", - "psr-16", - "simple-cache" - ], - "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" - }, - "time": "2021-10-29T13:26:27+00:00" - }, { "name": "queue-interop/queue-interop", "version": "0.8.1", @@ -2513,22 +2326,22 @@ }, { "name": "react/async", - "version": "v4.2.0", + "version": "v4.3.0", "source": { "type": "git", "url": "https://github.com/reactphp/async.git", - "reference": "7c3738e837b38c9513af44398b8c1b2b1be1fbbc" + "reference": "635d50e30844a484495713e8cb8d9e079c0008a5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/async/zipball/7c3738e837b38c9513af44398b8c1b2b1be1fbbc", - "reference": "7c3738e837b38c9513af44398b8c1b2b1be1fbbc", + "url": "https://api.github.com/repos/reactphp/async/zipball/635d50e30844a484495713e8cb8d9e079c0008a5", + "reference": "635d50e30844a484495713e8cb8d9e079c0008a5", "shasum": "" }, "require": { "php": ">=8.1", "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.8 || ^1.2.1" + "react/promise": "^3.2 || ^2.8 || ^1.2.1" }, "require-dev": { "phpstan/phpstan": "1.10.39", @@ -2576,7 +2389,7 @@ ], "support": { "issues": "https://github.com/reactphp/async/issues", - "source": "https://github.com/reactphp/async/tree/v4.2.0" + "source": "https://github.com/reactphp/async/tree/v4.3.0" }, "funding": [ { @@ -2584,7 +2397,7 @@ "type": "open_collective" } ], - "time": "2023-11-22T16:43:46+00:00" + "time": "2024-06-04T14:40:02+00:00" }, { "name": "react/event-loop", @@ -2660,16 +2473,16 @@ }, { "name": "react/promise", - "version": "v3.1.0", + "version": "v3.2.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise.git", - "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c" + "reference": "8a164643313c71354582dc850b42b33fa12a4b63" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", - "reference": "e563d55d1641de1dea9f5e84f3cccc66d2bfe02c", + "url": "https://api.github.com/repos/reactphp/promise/zipball/8a164643313c71354582dc850b42b33fa12a4b63", + "reference": "8a164643313c71354582dc850b42b33fa12a4b63", "shasum": "" }, "require": { @@ -2721,7 +2534,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v3.1.0" + "source": "https://github.com/reactphp/promise/tree/v3.2.0" }, "funding": [ { @@ -2729,20 +2542,20 @@ "type": "open_collective" } ], - "time": "2023-11-16T16:21:57+00:00" + "time": "2024-05-24T10:39:05+00:00" }, { "name": "react/stream", - "version": "v1.3.0", + "version": "v1.4.0", "source": { "type": "git", "url": "https://github.com/reactphp/stream.git", - "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66" + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/6fbc9672905c7d5a885f2da2fc696f65840f4a66", - "reference": "6fbc9672905c7d5a885f2da2fc696f65840f4a66", + "url": "https://api.github.com/repos/reactphp/stream/zipball/1e5b0acb8fe55143b5b426817155190eb6f5b18d", + "reference": "1e5b0acb8fe55143b5b426817155190eb6f5b18d", "shasum": "" }, "require": { @@ -2752,7 +2565,7 @@ }, "require-dev": { "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -2799,7 +2612,7 @@ ], "support": { "issues": "https://github.com/reactphp/stream/issues", - "source": "https://github.com/reactphp/stream/tree/v1.3.0" + "source": "https://github.com/reactphp/stream/tree/v1.4.0" }, "funding": [ { @@ -2807,7 +2620,7 @@ "type": "open_collective" } ], - "time": "2023-06-16T10:52:11+00:00" + "time": "2024-06-11T12:45:25+00:00" }, { "name": "roave/better-reflection", @@ -2917,23 +2730,23 @@ }, { "name": "seld/jsonlint", - "version": "1.10.2", + "version": "1.11.0", "source": { "type": "git", "url": "https://github.com/Seldaek/jsonlint.git", - "reference": "9bb7db07b5d66d90f6ebf542f09fc67d800e5259" + "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/9bb7db07b5d66d90f6ebf542f09fc67d800e5259", - "reference": "9bb7db07b5d66d90f6ebf542f09fc67d800e5259", + "url": "https://api.github.com/repos/Seldaek/jsonlint/zipball/1748aaf847fc731cfad7725aec413ee46f0cc3a2", + "reference": "1748aaf847fc731cfad7725aec413ee46f0cc3a2", "shasum": "" }, "require": { "php": "^5.3 || ^7.0 || ^8.0" }, "require-dev": { - "phpstan/phpstan": "^1.5", + "phpstan/phpstan": "^1.11", "phpunit/phpunit": "^4.8.35 || ^5.7 || ^6.0 || ^8.5.13" }, "bin": [ @@ -2965,7 +2778,7 @@ ], "support": { "issues": "https://github.com/Seldaek/jsonlint/issues", - "source": "https://github.com/Seldaek/jsonlint/tree/1.10.2" + "source": "https://github.com/Seldaek/jsonlint/tree/1.11.0" }, "funding": [ { @@ -2977,7 +2790,7 @@ "type": "tidelift" } ], - "time": "2024-02-07T12:57:50+00:00" + "time": "2024-07-11T14:55:45+00:00" }, { "name": "seld/phar-utils", @@ -3090,16 +2903,16 @@ }, { "name": "symfony/console", - "version": "v6.4.7", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f" + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", - "reference": "a170e64ae10d00ba89e2acbb590dc2e54da8ad8f", + "url": "https://api.github.com/repos/symfony/console/zipball/72d080eb9edf80e36c19be61f72c98ed8273b765", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765", "shasum": "" }, "require": { @@ -3164,7 +2977,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.7" + "source": "https://github.com/symfony/console/tree/v6.4.12" }, "funding": [ { @@ -3180,7 +2993,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-09-20T08:15:52+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3251,22 +3064,24 @@ }, { "name": "symfony/filesystem", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5" + "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/cc168be6fbdcdf3401f50ae863ee3818ed4338f5", - "reference": "cc168be6fbdcdf3401f50ae863ee3818ed4338f5", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/61fe0566189bf32e8cfee78335d8776f64a66f5a", + "reference": "61fe0566189bf32e8cfee78335d8776f64a66f5a", "shasum": "" }, "require": { "php": ">=8.2", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-mbstring": "~1.8" + }, + "require-dev": { "symfony/process": "^6.4|^7.0" }, "type": "library", @@ -3295,7 +3110,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.7" + "source": "https://github.com/symfony/filesystem/tree/v7.1.5" }, "funding": [ { @@ -3311,20 +3126,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-17T09:16:35+00:00" }, { "name": "symfony/finder", - "version": "v7.0.7", + "version": "v7.1.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c" + "reference": "d95bbf319f7d052082fb7af147e0f835a695e823" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/4d58f0f4fe95a30d7b538d71197135483560b97c", - "reference": "4d58f0f4fe95a30d7b538d71197135483560b97c", + "url": "https://api.github.com/repos/symfony/finder/zipball/d95bbf319f7d052082fb7af147e0f835a695e823", + "reference": "d95bbf319f7d052082fb7af147e0f835a695e823", "shasum": "" }, "require": { @@ -3359,7 +3174,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v7.0.7" + "source": "https://github.com/symfony/finder/tree/v7.1.4" }, "funding": [ { @@ -3375,24 +3190,24 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-08-13T14:28:19+00:00" }, { "name": "symfony/polyfill-ctype", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4" + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/ef4d7e442ca910c4764bce785146269b30cb5fc4", - "reference": "ef4d7e442ca910c4764bce785146269b30cb5fc4", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-ctype": "*" @@ -3438,7 +3253,7 @@ "portable" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" }, "funding": [ { @@ -3454,24 +3269,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-grapheme", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f" + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/32a9da87d7b3245e09ac426c83d334ae9f06f80f", - "reference": "32a9da87d7b3245e09ac426c83d334ae9f06f80f", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -3516,7 +3331,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" }, "funding": [ { @@ -3532,24 +3347,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-intl-normalizer", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d" + "reference": "3833d7255cc303546435cb650316bff708a1c75c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/bc45c394692b948b4d383a08d7753968bed9a83d", - "reference": "bc45c394692b948b4d383a08d7753968bed9a83d", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "suggest": { "ext-intl": "For best performance" @@ -3597,7 +3412,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -3613,24 +3428,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-mbstring", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec" + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9773676c8a1bb1f8d4340a62efe641cf76eda7ec", - "reference": "9773676c8a1bb1f8d4340a62efe641cf76eda7ec", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/85181ba99b2345b0ef10ce42ecac37612d9fd341", + "reference": "85181ba99b2345b0ef10ce42ecac37612d9fd341", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "provide": { "ext-mbstring": "*" @@ -3677,7 +3492,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.31.0" }, "funding": [ { @@ -3693,24 +3508,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php73", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2" + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/21bd091060673a1177ae842c0ef8fe30893114d2", - "reference": "21bd091060673a1177ae842c0ef8fe30893114d2", + "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/0f68c03565dcaaf25a890667542e8bd75fe7e5bb", + "reference": "0f68c03565dcaaf25a890667542e8bd75fe7e5bb", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { @@ -3753,7 +3568,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php73/tree/v1.31.0" }, "funding": [ { @@ -3769,24 +3584,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php80", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b" + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", - "reference": "87b68208d5c1188808dd7839ee1e6c8ec3b02f1b", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { @@ -3833,7 +3648,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" }, "funding": [ { @@ -3849,24 +3664,24 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/polyfill-php81", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", - "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", "shasum": "" }, "require": { - "php": ">=7.1" + "php": ">=7.2" }, "type": "library", "extra": { @@ -3909,7 +3724,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" }, "funding": [ { @@ -3925,20 +3740,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/process", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0" + "reference": "5c03ee6369281177f07f7c68252a280beccba847" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/3839e56b94dd1dbd13235d27504e66baf23faba0", - "reference": "3839e56b94dd1dbd13235d27504e66baf23faba0", + "url": "https://api.github.com/repos/symfony/process/zipball/5c03ee6369281177f07f7c68252a280beccba847", + "reference": "5c03ee6369281177f07f7c68252a280beccba847", "shasum": "" }, "require": { @@ -3970,7 +3785,7 @@ "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/process/tree/v7.0.7" + "source": "https://github.com/symfony/process/tree/v7.1.5" }, "funding": [ { @@ -3986,7 +3801,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-19T21:48:23+00:00" }, { "name": "symfony/service-contracts", @@ -4073,16 +3888,16 @@ }, { "name": "symfony/string", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63" + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/e405b5424dc2528e02e31ba26b83a79fd4eb8f63", - "reference": "e405b5424dc2528e02e31ba26b83a79fd4eb8f63", + "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", "shasum": "" }, "require": { @@ -4096,6 +3911,7 @@ "symfony/translation-contracts": "<2.5" }, "require-dev": { + "symfony/emoji": "^7.1", "symfony/error-handler": "^6.4|^7.0", "symfony/http-client": "^6.4|^7.0", "symfony/intl": "^6.4|^7.0", @@ -4139,7 +3955,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.7" + "source": "https://github.com/symfony/string/tree/v7.1.5" }, "funding": [ { @@ -4155,7 +3971,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "thecodingmachine/safe", @@ -4298,24 +4114,24 @@ }, { "name": "twig/twig", - "version": "v3.10.3", + "version": "v3.14.0", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "67f29781ffafa520b0bbfbd8384674b42db04572" + "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/67f29781ffafa520b0bbfbd8384674b42db04572", - "reference": "67f29781ffafa520b0bbfbd8384674b42db04572", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/126b2c97818dbff0cdf3fbfc881aedb3d40aae72", + "reference": "126b2c97818dbff0cdf3fbfc881aedb3d40aae72", "shasum": "" }, "require": { - "php": ">=7.2.5", + "php": ">=8.0.2", "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "^1.8", "symfony/polyfill-mbstring": "^1.3", - "symfony/polyfill-php80": "^1.22" + "symfony/polyfill-php81": "^1.29" }, "require-dev": { "psr/container": "^1.0|^2.0", @@ -4361,7 +4177,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v3.10.3" + "source": "https://github.com/twigphp/Twig/tree/v3.14.0" }, "funding": [ { @@ -4373,52 +4189,44 @@ "type": "tidelift" } ], - "time": "2024-05-16T10:04:27+00:00" + "time": "2024-09-09T17:55:12+00:00" }, { "name": "wyrihaximus/broadcast", - "version": "2.3.1", + "version": "2.4.0", "source": { "type": "git", "url": "https://github.com/WyriHaximus/php-broadcast.git", - "reference": "65e3c25b2d4b9b5aa685e067193cda2672166a8f" + "reference": "42ff5c3b640d9e42715da2db75397cfe291bad5c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-broadcast/zipball/65e3c25b2d4b9b5aa685e067193cda2672166a8f", - "reference": "65e3c25b2d4b9b5aa685e067193cda2672166a8f", + "url": "https://api.github.com/repos/WyriHaximus/php-broadcast/zipball/42ff5c3b640d9e42715da2db75397cfe291bad5c", + "reference": "42ff5c3b640d9e42715da2db75397cfe291bad5c", "shasum": "" }, "require": { "composer-plugin-api": "^2", - "illuminate/collections": "^10", + "ext-json": "^8.2", "php": "^8.2", + "psr/container": "^1 || ^2", "psr/event-dispatcher": "^1", "psr/log": "^1.1 || ^2 || ^3", - "react/async": "^4.1", - "react/promise": "^3", - "roave/better-reflection": "^6.14", - "thecodingmachine/safe": "^2.5", + "react/async": "^4.3", + "react/promise": "^3.2", + "roave/better-reflection": "^6.26", "wyrihaximus/broadcast-contracts": "^1.3", - "wyrihaximus/constants": "^1.6", - "wyrihaximus/get-in-packages-composer.jason": "^2", - "wyrihaximus/iterator-or-array-to-array": "^1.2", - "wyrihaximus/list-classes-in-directory": "^1.6", - "wyrihaximus/string-get-in": "^1.0" + "wyrihaximus/generative-composer-plugin-tooling": "^1.0.1" }, "require-dev": { "pimple/pimple": "^3.5", - "psr/container": "^1", "react/promise-timer": "^1.10", "the-orville/exceptions": "dev-master", - "wyrihaximus/async-test-utilities": "^7.2" + "wyrihaximus/async-test-utilities": "^8.0.5" }, "type": "composer-plugin", "extra": { "class": "WyriHaximus\\Broadcast\\Composer\\Installer", - "unused": [ - "wyrihaximus/get-in-packages-composer.jason" - ], "wyrihaximus": { "broadcast": { "has-listeners": true @@ -4437,7 +4245,7 @@ "description": "✨ Statically on composer install/update compiled (async) event dispatcher", "support": { "issues": "https://github.com/WyriHaximus/php-broadcast/issues", - "source": "https://github.com/WyriHaximus/php-broadcast/tree/2.3.1" + "source": "https://github.com/WyriHaximus/php-broadcast/tree/2.4.0" }, "funding": [ { @@ -4445,7 +4253,7 @@ "type": "github" } ], - "time": "2024-03-22T14:08:38+00:00" + "time": "2024-10-10T13:18:40+00:00" }, { "name": "wyrihaximus/broadcast-contracts", @@ -4538,33 +4346,33 @@ "time": "2020-11-28T12:04:43+00:00" }, { - "name": "wyrihaximus/get-in-packages-composer.jason", - "version": "2.0.0", + "name": "wyrihaximus/generative-composer-plugin-tooling", + "version": "1.0.1", "source": { "type": "git", - "url": "https://github.com/WyriHaximus/php-get-in-packages-composer.json.git", - "reference": "2af3b80b541ccd8639461e9948f56c97c203a7ad" + "url": "https://github.com/WyriHaximus/php-generative-composer-plugin-tooling.git", + "reference": "8b4ad7c4e8945aab8907c33ff03565727e024e4c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-get-in-packages-composer.json/zipball/2af3b80b541ccd8639461e9948f56c97c203a7ad", - "reference": "2af3b80b541ccd8639461e9948f56c97c203a7ad", + "url": "https://api.github.com/repos/WyriHaximus/php-generative-composer-plugin-tooling/zipball/8b4ad7c4e8945aab8907c33ff03565727e024e4c", + "reference": "8b4ad7c4e8945aab8907c33ff03565727e024e4c", "shasum": "" }, "require": { - "drupol/composer-packages": "^2.0", - "igorw/get-in": "^1.0", - "mindplay/composer-locator": "^2.1", - "php": "^8" + "composer-plugin-api": "^2", + "php": "^8.2", + "roave/better-reflection": "^6.26", + "wyrihaximus/list-classes-in-directory": "^1.7" }, "require-dev": { - "wyrihaximus/test-utilities": "^5" + "wyrihaximus/test-utilities": "^6.0.10" }, "type": "library", "autoload": { - "files": [ - "src/functions_include.php" - ] + "psr-4": { + "WyriHaximus\\Composer\\GenerativePluginTooling\\": "src/" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4573,14 +4381,13 @@ "authors": [ { "name": "Cees-Jan Kiewiet", - "email": "ceesjank@gmail.com", - "homepage": "http://wyrihaximus.net/" + "email": "ceesjank@gmail.com" } ], - "description": "Functions around joshdifabio/composed and igorw/get-in to gather configuration from composer.json", + "description": "🐦‍🔥 Generative Composer Plugin Tooling", "support": { - "issues": "https://github.com/WyriHaximus/php-get-in-packages-composer.json/issues", - "source": "https://github.com/WyriHaximus/php-get-in-packages-composer.json/tree/2.0.0" + "issues": "https://github.com/WyriHaximus/php-generative-composer-plugin-tooling/issues", + "source": "https://github.com/WyriHaximus/php-generative-composer-plugin-tooling/tree/1.0.1" }, "funding": [ { @@ -4588,27 +4395,30 @@ "type": "github" } ], - "time": "2022-01-22T22:47:10+00:00" + "time": "2024-10-09T14:25:36+00:00" }, { - "name": "wyrihaximus/iterator-or-array-to-array", - "version": "1.2.0", + "name": "wyrihaximus/get-in-packages-composer.jason", + "version": "2.0.0", "source": { "type": "git", - "url": "https://github.com/WyriHaximus/php-iterator-or-array-to-array.git", - "reference": "79b407499a3a82f269e59236e44e2119c7556c78" + "url": "https://github.com/WyriHaximus/php-get-in-packages-composer.json.git", + "reference": "2af3b80b541ccd8639461e9948f56c97c203a7ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-iterator-or-array-to-array/zipball/79b407499a3a82f269e59236e44e2119c7556c78", - "reference": "79b407499a3a82f269e59236e44e2119c7556c78", + "url": "https://api.github.com/repos/WyriHaximus/php-get-in-packages-composer.json/zipball/2af3b80b541ccd8639461e9948f56c97c203a7ad", + "reference": "2af3b80b541ccd8639461e9948f56c97c203a7ad", "shasum": "" }, "require": { - "php": "^8 || ^7.4" + "drupol/composer-packages": "^2.0", + "igorw/get-in": "^1.0", + "mindplay/composer-locator": "^2.1", + "php": "^8" }, "require-dev": { - "wyrihaximus/test-utilities": "^3.7.3" + "wyrihaximus/test-utilities": "^5" }, "type": "library", "autoload": { @@ -4623,13 +4433,14 @@ "authors": [ { "name": "Cees-Jan Kiewiet", - "email": "ceesjank@gmail.com" + "email": "ceesjank@gmail.com", + "homepage": "http://wyrihaximus.net/" } ], - "description": "Like iterator_to_array but doesn't error when handed an array", + "description": "Functions around joshdifabio/composed and igorw/get-in to gather configuration from composer.json", "support": { - "issues": "https://github.com/WyriHaximus/php-iterator-or-array-to-array/issues", - "source": "https://github.com/WyriHaximus/php-iterator-or-array-to-array/tree/1.2.0" + "issues": "https://github.com/WyriHaximus/php-get-in-packages-composer.json/issues", + "source": "https://github.com/WyriHaximus/php-get-in-packages-composer.json/tree/2.0.0" }, "funding": [ { @@ -4637,36 +4448,37 @@ "type": "github" } ], - "abandoned": "[...$iteratorOrArray] instead of this", - "time": "2021-09-05T15:12:30+00:00" + "time": "2022-01-22T22:47:10+00:00" }, { "name": "wyrihaximus/list-classes-in-directory", - "version": "1.6.0", + "version": "1.7.0", "source": { "type": "git", "url": "https://github.com/WyriHaximus/php-list-classes-in-directory.git", - "reference": "d11c870f495a013005af10babf5b20adc8abe5ab" + "reference": "3c9f96fe973a47a917830dd926a7153e5bb8338f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-list-classes-in-directory/zipball/d11c870f495a013005af10babf5b20adc8abe5ab", - "reference": "d11c870f495a013005af10babf5b20adc8abe5ab", + "url": "https://api.github.com/repos/WyriHaximus/php-list-classes-in-directory/zipball/3c9f96fe973a47a917830dd926a7153e5bb8338f", + "reference": "3c9f96fe973a47a917830dd926a7153e5bb8338f", "shasum": "" }, "require": { "php": "^8.2", - "roave/better-reflection": "^6", - "wyrihaximus/constants": "^1.6" + "roave/better-reflection": "^6.5" }, "require-dev": { - "wyrihaximus/async-test-utilities": "^6.0.0" + "wyrihaximus/test-utilities": "^6.0.9" }, "type": "library", "autoload": { "files": [ "src/functions_include.php" - ] + ], + "psr-4": { + "WyriHaximus\\": "src" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -4681,7 +4493,7 @@ "description": "Allows you to list full qualified class names in directories and files.", "support": { "issues": "https://github.com/WyriHaximus/php-list-classes-in-directory/issues", - "source": "https://github.com/WyriHaximus/php-list-classes-in-directory/tree/1.6.0" + "source": "https://github.com/WyriHaximus/php-list-classes-in-directory/tree/1.7.0" }, "funding": [ { @@ -4689,7 +4501,7 @@ "type": "github" } ], - "time": "2023-01-10T18:32:40+00:00" + "time": "2024-07-16T12:35:06+00:00" }, { "name": "wyrihaximus/metrics", @@ -5123,24 +4935,24 @@ }, { "name": "wyrihaximus/simple-twig", - "version": "2.1.0", + "version": "2.2.1", "source": { "type": "git", "url": "https://github.com/WyriHaximus/php-simple-twig.git", - "reference": "aa0d055c13a25b0318aa55edaea13fe12af15939" + "reference": "1647efb09c4acb66d36911f480c7881be1ade99e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-simple-twig/zipball/aa0d055c13a25b0318aa55edaea13fe12af15939", - "reference": "aa0d055c13a25b0318aa55edaea13fe12af15939", + "url": "https://api.github.com/repos/WyriHaximus/php-simple-twig/zipball/1647efb09c4acb66d36911f480c7881be1ade99e", + "reference": "1647efb09c4acb66d36911f480c7881be1ade99e", "shasum": "" }, "require": { - "php": "^8 || ^7.4", - "twig/twig": "^3.3.2" + "php": "^8.2", + "twig/twig": "^3.14" }, "require-dev": { - "wyrihaximus/test-utilities": "^3.7.3" + "wyrihaximus/test-utilities": "^6.0.10" }, "type": "library", "autoload": { @@ -5164,57 +4976,7 @@ "description": "🌱 Wrapper around Twig making rendering a string template trivial", "support": { "issues": "https://github.com/WyriHaximus/php-simple-twig/issues", - "source": "https://github.com/WyriHaximus/php-simple-twig/tree/2.1.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - } - ], - "time": "2021-09-08T22:05:38+00:00" - }, - { - "name": "wyrihaximus/string-get-in", - "version": "1.1.0", - "source": { - "type": "git", - "url": "https://github.com/WyriHaximus/php-string-get-in.git", - "reference": "d62f191ad8464dceeb0d80bed181c45c440318c6" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-string-get-in/zipball/d62f191ad8464dceeb0d80bed181c45c440318c6", - "reference": "d62f191ad8464dceeb0d80bed181c45c440318c6", - "shasum": "" - }, - "require": { - "igorw/get-in": "^1.0.3", - "php": "^8 || ^7.4" - }, - "require-dev": { - "wyrihaximus/test-utilities": "^3.7.6" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Cees-Jan Kiewiet", - "email": "ceesjank@gmail.com" - } - ], - "description": "Wrapper around igorw/get-in using strings rather then arrays are keys", - "support": { - "issues": "https://github.com/WyriHaximus/php-string-get-in/issues", - "source": "https://github.com/WyriHaximus/php-string-get-in/tree/1.1.0" + "source": "https://github.com/WyriHaximus/php-simple-twig/tree/2.2.1" }, "funding": [ { @@ -5222,7 +4984,7 @@ "type": "github" } ], - "time": "2021-11-28T14:22:02+00:00" + "time": "2024-10-12T14:20:51+00:00" }, { "name": "wyrihaximus/ticking-promise", @@ -5521,12 +5283,12 @@ "source": { "type": "git", "url": "https://github.com/BBQueue/php-bunny.git", - "reference": "13b7514d6e7d07e6527b5e45833fafdcb19cf04e" + "reference": "1afc01132259d8aae92f0bf45dce2e0e0cbd5afc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/BBQueue/php-bunny/zipball/13b7514d6e7d07e6527b5e45833fafdcb19cf04e", - "reference": "13b7514d6e7d07e6527b5e45833fafdcb19cf04e", + "url": "https://api.github.com/repos/BBQueue/php-bunny/zipball/1afc01132259d8aae92f0bf45dce2e0e0cbd5afc", + "reference": "1afc01132259d8aae92f0bf45dce2e0e0cbd5afc", "shasum": "" }, "require": { @@ -5559,7 +5321,7 @@ "type": "github" } ], - "time": "2024-05-18T08:18:30+00:00" + "time": "2024-05-20T12:45:30+00:00" }, { "name": "beberlei/assert", @@ -5741,12 +5503,12 @@ "source": { "type": "git", "url": "https://github.com/jakubkulhan/bunny.git", - "reference": "b4d6781ba6751a069e587ef7aaa971359be10653" + "reference": "ad5b979e58674048057e03024c56aeb705d9e1f2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/jakubkulhan/bunny/zipball/b4d6781ba6751a069e587ef7aaa971359be10653", - "reference": "b4d6781ba6751a069e587ef7aaa971359be10653", + "url": "https://api.github.com/repos/jakubkulhan/bunny/zipball/ad5b979e58674048057e03024c56aeb705d9e1f2", + "reference": "ad5b979e58674048057e03024c56aeb705d9e1f2", "shasum": "" }, "require": { @@ -5767,6 +5529,7 @@ "react/child-process": "^0.6.5", "wyrihaximus/react-phpunit-run-tests-in-fiber": "^2 || ^1" }, + "default-branch": true, "type": "library", "autoload": { "psr-4": { @@ -5805,7 +5568,7 @@ "issues": "https://github.com/jakubkulhan/bunny/issues", "source": "https://github.com/jakubkulhan/bunny/tree/0.6.x" }, - "time": "2024-05-10T10:07:04+00:00" + "time": "2024-05-24T19:52:58+00:00" }, { "name": "colinodell/json5", @@ -6233,18 +5996,72 @@ }, "time": "2024-01-30T19:34:25+00:00" }, + { + "name": "ecoapm/libyear", + "version": "2.3.0", + "source": { + "type": "git", + "url": "https://github.com/ecoAPM/php-libyear.git", + "reference": "52cd81fcbfe1eab86efa45b6c3a57fa2556c4a51" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/ecoAPM/php-libyear/zipball/52cd81fcbfe1eab86efa45b6c3a57fa2556c4a51", + "reference": "52cd81fcbfe1eab86efa45b6c3a57fa2556c4a51", + "shasum": "" + }, + "require": { + "composer/semver": "3.3.2", + "ext-json": ">=7.4", + "guzzlehttp/guzzle": "7.5.0", + "php": ">=7.4", + "wp-cli/php-cli-tools": "0.11.16" + }, + "require-dev": { + "mockery/mockery": "1.5.1", + "phpunit/phpunit": "9.5.27" + }, + "bin": [ + "libyear" + ], + "type": "library", + "autoload": { + "psr-4": { + "LibYear\\": "src/", + "LibYear\\Tests\\": "tests/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "ecoAPM", + "email": "steve@ecoAPM.com", + "homepage": "https://ecoAPM.com" + } + ], + "description": "A simple measure of software dependency freshness", + "homepage": "https://libyear.com", + "support": { + "issues": "https://github.com/ecoAPM/php-libyear/issues", + "source": "https://github.com/ecoAPM/php-libyear/tree/2.3.0" + }, + "time": "2022-12-15T21:07:09+00:00" + }, { "name": "ergebnis/composer-normalize", - "version": "2.42.0", + "version": "2.44.0", "source": { "type": "git", "url": "https://github.com/ergebnis/composer-normalize.git", - "reference": "02cf2b69ad2a74c6f11a8c3f5f054b8f949df910" + "reference": "bd0c446426bb837ae0cc9f97948167e658bd11d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/02cf2b69ad2a74c6f11a8c3f5f054b8f949df910", - "reference": "02cf2b69ad2a74c6f11a8c3f5f054b8f949df910", + "url": "https://api.github.com/repos/ergebnis/composer-normalize/zipball/bd0c446426bb837ae0cc9f97948167e658bd11d2", + "reference": "bd0c446426bb837ae0cc9f97948167e658bd11d2", "shasum": "" }, "require": { @@ -6255,20 +6072,20 @@ "ext-json": "*", "justinrainbow/json-schema": "^5.2.12", "localheinz/diff": "^1.1.1", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { - "composer/composer": "^2.6.6", - "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.20.0", - "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "composer/composer": "^2.7.7", + "ergebnis/license": "^2.5.0", + "ergebnis/php-cs-fixer-config": "^6.37.0", + "ergebnis/phpunit-slow-test-detector": "^2.16.0", "fakerphp/faker": "^1.23.1", "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.6.16", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.19.2", - "symfony/filesystem": "^5.4.25", - "vimeo/psalm": "^5.20.0" + "phpunit/phpunit": "^9.6.20", + "psalm/plugin-phpunit": "~0.19.0", + "rector/rector": "^1.2.5", + "symfony/filesystem": "^5.4.41", + "vimeo/psalm": "^5.26.1" }, "type": "composer-plugin", "extra": { @@ -6308,37 +6125,37 @@ "security": "https://github.com/ergebnis/composer-normalize/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/composer-normalize" }, - "time": "2024-01-30T11:54:02+00:00" + "time": "2024-09-30T21:56:22+00:00" }, { "name": "ergebnis/json", - "version": "1.2.0", + "version": "1.3.0", "source": { "type": "git", "url": "https://github.com/ergebnis/json.git", - "reference": "a457f25a5ba7ea11fc94f84d53678c5211abfce0" + "reference": "84051b4e243d6a8e2f8271604b11ffa52d29bc7a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json/zipball/a457f25a5ba7ea11fc94f84d53678c5211abfce0", - "reference": "a457f25a5ba7ea11fc94f84d53678c5211abfce0", + "url": "https://api.github.com/repos/ergebnis/json/zipball/84051b4e243d6a8e2f8271604b11ffa52d29bc7a", + "reference": "84051b4e243d6a8e2f8271604b11ffa52d29bc7a", "shasum": "" }, "require": { "ext-json": "*", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { "ergebnis/data-provider": "^3.2.0", "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.20.0", - "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "ergebnis/php-cs-fixer-config": "^6.36.0", + "ergebnis/phpunit-slow-test-detector": "^2.15.1", "fakerphp/faker": "^1.23.1", "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.6.16", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.19.2", - "vimeo/psalm": "^5.20.0" + "phpunit/phpunit": "^9.6.18", + "psalm/plugin-phpunit": "~0.19.0", + "rector/rector": "^1.2.5", + "vimeo/psalm": "^5.26.1" }, "type": "library", "extra": { @@ -6373,20 +6190,20 @@ "security": "https://github.com/ergebnis/json/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json" }, - "time": "2024-01-29T15:09:24+00:00" + "time": "2024-09-27T15:01:05+00:00" }, { "name": "ergebnis/json-normalizer", - "version": "4.5.0", + "version": "4.6.0", "source": { "type": "git", "url": "https://github.com/ergebnis/json-normalizer.git", - "reference": "f0ee9e70739f121b27fac8b743e4a52b23de2152" + "reference": "859fd3cee417f0b10a8e6ffb8dbeb03587106b8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/f0ee9e70739f121b27fac8b743e4a52b23de2152", - "reference": "f0ee9e70739f121b27fac8b743e4a52b23de2152", + "url": "https://api.github.com/repos/ergebnis/json-normalizer/zipball/859fd3cee417f0b10a8e6ffb8dbeb03587106b8b", + "reference": "859fd3cee417f0b10a8e6ffb8dbeb03587106b8b", "shasum": "" }, "require": { @@ -6396,20 +6213,20 @@ "ergebnis/json-schema-validator": "^4.2.0", "ext-json": "*", "justinrainbow/json-schema": "^5.2.12", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { - "composer/semver": "^3.4.0", + "composer/semver": "^3.4.3", "ergebnis/data-provider": "^3.2.0", "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.20.0", - "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "ergebnis/php-cs-fixer-config": "^6.36.0", + "ergebnis/phpunit-slow-test-detector": "^2.15.1", "fakerphp/faker": "^1.23.1", "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.6.16", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.19.4", - "vimeo/psalm": "^5.20.0" + "phpunit/phpunit": "^9.6.19", + "psalm/plugin-phpunit": "~0.19.0", + "rector/rector": "^1.2.5", + "vimeo/psalm": "^5.26.1" }, "suggest": { "composer/semver": "If you want to use ComposerJsonNormalizer or VersionConstraintNormalizer" @@ -6442,39 +6259,43 @@ "security": "https://github.com/ergebnis/json-normalizer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-normalizer" }, - "time": "2024-01-30T09:10:15+00:00" + "time": "2024-09-27T15:11:59+00:00" }, { "name": "ergebnis/json-pointer", - "version": "3.4.0", + "version": "3.5.0", "source": { "type": "git", "url": "https://github.com/ergebnis/json-pointer.git", - "reference": "b654757d873050622c2166f55ab25d04685261c5" + "reference": "f6ff71e69305b8ab5e4457e374b35dcd0812609b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/b654757d873050622c2166f55ab25d04685261c5", - "reference": "b654757d873050622c2166f55ab25d04685261c5", + "url": "https://api.github.com/repos/ergebnis/json-pointer/zipball/f6ff71e69305b8ab5e4457e374b35dcd0812609b", + "reference": "f6ff71e69305b8ab5e4457e374b35dcd0812609b", "shasum": "" }, "require": { - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { + "ergebnis/composer-normalize": "^2.43.0", "ergebnis/data-provider": "^3.2.0", "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.20.0", - "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "ergebnis/php-cs-fixer-config": "^6.32.0", + "ergebnis/phpunit-slow-test-detector": "^2.15.0", "fakerphp/faker": "^1.23.1", "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.6.16", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.19.2", - "vimeo/psalm": "^5.20.0" + "phpunit/phpunit": "^9.6.19", + "psalm/plugin-phpunit": "~0.19.0", + "rector/rector": "^1.2.1", + "vimeo/psalm": "^5.25.0" }, "type": "library", "extra": { + "branch-alias": { + "dev-main": "3.4-dev" + }, "composer-normalize": { "indent-size": 2, "indent-style": "space" @@ -6508,38 +6329,38 @@ "security": "https://github.com/ergebnis/json-pointer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-pointer" }, - "time": "2024-01-29T16:37:15+00:00" + "time": "2024-09-27T15:47:15+00:00" }, { "name": "ergebnis/json-printer", - "version": "3.5.0", + "version": "3.6.0", "source": { "type": "git", "url": "https://github.com/ergebnis/json-printer.git", - "reference": "549e16fe6de34b8c3aee7b421be12caa552f3ced" + "reference": "d2e51379dc62d73017a779a78fcfba568de39e0a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/549e16fe6de34b8c3aee7b421be12caa552f3ced", - "reference": "549e16fe6de34b8c3aee7b421be12caa552f3ced", + "url": "https://api.github.com/repos/ergebnis/json-printer/zipball/d2e51379dc62d73017a779a78fcfba568de39e0a", + "reference": "d2e51379dc62d73017a779a78fcfba568de39e0a", "shasum": "" }, "require": { "ext-json": "*", "ext-mbstring": "*", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { "ergebnis/data-provider": "^3.2.0", "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.20.0", - "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "ergebnis/php-cs-fixer-config": "^6.36.0", + "ergebnis/phpunit-slow-test-detector": "^2.15.1", "fakerphp/faker": "^1.23.1", "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.6.16", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.19.2", - "vimeo/psalm": "^5.20.0" + "phpunit/phpunit": "^9.6.19", + "psalm/plugin-phpunit": "~0.19.0", + "rector/rector": "~1.2.5", + "vimeo/psalm": "^5.26.1" }, "type": "library", "autoload": { @@ -6570,20 +6391,20 @@ "security": "https://github.com/ergebnis/json-printer/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-printer" }, - "time": "2024-01-29T15:33:37+00:00" + "time": "2024-09-27T15:19:56+00:00" }, { "name": "ergebnis/json-schema-validator", - "version": "4.2.0", + "version": "4.3.0", "source": { "type": "git", "url": "https://github.com/ergebnis/json-schema-validator.git", - "reference": "10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef" + "reference": "73f938f8995c6ad1e37d2c1dfeaa8336861f9db8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef", - "reference": "10ed514fdc3f9b71f8a92c567afea21a2f6fa1ef", + "url": "https://api.github.com/repos/ergebnis/json-schema-validator/zipball/73f938f8995c6ad1e37d2c1dfeaa8336861f9db8", + "reference": "73f938f8995c6ad1e37d2c1dfeaa8336861f9db8", "shasum": "" }, "require": { @@ -6591,19 +6412,19 @@ "ergebnis/json-pointer": "^3.4.0", "ext-json": "*", "justinrainbow/json-schema": "^5.2.12", - "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "require-dev": { "ergebnis/data-provider": "^3.2.0", "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.20.0", - "ergebnis/phpunit-slow-test-detector": "^2.9.0", + "ergebnis/php-cs-fixer-config": "^6.36.0", + "ergebnis/phpunit-slow-test-detector": "^2.15.1", "fakerphp/faker": "^1.23.1", "infection/infection": "~0.26.6", - "phpunit/phpunit": "^9.6.16", - "psalm/plugin-phpunit": "~0.18.4", - "rector/rector": "~0.19.2", - "vimeo/psalm": "^5.20.0" + "phpunit/phpunit": "^9.6.20", + "psalm/plugin-phpunit": "~0.19.0", + "rector/rector": "^1.2.5", + "vimeo/psalm": "^5.26.1" }, "type": "library", "extra": { @@ -6640,7 +6461,7 @@ "security": "https://github.com/ergebnis/json-schema-validator/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/json-schema-validator" }, - "time": "2024-01-29T16:50:15+00:00" + "time": "2024-09-27T15:16:33+00:00" }, { "name": "ergebnis/phpstan-rules", @@ -6716,31 +6537,31 @@ }, { "name": "ergebnis/phpunit-slow-test-detector", - "version": "2.14.0", + "version": "2.16.1", "source": { "type": "git", "url": "https://github.com/ergebnis/phpunit-slow-test-detector.git", - "reference": "9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2" + "reference": "30d46c03d98433e1afb8fa899399ca3db144898b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2", - "reference": "9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2", + "url": "https://api.github.com/repos/ergebnis/phpunit-slow-test-detector/zipball/30d46c03d98433e1afb8fa899399ca3db144898b", + "reference": "30d46c03d98433e1afb8fa899399ca3db144898b", "shasum": "" }, "require": { - "php": "~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0", + "php": "~7.0.0 || ~7.1.0 || ~7.2.0 || ~7.3.0 || ~7.4.0 || ~8.0.0 || ~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0", "phpunit/phpunit": "^6.5.0 || ^7.5.0 || ^8.5.19 || ^9.0.0 || ^10.0.0 || ^11.0.0" }, "require-dev": { - "ergebnis/composer-normalize": "^2.42.0", - "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.25.1", + "ergebnis/composer-normalize": "^2.44.0", + "ergebnis/license": "^2.5.0", + "ergebnis/php-cs-fixer-config": "^6.37.0", "fakerphp/faker": "~1.20.0", "psalm/plugin-phpunit": "~0.19.0", "psr/container": "~1.0.0", - "rector/rector": "^1.0.4", - "vimeo/psalm": "^5.23.1" + "rector/rector": "^1.2.8", + "vimeo/psalm": "^5.26.1" }, "type": "library", "extra": { @@ -6779,7 +6600,7 @@ "security": "https://github.com/ergebnis/phpunit-slow-test-detector/blob/main/.github/SECURITY.md", "source": "https://github.com/ergebnis/phpunit-slow-test-detector" }, - "time": "2024-04-08T06:35:34+00:00" + "time": "2024-10-25T11:56:32+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -6828,16 +6649,16 @@ }, { "name": "felixfbecker/language-server-protocol", - "version": "v1.5.2", + "version": "v1.5.3", "source": { "type": "git", "url": "https://github.com/felixfbecker/php-language-server-protocol.git", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842" + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/6e82196ffd7c62f7794d778ca52b69feec9f2842", - "reference": "6e82196ffd7c62f7794d778ca52b69feec9f2842", + "url": "https://api.github.com/repos/felixfbecker/php-language-server-protocol/zipball/a9e113dbc7d849e35b8776da39edaf4313b7b6c9", + "reference": "a9e113dbc7d849e35b8776da39edaf4313b7b6c9", "shasum": "" }, "require": { @@ -6878,22 +6699,22 @@ ], "support": { "issues": "https://github.com/felixfbecker/php-language-server-protocol/issues", - "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.2" + "source": "https://github.com/felixfbecker/php-language-server-protocol/tree/v1.5.3" }, - "time": "2022-03-02T22:36:06+00:00" + "time": "2024-04-30T00:40:11+00:00" }, { "name": "fidry/cpu-core-counter", - "version": "1.1.0", + "version": "1.2.0", "source": { "type": "git", "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + "reference": "8520451a140d3f46ac33042715115e290cf5785f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/8520451a140d3f46ac33042715115e290cf5785f", + "reference": "8520451a140d3f46ac33042715115e290cf5785f", "shasum": "" }, "require": { @@ -6933,7 +6754,7 @@ ], "support": { "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + "source": "https://github.com/theofidry/cpu-core-counter/tree/1.2.0" }, "funding": [ { @@ -6941,30 +6762,30 @@ "type": "github" } ], - "time": "2024-02-07T09:43:46+00:00" + "time": "2024-08-06T10:04:20+00:00" }, { "name": "filp/whoops", - "version": "2.15.4", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", + "url": "https://api.github.com/repos/filp/whoops/zipball/befcdc0e5dce67252aa6322d82424be928214fa2", + "reference": "befcdc0e5dce67252aa6322d82424be928214fa2", "shasum": "" }, "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", + "php": "^7.1 || ^8.0", "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" + "mockery/mockery": "^1.0", + "phpunit/phpunit": "^7.5.20 || ^8.5.8 || ^9.3.3", + "symfony/var-dumper": "^4.0 || ^5.0" }, "suggest": { "symfony/var-dumper": "Pretty print complex values better with var-dumper available", @@ -7004,7 +6825,7 @@ ], "support": { "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" + "source": "https://github.com/filp/whoops/tree/2.16.0" }, "funding": [ { @@ -7012,26 +6833,26 @@ "type": "github" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2024-09-25T12:00:00+00:00" }, { "name": "guzzlehttp/guzzle", - "version": "7.8.1", + "version": "7.5.0", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104" + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/41042bc7ab002487b876a0683fc8dce04ddce104", - "reference": "41042bc7ab002487b876a0683fc8dce04ddce104", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/b50a2a1251152e43f6a37f0fa053e730a67d25ba", + "reference": "b50a2a1251152e43f6a37f0fa053e730a67d25ba", "shasum": "" }, "require": { "ext-json": "*", - "guzzlehttp/promises": "^1.5.3 || ^2.0.1", - "guzzlehttp/psr7": "^1.9.1 || ^2.5.1", + "guzzlehttp/promises": "^1.5", + "guzzlehttp/psr7": "^1.9 || ^2.4", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -7040,11 +6861,10 @@ "psr/http-client-implementation": "1.0" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", + "bamarni/composer-bin-plugin": "^1.8.1", "ext-curl": "*", - "php-http/client-integration-tests": "dev-master#2c025848417c1135031fdf9c728ee53d0a7ceaee as 3.0.999", - "php-http/message-factory": "^1.1", - "phpunit/phpunit": "^8.5.36 || ^9.6.15", + "php-http/client-integration-tests": "^3.0", + "phpunit/phpunit": "^8.5.29 || ^9.5.23", "psr/log": "^1.1 || ^2.0 || ^3.0" }, "suggest": { @@ -7057,6 +6877,9 @@ "bamarni-bin": { "bin-links": true, "forward-command": false + }, + "branch-alias": { + "dev-master": "7.5-dev" } }, "autoload": { @@ -7122,7 +6945,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.1" + "source": "https://github.com/guzzle/guzzle/tree/7.5.0" }, "funding": [ { @@ -7138,37 +6961,33 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:35:24+00:00" + "time": "2022-08-28T15:39:27+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.2", + "version": "1.5.3", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223" + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/bbff78d96034045e58e13dedd6ad91b5d1253223", - "reference": "bbff78d96034045e58e13dedd6ad91b5d1253223", + "url": "https://api.github.com/repos/guzzle/promises/zipball/67ab6e18aaa14d753cc148911d273f6e6cb6721e", + "reference": "67ab6e18aaa14d753cc148911d273f6e6cb6721e", "shasum": "" }, "require": { - "php": "^7.2.5 || ^8.0" + "php": ">=5.5" }, "require-dev": { - "bamarni/composer-bin-plugin": "^1.8.2", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "symfony/phpunit-bridge": "^4.4 || ^5.1" }, "type": "library", - "extra": { - "bamarni-bin": { - "bin-links": true, - "forward-command": false - } - }, "autoload": { + "files": [ + "src/functions_include.php" + ], "psr-4": { "GuzzleHttp\\Promise\\": "src/" } @@ -7205,7 +7024,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.2" + "source": "https://github.com/guzzle/promises/tree/1.5.3" }, "funding": [ { @@ -7221,20 +7040,20 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:19:20+00:00" + "time": "2023-05-21T12:31:43+00:00" }, { "name": "guzzlehttp/psr7", - "version": "2.6.2", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/45b30f99ac27b5ca93cb4831afe16285f57b8221", - "reference": "45b30f99ac27b5ca93cb4831afe16285f57b8221", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { @@ -7249,8 +7068,8 @@ }, "require-dev": { "bamarni/composer-bin-plugin": "^1.8.2", - "http-interop/http-factory-tests": "^0.9", - "phpunit/phpunit": "^8.5.36 || ^9.6.15" + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" @@ -7321,7 +7140,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/2.6.2" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -7337,7 +7156,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -7860,23 +7679,23 @@ }, { "name": "maglnet/composer-require-checker", - "version": "4.11.0", + "version": "4.13.0", "source": { "type": "git", "url": "https://github.com/maglnet/ComposerRequireChecker.git", - "reference": "c6c555e799bee50810fd84933ca1f0b276379ccf" + "reference": "3f998740566e3e9b3f7321167fd2f4fd645129da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/c6c555e799bee50810fd84933ca1f0b276379ccf", - "reference": "c6c555e799bee50810fd84933ca1f0b276379ccf", + "url": "https://api.github.com/repos/maglnet/ComposerRequireChecker/zipball/3f998740566e3e9b3f7321167fd2f4fd645129da", + "reference": "3f998740566e3e9b3f7321167fd2f4fd645129da", "shasum": "" }, "require": { "composer-runtime-api": "^2.0.0", "ext-phar": "*", - "nikic/php-parser": "^4.19.1", - "php": "~8.2.0 || ~8.3.0", + "nikic/php-parser": "^4.19.4", + "php": "~8.2.0 || ~8.3.0 || ~8.4.0", "symfony/console": "^6.4.1 || ^7.0.1", "webmozart/assert": "^1.11.0", "webmozart/glob": "^4.7.0" @@ -7885,12 +7704,12 @@ "doctrine/coding-standard": "^12.0.0", "ext-zend-opcache": "*", "phing/phing": "^2.17.4", - "phpstan/phpstan": "^1.10.66", - "phpunit/phpunit": "^10.5.16", + "phpstan/phpstan": "^1.12.6", + "phpunit/phpunit": "^10.5.36", "psalm/plugin-phpunit": "^0.19.0", "roave/infection-static-analysis-plugin": "^1.35.0", "spatie/temporary-directory": "^2.2.1", - "vimeo/psalm": "^5.23.1" + "vimeo/psalm": "^5.26.1" }, "bin": [ "bin/composer-require-checker" @@ -7925,19 +7744,19 @@ "description": "CLI tool to analyze composer dependencies and verify that no unknown symbols are used in the sources of a package", "homepage": "https://github.com/maglnet/ComposerRequireChecker", "keywords": [ - "analysis", "cli", "composer", "dependency", "imports", "require", - "requirements" + "requirements", + "static analysis" ], "support": { "issues": "https://github.com/maglnet/ComposerRequireChecker/issues", - "source": "https://github.com/maglnet/ComposerRequireChecker/tree/4.11.0" + "source": "https://github.com/maglnet/ComposerRequireChecker/tree/4.13.0" }, - "time": "2024-04-01T20:24:52+00:00" + "time": "2024-10-18T08:08:55+00:00" }, { "name": "marc-mabe/php-enum", @@ -8097,16 +7916,16 @@ }, { "name": "myclabs/deep-copy", - "version": "1.11.1", + "version": "1.12.0", "source": { "type": "git", "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c" + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", - "reference": "7284c22080590fb39f2ffa3e9057f10a4ddd0e0c", + "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", + "reference": "3a6b9a42cd8f8771bd4295d13e1423fa7f3d942c", "shasum": "" }, "require": { @@ -8114,11 +7933,12 @@ }, "conflict": { "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" + "doctrine/common": "<2.13.3 || >=3 <3.2.2" }, "require-dev": { "doctrine/collections": "^1.6.8", "doctrine/common": "^2.13.3 || ^3.2.2", + "phpspec/prophecy": "^1.10", "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" }, "type": "library", @@ -8144,7 +7964,7 @@ ], "support": { "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.1" + "source": "https://github.com/myclabs/DeepCopy/tree/1.12.0" }, "funding": [ { @@ -8152,20 +7972,20 @@ "type": "tidelift" } ], - "time": "2023-03-08T13:26:56+00:00" + "time": "2024-06-12T14:39:25+00:00" }, { "name": "netresearch/jsonmapper", - "version": "v4.4.1", + "version": "v4.5.0", "source": { "type": "git", "url": "https://github.com/cweiske/jsonmapper.git", - "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0" + "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/132c75c7dd83e45353ebb9c6c9f591952995bbf0", - "reference": "132c75c7dd83e45353ebb9c6c9f591952995bbf0", + "url": "https://api.github.com/repos/cweiske/jsonmapper/zipball/8e76efb98ee8b6afc54687045e1b8dba55ac76e5", + "reference": "8e76efb98ee8b6afc54687045e1b8dba55ac76e5", "shasum": "" }, "require": { @@ -8201,9 +8021,9 @@ "support": { "email": "cweiske@cweiske.de", "issues": "https://github.com/cweiske/jsonmapper/issues", - "source": "https://github.com/cweiske/jsonmapper/tree/v4.4.1" + "source": "https://github.com/cweiske/jsonmapper/tree/v4.5.0" }, - "time": "2024-01-31T06:18:54+00:00" + "time": "2024-09-08T10:13:13+00:00" }, { "name": "nette/di", @@ -8346,21 +8166,21 @@ }, { "name": "nette/neon", - "version": "v3.4.1", + "version": "v3.4.4", "source": { "type": "git", "url": "https://github.com/nette/neon.git", - "reference": "457bfbf0560f600b30d9df4233af382a478bb44d" + "reference": "3411aa86b104e2d5b7e760da4600865ead963c3c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/neon/zipball/457bfbf0560f600b30d9df4233af382a478bb44d", - "reference": "457bfbf0560f600b30d9df4233af382a478bb44d", + "url": "https://api.github.com/repos/nette/neon/zipball/3411aa86b104e2d5b7e760da4600865ead963c3c", + "reference": "3411aa86b104e2d5b7e760da4600865ead963c3c", "shasum": "" }, "require": { "ext-json": "*", - "php": "8.0 - 8.3" + "php": "8.0 - 8.4" }, "require-dev": { "nette/tester": "^2.4", @@ -8408,27 +8228,27 @@ ], "support": { "issues": "https://github.com/nette/neon/issues", - "source": "https://github.com/nette/neon/tree/v3.4.1" + "source": "https://github.com/nette/neon/tree/v3.4.4" }, - "time": "2023-09-27T08:59:11+00:00" + "time": "2024-10-04T22:00:08+00:00" }, { "name": "nette/php-generator", - "version": "v4.1.5", + "version": "v4.1.6", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "690b00d81d42d5633e4457c43ef9754573b6f9d6" + "reference": "c90961e782ae86e517fe5ed732eb2b512945565b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/690b00d81d42d5633e4457c43ef9754573b6f9d6", - "reference": "690b00d81d42d5633e4457c43ef9754573b6f9d6", + "url": "https://api.github.com/repos/nette/php-generator/zipball/c90961e782ae86e517fe5ed732eb2b512945565b", + "reference": "c90961e782ae86e517fe5ed732eb2b512945565b", "shasum": "" }, "require": { "nette/utils": "^3.2.9 || ^4.0", - "php": "8.0 - 8.3" + "php": "8.0 - 8.4" }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", @@ -8477,9 +8297,9 @@ ], "support": { "issues": "https://github.com/nette/php-generator/issues", - "source": "https://github.com/nette/php-generator/tree/v4.1.5" + "source": "https://github.com/nette/php-generator/tree/v4.1.6" }, - "time": "2024-05-12T17:31:02+00:00" + "time": "2024-09-10T09:31:55+00:00" }, { "name": "nette/robot-loader", @@ -8759,40 +8579,40 @@ }, { "name": "nunomaduro/collision", - "version": "v7.10.0", + "version": "v7.11.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/collision.git", - "reference": "49ec67fa7b002712da8526678abd651c09f375b2" + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/49ec67fa7b002712da8526678abd651c09f375b2", - "reference": "49ec67fa7b002712da8526678abd651c09f375b2", + "url": "https://api.github.com/repos/nunomaduro/collision/zipball/994ea93df5d4132f69d3f1bd74730509df6e8a05", + "reference": "994ea93df5d4132f69d3f1bd74730509df6e8a05", "shasum": "" }, "require": { - "filp/whoops": "^2.15.3", + "filp/whoops": "^2.16.0", "nunomaduro/termwind": "^1.15.1", "php": "^8.1.0", - "symfony/console": "^6.3.4" + "symfony/console": "^6.4.12" }, "conflict": { "laravel/framework": ">=11.0.0" }, "require-dev": { - "brianium/paratest": "^7.3.0", - "laravel/framework": "^10.28.0", - "laravel/pint": "^1.13.3", - "laravel/sail": "^1.25.0", - "laravel/sanctum": "^3.3.1", - "laravel/tinker": "^2.8.2", - "nunomaduro/larastan": "^2.6.4", - "orchestra/testbench-core": "^8.13.0", - "pestphp/pest": "^2.23.2", - "phpunit/phpunit": "^10.4.1", - "sebastian/environment": "^6.0.1", - "spatie/laravel-ignition": "^2.3.1" + "brianium/paratest": "^7.3.1", + "laravel/framework": "^10.48.22", + "laravel/pint": "^1.18.1", + "laravel/sail": "^1.36.0", + "laravel/sanctum": "^3.3.3", + "laravel/tinker": "^2.10.0", + "nunomaduro/larastan": "^2.9.8", + "orchestra/testbench-core": "^8.28.3", + "pestphp/pest": "^2.35.1", + "phpunit/phpunit": "^10.5.36", + "sebastian/environment": "^6.1.0", + "spatie/laravel-ignition": "^2.8.0" }, "type": "library", "extra": { @@ -8851,37 +8671,36 @@ "type": "patreon" } ], - "time": "2023-10-11T15:45:01+00:00" + "time": "2024-10-15T15:12:40+00:00" }, { "name": "nunomaduro/termwind", - "version": "v1.15.1", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/nunomaduro/termwind.git", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc" + "reference": "dcf1ec3dfa36137b7ce41d43866644a7ab8fc257" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/8ab0b32c8caa4a2e09700ea32925441385e4a5dc", - "reference": "8ab0b32c8caa4a2e09700ea32925441385e4a5dc", + "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/dcf1ec3dfa36137b7ce41d43866644a7ab8fc257", + "reference": "dcf1ec3dfa36137b7ce41d43866644a7ab8fc257", "shasum": "" }, "require": { "ext-mbstring": "*", - "php": "^8.0", - "symfony/console": "^5.3.0|^6.0.0" + "php": "^8.1", + "symfony/console": "^6.4.12" }, "require-dev": { - "ergebnis/phpstan-rules": "^1.0.", - "illuminate/console": "^8.0|^9.0", - "illuminate/support": "^8.0|^9.0", - "laravel/pint": "^1.0.0", - "pestphp/pest": "^1.21.0", - "pestphp/pest-plugin-mock": "^1.0", - "phpstan/phpstan": "^1.4.6", - "phpstan/phpstan-strict-rules": "^1.1.0", - "symfony/var-dumper": "^5.2.7|^6.0.0", + "illuminate/console": "^10.48.22", + "illuminate/support": "^10.48.22", + "laravel/pint": "^1.18.1", + "pestphp/pest": "^2", + "pestphp/pest-plugin-mock": "2.0.0", + "phpstan/phpstan": "^1.12.6", + "phpstan/phpstan-strict-rules": "^1.6.1", + "symfony/var-dumper": "^6.4.11", "thecodingmachine/phpstan-strict-rules": "^1.0.0" }, "type": "library", @@ -8921,7 +8740,7 @@ ], "support": { "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v1.15.1" + "source": "https://github.com/nunomaduro/termwind/tree/v1.16.0" }, "funding": [ { @@ -8937,36 +8756,36 @@ "type": "github" } ], - "time": "2023-02-08T01:06:31+00:00" + "time": "2024-10-15T15:27:12+00:00" }, { "name": "ocramius/package-versions", - "version": "2.8.0", + "version": "2.9.0", "source": { "type": "git", "url": "https://github.com/Ocramius/PackageVersions.git", - "reference": "7b5821f854cf1e6753c4ed7ceb3b11ae83bbad4e" + "reference": "b3397b9b4578989929d3bc2602c26fe19f035095" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/7b5821f854cf1e6753c4ed7ceb3b11ae83bbad4e", - "reference": "7b5821f854cf1e6753c4ed7ceb3b11ae83bbad4e", + "url": "https://api.github.com/repos/Ocramius/PackageVersions/zipball/b3397b9b4578989929d3bc2602c26fe19f035095", + "reference": "b3397b9b4578989929d3bc2602c26fe19f035095", "shasum": "" }, "require": { "composer-runtime-api": "^2.2.0", - "php": "~8.1.0 || ~8.2.0 || ~8.3.0" + "php": "~8.1.0 || ~8.2.0 || ~8.3.0 || ~8.4.0" }, "replace": { "composer/package-versions-deprecated": "*" }, "require-dev": { - "composer/composer": "^2.6.3", + "composer/composer": "^2.7.7", "doctrine/coding-standard": "^12.0.0", "ext-zip": "^1.15.0", - "phpunit/phpunit": "^9.6.12", - "roave/infection-static-analysis-plugin": "^1.33", - "vimeo/psalm": "^5.15.0" + "phpunit/phpunit": "^9.6.20", + "roave/infection-static-analysis-plugin": "^1.35.0", + "vimeo/psalm": "^5.25.0" }, "type": "library", "autoload": { @@ -8987,7 +8806,7 @@ "description": "Provides efficient querying for installed package versions (no runtime IO)", "support": { "issues": "https://github.com/Ocramius/PackageVersions/issues", - "source": "https://github.com/Ocramius/PackageVersions/tree/2.8.0" + "source": "https://github.com/Ocramius/PackageVersions/tree/2.9.0" }, "funding": [ { @@ -8999,7 +8818,7 @@ "type": "tidelift" } ], - "time": "2023-09-15T11:02:59+00:00" + "time": "2024-08-04T10:04:51+00:00" }, { "name": "ondram/ci-detector", @@ -9605,16 +9424,16 @@ }, { "name": "phpdocumentor/reflection-docblock", - "version": "5.4.0", + "version": "5.4.1", "source": { "type": "git", "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "298d2febfe79d03fe714eb871d5538da55205b1a" + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/298d2febfe79d03fe714eb871d5538da55205b1a", - "reference": "298d2febfe79d03fe714eb871d5538da55205b1a", + "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", + "reference": "9d07b3f7fdcf5efec5d1609cba3c19c5ea2bdc9c", "shasum": "" }, "require": { @@ -9663,9 +9482,9 @@ "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.4.0" + "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.4.1" }, - "time": "2024-04-09T21:13:58+00:00" + "time": "2024-05-21T05:55:05+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -9727,16 +9546,16 @@ }, { "name": "phpstan/phpdoc-parser", - "version": "1.29.0", + "version": "1.33.0", "source": { "type": "git", "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc" + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/536889f2b340489d328f5ffb7b02bb6b183ddedc", - "reference": "536889f2b340489d328f5ffb7b02bb6b183ddedc", + "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/82a311fd3690fb2bf7b64d5c98f912b3dd746140", + "reference": "82a311fd3690fb2bf7b64d5c98f912b3dd746140", "shasum": "" }, "require": { @@ -9768,22 +9587,22 @@ "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/1.29.0" + "source": "https://github.com/phpstan/phpdoc-parser/tree/1.33.0" }, - "time": "2024-05-06T12:04:23+00:00" + "time": "2024-10-13T11:25:22+00:00" }, { "name": "phpstan/phpstan", - "version": "1.11.1", + "version": "1.12.7", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b" + "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/e524358f930e41a2b4cca1320e3b04fc26b39e0b", - "reference": "e524358f930e41a2b4cca1320e3b04fc26b39e0b", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", + "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", "shasum": "" }, "require": { @@ -9828,25 +9647,25 @@ "type": "github" } ], - "time": "2024-05-15T08:00:59+00:00" + "time": "2024-10-18T11:12:07+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", - "version": "1.2.0", + "version": "1.2.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-deprecation-rules.git", - "reference": "fa8cce7720fa782899a0aa97b6a41225d1bb7b26" + "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/fa8cce7720fa782899a0aa97b6a41225d1bb7b26", - "reference": "fa8cce7720fa782899a0aa97b6a41225d1bb7b26", + "url": "https://api.github.com/repos/phpstan/phpstan-deprecation-rules/zipball/f94d246cc143ec5a23da868f8f7e1393b50eaa82", + "reference": "f94d246cc143ec5a23da868f8f7e1393b50eaa82", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.11" + "phpstan/phpstan": "^1.12" }, "require-dev": { "php-parallel-lint/php-parallel-lint": "^1.2", @@ -9873,34 +9692,34 @@ "description": "PHPStan rules for detecting usage of deprecated classes, methods, properties, constants and traits.", "support": { "issues": "https://github.com/phpstan/phpstan-deprecation-rules/issues", - "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.0" + "source": "https://github.com/phpstan/phpstan-deprecation-rules/tree/1.2.1" }, - "time": "2024-04-20T06:39:48+00:00" + "time": "2024-09-11T15:52:35+00:00" }, { "name": "phpstan/phpstan-mockery", - "version": "1.1.2", + "version": "1.1.3", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-mockery.git", - "reference": "88ae85931768efd3aaf3cce4cb9cb54c4d157d03" + "reference": "98cac6e256b4ee60fdeb26a7dd81bb271b454e80" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-mockery/zipball/88ae85931768efd3aaf3cce4cb9cb54c4d157d03", - "reference": "88ae85931768efd3aaf3cce4cb9cb54c4d157d03", + "url": "https://api.github.com/repos/phpstan/phpstan-mockery/zipball/98cac6e256b4ee60fdeb26a7dd81bb271b454e80", + "reference": "98cac6e256b4ee60fdeb26a7dd81bb271b454e80", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.10" + "phpstan/phpstan": "^1.12" }, "require-dev": { - "mockery/mockery": "^1.2.4", + "mockery/mockery": "^1.6.11", "nikic/php-parser": "^4.13.0", "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/phpstan-phpunit": "^1.0", - "phpstan/phpstan-strict-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.4", + "phpstan/phpstan-strict-rules": "^1.6", "phpunit/phpunit": "^9.5" }, "type": "phpstan-extension", @@ -9923,9 +9742,9 @@ "description": "PHPStan Mockery extension", "support": { "issues": "https://github.com/phpstan/phpstan-mockery/issues", - "source": "https://github.com/phpstan/phpstan-mockery/tree/1.1.2" + "source": "https://github.com/phpstan/phpstan-mockery/tree/1.1.3" }, - "time": "2024-01-10T13:50:05+00:00" + "time": "2024-09-11T15:47:29+00:00" }, { "name": "phpstan/phpstan-phpunit", @@ -9981,21 +9800,21 @@ }, { "name": "phpstan/phpstan-strict-rules", - "version": "1.6.0", + "version": "1.6.1", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan-strict-rules.git", - "reference": "363f921dd8441777d4fc137deb99beb486c77df1" + "reference": "daeec748b53de80a97498462513066834ec28f8b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/363f921dd8441777d4fc137deb99beb486c77df1", - "reference": "363f921dd8441777d4fc137deb99beb486c77df1", + "url": "https://api.github.com/repos/phpstan/phpstan-strict-rules/zipball/daeec748b53de80a97498462513066834ec28f8b", + "reference": "daeec748b53de80a97498462513066834ec28f8b", "shasum": "" }, "require": { "php": "^7.2 || ^8.0", - "phpstan/phpstan": "^1.11" + "phpstan/phpstan": "^1.12.4" }, "require-dev": { "nikic/php-parser": "^4.13.0", @@ -10024,38 +9843,38 @@ "description": "Extra strict and opinionated rules for PHPStan", "support": { "issues": "https://github.com/phpstan/phpstan-strict-rules/issues", - "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.6.0" + "source": "https://github.com/phpstan/phpstan-strict-rules/tree/1.6.1" }, - "time": "2024-04-20T06:37:51+00:00" + "time": "2024-09-20T14:04:44+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.14", + "version": "10.1.16", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b" + "reference": "7e308268858ed6baedc8704a304727d20bc07c77" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", - "reference": "e3f51450ebffe8e0efdf7346ae966a656f7d5e5b", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/7e308268858ed6baedc8704a304727d20bc07c77", + "reference": "7e308268858ed6baedc8704a304727d20bc07c77", "shasum": "" }, "require": { "ext-dom": "*", "ext-libxml": "*", "ext-xmlwriter": "*", - "nikic/php-parser": "^4.18 || ^5.0", + "nikic/php-parser": "^4.19.1 || ^5.1.0", "php": ">=8.1", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-text-template": "^3.0", - "sebastian/code-unit-reverse-lookup": "^3.0", - "sebastian/complexity": "^3.0", - "sebastian/environment": "^6.0", - "sebastian/lines-of-code": "^2.0", - "sebastian/version": "^4.0", - "theseer/tokenizer": "^1.2.0" + "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": "^10.1" @@ -10067,7 +9886,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -10096,7 +9915,7 @@ "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/10.1.14" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/10.1.16" }, "funding": [ { @@ -10104,7 +9923,7 @@ "type": "github" } ], - "time": "2024-03-12T15:33:41+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10351,16 +10170,16 @@ }, { "name": "phpunit/phpunit", - "version": "10.5.20", + "version": "10.5.37", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3" + "reference": "c7cffa0efa2b70c22366523e6d804c9419eb2400" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/547d314dc24ec1e177720d45c6263fb226cc2ae3", - "reference": "547d314dc24ec1e177720d45c6263fb226cc2ae3", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/c7cffa0efa2b70c22366523e6d804c9419eb2400", + "reference": "c7cffa0efa2b70c22366523e6d804c9419eb2400", "shasum": "" }, "require": { @@ -10370,26 +10189,26 @@ "ext-mbstring": "*", "ext-xml": "*", "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", + "myclabs/deep-copy": "^1.12.0", + "phar-io/manifest": "^2.0.4", + "phar-io/version": "^3.2.1", "php": ">=8.1", - "phpunit/php-code-coverage": "^10.1.5", - "phpunit/php-file-iterator": "^4.0", - "phpunit/php-invoker": "^4.0", - "phpunit/php-text-template": "^3.0", - "phpunit/php-timer": "^6.0", - "sebastian/cli-parser": "^2.0", - "sebastian/code-unit": "^2.0", - "sebastian/comparator": "^5.0", - "sebastian/diff": "^5.0", - "sebastian/environment": "^6.0", - "sebastian/exporter": "^5.1", - "sebastian/global-state": "^6.0.1", - "sebastian/object-enumerator": "^5.0", - "sebastian/recursion-context": "^5.0", - "sebastian/type": "^4.0", - "sebastian/version": "^4.0" + "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.3", + "sebastian/diff": "^5.1.1", + "sebastian/environment": "^6.1.0", + "sebastian/exporter": "^5.1.2", + "sebastian/global-state": "^6.0.2", + "sebastian/object-enumerator": "^5.0.0", + "sebastian/recursion-context": "^5.0.0", + "sebastian/type": "^4.0.0", + "sebastian/version": "^4.0.1" }, "suggest": { "ext-soap": "To be able to generate mocks based on WSDL files" @@ -10432,7 +10251,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/phpunit/issues", "security": "https://github.com/sebastianbergmann/phpunit/security/policy", - "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.20" + "source": "https://github.com/sebastianbergmann/phpunit/tree/10.5.37" }, "funding": [ { @@ -10448,7 +10267,7 @@ "type": "tidelift" } ], - "time": "2024-04-24T06:32:35+00:00" + "time": "2024-10-19T13:03:41+00:00" }, { "name": "psalm/plugin-mockery", @@ -11026,28 +10845,28 @@ }, { "name": "react/dns", - "version": "v1.12.0", + "version": "v1.13.0", "source": { "type": "git", "url": "https://github.com/reactphp/dns.git", - "reference": "c134600642fa615b46b41237ef243daa65bb64ec" + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/c134600642fa615b46b41237ef243daa65bb64ec", - "reference": "c134600642fa615b46b41237ef243daa65bb64ec", + "url": "https://api.github.com/repos/reactphp/dns/zipball/eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", + "reference": "eb8ae001b5a455665c89c1df97f6fb682f8fb0f5", "shasum": "" }, "require": { "php": ">=5.3.0", "react/cache": "^1.0 || ^0.6 || ^0.5", "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7 || ^1.2.1" + "react/promise": "^3.2 || ^2.7 || ^1.2.1" }, "require-dev": { "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4 || ^3 || ^2", - "react/promise-timer": "^1.9" + "react/async": "^4.3 || ^3 || ^2", + "react/promise-timer": "^1.11" }, "type": "library", "autoload": { @@ -11090,7 +10909,7 @@ ], "support": { "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.12.0" + "source": "https://github.com/reactphp/dns/tree/v1.13.0" }, "funding": [ { @@ -11098,7 +10917,7 @@ "type": "open_collective" } ], - "time": "2023-11-29T12:41:06+00:00" + "time": "2024-06-13T14:18:03+00:00" }, { "name": "react/promise-stream", @@ -11181,25 +11000,25 @@ }, { "name": "react/promise-timer", - "version": "v1.10.0", + "version": "v1.11.0", "source": { "type": "git", "url": "https://github.com/reactphp/promise-timer.git", - "reference": "4cb85c1c2125390748e3908120bb82feb99fe766" + "reference": "4f70306ed66b8b44768941ca7f142092600fafc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/4cb85c1c2125390748e3908120bb82feb99fe766", - "reference": "4cb85c1c2125390748e3908120bb82feb99fe766", + "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/4f70306ed66b8b44768941ca7f142092600fafc1", + "reference": "4f70306ed66b8b44768941ca7f142092600fafc1", "shasum": "" }, "require": { "php": ">=5.3", "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" + "react/promise": "^3.2 || ^2.7.0 || ^1.2.1" }, "require-dev": { - "phpunit/phpunit": "^9.5 || ^5.7 || ^4.8.35" + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" }, "type": "library", "autoload": { @@ -11248,7 +11067,7 @@ ], "support": { "issues": "https://github.com/reactphp/promise-timer/issues", - "source": "https://github.com/reactphp/promise-timer/tree/v1.10.0" + "source": "https://github.com/reactphp/promise-timer/tree/v1.11.0" }, "funding": [ { @@ -11256,35 +11075,35 @@ "type": "open_collective" } ], - "time": "2023-07-20T15:40:28+00:00" + "time": "2024-06-04T14:27:45+00:00" }, { "name": "react/socket", - "version": "v1.15.0", + "version": "v1.16.0", "source": { "type": "git", "url": "https://github.com/reactphp/socket.git", - "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038" + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/216d3aec0b87f04a40ca04f481e6af01bdd1d038", - "reference": "216d3aec0b87f04a40ca04f481e6af01bdd1d038", + "url": "https://api.github.com/repos/reactphp/socket/zipball/23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", + "reference": "23e4ff33ea3e160d2d1f59a0e6050e4b0fb0eac1", "shasum": "" }, "require": { "evenement/evenement": "^3.0 || ^2.0 || ^1.0", "php": ">=5.3.0", - "react/dns": "^1.11", + "react/dns": "^1.13", "react/event-loop": "^1.2", - "react/promise": "^3 || ^2.6 || ^1.2.1", - "react/stream": "^1.2" + "react/promise": "^3.2 || ^2.6 || ^1.2.1", + "react/stream": "^1.4" }, "require-dev": { "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36", - "react/async": "^4 || ^3 || ^2", + "react/async": "^4.3 || ^3.3 || ^2", "react/promise-stream": "^1.4", - "react/promise-timer": "^1.10" + "react/promise-timer": "^1.11" }, "type": "library", "autoload": { @@ -11328,7 +11147,7 @@ ], "support": { "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.15.0" + "source": "https://github.com/reactphp/socket/tree/v1.16.0" }, "funding": [ { @@ -11336,7 +11155,7 @@ "type": "open_collective" } ], - "time": "2023-12-15T11:02:10+00:00" + "time": "2024-07-26T10:38:09+00:00" }, { "name": "revolt/event-loop", @@ -11595,16 +11414,16 @@ }, { "name": "sanmai/pipeline", - "version": "v6.10", + "version": "v6.11", "source": { "type": "git", "url": "https://github.com/sanmai/pipeline.git", - "reference": "cbd2ea30ba8bef596b8dad1adb9c92fb2987e430" + "reference": "a5fa2a6c6ca93efa37e7c24aab72f47448a6b110" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sanmai/pipeline/zipball/cbd2ea30ba8bef596b8dad1adb9c92fb2987e430", - "reference": "cbd2ea30ba8bef596b8dad1adb9c92fb2987e430", + "url": "https://api.github.com/repos/sanmai/pipeline/zipball/a5fa2a6c6ca93efa37e7c24aab72f47448a6b110", + "reference": "a5fa2a6c6ca93efa37e7c24aab72f47448a6b110", "shasum": "" }, "require": { @@ -11648,7 +11467,7 @@ "description": "General-purpose collections pipeline", "support": { "issues": "https://github.com/sanmai/pipeline/issues", - "source": "https://github.com/sanmai/pipeline/tree/v6.10" + "source": "https://github.com/sanmai/pipeline/tree/v6.11" }, "funding": [ { @@ -11656,7 +11475,7 @@ "type": "github" } ], - "time": "2024-03-16T01:33:30+00:00" + "time": "2024-06-15T03:11:19+00:00" }, { "name": "sebastian/cli-parser", @@ -11828,16 +11647,16 @@ }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", + "reference": "a18251eb0b7a2dcd2f7aa3d6078b18545ef0558e", "shasum": "" }, "require": { @@ -11848,7 +11667,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -11893,7 +11712,7 @@ "support": { "issues": "https://github.com/sebastianbergmann/comparator/issues", "security": "https://github.com/sebastianbergmann/comparator/security/policy", - "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.1" + "source": "https://github.com/sebastianbergmann/comparator/tree/5.0.3" }, "funding": [ { @@ -11901,7 +11720,7 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", @@ -12786,16 +12605,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.9.2", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480" + "reference": "62d32998e820bddc40f99f8251958aed187a5c9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/aac1f6f347a5c5ac6bc98ad395007df00990f480", - "reference": "aac1f6f347a5c5ac6bc98ad395007df00990f480", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/62d32998e820bddc40f99f8251958aed187a5c9c", + "reference": "62d32998e820bddc40f99f8251958aed187a5c9c", "shasum": "" }, "require": { @@ -12862,26 +12681,26 @@ "type": "open_collective" } ], - "time": "2024-04-23T20:25:34+00:00" + "time": "2024-09-18T10:38:58+00:00" }, { "name": "symfony/config", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "f66f908a975500aa4594258bf454dc66e3939eac" + "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/f66f908a975500aa4594258bf454dc66e3939eac", - "reference": "f66f908a975500aa4594258bf454dc66e3939eac", + "url": "https://api.github.com/repos/symfony/config/zipball/2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", + "reference": "2210fc99fa42a259eb6c89d1f724ce0c4d62d5d2", "shasum": "" }, "require": { "php": ">=8.2", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/filesystem": "^6.4|^7.0", + "symfony/filesystem": "^7.1", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -12921,7 +12740,7 @@ "description": "Helps you find, load, combine, autofill and validate configuration values of any kind", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/config/tree/v7.0.7" + "source": "https://github.com/symfony/config/tree/v7.1.1" }, "funding": [ { @@ -12937,27 +12756,27 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/dependency-injection", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "4db1314337f4dd864113f88e08c9a7f98b1c1324" + "reference": "38465f925ec4e0707b090e9147c65869837d639d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4db1314337f4dd864113f88e08c9a7f98b1c1324", - "reference": "4db1314337f4dd864113f88e08c9a7f98b1c1324", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/38465f925ec4e0707b090e9147c65869837d639d", + "reference": "38465f925ec4e0707b090e9147c65869837d639d", "shasum": "" }, "require": { "php": ">=8.2", "psr/container": "^1.1|^2.0", "symfony/deprecation-contracts": "^2.5|^3", - "symfony/service-contracts": "^3.3", + "symfony/service-contracts": "^3.5", "symfony/var-exporter": "^6.4|^7.0" }, "conflict": { @@ -13001,7 +12820,7 @@ "description": "Allows you to standardize and centralize the way objects are constructed in your application", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dependency-injection/tree/v7.0.7" + "source": "https://github.com/symfony/dependency-injection/tree/v7.1.5" }, "funding": [ { @@ -13017,25 +12836,24 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "symfony/polyfill-php83", - "version": "v1.29.0", + "version": "v1.31.0", "source": { "type": "git", "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/2fb86d65e2d424369ad2905e83b236a8805ba491", + "reference": "2fb86d65e2d424369ad2905e83b236a8805ba491", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.2" }, "type": "library", "extra": { @@ -13078,7 +12896,7 @@ "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + "source": "https://github.com/symfony/polyfill-php83/tree/v1.31.0" }, "funding": [ { @@ -13094,20 +12912,20 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-09-09T11:45:10+00:00" }, { "name": "symfony/property-access", - "version": "v7.0.7", + "version": "v7.1.4", "source": { "type": "git", "url": "https://github.com/symfony/property-access.git", - "reference": "8661b861480d2807eb2789ff99d034c0c71ab955" + "reference": "6c709f97103355016e5782d0622437ae381012ad" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-access/zipball/8661b861480d2807eb2789ff99d034c0c71ab955", - "reference": "8661b861480d2807eb2789ff99d034c0c71ab955", + "url": "https://api.github.com/repos/symfony/property-access/zipball/6c709f97103355016e5782d0622437ae381012ad", + "reference": "6c709f97103355016e5782d0622437ae381012ad", "shasum": "" }, "require": { @@ -13154,7 +12972,7 @@ "reflection" ], "support": { - "source": "https://github.com/symfony/property-access/tree/v7.0.7" + "source": "https://github.com/symfony/property-access/tree/v7.1.4" }, "funding": [ { @@ -13170,25 +12988,26 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-08-30T16:12:47+00:00" }, { "name": "symfony/property-info", - "version": "v7.0.7", + "version": "v7.1.3", "source": { "type": "git", "url": "https://github.com/symfony/property-info.git", - "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532" + "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/property-info/zipball/f0bdb46e19ab308527b324b7ec36161f6880a532", - "reference": "f0bdb46e19ab308527b324b7ec36161f6880a532", + "url": "https://api.github.com/repos/symfony/property-info/zipball/88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", + "reference": "88a279df2db5b7919cac6f35d6a5d1d7147e6a9b", "shasum": "" }, "require": { "php": ">=8.2", - "symfony/string": "^6.4|^7.0" + "symfony/string": "^6.4|^7.0", + "symfony/type-info": "^7.1" }, "conflict": { "phpdocumentor/reflection-docblock": "<5.2", @@ -13237,7 +13056,7 @@ "validator" ], "support": { - "source": "https://github.com/symfony/property-info/tree/v7.0.7" + "source": "https://github.com/symfony/property-info/tree/v7.1.3" }, "funding": [ { @@ -13253,24 +13072,25 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-07-26T07:36:36+00:00" }, { "name": "symfony/serializer", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "08f0c517acf4b12dfc0d3963cd12f7b8023aea31" + "reference": "71d6e1f70f00752d1469d0f5e83b0a51716f288b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/08f0c517acf4b12dfc0d3963cd12f7b8023aea31", - "reference": "08f0c517acf4b12dfc0d3963cd12f7b8023aea31", + "url": "https://api.github.com/repos/symfony/serializer/zipball/71d6e1f70f00752d1469d0f5e83b0a51716f288b", + "reference": "71d6e1f70f00752d1469d0f5e83b0a51716f288b", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8" }, "conflict": { @@ -13279,12 +13099,14 @@ "symfony/dependency-injection": "<6.4", "symfony/property-access": "<6.4", "symfony/property-info": "<6.4", + "symfony/type-info": "<7.1.5", "symfony/uid": "<6.4", "symfony/validator": "<6.4", "symfony/yaml": "<6.4" }, "require-dev": { "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", + "phpstan/phpdoc-parser": "^1.0", "seld/jsonlint": "^1.10", "symfony/cache": "^6.4|^7.0", "symfony/config": "^6.4|^7.0", @@ -13300,6 +13122,7 @@ "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", "symfony/translation-contracts": "^2.5|^3", + "symfony/type-info": "^7.1.5", "symfony/uid": "^6.4|^7.0", "symfony/validator": "^6.4|^7.0", "symfony/var-dumper": "^6.4|^7.0", @@ -13332,7 +13155,7 @@ "description": "Handles serializing and deserializing data structures, including object graphs, into array structures or other formats like XML and JSON.", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/serializer/tree/v7.0.7" + "source": "https://github.com/symfony/serializer/tree/v7.1.5" }, "funding": [ { @@ -13348,20 +13171,20 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-09-20T12:13:15+00:00" }, { "name": "symfony/stopwatch", - "version": "v7.0.7", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/stopwatch.git", - "reference": "41a7a24aa1dc82adf46a06bc292d1923acfe6b84" + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/stopwatch/zipball/41a7a24aa1dc82adf46a06bc292d1923acfe6b84", - "reference": "41a7a24aa1dc82adf46a06bc292d1923acfe6b84", + "url": "https://api.github.com/repos/symfony/stopwatch/zipball/5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", + "reference": "5b75bb1ac2ba1b9d05c47fc4b3046a625377d23d", "shasum": "" }, "require": { @@ -13394,7 +13217,7 @@ "description": "Provides a way to profile code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/stopwatch/tree/v7.0.7" + "source": "https://github.com/symfony/stopwatch/tree/v7.1.1" }, "funding": [ { @@ -13410,7 +13233,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/translation-contracts", @@ -13490,22 +13313,105 @@ ], "time": "2024-04-18T09:32:20+00:00" }, + { + "name": "symfony/type-info", + "version": "v7.1.5", + "source": { + "type": "git", + "url": "https://github.com/symfony/type-info.git", + "reference": "9f6094aa900d2c06bd61576a6f279d4ac441515f" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/type-info/zipball/9f6094aa900d2c06bd61576a6f279d4ac441515f", + "reference": "9f6094aa900d2c06bd61576a6f279d4ac441515f", + "shasum": "" + }, + "require": { + "php": ">=8.2", + "psr/container": "^1.1|^2.0" + }, + "conflict": { + "phpstan/phpdoc-parser": "<1.0", + "symfony/dependency-injection": "<6.4", + "symfony/property-info": "<6.4" + }, + "require-dev": { + "phpstan/phpdoc-parser": "^1.0", + "symfony/dependency-injection": "^6.4|^7.0", + "symfony/property-info": "^6.4|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\TypeInfo\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Mathias Arlaud", + "email": "mathias.arlaud@gmail.com" + }, + { + "name": "Baptiste LEDUC", + "email": "baptiste.leduc@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Extracts PHP types information.", + "homepage": "https://symfony.com", + "keywords": [ + "PHPStan", + "phpdoc", + "symfony", + "type" + ], + "support": { + "source": "https://github.com/symfony/type-info/tree/v7.1.5" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-19T21:48:23+00:00" + }, { "name": "symfony/validator", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "ab4e75b9d23ba70e78480aecbe4d8da15adf10eb" + "reference": "e57592782dc2a86997477f28164c51af53512ad8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/ab4e75b9d23ba70e78480aecbe4d8da15adf10eb", - "reference": "ab4e75b9d23ba70e78480aecbe4d8da15adf10eb", + "url": "https://api.github.com/repos/symfony/validator/zipball/e57592782dc2a86997477f28164c51af53512ad8", + "reference": "e57592782dc2a86997477f28164c51af53512ad8", "shasum": "" }, "require": { "php": ">=8.2", + "symfony/deprecation-contracts": "^2.5|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", "symfony/polyfill-php83": "^1.27", @@ -13538,6 +13444,7 @@ "symfony/property-access": "^6.4|^7.0", "symfony/property-info": "^6.4|^7.0", "symfony/translation": "^6.4.3|^7.0.3", + "symfony/type-info": "^7.1", "symfony/yaml": "^6.4|^7.0" }, "type": "library", @@ -13546,7 +13453,8 @@ "Symfony\\Component\\Validator\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -13566,7 +13474,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.0.7" + "source": "https://github.com/symfony/validator/tree/v7.1.5" }, "funding": [ { @@ -13582,20 +13490,20 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.7", + "version": "v7.1.2", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078" + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/cdecc0022e40e90340ba1a59a3d5ccf069777078", - "reference": "cdecc0022e40e90340ba1a59a3d5ccf069777078", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/b80a669a2264609f07f1667f891dbfca25eba44c", + "reference": "b80a669a2264609f07f1667f891dbfca25eba44c", "shasum": "" }, "require": { @@ -13642,7 +13550,7 @@ "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.7" + "source": "https://github.com/symfony/var-exporter/tree/v7.1.2" }, "funding": [ { @@ -13658,20 +13566,20 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-06-28T08:00:31+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.7", + "version": "v7.1.5", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c" + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", - "reference": "0d3916ae69ea28b59d94b60c4f2b50f4e25adb5c", + "url": "https://api.github.com/repos/symfony/yaml/zipball/4e561c316e135e053bd758bf3b3eb291d9919de4", + "reference": "4e561c316e135e053bd758bf3b3eb291d9919de4", "shasum": "" }, "require": { @@ -13713,7 +13621,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.7" + "source": "https://github.com/symfony/yaml/tree/v7.1.5" }, "funding": [ { @@ -13729,7 +13637,7 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-09-17T12:49:58+00:00" }, { "name": "thecodingmachine/phpstan-safe-rule", @@ -13895,16 +13803,16 @@ }, { "name": "vimeo/psalm", - "version": "5.24.0", + "version": "5.26.1", "source": { "type": "git", "url": "https://github.com/vimeo/psalm.git", - "reference": "462c80e31c34e58cc4f750c656be3927e80e550e" + "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/vimeo/psalm/zipball/462c80e31c34e58cc4f750c656be3927e80e550e", - "reference": "462c80e31c34e58cc4f750c656be3927e80e550e", + "url": "https://api.github.com/repos/vimeo/psalm/zipball/d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", + "reference": "d747f6500b38ac4f7dfc5edbcae6e4b637d7add0", "shasum": "" }, "require": { @@ -13925,7 +13833,7 @@ "felixfbecker/language-server-protocol": "^1.5.2", "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.16", + "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", "spatie/array-to-xml": "^2.17.0 || ^3.0", @@ -14001,7 +13909,7 @@ "issues": "https://github.com/vimeo/psalm/issues", "source": "https://github.com/vimeo/psalm" }, - "time": "2024-05-01T19:32:08+00:00" + "time": "2024-09-08T18:53:08+00:00" }, { "name": "webmozart/assert", @@ -14110,35 +14018,89 @@ }, "time": "2024-03-07T20:33:40+00:00" }, + { + "name": "wp-cli/php-cli-tools", + "version": "v0.11.16", + "source": { + "type": "git", + "url": "https://github.com/wp-cli/php-cli-tools.git", + "reference": "c32e51a5c9993ad40591bc426b21f5422a5ed293" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/wp-cli/php-cli-tools/zipball/c32e51a5c9993ad40591bc426b21f5422a5ed293", + "reference": "c32e51a5c9993ad40591bc426b21f5422a5ed293", + "shasum": "" + }, + "require": { + "php": ">= 5.3.0" + }, + "type": "library", + "autoload": { + "files": [ + "lib/cli/cli.php" + ], + "psr-0": { + "cli": "lib/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Daniel Bachhuber", + "email": "daniel@handbuilt.co", + "role": "Maintainer" + }, + { + "name": "James Logsdon", + "email": "jlogsdon@php.net", + "role": "Developer" + } + ], + "description": "Console utilities for PHP", + "homepage": "http://github.com/wp-cli/php-cli-tools", + "keywords": [ + "cli", + "console" + ], + "support": { + "issues": "https://github.com/wp-cli/php-cli-tools/issues", + "source": "https://github.com/wp-cli/php-cli-tools/tree/v0.11.16" + }, + "time": "2022-11-03T15:19:26+00:00" + }, { "name": "wyrihaximus/async-test-utilities", - "version": "8.0.4", + "version": "8.0.5", "source": { "type": "git", "url": "https://github.com/WyriHaximus/php-async-test-utilities.git", - "reference": "f179b79170ea6e5ac6aa2374c32d5c5df6ff6452" + "reference": "7eda448d86f64eafafcd0eb1dad76be37b6b48ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-async-test-utilities/zipball/f179b79170ea6e5ac6aa2374c32d5c5df6ff6452", - "reference": "f179b79170ea6e5ac6aa2374c32d5c5df6ff6452", + "url": "https://api.github.com/repos/WyriHaximus/php-async-test-utilities/zipball/7eda448d86f64eafafcd0eb1dad76be37b6b48ea", + "reference": "7eda448d86f64eafafcd0eb1dad76be37b6b48ea", "shasum": "" }, "require": { "php": "^8.2", - "phpunit/phpunit": "^10.5.19", - "react/async": "^4.2.0", + "phpunit/phpunit": "^10.5.25", + "react/async": "^4.3.0", "react/event-loop": "^1.5.0", - "react/promise": "^3.1", + "react/promise": "^3.2.0", "wyrihaximus/phpstan-react": "^1", "wyrihaximus/react-phpunit-run-tests-in-fiber": "^2.0.0", - "wyrihaximus/test-utilities": "^6.0.6" + "wyrihaximus/test-utilities": "^6.0.9" }, "conflict": { "composer/compoer": "<2.6.0" }, "require-dev": { - "react/promise-timer": "^1.10.0" + "react/promise-timer": "^1.11.0" }, "type": "library", "autoload": { @@ -14159,7 +14121,7 @@ "description": "Test utilities for api-clients packages", "support": { "issues": "https://github.com/WyriHaximus/php-async-test-utilities/issues", - "source": "https://github.com/WyriHaximus/php-async-test-utilities/tree/8.0.4" + "source": "https://github.com/WyriHaximus/php-async-test-utilities/tree/8.0.5" }, "funding": [ { @@ -14167,7 +14129,7 @@ "type": "github" } ], - "time": "2024-04-22T15:57:59+00:00" + "time": "2024-07-03T20:07:57+00:00" }, { "name": "wyrihaximus/coding-standard", @@ -14255,25 +14217,25 @@ }, { "name": "wyrihaximus/phpstan-rules-wrapper", - "version": "6.1.0", + "version": "6.3.0", "source": { "type": "git", "url": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper.git", - "reference": "e781d15c0316a8c72599ec50a18fce97aae12c73" + "reference": "43bb2a64c665e26311188ddaa8f13d846fd81e13" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-phpstan-rules-wrapper/zipball/e781d15c0316a8c72599ec50a18fce97aae12c73", - "reference": "e781d15c0316a8c72599ec50a18fce97aae12c73", + "url": "https://api.github.com/repos/WyriHaximus/php-phpstan-rules-wrapper/zipball/43bb2a64c665e26311188ddaa8f13d846fd81e13", + "reference": "43bb2a64c665e26311188ddaa8f13d846fd81e13", "shasum": "" }, "require": { "ergebnis/phpstan-rules": "^2.2.0", "php": "^8.2", - "phpstan/phpstan-deprecation-rules": "^1.2.0", - "phpstan/phpstan-mockery": "^1.1.2", + "phpstan/phpstan-deprecation-rules": "^1.2.1", + "phpstan/phpstan-mockery": "^1.1.3", "phpstan/phpstan-phpunit": "^1.4.0", - "phpstan/phpstan-strict-rules": "^1.6.0", + "phpstan/phpstan-strict-rules": "^1.6.1", "thecodingmachine/phpstan-safe-rule": "^1.2", "thecodingmachine/phpstan-strict-rules": "^1.0" }, @@ -14291,7 +14253,7 @@ "description": "🌯 PHPStan rules wrapper", "support": { "issues": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper/issues", - "source": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper/tree/6.1.0" + "source": "https://github.com/WyriHaximus/php-phpstan-rules-wrapper/tree/6.3.0" }, "funding": [ { @@ -14299,7 +14261,7 @@ "type": "github" } ], - "time": "2024-05-15T05:39:12+00:00" + "time": "2024-09-21T20:05:31+00:00" }, { "name": "wyrihaximus/react-phpunit-run-tests-in-fiber", @@ -14360,26 +14322,27 @@ }, { "name": "wyrihaximus/test-utilities", - "version": "6.0.7", + "version": "6.0.10", "source": { "type": "git", "url": "https://github.com/WyriHaximus/php-test-utilities.git", - "reference": "701bdbd994a56e6bd151098ba9219895bac994c7" + "reference": "0b11ae70b8e3663ccf26582c578fd3264efc498f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/WyriHaximus/php-test-utilities/zipball/701bdbd994a56e6bd151098ba9219895bac994c7", - "reference": "701bdbd994a56e6bd151098ba9219895bac994c7", + "url": "https://api.github.com/repos/WyriHaximus/php-test-utilities/zipball/0b11ae70b8e3663ccf26582c578fd3264efc498f", + "reference": "0b11ae70b8e3663ccf26582c578fd3264efc498f", "shasum": "" }, "require": { "brandembassy/mockery-tools": "^4.1.3", - "ergebnis/composer-normalize": "^2.42.0", - "ergebnis/phpunit-slow-test-detector": "^2.14.0", + "ecoapm/libyear": "^2.3", + "ergebnis/composer-normalize": "^2.43.0", + "ergebnis/phpunit-slow-test-detector": "^2.15.1", "icanhazstring/composer-unused": "^0.8.11", "infection/infection": "^0.27.0", - "maglnet/composer-require-checker": "^4.11.0", - "mockery/mockery": "^1.6.11", + "maglnet/composer-require-checker": "^4.12.0", + "mockery/mockery": "^1.6.12", "nunomaduro/collision": "^7.10.0", "orklah/psalm-insane-comparison": "^2.3.0", "php": "^8.2", @@ -14387,17 +14350,17 @@ "php-parallel-lint/php-console-highlighter": "^1.0", "php-parallel-lint/php-parallel-lint": "^1.4.0", "php-standard-library/psalm-plugin": "^1.1.5 || ^2.2.1", - "phpstan/phpstan": "^1.10.67", - "phpunit/phpunit": "^10.5.20", + "phpstan/phpstan": "^1.12.4", + "phpunit/phpunit": "^10.5.32", "psalm/plugin-mockery": "^1.1", "psalm/plugin-phpunit": "^0.19.0", "roave/backward-compatibility-check": "^8.6.0", "roave/infection-static-analysis-plugin": "^1.33.0", - "squizlabs/php_codesniffer": "^3.9.2", + "squizlabs/php_codesniffer": "^3.10.1", "thecodingmachine/safe": "^2.5.0", - "vimeo/psalm": "^5.23.1", + "vimeo/psalm": "^5.25.0", "wyrihaximus/coding-standard": "^2.14.0", - "wyrihaximus/phpstan-rules-wrapper": "^6.0.1" + "wyrihaximus/phpstan-rules-wrapper": "^6.3.0" }, "conflict": { "composer/compoer": "<2.6.0", @@ -14422,7 +14385,7 @@ "description": "🛠️ Test utilities for api-clients packages", "support": { "issues": "https://github.com/WyriHaximus/php-test-utilities/issues", - "source": "https://github.com/WyriHaximus/php-test-utilities/tree/6.0.7" + "source": "https://github.com/WyriHaximus/php-test-utilities/tree/6.0.10" }, "funding": [ { @@ -14430,15 +14393,13 @@ "type": "github" } ], - "time": "2024-04-25T11:09:56+00:00" + "time": "2024-09-21T21:04:05+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": { "mammatus/app": 20, - "mammatus/kubernetes-attributes": 20, - "mammatus/kubernetes-events": 20, "mammatus/queue-attributes": 20, "mammatus/queue-contracts": 20, "bbqueue/bunny": 20, @@ -14448,6 +14409,7 @@ "prefer-lowest": false, "platform": { "php": "^8.2", + "ext-json": "^8.2", "composer-plugin-api": "^2.0" }, "platform-dev": [], diff --git a/etc/generated_templates/AbstractList_.php.twig b/etc/generated_templates/AbstractList.php.twig similarity index 62% rename from etc/generated_templates/AbstractList_.php.twig rename to etc/generated_templates/AbstractList.php.twig index 3b8ad4e..5fb202c 100644 --- a/etc/generated_templates/AbstractList_.php.twig +++ b/etc/generated_templates/AbstractList.php.twig @@ -10,17 +10,17 @@ use Mammatus\Queue\Worker; /** * Autogenerated file, do not edit. Changes will be overwritten on the next composer (install|update) */ -abstract class AbstractList_ +abstract class AbstractList { /** - * @return iterable + * @return iterable */ final protected function workers(): iterable { {% for worker in workers %} /** @see \{{ worker.class }} */ - yield new Worker( -{% if worker.split_out == true %} + yield '{% if action.splitOut == true %}kubernetes{% else %}internal{% endif %}-{{ worker.class|replace({'\\': '-'}) }}' => new Worker( +{% if worker.splitOut == true %} 'kubernetes', {% else %} 'internal', @@ -28,6 +28,7 @@ abstract class AbstractList_ '{{ worker.consumer.queue }}', {{ worker.consumer.concurrency }}, \{{ worker.class }}::class, + \json_decode('{{ worker.consumer.addOns|json_encode()|raw }}', true), /** @phpstan-ignore-line */ ); {% endfor %} } diff --git a/etc/qa/.phpunit.cache/test-results b/etc/qa/.phpunit.cache/test-results index a326e3e..46e4189 100644 --- a/etc/qa/.phpunit.cache/test-results +++ b/etc/qa/.phpunit.cache/test-results @@ -1 +1 @@ -{"version":1,"defects":{"Mammatus\\Tests\\Cron\\AppTest::runAngry":8,"Mammatus\\Tests\\Cron\\AppTest::runNonAction":8},"times":{"Mammatus\\Tests\\Cron\\AppTest::runHappy":0.053,"Mammatus\\Tests\\Cron\\AppTest::runAngry":0.002,"Mammatus\\Tests\\Cron\\AppTest::runNonAction":0.002}} \ No newline at end of file +{"version":1,"defects":{"Mammatus\\Tests\\Cron\\AppTest::runAngry":8,"Mammatus\\Tests\\Cron\\AppTest::runNonAction":8,"Mammatus\\Tests\\Cron\\AppTest::runHappy":8,"Mammatus\\Tests\\Queue\\Composer\\InstallerTest::generate":7,"Mammatus\\Tests\\Queue\\Composer\\ItemTest::json":7,"Mammatus\\Tests\\Queue\\Kubernetes\\Helm\\CronJobsValuesTest::all":7,"Mammatus\\Tests\\Cron\\ManagerTest::runHappy":8,"Mammatus\\Tests\\Cron\\ManagerTest::runAngry":8,"Mammatus\\Tests\\Cron\\ManagerTest::notAnAction":8,"Mammatus\\Tests\\Queue\\AppTest::runHappy":8,"Mammatus\\Tests\\Queue\\AppTest::runAngry":8,"Mammatus\\Tests\\Queue\\AppTest::runNonAction":8,"Mammatus\\Tests\\Queue\\ManagerTest::runHappy":8,"Mammatus\\Tests\\Queue\\ManagerTest::runAngry":8,"Mammatus\\Tests\\Queue\\ManagerTest::notAnAction":8,"Mammatus\\Tests\\Queue\\ManagerTest::notAnWorker":8,"Mammatus\\Tests\\Queue\\AppTest::notAnWorker":7},"times":{"Mammatus\\Tests\\Cron\\AppTest::runHappy":0.076,"Mammatus\\Tests\\Cron\\AppTest::runAngry":0.002,"Mammatus\\Tests\\Cron\\AppTest::runNonAction":0.002,"Mammatus\\Tests\\Queue\\Composer\\InstallerTest::getSubscribedEvents":0.002,"Mammatus\\Tests\\Queue\\Composer\\InstallerTest::generate":3.56,"Mammatus\\Tests\\Queue\\Composer\\ItemTest::json":0.003,"Mammatus\\Tests\\Queue\\Kubernetes\\Helm\\CronJobsValuesTest::none":0.002,"Mammatus\\Tests\\Queue\\Kubernetes\\Helm\\CronJobsValuesTest::all":0.003,"Mammatus\\Tests\\Cron\\ManagerTest::runHappy":0.002,"Mammatus\\Tests\\Cron\\ManagerTest::runAngry":0.002,"Mammatus\\Tests\\Cron\\ManagerTest::notAnAction":0.002,"Mammatus\\Tests\\Queue\\AppTest::runHappy":0.079,"Mammatus\\Tests\\Queue\\AppTest::runAngry":0.005,"Mammatus\\Tests\\Queue\\AppTest::runNonAction":0.004,"Mammatus\\Tests\\Queue\\ManagerTest::runHappy":95.418,"Mammatus\\Tests\\Queue\\ManagerTest::runAngry":98.999,"Mammatus\\Tests\\Queue\\ManagerTest::notAnAction":99.056,"Mammatus\\Tests\\Queue\\ManagerTest::notAnWorker":0.003,"Mammatus\\Tests\\Queue\\AppTest::notAnWorker":0.003}} \ No newline at end of file diff --git a/etc/qa/phpstan.neon b/etc/qa/phpstan.neon index cf11096..67d26db 100644 --- a/etc/qa/phpstan.neon +++ b/etc/qa/phpstan.neon @@ -1,11 +1,11 @@ parameters: ignoreErrors: - - '#Method Mammatus\\Queue\\App::__construct\(\) has a parameter \$container with a type declaration of Psr\\Container\\ContainerInterface, but containers should not be injected.#' - - '#Method Mammatus\\Queue\\Manager::__construct\(\) has a parameter \$container with a type declaration of Psr\\Container\\ContainerInterface, but containers should not be injected.#' + - '#Method Mammatus\\Queue\\Consumer::__construct\(\) has a parameter \$container with a type declaration of Psr\\Container\\ContainerInterface, but containers should not be injected.#' ergebnis: noExtends: classesAllowedToBeExtended: - - Mammatus\Queue\Generated\AbstractList_ + - Composer\IO\NullIO + - Mammatus\Queue\Generated\AbstractList includes: - ../../vendor/wyrihaximus/async-test-utilities/rules.neon diff --git a/src/App.php b/src/App.php index 917f28b..2c380fe 100644 --- a/src/App.php +++ b/src/App.php @@ -4,16 +4,10 @@ namespace Mammatus\Queue; -use Interop\Queue\Consumer; -use Interop\Queue\Context; use Mammatus\LifeCycleEvents\Shutdown; -use Mammatus\Queue\Contracts\Worker; -use Mammatus\Queue\Contracts\Worker as WorkerContract; -use Mammatus\Queue\Generated\AbstractList_; -use Psr\Container\ContainerInterface; +use Mammatus\Queue\Generated\AbstractList; +use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; -use React\EventLoop\Loop; -use RuntimeException; use Throwable; use WyriHaximus\Broadcast\Contracts\Listener; use WyriHaximus\PSR3\ContextLogger\ContextLogger; @@ -21,74 +15,50 @@ use function React\Async\async; use function React\Async\await; use function React\Promise\all; -use function WyriHaximus\React\futurePromise; -final class App extends AbstractList_ implements Listener +final class App extends AbstractList implements Listener { - private bool $running = true; - public function __construct( - private readonly ContainerInterface $container, - private readonly Context $context, + private readonly Consumer $consumer, + private readonly EventDispatcherInterface $eventDispatcher, private readonly LoggerInterface $logger, ) { } public function stop(Shutdown $event): void { - $this->running = false; + $this->consumer->close(); } public function run(string $className): int { - $promises = []; - foreach ($this->workers() as $worker) { - if ($worker->class !== $className) { - continue; - } - - $promises[] = async(fn () => $this->setupConsumer($worker))(); - } - - await(all($promises)); - - $this->context->close(); - - return 0; - } - - private function setupConsumer(\Mammatus\Queue\Worker $worker): int - { - $consumer = $this->context->createConsumer(new Queue($worker->queue)); - $workerInstance = $this->container->get($worker->class); - assert($workerInstance instanceof WorkerContract); + return await(async(function (string $className): int { + $logger = new ContextLogger($this->logger, ['worker' => $className]); + try { + $promises = []; + foreach ($this->workers() as $worker) { + if ($worker->class !== $className) { + continue; + } - $promises = []; - for ($i = 0; $i < $worker->concurrency; $i++) { - $this->logger->info('Starting consumer ' . $i . ' of ' . $worker->concurrency . ' for ' . $worker->class); - $promises[] = async(fn () => $this->consume($consumer, $workerInstance))(); - } + $promises[] = $this->consumer->setupConsumer($worker); + } - await(all($promises)); + var_export([__LINE__]); + await(all($promises)); - return 0; - } + var_export([__LINE__]); + $exitCode = 0; + } catch (Throwable $throwable) { /** @phpstan-ignore-line */ + $logger->error('Worker errored: ' . $throwable->getMessage(), ['exception' => $throwable]); - private function consume(Consumer $consumer, WorkerContract $worker): void - { - while ($this->running) { - $message = $consumer->receiveNoWait(); - if ($message === null) { - await(futurePromise()); - continue; + $exitCode = 1; } - try { - $worker->perform($message); - $consumer->acknowledge($message); - } catch (Throwable) { - $consumer->reject($message); - } - } + var_export([__LINE__]); +// $this->eventDispatcher->dispatch(new Shutdown()); + + return $exitCode; + })($className)); } } diff --git a/src/Composer/Collector.php b/src/Composer/Collector.php new file mode 100644 index 0000000..38939ec --- /dev/null +++ b/src/Composer/Collector.php @@ -0,0 +1,37 @@ + */ + public function collect(ReflectionClass $class): iterable + { + $attributes = []; + foreach ((new \ReflectionClass($class->getName()))->getAttributes() as $attributeReflection) { + $attribute = $attributeReflection->newInstance(); + $attributes[$attribute::class] = $attribute; + } + + if (! array_key_exists(Consumer::class, $attributes)) { + return; + } + + /** @psalm-suppress ArgumentTypeCoercion */ + yield new Item( + $class->getName(), + $attributes[Consumer::class], /** @phpstan-ignore-line */ + array_key_exists(SplitOut::class, $attributes), + ); + } +} diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index ad45482..1a08a78 100644 --- a/src/Composer/Installer.php +++ b/src/Composer/Installer.php @@ -5,51 +5,12 @@ namespace Mammatus\Queue\Composer; use Composer\Composer; -use Composer\Config; use Composer\EventDispatcher\EventSubscriberInterface; use Composer\IO\IOInterface; -use Composer\Package\PackageInterface; -use Composer\Package\RootPackageInterface; use Composer\Plugin\PluginInterface; use Composer\Script\Event; use Composer\Script\ScriptEvents; -use Illuminate\Support\Collection; -use Mammatus\Kubernetes\Attributes\SplitOut; -use Mammatus\Queue\Attributes\Consumer; -use Mammatus\Queue\Contracts\Worker; -use Roave\BetterReflection\BetterReflection; -use Roave\BetterReflection\Reflection\ReflectionClass; -use Roave\BetterReflection\Reflector\DefaultReflector; -use Roave\BetterReflection\Reflector\Exception\IdentifierNotFound; -use Roave\BetterReflection\SourceLocator\Type\Composer\Factory\MakeLocatorForComposerJsonAndInstalledJson; -use Roave\BetterReflection\SourceLocator\Type\Composer\Psr\Exception\InvalidPrefixMapping; -use RuntimeException; - -use function array_key_exists; -use function count; -use function dirname; -use function explode; -use function file_exists; -use function is_array; -use function is_string; -use function microtime; -use function round; -use function rtrim; -use function Safe\chmod; -use function Safe\file_get_contents; -use function Safe\file_put_contents; -use function Safe\mkdir; -use function Safe\spl_autoload_register; -use function sprintf; -use function str_replace; -use function strlen; -use function strpos; -use function substr; -use function WyriHaximus\getIn; -use function WyriHaximus\listClassesInDirectories; -use function WyriHaximus\Twig\render; - -use const DIRECTORY_SEPARATOR; +use WyriHaximus\Composer\GenerativePluginTooling\GenerativePluginExecutioner; final class Installer implements PluginInterface, EventSubscriberInterface { @@ -79,214 +40,6 @@ public function uninstall(Composer $composer, IOInterface $io): void */ public static function findActions(Event $event): void { - $start = microtime(true); - $io = $event->getIO(); - $composer = $event->getComposer(); - $vendorDir = $composer->getConfig()->get('vendor-dir'); - if (! is_string($vendorDir)) { - throw new RuntimeException('Vendor dir must be a string'); - } - - // Composer is bugged and doesn't handle root package autoloading properly yet - if (array_key_exists('psr-4', $composer->getPackage()->getAutoload())) { - foreach ($composer->getPackage()->getAutoload()['psr-4'] as $ns => $p) { - /** @phpstan-ignore-next-line */ - $p = dirname($vendorDir) . '/' . $p; - spl_autoload_register(static function ($class) use ($ns, $p): void { - if (strpos($class, $ns) !== 0) { - return; - } - - $fileName = $p . str_replace('\\', DIRECTORY_SEPARATOR, substr($class, strlen($ns))) . '.php'; - /** @phpstan-ignore-next-line */ - if (! file_exists($fileName)) { - return; - } - - include $fileName; - }); - } - } - - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/wyrihaximus/list-classes-in-directory/src/functions_include.php'; - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/wyrihaximus/string-get-in/src/functions_include.php'; - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/wyrihaximus/constants/src/Numeric/constants_include.php'; - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/igorw/get-in/src/get_in.php'; - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/jetbrains/phpstorm-stubs/PhpStormStubsMap.php'; - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/thecodingmachine/safe/generated/filesystem.php'; - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/thecodingmachine/safe/generated/strings.php'; - /** @psalm-suppress UnresolvableInclude */ - require_once $composer->getConfig()->get('vendor-dir') . '/wyrihaximus/simple-twig/src/functions_include.php'; - /** @psalm-suppress UnresolvableInclude */ - - $io->write('mammatus/queue: Locating actions'); - - $actions = self::findAllActions($composer, $io); - - $io->write(sprintf('mammatus/queue: Found %s action(s)', count($actions))); - - $classContentsList = render( - file_get_contents( - self::locateRootPackageInstallPath($composer->getConfig(), $composer->getPackage()) . '/etc/generated_templates/AbstractList_.php.twig', - ), - ['workers' => $actions], - ); - - $installPathList = self::locateRootPackageInstallPath($composer->getConfig(), $composer->getPackage()) - . '/src/Generated/AbstractList_.php'; - - file_put_contents($installPathList, $classContentsList); - chmod($installPathList, 0664); - - $io->write(sprintf( - 'mammatus/queue: Generated static abstract queue manager and queue list in %s second(s)', - round(microtime(true) - $start, 2), - )); - } - - /** - * Find the location where to put the generate PHP class in. - */ - private static function locateRootPackageInstallPath( - Config $composerConfig, - RootPackageInterface $rootPackage, - ): string { - $vendorDir = $composerConfig->get('vendor-dir'); - if (! is_string($vendorDir)) { - throw new RuntimeException('Vendor dir must be a string'); - } - - // You're on your own - if ($rootPackage->getName() === 'mammatus/queue') { - return dirname($vendorDir); - } - - return $vendorDir . '/mammatus/queue'; - } - - /** @return array */ - private static function findAllActions(Composer $composer, IOInterface $io): array - { - $vendorDir = $composer->getConfig()->get('vendor-dir'); - if (! is_string($vendorDir)) { - throw new RuntimeException('Vendor dir must be a string'); - } - - retry: - try { - $classReflector = new DefaultReflector( - (new MakeLocatorForComposerJsonAndInstalledJson())(dirname($vendorDir), (new BetterReflection())->astLocator()), - ); - } catch (InvalidPrefixMapping $invalidPrefixMapping) { - mkdir(explode('" is not a', explode('" for prefix "', $invalidPrefixMapping->getMessage())[1])[0]); - goto retry; - } - - $packages = $composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); - $packages[] = $composer->getPackage(); - - return (new Collection($packages))->filter(static function (PackageInterface $package): bool { - return count($package->getAutoload()) > 0; - })->filter(static function (PackageInterface $package): bool { - /** @phpstan-ignore-next-line */ - return getIn($package->getExtra(), 'mammatus.queue.has-workers', false); - })->filter(static function (PackageInterface $package): bool { - return array_key_exists('classmap', $package->getAutoload()) || array_key_exists('psr-4', $package->getAutoload()); - })->flatMap(static function (PackageInterface $package) use ($vendorDir): array { - $packageName = $package->getName(); - $autoload = $package->getAutoload(); - $paths = []; - foreach (['classmap', 'psr-4'] as $item) { - if (! array_key_exists($item, $autoload)) { - continue; - } - - foreach ($autoload[$item] as $path) { - if (is_string($path)) { - if ($package instanceof RootPackageInterface) { - $paths[] = dirname($vendorDir) . DIRECTORY_SEPARATOR . $path; - } else { - $paths[] = $vendorDir . DIRECTORY_SEPARATOR . $packageName . DIRECTORY_SEPARATOR . $path; - } - } - - if (! is_array($path)) { - continue; - } - - foreach ($path as $p) { - if ($package instanceof RootPackageInterface) { - $paths[] = dirname($vendorDir) . DIRECTORY_SEPARATOR . $p; - } else { - $paths[] = $vendorDir . DIRECTORY_SEPARATOR . $packageName . DIRECTORY_SEPARATOR . $p; - } - } - } - } - - return $paths; - })->map(static function (string $path): string { - return rtrim($path, '/'); - })->filter(static function (string $path): bool { - /** @phpstan-ignore-next-line */ - return file_exists($path); - })->flatMap(static function (string $path): array { - return [...listClassesInDirectories($path)]; - /** @phpstan-ignore-next-line */ - })->flatMap(static function (string $class) use ($classReflector, $io): array { - try { - /** @psalm-suppress PossiblyUndefinedVariable */ - return [ - (static function (ReflectionClass $reflectionClass): ReflectionClass { - $reflectionClass->getInterfaces(); - $reflectionClass->getMethods(); - - return $reflectionClass; - })($classReflector->reflectClass($class)), - ]; - } catch (IdentifierNotFound $identifierNotFound) { - $io->write(sprintf( - 'mammatus/queue: Error while reflecting "%s": %s', - $class, - $identifierNotFound->getMessage(), - )); - } - - return []; - })->filter(static function (ReflectionClass $class): bool { - return $class->isInstantiable(); - })->filter(static function (ReflectionClass $class): bool { - return $class->implementsInterface(Worker::class); - })->flatMap(static function (ReflectionClass $class): array { - $attributes = []; - foreach ((new \ReflectionClass($class->getName()))->getAttributes() as $attributeReflection) { - $attribute = $attributeReflection->newInstance(); - $attributes[$attribute::class] = $attribute; - } - - return [ - [ - 'class' => $class->getName(), - 'attributes' => $attributes, - ], - ]; - })->filter(static function (array $classNattributes): bool { - return array_key_exists(Consumer::class, $classNattributes['attributes']); - })->flatMap(static function (array $classNattributes): array { - return [ - [ - 'class' => $classNattributes['class'], - 'consumer' => $classNattributes['attributes'][Consumer::class], - 'split_out' => array_key_exists(SplitOut::class, $classNattributes['attributes']), - ], - ]; - })->toArray(); + GenerativePluginExecutioner::execute($event->getComposer(), $event->getIO(), new Plugin()); } } diff --git a/src/Composer/Item.php b/src/Composer/Item.php new file mode 100644 index 0000000..e3891df --- /dev/null +++ b/src/Composer/Item.php @@ -0,0 +1,30 @@ + $this->class, + 'consumer' => $this->consumer, + 'split_out' => $this->splitOut, + ]; + } +} diff --git a/src/Composer/Plugin.php b/src/Composer/Plugin.php new file mode 100644 index 0000000..7af7323 --- /dev/null +++ b/src/Composer/Plugin.php @@ -0,0 +1,65 @@ + 'Locating actions', + LogStages::Error => 'An error occurred: %s', + LogStages::Collected => 'Found %d action(s)', + LogStages::Completion => 'Generated static abstract queue manager and queue list in %s second(s)', + }; + } + + /** @inheritDoc */ + public function filters(): iterable + { + yield new ComposerJsonHasItemWithSpecificValue('mammatus.queue.has-workers', true); + yield new ImplementsInterface(Worker::class); + yield new IsInstantiable(); + } + + /** @inheritDoc */ + public function collectors(): iterable + { + yield new Collector(); + } + + public function compile(string $rootPath, ItemContract ...$items): void + { +// var_export([[[$rootPath . '/etc/generated_templates/AbstractList.php.twig']]]); +// die(); + $classContentsList = SimpleTwig::render( + file_get_contents( /** @phpstan-ignore-line */ + $rootPath . '/etc/generated_templates/AbstractList.php.twig', + ), + ['workers' => $items], + ); + $installPathList = $rootPath . '/src/Generated/AbstractList.php'; + file_put_contents($installPathList, $classContentsList); /** @phpstan-ignore-line */ + chmod($installPathList, 0664); /** @phpstan-ignore-line */ + } +} diff --git a/src/Consumer.php b/src/Consumer.php new file mode 100644 index 0000000..adad36f --- /dev/null +++ b/src/Consumer.php @@ -0,0 +1,75 @@ +running = false; + + $this->context->close(); + } + + /** @return PromiseInterface */ + public function setupConsumer(Worker $worker): PromiseInterface + { + $workerInstance = $this->container->get($worker->class); + if (! ($workerInstance instanceof WorkerContract)) { + throw new RuntimeException('Worker instance must be instance of ' . WorkerContract::class); + } + + $promises = []; + for ($i = 0; $i < $worker->concurrency; $i++) { + $this->logger->info('Starting consumer ' . $i . ' of ' . $worker->concurrency . ' for ' . $worker->class); + $promises[] = async(fn () => $this->consume($worker, $workerInstance))(); + } + + return all($promises); + } + + private function consume(Worker $worker, WorkerContract $workerInstance): void + { + $consumer = $this->context->createConsumer(new Queue($worker->queue)); + while ($this->running) { + $message = $consumer->receiveNoWait(); + if ($message === null) { + await(futurePromise()); + continue; + } + + try { + $workerInstance->perform($message); + $consumer->acknowledge($message); + } catch (Throwable) { /** @phpstan-ignore-line */ + $consumer->reject($message); + } + } + } +} diff --git a/src/Kubernetes/Helm/QueueConsumersValues.php b/src/Kubernetes/Helm/QueueConsumersValues.php index 4bfde75..e45a578 100644 --- a/src/Kubernetes/Helm/QueueConsumersValues.php +++ b/src/Kubernetes/Helm/QueueConsumersValues.php @@ -5,14 +5,22 @@ namespace Mammatus\Queue\Kubernetes\Helm; use Mammatus\Kubernetes\Events\Helm\Values; -use Mammatus\Queue\Generated\AbstractList_; +use Mammatus\Queue\Generated\AbstractList; use Mammatus\Queue\Worker; use WyriHaximus\Broadcast\Contracts\Listener; use function array_filter; +use function array_map; +use function str_replace; -final class QueueConsumersValues extends AbstractList_ implements Listener +final class QueueConsumersValues extends AbstractList implements Listener { + /** @phpstan-ignore-next-line This makes this class test able */ + public function __construct( + private false|string $type = 'kubernetes', + ) { + } + public function values(Values $values): void { $values->registry->add( @@ -22,10 +30,11 @@ public function values(Values $values): void 'name' => 'queue-worker-' . str_replace('.', '-', $worker->queue), 'command' => 'mammatus-queue', 'arguments' => [$worker->class], + 'addOns' => $worker->addOns, ], - array_filter( + $this->type === false ? [...$this->workers()] : array_filter( [...$this->workers()], - static fn (Worker $worker): bool => $worker->type === 'kubernetes', + fn (Worker $worker): bool => $worker->type === $this->type, ), ), ); diff --git a/src/Manager.php b/src/Manager.php index b589d28..11d3522 100644 --- a/src/Manager.php +++ b/src/Manager.php @@ -4,34 +4,26 @@ namespace Mammatus\Queue; -use Interop\Queue\Context; use Mammatus\LifeCycleEvents\Initialize; use Mammatus\LifeCycleEvents\Shutdown; -use Mammatus\Queue\Contracts\Worker as WorkerContract; -use Mammatus\Queue\Generated\AbstractList_; -use Psr\Container\ContainerInterface; +use Mammatus\Queue\Generated\AbstractList; +use Psr\EventDispatcher\EventDispatcherInterface; use Psr\Log\LoggerInterface; -use React\EventLoop\Loop; use Throwable; use WyriHaximus\Broadcast\Contracts\Listener; -use function assert; -use function React\Async\async; -use function React\Async\await; -use function WyriHaximus\React\futurePromise; - -final class Manager extends AbstractList_ implements Listener +final class Manager extends AbstractList implements Listener { - private bool $running = false; - - public function __construct(private LoggerInterface $logger, private Context $context, private ContainerInterface $container) - { + public function __construct( + private readonly Consumer $consumer, + private readonly EventDispatcherInterface $eventDispatcher, + private readonly LoggerInterface $logger, + ) { } public function start(Initialize $event): void { $this->logger->debug('Starting queue manager'); - $this->running = true; $this->boot(); $this->logger->debug('Started queue manager'); } @@ -39,42 +31,23 @@ public function start(Initialize $event): void public function stop(Shutdown $event): void { $this->logger->debug('Stopping queue manager'); - $this->running = false; + $this->consumer->close(); $this->logger->debug('Stopped queue manager'); } private function boot(): void { - foreach ($this->workers() as $worker) { - if ($worker->type !== 'internal') { - continue; - } - - for ($i = 0; $i < $worker->concurrency; $i++) { - $this->logger->info('Starting consumer ' . $i . ' of ' . $worker->concurrency . ' for ' . $worker->class); - Loop::futureTick(async(fn () => $this->consume($worker))); - } - } - } - - private function consume(Worker $worker): void - { - $consumer = $this->context->createConsumer(new Queue($worker->queue)); - $workerInstance = $this->container->get($worker->class); - assert($workerInstance instanceof WorkerContract); - while ($this->running) { - $message = $consumer->receiveNoWait(); - if ($message === null) { - await(futurePromise()); - continue; - } + try { + foreach ($this->workers() as $worker) { + if ($worker->type !== 'internal') { + continue; + } - try { - $workerInstance->perform($message); - $consumer->acknowledge($message); - } catch (Throwable) { - $consumer->reject($message); + $this->consumer->setupConsumer($worker); } + } catch (Throwable $throwable) { /** @phpstan-ignore-line */ + $this->logger->error('Worker errored: ' . $throwable->getMessage(), ['exception' => $throwable]); + $this->eventDispatcher->dispatch(new Shutdown()); } } } diff --git a/src/Worker.php b/src/Worker.php index 8028900..3197bb3 100644 --- a/src/Worker.php +++ b/src/Worker.php @@ -8,12 +8,16 @@ final readonly class Worker { - /** @param class-string $class */ + /** + * @param class-string $class + * @param array $addOns + */ public function __construct( public string $type, public string $queue, public int $concurrency, public string $class, + public array $addOns, ) { } } diff --git a/tests/Angry.php b/tests/Angry.php new file mode 100644 index 0000000..b84b2ed --- /dev/null +++ b/tests/Angry.php @@ -0,0 +1,21 @@ +angry; + } +} diff --git a/tests/AppTest.php b/tests/AppTest.php index 9219a91..8ed3535 100644 --- a/tests/AppTest.php +++ b/tests/AppTest.php @@ -4,8 +4,88 @@ namespace Mammatus\Tests\Queue; +use Mammatus\LifeCycleEvents\Shutdown; +use Mammatus\Queue\App; +use Mammatus\Queue\BuildIn\Noop; +use Mammatus\Queue\Contracts\Worker as WorkerContract; +use Mockery; +use Psr\EventDispatcher\EventDispatcherInterface; +use React\EventLoop\Loop; +use RuntimeException; use WyriHaximus\AsyncTestUtilities\AsyncTestCase; +use function array_key_exists; + final class AppTest extends AsyncTestCase { + /** @test */ + public function runHappy(): void + { + [$consumer, $container, $context, $internalConsumer, $logger] = ConsumerFactory::create(); + + Loop::futureTick(static fn () => $consumer->close()); + + $container->expects('get')->with(Noop::class)->once()->andReturn(new Noop()); + + $context->expects('close')->once(); + + $eventDispatcher = Mockery::mock(EventDispatcherInterface::class); + $eventDispatcher->expects('dispatch')->withArgs(static fn (Shutdown $event): bool => true)->once(); + + $logger->expects('info')->with('Starting consumer 0 of 1 for ' . Noop::class)->atLeast()->once(); + + $exitCode = (new App($consumer, $eventDispatcher, $logger))->run(Noop::class); + + self::assertSame(0, $exitCode); + } + + /** @test */ + public function runAngry(): void + { + [$consumer, $container, $context, $internalConsumer, $logger] = ConsumerFactory::create(); + + Loop::futureTick(static fn () => $consumer->close()); + + $exception = new RuntimeException('Ik ben boos!'); + $container->expects('get')->with(Noop::class)->once()->andReturn(new Angry($exception)); + + $context->expects('close')->once(); + + $eventDispatcher = Mockery::mock(EventDispatcherInterface::class); + $eventDispatcher->expects('dispatch')->withArgs(static fn (Shutdown $event): bool => true)->once(); + + $logger->expects('info')->with('Starting consumer 0 of 1 for ' . Noop::class)->atLeast()->once(); + + $exitCode = (new App($consumer, $eventDispatcher, $logger))->run(Noop::class); + + self::assertSame(0, $exitCode); + } + + /** @test */ + public function notAnWorker(): void + { + [$consumer, $container, $context, $internalConsumer, $logger] = ConsumerFactory::create(); + + $container->expects('get')->with(Noop::class)->atLeast()->once()->andReturn(new Sad()); + + $eventDispatcher = Mockery::mock(EventDispatcherInterface::class); + $eventDispatcher->expects('dispatch')->withArgs(static fn (Shutdown $event): bool => true)->once(); + + $logger->expects('log')->withArgs(static function (string $type, string $error, array $context): bool { + if ($type !== 'error') { + return false; + } + + if ($error !== 'Worker errored: Worker instance must be instance of ' . WorkerContract::class) { + return false; + } + + return array_key_exists('exception', $context) && $context['exception']->getMessage() === 'Worker instance must be instance of ' . WorkerContract::class; + })->atLeast()->once(); + $logger->expects('info')->with('Starting consumer 0 of 1 for ' . Sad::class)->never(); + + $exitCode = (new App($consumer, $eventDispatcher, $logger))->run(Noop::class); + + self::assertSame(1, $exitCode); + } } diff --git a/tests/Composer/InstallerTest.php b/tests/Composer/InstallerTest.php new file mode 100644 index 0000000..c0e03c2 --- /dev/null +++ b/tests/Composer/InstallerTest.php @@ -0,0 +1,165 @@ + 'findActions'], Installer::getSubscribedEvents()); + } + + /** @test */ + public function generate(): void + { + $composerConfig = new Config(); + $composerConfig->merge([ + 'config' => [ + 'vendor-dir' => $this->getTmpDir() . 'vendor' . DIRECTORY_SEPARATOR, + ], + ]); + $rootPackage = new RootPackage('mammatus/queue', 'dev-master', 'dev-master'); + $rootPackage->setExtra([ + 'mammatus' => [ + 'queue' => ['has-actions' => true], + ], + ]); + $rootPackage->setAutoload([ + 'psr-4' => ['Mammatus\\Queue\\' => 'src'], + ]); + + $io = new class () extends NullIO { + private readonly StreamOutput $output; + + public function __construct() + { + $this->output = new StreamOutput(fopen('php://memory', 'rw'), decorated: false); + } + + public function output(): string + { + fseek($this->output->getStream(), 0); + + return stream_get_contents($this->output->getStream()); + } + + /** @inheritDoc */ + public function write($messages, bool $newline = true, int $verbosity = self::NORMAL): void + { + $this->output->write($messages, $newline, $verbosity & StreamOutput::OUTPUT_RAW); + } + }; + $repository = Mockery::mock(InstalledRepositoryInterface::class); + $repository->allows()->getCanonicalPackages()->andReturn([]); + $repositoryManager = new RepositoryManager($io, $composerConfig, Factory::createHttpDownloader($io, $composerConfig)); + $repositoryManager->setLocalRepository($repository); + $composer = new Composer(); + $composer->setConfig($composerConfig); + $composer->setRepositoryManager($repositoryManager); + $composer->setPackage($rootPackage); + $event = new Event( + ScriptEvents::PRE_AUTOLOAD_DUMP, + $composer, + $io, + ); + + $installer = new Installer(); + + // Test dead methods and make Infection happy + $installer->activate($composer, $io); + $installer->deactivate($composer, $io); + $installer->uninstall($composer, $io); + + $this->recurseCopy(dirname(dirname(__DIR__)) . '/', $this->getTmpDir()); + + $fileNameList = $this->getTmpDir() . 'src/Generated/AbstractList.php'; + if (file_exists($fileNameList)) { /** @phpstan-ignore-line */ + unlink($fileNameList); + } + + self::assertFileDoesNotExist($fileNameList); + + // Do the actual generating + Installer::findActions($event); + + $output = $io->output(); + + self::assertStringContainsString('mammatus/queue: Locating actions', $output); + self::assertStringContainsString('mammatus/queue: Generated static abstract queue manager and queue list in ', $output); + self::assertStringContainsString('mammatus/queue: Found 0 action(s)', $output); + + self::assertFileExists($fileNameList); + self::assertTrue(in_array( + substr(sprintf('%o', fileperms($fileNameList)), -4), + [ + '0664', + '0666', + ], + true, + )); + $fileContentsList = file_get_contents($fileNameList); +// self::assertStringContainsStringIgnoringCase(' * @see \Mammatus\Queue\BuildIn\Noop', $fileContentsList); +// self::assertStringContainsStringIgnoringCase('yield \'internal-no.op-Mammatus-queue-BuildIn-Noop\' => new Action(', $fileContentsList); +// self::assertStringContainsStringIgnoringCase('addOns: \json_decode(\'[]\', true), /** @ p h pstan-ignore-line */', $fileContentsList); + } + + private function recurseCopy(string $src, string $dst): void + { + $dir = opendir($src); + if (! file_exists($dst)) { /** @phpstan-ignore-line */ + mkdir($dst); + } + + while (( $file = readdir($dir)) !== false) { + if (( $file === '.' ) || ( $file === '..' )) { + continue; + } + + if (is_dir($src . '/' . $file)) { /** @phpstan-ignore-line */ + $this->recurseCopy($src . '/' . $file, $dst . '/' . $file); + } elseif (is_file($src . '/' . $file)) { /** @phpstan-ignore-line */ + copy($src . '/' . $file, $dst . '/' . $file); + } + } + + closedir($dir); + } +} diff --git a/tests/Composer/ItemTest.php b/tests/Composer/ItemTest.php new file mode 100644 index 0000000..b1f029e --- /dev/null +++ b/tests/Composer/ItemTest.php @@ -0,0 +1,36 @@ +expects('receiveNoWait')->between(0, PHP_INT_MAX); + + $context->expects('createConsumer')->withArgs(static function (Queue $queue): bool { + return true; + })->between(0, PHP_INT_MAX)->andReturn($consumerInternal); + + $consumer = new Consumer($container, $context, $logger); + + return [ + $consumer, + $container, + $context, + $consumerInternal, + $logger, + ]; + } +} diff --git a/tests/Kubernetes/Helm/CronJobsValuesTest.php b/tests/Kubernetes/Helm/CronJobsValuesTest.php new file mode 100644 index 0000000..39632a5 --- /dev/null +++ b/tests/Kubernetes/Helm/CronJobsValuesTest.php @@ -0,0 +1,41 @@ +values($values); + + self::assertSame([ + 'deployments' => [], // Empty array here because we don't have any default deployments running in Kubernetes out of the box + ], $values->registry->get()); + } + + /** @test */ + public function all(): void + { + $values = new Values(new Values\Registry()); + (new QueueConsumersValues(false))->values($values); + + self::assertSame([ + 'deployments' => [ + 'internal-Mammatus-Queue-BuildIn-Noop' => [ + 'name' => 'queue-worker-noop', + 'command' => 'mammatus-queue', + 'arguments' => ['Mammatus\Queue\BuildIn\Noop'], + 'addOns' => [], + ], + ], + ], $values->registry->get()); + } +} diff --git a/tests/ManagerTest.php b/tests/ManagerTest.php new file mode 100644 index 0000000..b453a26 --- /dev/null +++ b/tests/ManagerTest.php @@ -0,0 +1,112 @@ +expects('get')->with(Noop::class)->atLeast()->once()->andReturn(new Noop()); + + $context->expects('close')->once(); + + $eventDispatcher = Mockery::mock(EventDispatcherInterface::class); + + $logger->expects('debug')->with('Starting queue manager')->once(); + $logger->expects('debug')->with('Started queue manager')->once(); + $logger->expects('info')->with('Starting consumer 0 of 1 for ' . Noop::class)->atLeast()->once(); + $logger->expects('debug')->with('Stopping queue manager')->once(); + $logger->expects('debug')->with('Stopped queue manager')->once(); + + $manager = new Manager( + $consumer, + $eventDispatcher, + $logger, + ); + $manager->start(new Initialize()); + await(sleep(99)); + $manager->stop(new Shutdown()); + } + + /** @test */ + public function runAngry(): void + { + [$consumer, $container, $context, $internalConsumer, $logger] = ConsumerFactory::create(); + + $context->expects('close')->once(); + + $eventDispatcher = Mockery::mock(EventDispatcherInterface::class); + + $exception = new RuntimeException('Ik ben boos!'); + + $logger->expects('debug')->with('Starting queue manager')->once(); + $logger->expects('debug')->with('Started queue manager')->once(); + $logger->expects('info')->with('Starting consumer 0 of 1 for ' . Noop::class)->atLeast()->once(); + $logger->expects('debug')->with('Stopping queue manager')->once(); + $logger->expects('debug')->with('Stopped queue manager')->once(); + + $container->expects('get')->with(Noop::class)->atLeast()->once()->andReturn(new Angry($exception)); + + $manager = new Manager( + $consumer, + $eventDispatcher, + $logger, + ); + $manager->start(new Initialize()); + await(sleep(99)); + $manager->stop(new Shutdown()); + } + + /** @test */ + public function notAnWorker(): void + { + [$consumer, $container, $context, $internalConsumer, $logger] = ConsumerFactory::create(); + + $container->expects('get')->with(Noop::class)->atLeast()->once()->andReturn(new Sad()); + + $eventDispatcher = Mockery::mock(EventDispatcherInterface::class); + $eventDispatcher->expects('dispatch')->withArgs(static fn (Shutdown $event): bool => true)->once(); + + $logger->expects('debug')->with('Starting queue manager')->once(); + + $logger->expects('error')->withArgs(static function (string $error, array $context): bool { + if ($error !== 'Worker errored: Worker instance must be instance of ' . WorkerContract::class) { + return false; + } + + return array_key_exists('exception', $context) && $context['exception']->getMessage() === 'Worker instance must be instance of ' . WorkerContract::class; + })->atLeast()->once(); + $logger->expects('debug')->with('Started queue manager')->once(); + $logger->expects('info')->with('Starting consumer 0 of 1 for ' . Noop::class)->never(); + $logger->expects('debug')->with('Stopping queue manager')->never(); + $logger->expects('debug')->with('Stopped queue manager')->never(); + + $manager = new Manager( + $consumer, + $eventDispatcher, + $logger, + ); + $manager->start(new Initialize()); + } +} diff --git a/tests/Sad.php b/tests/Sad.php new file mode 100644 index 0000000..055830c --- /dev/null +++ b/tests/Sad.php @@ -0,0 +1,9 @@ +