diff --git a/Makefile b/Makefile index 10cc30d..7601e27 100644 --- a/Makefile +++ b/Makefile @@ -47,6 +47,9 @@ cs: ## Check the code for code style issues stan: ## Run static analysis (PHPStan) $(DOCKER_RUN) vendor/bin/phpstan analyse src tests --level max --ansi -c ./etc/qa/phpstan.neon +psalm: ## Run static analysis (Psalm) + $(DOCKER_RUN) vendor/bin/psalm --threads=$(THREADS) --shepherd --stats --config=./etc/qa/psalm.xml + unit-testing: ## Run tests $(DOCKER_RUN) vendor/bin/phpunit --colors=always -c ./etc/qa/phpunit.xml --coverage-text --coverage-html ./var/tests-unit-coverage-html --coverage-clover ./var/tests-unit-clover-coverage.xml $(DOCKER_RUN) test -n "$(COVERALLS_REPO_TOKEN)" && test -n "$(COVERALLS_RUN_LOCALLY)" && test -f ./var/tests-unit-clover-coverage.xml && vendor/bin/php-coveralls -v --coverage_clover ./build/logs/clover.xml --json_path ./var/tests-unit-clover-coverage-upload.json || true @@ -55,6 +58,12 @@ unit-testing-raw: ## Run tests #### php vendor/phpunit/phpunit/phpunit --colors=always -c ./etc/qa/phpunit.xml --coverage-text --coverage-html ./var/tests-unit-coverage-html --coverage-clover ./var/tests-unit-clover-coverage.xml test -n "$(COVERALLS_REPO_TOKEN)" && test -n "$(COVERALLS_RUN_LOCALLY)" && test -f ./var/tests-unit-clover-coverage.xml && ./vendor/bin/php-coveralls -v --coverage_clover ./build/logs/clover.xml --json_path ./var/tests-unit-clover-coverage-upload.json || true +mutation-testing: ## Run mutation testing + $(DOCKER_RUN) vendor/bin/roave-infection-static-analysis-plugin --ansi --log-verbosity=all --threads=$(THREADS) --psalm-config etc/qa/psalm.xml || (cat ./var/infection.log && false) + +mutation-testing-raw: ## Run mutation testing #### + php vendor/roave/infection-static-analysis-plugin/bin/roave-infection-static-analysis-plugin --ansi --log-verbosity=all --threads=$(THREADS) --psalm-config etc/qa/psalm.xml || (cat ./var/infection.log && false) + composer-require-checker: ## Ensure we require every package used in this package directly $(DOCKER_RUN) vendor/bin/composer-require-checker --ignore-parse-errors --ansi -vvv --config-file=./etc/qa/composer-require-checker.json diff --git a/composer.json b/composer.json index 2e48fa8..c753772 100644 --- a/composer.json +++ b/composer.json @@ -5,13 +5,14 @@ "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/cron-attributes": "^1", + "mammatus/cron-attributes": "^2", "mammatus/cron-contracts": "^1.0.1", - "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", "psr/container": "^1.1.2", "psr/event-dispatcher": "^1.0", @@ -19,16 +20,16 @@ "react/async": "^4.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/react-cron": "^5", "wyrihaximus/react-mutex-contracts": "^2.3", - "wyrihaximus/simple-twig": "^2.1", - "wyrihaximus/string-get-in": "^1.1", + "wyrihaximus/simple-twig": "^2.2.1", "wyrihaximus/ticking-promise": "^3.1" }, "require-dev": { + "react/promise-timer": "^1.11", "wyrihaximus/async-test-utilities": "^8.0.1" }, "autoload": { diff --git a/composer.lock b/composer.lock index 647dc4e..a8f5cf5 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": "71fa126a42c703b86a318a593479e242", + "content-hash": "c4c3ade6c9b64092cca839e24b5ad598", "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", @@ -734,16 +742,16 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v3.3.3", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a" + "reference": "8c784d071debd117328803d86b2097615b457500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", - "reference": "adfb1f505deb6384dc8b39804c5065dd3c8c8c0a", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", "shasum": "" }, "require": { @@ -756,10 +764,14 @@ "require-dev": { "phpstan/extension-installer": "^1.0", "phpstan/phpstan": "^1.0", - "phpstan/phpstan-webmozart-assert": "^1.0", "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -783,7 +795,7 @@ ], "support": { "issues": "https://github.com/dragonmantank/cron-expression/issues", - "source": "https://github.com/dragonmantank/cron-expression/tree/v3.3.3" + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" }, "funding": [ { @@ -791,7 +803,7 @@ "type": "github" } ], - "time": "2023-08-10T19:36:49+00:00" + "time": "2024-10-09T13:47:03+00:00" }, { "name": "drupol/composer-packages", @@ -953,201 +965,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", @@ -1198,20 +1015,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", @@ -1222,11 +1039,6 @@ "bin/validate-json" ], "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, "autoload": { "psr-4": { "JsonSchema\\": "src/JsonSchema/" @@ -1261,33 +1073,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": { @@ -1324,38 +1137,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": { @@ -1376,7 +1189,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": [ { @@ -1388,7 +1201,7 @@ "type": "patreon" } ], - "time": "2023-11-17T17:00:27+00:00" + "time": "2024-09-24T20:45:14+00:00" }, { "name": "league/tactician", @@ -1549,23 +1362,24 @@ }, { "name": "mammatus/cron-attributes", - "version": "1.0.0", + "version": "2.0.1", "source": { "type": "git", "url": "https://github.com/MammatusPHP/cron-attributes.git", - "reference": "82b9b1da155d593f5da26f88cf464fcc8828e2b7" + "reference": "b474cea1a53058b5bd58cc2e9edabd39ca3dc372" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/MammatusPHP/cron-attributes/zipball/82b9b1da155d593f5da26f88cf464fcc8828e2b7", - "reference": "82b9b1da155d593f5da26f88cf464fcc8828e2b7", + "url": "https://api.github.com/repos/MammatusPHP/cron-attributes/zipball/b474cea1a53058b5bd58cc2e9edabd39ca3dc372", + "reference": "b474cea1a53058b5bd58cc2e9edabd39ca3dc372", "shasum": "" }, "require": { + "mammatus/kubernetes-contracts": "^1", "php": "^8.2" }, "require-dev": { - "wyrihaximus/test-utilities": "^5.6" + "wyrihaximus/test-utilities": "^6.0.10" }, "type": "library", "autoload": { @@ -1580,7 +1394,7 @@ "description": "Cron attributes", "support": { "issues": "https://github.com/MammatusPHP/cron-attributes/issues", - "source": "https://github.com/MammatusPHP/cron-attributes/tree/1.0.0" + "source": "https://github.com/MammatusPHP/cron-attributes/tree/2.0.1" }, "funding": [ { @@ -1588,7 +1402,7 @@ "type": "github" } ], - "time": "2024-03-23T14:46:41+00:00" + "time": "2024-10-16T21:39:13+00:00" }, { "name": "mammatus/cron-contracts", @@ -1635,25 +1449,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": { @@ -1679,31 +1493,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": { @@ -1729,9 +1591,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", @@ -1824,16 +1692,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": { @@ -1909,7 +1777,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": [ { @@ -1921,20 +1789,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": { @@ -1943,7 +1811,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" @@ -1975,9 +1843,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", @@ -2144,16 +2012,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": { @@ -2201,7 +2069,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": [ { @@ -2213,7 +2081,7 @@ "type": "tidelift" } ], - "time": "2023-11-02T10:04:50+00:00" + "time": "2024-07-21T15:55:45+00:00" }, { "name": "psr/clock", @@ -2411,57 +2279,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": "react-parallel/object-proxy-attributes", "version": "1.1.0", @@ -2520,22 +2337,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", @@ -2583,7 +2400,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": [ { @@ -2591,7 +2408,7 @@ "type": "open_collective" } ], - "time": "2023-11-22T16:43:46+00:00" + "time": "2024-06-04T14:40:02+00:00" }, { "name": "react/cache", @@ -2739,16 +2556,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": { @@ -2800,7 +2617,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": [ { @@ -2808,20 +2625,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": { @@ -2831,7 +2648,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": { @@ -2878,7 +2695,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": [ { @@ -2886,7 +2703,7 @@ "type": "open_collective" } ], - "time": "2023-06-16T10:52:11+00:00" + "time": "2024-06-11T12:45:25+00:00" }, { "name": "roave/better-reflection", @@ -2996,23 +2813,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": [ @@ -3044,7 +2861,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": [ { @@ -3056,7 +2873,7 @@ "type": "tidelift" } ], - "time": "2024-02-07T12:57:50+00:00" + "time": "2024-07-11T14:55:45+00:00" }, { "name": "seld/phar-utils", @@ -3169,16 +2986,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": { @@ -3243,7 +3060,7 @@ "terminal" ], "support": { - "source": "https://github.com/symfony/console/tree/v6.4.7" + "source": "https://github.com/symfony/console/tree/v6.4.12" }, "funding": [ { @@ -3259,7 +3076,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:22:46+00:00" + "time": "2024-09-20T08:15:52+00:00" }, { "name": "symfony/deprecation-contracts", @@ -3330,22 +3147,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", @@ -3374,7 +3193,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": [ { @@ -3390,20 +3209,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": { @@ -3438,7 +3257,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": [ { @@ -3454,24 +3273,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": "*" @@ -3517,7 +3336,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": [ { @@ -3533,24 +3352,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" @@ -3595,7 +3414,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": [ { @@ -3611,24 +3430,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" @@ -3676,7 +3495,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": [ { @@ -3692,24 +3511,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": "*" @@ -3756,7 +3575,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": [ { @@ -3772,24 +3591,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": { @@ -3832,7 +3651,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": [ { @@ -3848,24 +3667,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": { @@ -3912,7 +3731,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": [ { @@ -3928,24 +3747,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": { @@ -3988,7 +3807,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": [ { @@ -4004,20 +3823,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": { @@ -4049,7 +3868,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": [ { @@ -4065,7 +3884,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-19T21:48:23+00:00" }, { "name": "symfony/service-contracts", @@ -4152,16 +3971,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": { @@ -4175,6 +3994,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", @@ -4218,7 +4038,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.7" + "source": "https://github.com/symfony/string/tree/v7.1.5" }, "funding": [ { @@ -4234,7 +4054,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { "name": "thecodingmachine/safe", @@ -4377,24 +4197,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", @@ -4440,7 +4260,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": [ { @@ -4452,7 +4272,7 @@ "type": "tidelift" } ], - "time": "2024-05-16T10:04:27+00:00" + "time": "2024-09-09T17:55:12+00:00" }, { "name": "webmozart/assert", @@ -4514,48 +4334,40 @@ }, { "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 @@ -4574,7 +4386,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": [ { @@ -4582,7 +4394,7 @@ "type": "github" } ], - "time": "2024-03-22T14:08:38+00:00" + "time": "2024-10-10T13:18:40+00:00" }, { "name": "wyrihaximus/broadcast-contracts", @@ -4675,33 +4487,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": [ @@ -4710,14 +4522,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": [ { @@ -4725,27 +4536,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": { @@ -4760,13 +4574,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": [ { @@ -4774,36 +4589,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": [ @@ -4818,7 +4634,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": [ { @@ -4826,7 +4642,7 @@ "type": "github" } ], - "time": "2023-01-10T18:32:40+00:00" + "time": "2024-07-16T12:35:06+00:00" }, { "name": "wyrihaximus/metrics", @@ -5407,24 +5223,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": { @@ -5448,7 +5264,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" + "source": "https://github.com/WyriHaximus/php-simple-twig/tree/2.2.1" }, "funding": [ { @@ -5456,57 +5272,7 @@ "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" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - } - ], - "time": "2021-11-28T14:22:02+00:00" + "time": "2024-10-12T14:20:51+00:00" }, { "name": "wyrihaximus/ticking-promise", @@ -6378,39 +6144,93 @@ "psr/log": "^1 || ^2 || ^3", "vimeo/psalm": "4.30.0 || 5.12.0" }, - "suggest": { - "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + "suggest": { + "psr/log": "Allows logging deprecations via PSR-3 logger implementation" + }, + "type": "library", + "autoload": { + "psr-4": { + "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", + "homepage": "https://www.doctrine-project.org/", + "support": { + "issues": "https://github.com/doctrine/deprecations/issues", + "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + }, + "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": { - "Doctrine\\Deprecations\\": "lib/Doctrine/Deprecations" + "LibYear\\": "src/", + "LibYear\\Tests\\": "tests/" } }, "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], - "description": "A small layer on top of trigger_error(E_USER_DEPRECATED) or PSR-3 logging with options to disable all deprecations or selectively for packages.", - "homepage": "https://www.doctrine-project.org/", + "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/doctrine/deprecations/issues", - "source": "https://github.com/doctrine/deprecations/tree/1.1.3" + "issues": "https://github.com/ecoAPM/php-libyear/issues", + "source": "https://github.com/ecoAPM/php-libyear/tree/2.3.0" }, - "time": "2024-01-30T19:34:25+00:00" + "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": { @@ -6421,20 +6241,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": { @@ -6474,37 +6294,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": { @@ -6539,20 +6359,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": { @@ -6562,20 +6382,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" @@ -6608,39 +6428,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" @@ -6674,38 +6498,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": { @@ -6736,20 +6560,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": { @@ -6757,19 +6581,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": { @@ -6806,7 +6630,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", @@ -6882,31 +6706,31 @@ }, { "name": "ergebnis/phpunit-slow-test-detector", - "version": "2.14.0", + "version": "2.16.0", "source": { "type": "git", "url": "https://github.com/ergebnis/phpunit-slow-test-detector.git", - "reference": "9138b0ebffdd2c579eb4b0567ef3bef8c714fdc2" + "reference": "7397341732833be9a8afa1a96211e28120693bfc" }, "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/7397341732833be9a8afa1a96211e28120693bfc", + "reference": "7397341732833be9a8afa1a96211e28120693bfc", "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/composer-normalize": "^2.43.0", "ergebnis/license": "^2.4.0", - "ergebnis/php-cs-fixer-config": "^6.25.1", + "ergebnis/php-cs-fixer-config": "^6.36.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.5", + "vimeo/psalm": "^5.26.1" }, "type": "library", "extra": { @@ -6945,7 +6769,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-09-27T15:36:35+00:00" }, { "name": "felixfbecker/advanced-json-rpc", @@ -6994,16 +6818,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": { @@ -7044,22 +6868,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": { @@ -7099,7 +6923,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": [ { @@ -7107,30 +6931,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", @@ -7170,7 +6994,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": [ { @@ -7178,26 +7002,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" @@ -7206,11 +7030,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": { @@ -7223,6 +7046,9 @@ "bamarni-bin": { "bin-links": true, "forward-command": false + }, + "branch-alias": { + "dev-master": "7.5-dev" } }, "autoload": { @@ -7288,7 +7114,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": [ { @@ -7304,37 +7130,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/" } @@ -7371,7 +7193,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": [ { @@ -7387,20 +7209,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": { @@ -7415,8 +7237,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" @@ -7487,7 +7309,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": [ { @@ -7503,7 +7325,7 @@ "type": "tidelift" } ], - "time": "2023-12-03T20:05:35+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "hamcrest/hamcrest-php", @@ -8026,23 +7848,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" @@ -8051,12 +7873,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" @@ -8091,19 +7913,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", @@ -8263,16 +8085,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": { @@ -8280,11 +8102,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", @@ -8310,7 +8133,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": [ { @@ -8318,20 +8141,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": { @@ -8367,9 +8190,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", @@ -8512,21 +8335,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", @@ -8574,27 +8397,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", @@ -8643,9 +8466,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", @@ -8925,40 +8748,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": { @@ -9017,37 +8840,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", @@ -9087,7 +8909,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": [ { @@ -9103,36 +8925,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": { @@ -9153,7 +8975,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": [ { @@ -9165,7 +8987,7 @@ "type": "tidelift" } ], - "time": "2023-09-15T11:02:59+00:00" + "time": "2024-08-04T10:04:51+00:00" }, { "name": "ondram/ci-detector", @@ -9771,16 +9593,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": { @@ -9829,9 +9651,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", @@ -9893,16 +9715,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": { @@ -9934,22 +9756,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": { @@ -9994,25 +9816,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", @@ -10039,34 +9861,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", @@ -10089,9 +9911,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", @@ -10147,21 +9969,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", @@ -10190,38 +10012,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" @@ -10233,7 +10055,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-main": "10.1.x-dev" } }, "autoload": { @@ -10262,7 +10084,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": [ { @@ -10270,7 +10092,7 @@ "type": "github" } ], - "time": "2024-03-12T15:33:41+00:00" + "time": "2024-08-22T04:31:57+00:00" }, { "name": "phpunit/php-file-iterator", @@ -10517,16 +10339,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": { @@ -10536,26 +10358,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" @@ -10598,7 +10420,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": [ { @@ -10614,7 +10436,7 @@ "type": "tidelift" } ], - "time": "2024-04-24T06:32:35+00:00" + "time": "2024-10-19T13:03:41+00:00" }, { "name": "psalm/plugin-mockery", @@ -11118,6 +10940,85 @@ ], "time": "2024-04-27T21:32:50+00:00" }, + { + "name": "react/promise-timer", + "version": "v1.11.0", + "source": { + "type": "git", + "url": "https://github.com/reactphp/promise-timer.git", + "reference": "4f70306ed66b8b44768941ca7f142092600fafc1" + }, + "dist": { + "type": "zip", + "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.2 || ^2.7.0 || ^1.2.1" + }, + "require-dev": { + "phpunit/phpunit": "^9.6 || ^5.7 || ^4.8.36" + }, + "type": "library", + "autoload": { + "files": [ + "src/functions_include.php" + ], + "psr-4": { + "React\\Promise\\Timer\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Christian Lück", + "email": "christian@clue.engineering", + "homepage": "https://clue.engineering/" + }, + { + "name": "Cees-Jan Kiewiet", + "email": "reactphp@ceesjankiewiet.nl", + "homepage": "https://wyrihaximus.net/" + }, + { + "name": "Jan Sorgalla", + "email": "jsorgalla@gmail.com", + "homepage": "https://sorgalla.com/" + }, + { + "name": "Chris Boden", + "email": "cboden@gmail.com", + "homepage": "https://cboden.dev/" + } + ], + "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", + "homepage": "https://github.com/reactphp/promise-timer", + "keywords": [ + "async", + "event-loop", + "promise", + "reactphp", + "timeout", + "timer" + ], + "support": { + "issues": "https://github.com/reactphp/promise-timer/issues", + "source": "https://github.com/reactphp/promise-timer/tree/v1.11.0" + }, + "funding": [ + { + "url": "https://opencollective.com/reactphp", + "type": "open_collective" + } + ], + "time": "2024-06-04T14:27:45+00:00" + }, { "name": "revolt/event-loop", "version": "v1.0.6", @@ -11375,16 +11276,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": { @@ -11428,7 +11329,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": [ { @@ -11436,7 +11337,7 @@ "type": "github" } ], - "time": "2024-03-16T01:33:30+00:00" + "time": "2024-06-15T03:11:19+00:00" }, { "name": "sebastian/cli-parser", @@ -11608,16 +11509,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": { @@ -11628,7 +11529,7 @@ "sebastian/exporter": "^5.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^10.5" }, "type": "library", "extra": { @@ -11673,7 +11574,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": [ { @@ -11681,7 +11582,7 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2024-10-18T14:56:07+00:00" }, { "name": "sebastian/complexity", @@ -12566,16 +12467,16 @@ }, { "name": "squizlabs/php_codesniffer", - "version": "3.10.0", + "version": "3.10.3", "source": { "type": "git", "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", - "reference": "57e09801c2fbae2d257b8b75bebb3deeb7e9deb2" + "reference": "62d32998e820bddc40f99f8251958aed187a5c9c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/57e09801c2fbae2d257b8b75bebb3deeb7e9deb2", - "reference": "57e09801c2fbae2d257b8b75bebb3deeb7e9deb2", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/62d32998e820bddc40f99f8251958aed187a5c9c", + "reference": "62d32998e820bddc40f99f8251958aed187a5c9c", "shasum": "" }, "require": { @@ -12642,26 +12543,26 @@ "type": "open_collective" } ], - "time": "2024-05-20T08:11:32+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": { @@ -12701,7 +12602,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": [ { @@ -12717,27 +12618,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": { @@ -12781,7 +12682,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": [ { @@ -12797,25 +12698,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": { @@ -12858,7 +12758,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": [ { @@ -12874,20 +12774,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": { @@ -12934,7 +12834,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": [ { @@ -12950,25 +12850,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", @@ -13017,7 +12918,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": [ { @@ -13033,24 +12934,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": { @@ -13059,12 +12961,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", @@ -13080,6 +12984,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", @@ -13112,7 +13017,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": [ { @@ -13128,20 +13033,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": { @@ -13174,7 +13079,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": [ { @@ -13190,7 +13095,7 @@ "type": "tidelift" } ], - "time": "2024-04-18T09:29:19+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/translation-contracts", @@ -13270,22 +13175,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", @@ -13318,6 +13306,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", @@ -13326,7 +13315,8 @@ "Symfony\\Component\\Validator\\": "" }, "exclude-from-classmap": [ - "/Tests/" + "/Tests/", + "/Resources/bin/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -13346,7 +13336,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": [ { @@ -13362,20 +13352,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": { @@ -13422,7 +13412,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": [ { @@ -13438,20 +13428,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": { @@ -13493,7 +13483,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": [ { @@ -13509,7 +13499,7 @@ "type": "tidelift" } ], - "time": "2024-04-28T11:44:19+00:00" + "time": "2024-09-17T12:49:58+00:00" }, { "name": "thecodingmachine/phpstan-safe-rule", @@ -13675,16 +13665,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": { @@ -13705,7 +13695,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", @@ -13781,7 +13771,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/glob", @@ -13832,35 +13822,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": { @@ -13881,7 +13925,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": [ { @@ -13889,7 +13933,7 @@ "type": "github" } ], - "time": "2024-04-22T15:57:59+00:00" + "time": "2024-07-03T20:07:57+00:00" }, { "name": "wyrihaximus/coding-standard", @@ -13977,25 +14021,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" }, @@ -14013,7 +14057,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": [ { @@ -14021,7 +14065,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", @@ -14082,26 +14126,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", @@ -14109,17 +14154,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", @@ -14144,7 +14189,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": [ { @@ -14152,20 +14197,19 @@ "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/app": 20 }, "prefer-stable": false, "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 new file mode 100644 index 0000000..2cd0f33 --- /dev/null +++ b/etc/generated_templates/AbstractList.php.twig @@ -0,0 +1,38 @@ + */ + final protected function crons(): iterable + { +{% for action in actions %} + /** + * @see \{{ action.class }} + * + * @psalm-suppress MixedArgument Because we addOns argument comes from json_decode, Psalm doesn't like it. TODO: Drop the need for json_encode/json_decode + */ + yield '{% if action.splitOut == true %}kubernetes{% else %}internal{% endif %}-{{ action.cron.name }}-{{ action.class|replace({'\\': '-'}) }}' => new Action( +{% if action.splitOut == true %} + type: 'kubernetes', +{% else %} + type: 'internal', +{% endif %} + name: '{{ action.cron.name }}', + schedule: '{{ action.cron.schedule }}', + class: \{{ action.class }}::class, + addOns: \json_decode('{{ action.cron.addOns|json_encode()|raw }}', true), /** @phpstan-ignore-line */ + ); +{% endfor %} + } +} diff --git a/etc/generated_templates/AbstractList_.php.twig b/etc/generated_templates/AbstractList_.php.twig deleted file mode 100644 index 69f5a83..0000000 --- a/etc/generated_templates/AbstractList_.php.twig +++ /dev/null @@ -1,36 +0,0 @@ -> - */ - final protected function crons(): iterable - { -{% for action in actions %} - /** @see \{{ action.class }} */ - yield [ -{% if action.split_out == true %} - 'type' => 'kubernetes', -{% else %} - 'type' => 'internal', -{% endif %} - 'name' => '{{ action.cron.name }}', - 'schedule' => '{{ action.cron.schedule }}', - 'class' => \{{ action.class }}::class, - ]; -{% endfor %} - } -} diff --git a/etc/generated_templates/AbstractManager.php.twig b/etc/generated_templates/AbstractManager.php.twig index 184b0c8..ef2ddd6 100644 --- a/etc/generated_templates/AbstractManager.php.twig +++ b/etc/generated_templates/AbstractManager.php.twig @@ -10,6 +10,7 @@ use WyriHaximus\React\Mutex\Contracts\MutexInterface; // phpcs:disable /** + * @internal * Autogenerated file, do not edit. Changes will be overwritten on the next composer (install|update) */ abstract class AbstractManager @@ -25,13 +26,13 @@ abstract class AbstractManager $this->cron = Cron::createWithMutex( $mutex, {% for action in actions %} -{% if action.split_out != true %} +{% if action.splitOut != true %} /** @see \{{ action.class }} */ new Action( 'cron_{{ action.cron.name }}', {{ action.cron.ttl }}, '{{ action.cron.schedule }}', - fn () => $this->perform(\{{ action.class }}::class) + fn () => $this->perform(\{{ action.class }}::class), ), {% endif %} {% endfor %} diff --git a/etc/qa/phpstan.neon b/etc/qa/phpstan.neon index 222188d..02d2985 100644 --- a/etc/qa/phpstan.neon +++ b/etc/qa/phpstan.neon @@ -5,7 +5,8 @@ parameters: ergebnis: noExtends: classesAllowedToBeExtended: - - Mammatus\Cron\Generated\AbstractList_ + - Composer\IO\NullIO + - Mammatus\Cron\Generated\AbstractList - Mammatus\Cron\Generated\AbstractManager includes: diff --git a/infection.json.dist b/infection.json.dist index 927165e..ab05447 100644 --- a/infection.json.dist +++ b/infection.json.dist @@ -17,45 +17,24 @@ "ignoreMsiWithNoMutations": true, "mutators": { "@default": true, - "FunctionCallRemoval": { - "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::waitUntilTheNextSecond" - ] - }, - "MethodCallRemoval": { - "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::tearDown" - ] - }, - "Continue_": { + "DecrementInteger": { "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::rmdir" + "Mammatus\\Cron\\Generated\\AbstractManager::cron" ] }, - "TrueValue": { + "IncrementInteger": { "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::provideTrueFalse" + "Mammatus\\Cron\\Generated\\AbstractManager::cron" ] }, - "ArrayItemRemoval": false, - "FalseValue": { - "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::provideTrueFalse" - ] - }, - "PublicVisibility": { - "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::provideTrueFalse" - ] - }, - "Identical": { + "FunctionCallRemoval": { "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::getSysTempDir" + "Mammatus\\Cron\\BuildIn\\Noop::perform" ] }, - "UnwrapStrToUpper": { + "LogicalNot": { "ignore": [ - "WyriHaximus\\TestUtilities\\TestCase::getSysTempDir" + "Mammatus\\Cron\\Composer\\Collector::collect" ] } }, diff --git a/src/Action.php b/src/Action.php new file mode 100644 index 0000000..9d8c966 --- /dev/null +++ b/src/Action.php @@ -0,0 +1,18 @@ + $addOns */ + public function __construct( + public string $type, + public string $name, + public string $schedule, + public string $class, + public array $addOns, + ) { + } +} diff --git a/src/BuildIn/Noop.php b/src/BuildIn/Noop.php index 16a127a..849bc23 100644 --- a/src/BuildIn/Noop.php +++ b/src/BuildIn/Noop.php @@ -9,11 +9,13 @@ use function WyriHaximus\React\timedPromise; -#[Cron(name: 'noop', ttl: 120, schedule: '* * * * *')] +#[Cron(name: 'no.op', ttl: 120, schedule: '* * * * *')] final class Noop implements Action { + private const INTERVAL = 3; + public function perform(): void { - timedPromise(3, true); + timedPromise(self::INTERVAL); } } diff --git a/src/Composer/Collector.php b/src/Composer/Collector.php new file mode 100644 index 0000000..afb5651 --- /dev/null +++ b/src/Composer/Collector.php @@ -0,0 +1,38 @@ + */ + public function collect(ReflectionClass $class): iterable + { + /** @var array $attributes */ + $attributes = []; + foreach ((new \ReflectionClass($class->getName()))->getAttributes() as $attributeReflection) { + $attribute = $attributeReflection->newInstance(); + $attributes[$attribute::class] = $attribute; + } + + if (! array_key_exists(Cron::class, $attributes)) { + return; + } + + /** @psalm-suppress ArgumentTypeCoercion */ + yield new Item( + $class->getName(), + $attributes[Cron::class], /** @phpstan-ignore-line */ + array_key_exists(SplitOut::class, $attributes), + ); + } +} diff --git a/src/Composer/Installer.php b/src/Composer/Installer.php index a40bf7d..69cae3d 100644 --- a/src/Composer/Installer.php +++ b/src/Composer/Installer.php @@ -5,51 +5,12 @@ namespace Mammatus\Cron\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\Cron\Attributes\Cron; -use Mammatus\Cron\Contracts\Action; -use Mammatus\Kubernetes\Attributes\SplitOut; -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,227 +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/cron: Locating actions'); - - $actions = self::findAllActions($composer, $io); - - $io->write(sprintf('mammatus/cron: Found %s action(s)', count($actions))); - - $classContentsManager = render( - file_get_contents( - self::locateRootPackageInstallPath($composer->getConfig(), $composer->getPackage()) . '/etc/generated_templates/AbstractManager.php.twig', - ), - ['actions' => $actions], - ); - - $installPathManager = self::locateRootPackageInstallPath($composer->getConfig(), $composer->getPackage()) - . '/src/Generated/AbstractManager.php'; - - file_put_contents($installPathManager, $classContentsManager); - chmod($installPathManager, 0664); - - $classContentsList = render( - file_get_contents( - self::locateRootPackageInstallPath($composer->getConfig(), $composer->getPackage()) . '/etc/generated_templates/AbstractList_.php.twig', - ), - ['actions' => $actions], - ); - - $installPathList = self::locateRootPackageInstallPath($composer->getConfig(), $composer->getPackage()) - . '/src/Generated/AbstractList_.php'; - - file_put_contents($installPathList, $classContentsList); - chmod($installPathList, 0664); - - $io->write(sprintf( - 'mammatus/cron: Generated static abstract cron manager and cron 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/cron') { - return dirname($vendorDir); - } - - return $vendorDir . '/mammatus/cron'; - } - - /** @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.cron.has-actions', 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/cron: 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(Action::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(Cron::class, $classNattributes['attributes']); - })->flatMap(static function (array $classNattributes): array { - return [ - [ - 'class' => $classNattributes['class'], - 'cron' => $classNattributes['attributes'][Cron::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..b39ca68 --- /dev/null +++ b/src/Composer/Item.php @@ -0,0 +1,30 @@ + $this->class, + 'cron' => $this->cron, + 'split_out' => $this->splitOut, + ]; + } +} diff --git a/src/Composer/Plugin.php b/src/Composer/Plugin.php new file mode 100644 index 0000000..2222028 --- /dev/null +++ b/src/Composer/Plugin.php @@ -0,0 +1,73 @@ + '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.cron.has-actions', true); + yield new IsInstantiable(); + yield new ImplementsInterface(Action::class); + } + + /** @inheritDoc */ + public function collectors(): iterable + { + yield new Collector(); + } + + public function compile(string $rootPath, ItemContract ...$items): void + { + $classContentsManager = SimpleTwig::render( + file_get_contents( /** @phpstan-ignore-line */ + $rootPath . '/etc/generated_templates/AbstractManager.php.twig', + ), + ['actions' => $items], + ); + $installPathManager = $rootPath . '/src/Generated/AbstractManager.php'; + file_put_contents($installPathManager, $classContentsManager); /** @phpstan-ignore-line */ + chmod($installPathManager, 0664); /** @phpstan-ignore-line */ + + $classContentsList = SimpleTwig::render( + file_get_contents( /** @phpstan-ignore-line */ + $rootPath . '/etc/generated_templates/AbstractList.php.twig', + ), + ['actions' => $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/Kubernetes/Helm/CronJobsValues.php b/src/Kubernetes/Helm/CronJobsValues.php index ad4c428..12b3cba 100644 --- a/src/Kubernetes/Helm/CronJobsValues.php +++ b/src/Kubernetes/Helm/CronJobsValues.php @@ -4,21 +4,38 @@ namespace Mammatus\Cron\Kubernetes\Helm; -use Mammatus\Cron\Generated\AbstractList_; +use Mammatus\Cron\Action; +use Mammatus\Cron\Generated\AbstractList; use Mammatus\Kubernetes\Events\Helm\Values; use WyriHaximus\Broadcast\Contracts\Listener; use function array_filter; +use function array_map; +use function str_replace; -final class CronJobsValues extends AbstractList_ implements Listener +final readonly class CronJobsValues 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( 'cronjobs', - array_filter( - [...$this->crons()], - static fn (array $action): bool => $action['type'] === 'kubernetes', + array_map( + static fn (Action $action): array => [ + 'name' => 'cron-' . str_replace('.', '-', $action->name), + 'schedule' => $action->schedule, + 'class' => $action->class, + 'addOns' => $action->addOns, + ], + $this->type === false ? [...$this->crons()] : array_filter( + [...$this->crons()], + fn (Action $action): bool => $action->type === $this->type, + ), ), ); } diff --git a/src/Manager.php b/src/Manager.php index c3f82fa..acd74ca 100644 --- a/src/Manager.php +++ b/src/Manager.php @@ -18,8 +18,11 @@ final class Manager extends AbstractManager implements Listener { - public function __construct(private LoggerInterface $logger, private MutexInterface $mutex, private ContainerInterface $container) - { + public function __construct( + private readonly LoggerInterface $logger, + private readonly MutexInterface $mutex, + private readonly ContainerInterface $container, + ) { } public function start(Initialize $event): void diff --git a/tests/Composer/InstallerTest.php b/tests/Composer/InstallerTest.php new file mode 100644 index 0000000..ebe4383 --- /dev/null +++ b/tests/Composer/InstallerTest.php @@ -0,0 +1,185 @@ + '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/cron', 'dev-master', 'dev-master'); + $rootPackage->setExtra([ + 'mammatus' => [ + 'cron' => ['has-actions' => true], + ], + ]); + $rootPackage->setAutoload([ + 'psr-4' => ['Mammatus\\Cron\\' => '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); + } + + $fileNameManager = $this->getTmpDir() . 'src/Generated/AbstractManager.php'; + if (file_exists($fileNameManager)) { /** @phpstan-ignore-line */ + unlink($fileNameManager); + } + + self::assertFileDoesNotExist($fileNameList); + self::assertFileDoesNotExist($fileNameManager); + + // Do the actual generating + Installer::findActions($event); + + $output = $io->output(); + + self::assertStringContainsString('mammatus/cron: Locating actions', $output); + self::assertStringContainsString('mammatus/cron: Generated static abstract queue manager and queue list in ', $output); + self::assertStringContainsString('mammatus/cron: Found 1 action(s)', $output); +// self::assertStringContainsString('mammatus/cron: An error occurred: Cannot reflect "Mammatus\Cron\Manager": Roave\BetterReflection\Reflection\ReflectionClass "Mammatus\Cron\Generated\AbstractManager" could not be found in the located source', $output); + + self::assertFileExists($fileNameList); + self::assertFileExists($fileNameManager); + self::assertTrue(in_array( + substr(sprintf('%o', fileperms($fileNameList)), -4), + [ + '0664', + '0666', + ], + true, + )); + self::assertTrue(in_array( + substr(sprintf('%o', fileperms($fileNameManager)), -4), + [ + '0664', + '0666', + ], + true, + )); + $fileContentsList = file_get_contents($fileNameList); + self::assertStringContainsStringIgnoringCase(' * @see \Mammatus\Cron\BuildIn\Noop', $fileContentsList); + self::assertStringContainsStringIgnoringCase('yield \'internal-no.op-Mammatus-Cron-BuildIn-Noop\' => new Action(', $fileContentsList); + self::assertStringContainsStringIgnoringCase('addOns: \json_decode(\'[]\', true), /** @phpstan-ignore-line */', $fileContentsList); + $fileContentsManager = file_get_contents($fileNameManager); + self::assertStringContainsStringIgnoringCase('/** @see \Mammatus\Cron\BuildIn\Noop */', $fileContentsManager); + self::assertStringContainsStringIgnoringCase('new Action(', $fileContentsManager); + self::assertStringContainsStringIgnoringCase('fn () => $this->perform(\Mammatus\Cron\BuildIn\Noop::class),', $fileContentsManager); + } + + 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..b310e32 --- /dev/null +++ b/tests/Composer/ItemTest.php @@ -0,0 +1,37 @@ +values($values); + + self::assertSame([ + 'cronjobs' => [], // Empty array here because we don't have any default cronjobs running in Kubernetes out of the box + ], $values->registry->get()); + } + + /** @test */ + public function all(): void + { + $values = new Values(new Values\Registry()); + (new CronJobsValues(false))->values($values); + + self::assertSame([ + 'cronjobs' => [ + 'internal-no.op-Mammatus-Cron-BuildIn-Noop' => [ + 'name' => 'cron-no-op', + 'schedule' => '* * * * *', + 'class' => 'Mammatus\Cron\BuildIn\Noop', + 'addOns' => [], + ], + ], // Empty array here because we don't have any default cronjobs running in Kubernetes out of the box + ], $values->registry->get()); + } +} diff --git a/tests/ManagerTest.php b/tests/ManagerTest.php new file mode 100644 index 0000000..e82bcac --- /dev/null +++ b/tests/ManagerTest.php @@ -0,0 +1,121 @@ +expects('debug')->with('Starting cron manager')->once(); + $logger->expects('debug')->with('Started cron manager')->once(); + $logger->expects('log')->with('debug', 'Getting job', ['cronjob' => Noop::class])->atLeast()->once(); + $logger->expects('log')->with('debug', 'Starting job', ['cronjob' => Noop::class])->atLeast()->once(); + $logger->expects('log')->with('debug', 'Job finished', ['cronjob' => Noop::class])->atLeast()->once(); + $logger->expects('debug')->with('Stopping cron manager')->once(); + $logger->expects('debug')->with('Stopped cron manager')->once(); + + $mutex = new Memory(); + + $container = Mockery::mock(ContainerInterface::class); + $container->expects('get')->with(Noop::class)->atLeast()->once()->andReturn(new Noop()); + + $manager = new Manager( + $logger, + $mutex, + $container, + ); + $manager->start(new Initialize()); + await(sleep(99)); + $manager->stop(new Shutdown()); + } + + /** @test */ + public function runAngry(): void + { + $exception = new RuntimeException('Ik ben boos!'); + + $logger = Mockery::mock(LoggerInterface::class); + $logger->expects('debug')->with('Starting cron manager')->once(); + $logger->expects('debug')->with('Started cron manager')->once(); + $logger->expects('log')->with('debug', 'Getting job', ['cronjob' => Noop::class])->atLeast()->once(); + $logger->expects('log')->with('debug', 'Starting job', ['cronjob' => Noop::class])->atLeast()->once(); + $logger->expects('log')->with('error', 'Job errored', ['cronjob' => Noop::class, 'exception' => $exception])->atLeast()->once(); + $logger->expects('debug')->with('Stopping cron manager')->once(); + $logger->expects('debug')->with('Stopped cron manager')->once(); + + $mutex = new Memory(); + + $container = Mockery::mock(ContainerInterface::class); + $container->expects('get')->with(Noop::class)->atLeast()->once()->andReturn(new Angry($exception)); + + $manager = new Manager( + $logger, + $mutex, + $container, + ); + $manager->start(new Initialize()); + await(sleep(99)); + $manager->stop(new Shutdown()); + } + + /** @test */ + public function notAnAction(): void + { + $logger = Mockery::mock(LoggerInterface::class); + $logger->expects('debug')->with('Starting cron manager')->once(); + $logger->expects('debug')->with('Started cron manager')->once(); + $logger->expects('log')->with('debug', 'Getting job', ['cronjob' => Noop::class])->atLeast()->once(); + $logger->expects('log')->withArgs(static function (string $type, string $error, array $context): bool { + if ($type !== 'error') { + return false; + } + + if ($error !== 'Job errored') { + return false; + } + + if (! (array_key_exists('cronjob', $context) && $context['cronjob'] === Noop::class)) { + return false; + } + + return array_key_exists('exception', $context) && $context['exception']->getMessage() === 'Given job is not an action'; + })->atLeast()->once(); + $logger->expects('debug')->with('Stopping cron manager')->once(); + $logger->expects('debug')->with('Stopped cron manager')->once(); + + $mutex = new Memory(); + + $container = Mockery::mock(ContainerInterface::class); + $container->expects('get')->with(Noop::class)->atLeast()->once()->andReturn(new Sad()); + + $manager = new Manager( + $logger, + $mutex, + $container, + ); + $manager->start(new Initialize()); + await(sleep(99)); + $manager->stop(new Shutdown()); + } +}