diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..2fdb442d --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,62 @@ +name: CI + +on: + push: + branches: + - trunk + pull_request: + +jobs: + php-cs-check: + name: 'PHP 7.4 compatibility (via PHP Code Sniffer)' + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: 7.4 + tools: composer:v2 + coverage: xdebug + + - name: Install Dependencies + run: composer install --no-interaction --prefer-dist --optimize-autoloader + + - name: Check PHP version compatibility + uses: pantheon-systems/phpcompatibility-action@v1 + with: + skip-php-setup: true + test-versions: 7.4- + paths: ${{ github.workspace }}/src + + test-unit: + needs: [php-cs-check] + runs-on: ${{ matrix.os }} + strategy: + fail-fast: true + matrix: + os: [ ubuntu-latest, macos-latest, windows-latest ] + php: [ '7.4', '8.0', '8.1', '8.2', '8.3' ] + dependency_version: [ prefer-stable ] + + name: ${{ matrix.os }} - PHP ${{ matrix.php }} - ${{ matrix.dependency_version }} + + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup PHP + uses: shivammathur/setup-php@v2 + with: + php-version: ${{ matrix.php }} + tools: composer:v2 + coverage: none + + - name: Install PHP dependencies + run: composer update --${{ matrix.dependency_version }} --no-interaction --prefer-dist --optimize-autoloader + + - name: Run tests + run: ./vendor/bin/phpunit --testdox diff --git a/composer.json b/composer.json index 9d2818e0..5ae966c2 100644 --- a/composer.json +++ b/composer.json @@ -1,31 +1,40 @@ { + "prefer-stable": true, "require": { - "json-mapper/json-mapper": "^2.21", - "symfony/event-dispatcher": "^7.0", - "symfony/filesystem": "^7.0", - "symfony/process": "^7.0", - "symfony/http-client": "^7.0", - "symfony/http-kernel": "^7.0", - "pimple/pimple": "^3.0", - "psr/simple-cache": "^3.0", - "opis/json-schema": "^2.3" + "json-mapper/json-mapper": "*", + "symfony/event-dispatcher": "*", + "symfony/filesystem": "*", + "symfony/process": "*", + "symfony/http-client": "*", + "symfony/http-kernel": "*", + "pimple/pimple": "*", + "psr/simple-cache": "*", + "opis/json-schema": "*" }, "require-dev": { - "pestphp/pest": "^2.33", - "nette/php-generator": "^4.1", - "jane-php/json-schema": "^7.6", - "bamarni/composer-bin-plugin": "^1.8" + "phpunit/phpunit": "*", + "squizlabs/php_codesniffer":"*", + "nette/php-generator": "*", + "jane-php/json-schema": "*", + "bamarni/composer-bin-plugin": "*", + "wp-coding-standards/wpcs": "3.0" }, "config": { "optimize-autoloader": true, "preferred-install": "dist", "allow-plugins": { - "pestphp/pest-plugin": true, "php-http/discovery": true, - "bamarni/composer-bin-plugin": true + "bamarni/composer-bin-plugin": true, + "dealerdirect/phpcodesniffer-composer-installer": true + }, + "platform": { + "php": "7.4" } }, "autoload": { + "classmap": [ + "src/" + ], "psr-4": { "WordPress\\": "src/WordPress", "Symfony\\Component\\Process\\": "vendor/symfony/process" @@ -35,5 +44,8 @@ "src/WordPress/Zip/functions.php", "src/WordPress/Streams/stream_str_replace.php" ] + }, + "scripts": { + "phpcs": "phpcs --standard=WordPress" } } diff --git a/composer.lock b/composer.lock index 79705992..e2fb007b 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": "f70fd8a5043c08bdc0f94e0b5bbb93c0", + "content-hash": "b74762c3eed483809953e21464cf1760", "packages": [ { "name": "json-mapper/json-mapper", @@ -439,20 +439,20 @@ }, { "name": "psr/cache", - "version": "3.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", - "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", + "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=5.3.0" }, "type": "library", "extra": { @@ -472,7 +472,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -482,33 +482,28 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/3.0.0" + "source": "https://github.com/php-fig/cache/tree/master" }, - "time": "2021-02-03T23:26:27+00:00" + "time": "2016-08-06T20:24:11+00:00" }, { "name": "psr/container", - "version": "2.0.2", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/c71ecc56dfe541dbd90c5360474fbc405f8d5963", - "reference": "c71ecc56dfe541dbd90c5360474fbc405f8d5963", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { "php": ">=7.4.0" }, "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, "autoload": { "psr-4": { "Psr\\Container\\": "src/" @@ -535,9 +530,9 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/2.0.2" + "source": "https://github.com/php-fig/container/tree/1.1.2" }, - "time": "2021-11-05T16:47:00+00:00" + "time": "2021-11-05T16:50:12+00:00" }, { "name": "psr/event-dispatcher", @@ -591,30 +586,30 @@ }, { "name": "psr/log", - "version": "3.0.0", + "version": "1.1.4", "source": { "type": "git", "url": "https://github.com/php-fig/log.git", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001" + "reference": "d49695b909c3b7628b6289db5479a1c204601f11" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/fe5ea303b0887d5caefd3d431c3e61ad47037001", - "reference": "fe5ea303b0887d5caefd3d431c3e61ad47037001", + "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", + "reference": "d49695b909c3b7628b6289db5479a1c204601f11", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { "psr-4": { - "Psr\\Log\\": "src" + "Psr\\Log\\": "Psr/Log/" } }, "notification-url": "https://packagist.org/downloads/", @@ -635,31 +630,31 @@ "psr-3" ], "support": { - "source": "https://github.com/php-fig/log/tree/3.0.0" + "source": "https://github.com/php-fig/log/tree/1.1.4" }, - "time": "2021-07-14T16:46:02+00:00" + "time": "2021-05-03T11:20:27+00:00" }, { "name": "psr/simple-cache", - "version": "3.0.0", + "version": "1.0.1", "source": { "type": "git", "url": "https://github.com/php-fig/simple-cache.git", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865" + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/764e0b3939f5ca87cb904f570ef9be2d78a07865", - "reference": "764e0b3939f5ca87cb904f570ef9be2d78a07865", + "url": "https://api.github.com/repos/php-fig/simple-cache/zipball/408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", + "reference": "408d5eafb83c57f6365a3ca330ff23aa4a5fa39b", "shasum": "" }, "require": { - "php": ">=8.0.0" + "php": ">=5.3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "3.0.x-dev" + "dev-master": "1.0.x-dev" } }, "autoload": { @@ -674,7 +669,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interfaces for simple caching", @@ -686,63 +681,64 @@ "simple-cache" ], "support": { - "source": "https://github.com/php-fig/simple-cache/tree/3.0.0" + "source": "https://github.com/php-fig/simple-cache/tree/master" }, - "time": "2021-10-29T13:26:27+00:00" + "time": "2017-10-23T01:57:42+00:00" }, { "name": "symfony/cache", - "version": "v6.4.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/cache.git", - "reference": "49f8cdee544a621a621cd21b6cda32a38926d310" + "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache/zipball/49f8cdee544a621a621cd21b6cda32a38926d310", - "reference": "49f8cdee544a621a621cd21b6cda32a38926d310", + "url": "https://api.github.com/repos/symfony/cache/zipball/a30f316214d908cf5874f700f3f3fb29ceee91ba", + "reference": "a30f316214d908cf5874f700f3f3fb29ceee91ba", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/cache": "^2.0|^3.0", + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0", "psr/log": "^1.1|^2|^3", - "symfony/cache-contracts": "^2.5|^3", - "symfony/service-contracts": "^2.5|^3", - "symfony/var-exporter": "^6.3.6|^7.0" + "symfony/cache-contracts": "^1.1.7|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "conflict": { "doctrine/dbal": "<2.13.1", - "symfony/dependency-injection": "<5.4", - "symfony/http-kernel": "<5.4", - "symfony/var-dumper": "<5.4" + "symfony/dependency-injection": "<4.4", + "symfony/http-kernel": "<4.4", + "symfony/var-dumper": "<4.4" }, "provide": { - "psr/cache-implementation": "2.0|3.0", - "psr/simple-cache-implementation": "1.0|2.0|3.0", - "symfony/cache-implementation": "1.1|2.0|3.0" + "psr/cache-implementation": "1.0|2.0", + "psr/simple-cache-implementation": "1.0|2.0", + "symfony/cache-implementation": "1.0|2.0" }, "require-dev": { "cache/integration-tests": "dev-master", + "doctrine/cache": "^1.6|^2.0", "doctrine/dbal": "^2.13.1|^3|^4", - "predis/predis": "^1.1|^2.0", - "psr/simple-cache": "^1.0|^2.0|^3.0", - "symfony/config": "^5.4|^6.0|^7.0", - "symfony/dependency-injection": "^5.4|^6.0|^7.0", - "symfony/filesystem": "^5.4|^6.0|^7.0", - "symfony/http-kernel": "^5.4|^6.0|^7.0", - "symfony/messenger": "^5.4|^6.0|^7.0", - "symfony/var-dumper": "^5.4|^6.0|^7.0" + "predis/predis": "^1.1", + "psr/simple-cache": "^1.0|^2.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/messenger": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { "psr-4": { "Symfony\\Component\\Cache\\": "" }, - "classmap": [ - "Traits/ValueWrapper.php" - ], "exclude-from-classmap": [ "/Tests/" ] @@ -768,7 +764,7 @@ "psr6" ], "support": { - "source": "https://github.com/symfony/cache/tree/v6.4.3" + "source": "https://github.com/symfony/cache/tree/v5.4.36" }, "funding": [ { @@ -784,30 +780,33 @@ "type": "tidelift" } ], - "time": "2024-01-23T14:51:35+00:00" + "time": "2024-02-19T13:08:14+00:00" }, { "name": "symfony/cache-contracts", - "version": "v3.4.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/cache-contracts.git", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778" + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/1d74b127da04ffa87aa940abe15446fa89653778", - "reference": "1d74b127da04ffa87aa940abe15446fa89653778", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", + "reference": "64be4a7acb83b6f2bf6de9a02cee6dad41277ebc", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/cache": "^3.0" + "php": ">=7.2.5", + "psr/cache": "^1.0|^2.0|^3.0" + }, + "suggest": { + "symfony/cache-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -844,7 +843,74 @@ "standards" ], "support": { - "source": "https://github.com/symfony/cache-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/cache-contracts/tree/v2.5.2" + }, + "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": "2022-01-02T09:53:40+00:00" + }, + { + "name": "symfony/deprecation-contracts", + "version": "v2.5.2", + "source": { + "type": "git", + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "reference": "e8b495ea28c1d97b5e0c121748d6f9b53d075c66", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "A generic function and convention to trigger deprecation notices", + "homepage": "https://symfony.com", + "support": { + "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.2" }, "funding": [ { @@ -860,35 +926,31 @@ "type": "tidelift" } ], - "time": "2023-09-25T12:52:38+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/error-handler", - "version": "v7.0.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/error-handler.git", - "reference": "9441608b79577176b6d8e44012cc3d20b4b45242" + "reference": "90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/error-handler/zipball/9441608b79577176b6d8e44012cc3d20b4b45242", - "reference": "9441608b79577176b6d8e44012cc3d20b4b45242", + "url": "https://api.github.com/repos/symfony/error-handler/zipball/90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1", + "reference": "90b1d7799bfc1b3ed5f902e8b334eeb7dba537a1", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/var-dumper": "^6.4|^7.0" - }, - "conflict": { - "symfony/deprecation-contracts": "<2.5", - "symfony/http-kernel": "<6.4" + "symfony/var-dumper": "^4.4|^5.0|^6.0" }, "require-dev": { - "symfony/deprecation-contracts": "^2.5|^3", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/serializer": "^4.4|^5.0|^6.0" }, "bin": [ "Resources/bin/patch-type-declarations" @@ -919,7 +981,7 @@ "description": "Provides tools to manage errors and ease debugging PHP code", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/error-handler/tree/v7.0.3" + "source": "https://github.com/symfony/error-handler/tree/v5.4.36" }, "funding": [ { @@ -935,43 +997,48 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:41:16+00:00" + "time": "2024-02-22T11:40:53+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v7.0.3", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e" + "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/834c28d533dd0636f910909d01b9ff45cc094b5e", - "reference": "834c28d533dd0636f910909d01b9ff45cc094b5e", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/7a69a85c7ea5bdd1e875806a99c51a87d3a74b38", + "reference": "7a69a85c7ea5bdd1e875806a99c51a87d3a74b38", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/event-dispatcher-contracts": "^2.5|^3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/event-dispatcher-contracts": "^2|^3", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/service-contracts": "<2.5" + "symfony/dependency-injection": "<4.4" }, "provide": { "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "2.0|3.0" + "symfony/event-dispatcher-implementation": "2.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/stopwatch": "^4.4|^5.0|^6.0" + }, + "suggest": { + "symfony/dependency-injection": "", + "symfony/http-kernel": "" }, "type": "library", "autoload": { @@ -999,7 +1066,7 @@ "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.3" + "source": "https://github.com/symfony/event-dispatcher/tree/v5.4.35" }, "funding": [ { @@ -1015,30 +1082,33 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/event-dispatcher-contracts", - "version": "v3.4.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher-contracts.git", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df" + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/a76aed96a42d2b521153fb382d418e30d18b59df", - "reference": "a76aed96a42d2b521153fb382d418e30d18b59df", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/f98b54df6ad059855739db6fcbc2d36995283fe1", + "reference": "f98b54df6ad059855739db6fcbc2d36995283fe1", "shasum": "" }, "require": { - "php": ">=8.1", + "php": ">=7.2.5", "psr/event-dispatcher": "^1" }, + "suggest": { + "symfony/event-dispatcher-implementation": "" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1075,7 +1145,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v2.5.2" }, "funding": [ { @@ -1091,26 +1161,27 @@ "type": "tidelift" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2022-01-02T09:53:40+00:00" }, { "name": "symfony/filesystem", - "version": "v7.0.3", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12" + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/2890e3a825bc0c0558526c04499c13f83e1b6b12", - "reference": "2890e3a825bc0c0558526c04499c13f83e1b6b12", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/5a553607d4ffbfa9c0ab62facadea296c9db7086", + "reference": "5a553607d4ffbfa9c0ab62facadea296c9db7086", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.8" + "symfony/polyfill-mbstring": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -1138,7 +1209,7 @@ "description": "Provides basic utilities for the filesystem", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/filesystem/tree/v7.0.3" + "source": "https://github.com/symfony/filesystem/tree/v5.4.35" }, "funding": [ { @@ -1154,37 +1225,36 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/http-client", - "version": "v7.0.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/http-client.git", - "reference": "3d2605c07cd14aec294f72f5bf8147702f7a5ada" + "reference": "3e147c34ce44644f7bf7c2b8c8ecf76c0aac94b9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/3d2605c07cd14aec294f72f5bf8147702f7a5ada", - "reference": "3d2605c07cd14aec294f72f5bf8147702f7a5ada", + "url": "https://api.github.com/repos/symfony/http-client/zipball/3e147c34ce44644f7bf7c2b8c8ecf76c0aac94b9", + "reference": "3e147c34ce44644f7bf7c2b8c8ecf76c0aac94b9", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=7.2.5", "psr/log": "^1|^2|^3", - "symfony/http-client-contracts": "^3", - "symfony/service-contracts": "^2.5|^3" - }, - "conflict": { - "php-http/discovery": "<1.15", - "symfony/http-foundation": "<6.4" + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/http-client-contracts": "^2.4", + "symfony/polyfill-php73": "^1.11", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.0|^2|^3" }, "provide": { "php-http/async-client-implementation": "*", "php-http/client-implementation": "*", "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "3.0" + "symfony/http-client-implementation": "2.4" }, "require-dev": { "amphp/amp": "^2.5", @@ -1194,12 +1264,12 @@ "guzzlehttp/promises": "^1.4", "nyholm/psr7": "^1.0", "php-http/httplug": "^1.0|^2.0", + "php-http/message-factory": "^1.0", "psr/http-client": "^1.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0" + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4.13|^5.1.5|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -1230,7 +1300,7 @@ "http" ], "support": { - "source": "https://github.com/symfony/http-client/tree/v7.0.3" + "source": "https://github.com/symfony/http-client/tree/v5.4.36" }, "funding": [ { @@ -1246,29 +1316,32 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:41:16+00:00" + "time": "2024-02-14T15:13:37+00:00" }, { "name": "symfony/http-client-contracts", - "version": "v3.4.0", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/http-client-contracts.git", - "reference": "1ee70e699b41909c209a0c930f11034b93578654" + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/1ee70e699b41909c209a0c930f11034b93578654", - "reference": "1ee70e699b41909c209a0c930f11034b93578654", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", + "reference": "ba6a9f0e8f3edd190520ee3b9a958596b6ca2e70", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.2.5" + }, + "suggest": { + "symfony/http-client-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1278,10 +1351,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\HttpClient\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1308,7 +1378,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/http-client-contracts/tree/v3.4.0" + "source": "https://github.com/symfony/http-client-contracts/tree/v2.5.2" }, "funding": [ { @@ -1324,40 +1394,39 @@ "type": "tidelift" } ], - "time": "2023-07-30T20:28:31+00:00" + "time": "2022-04-12T15:48:08+00:00" }, { "name": "symfony/http-foundation", - "version": "v7.0.3", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "f24e2568376e98978022fd09ce45e2dd049e67c8" + "reference": "f2ab692a22aef1cd54beb893aa0068bdfb093928" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f24e2568376e98978022fd09ce45e2dd049e67c8", - "reference": "f24e2568376e98978022fd09ce45e2dd049e67c8", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/f2ab692a22aef1cd54beb893aa0068bdfb093928", + "reference": "f2ab692a22aef1cd54beb893aa0068bdfb093928", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-mbstring": "~1.1", - "symfony/polyfill-php83": "^1.27" - }, - "conflict": { - "doctrine/dbal": "<3.6", - "symfony/cache": "<6.4" + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "doctrine/dbal": "^3.6|^4", - "predis/predis": "^1.1|^2.0", - "symfony/cache": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/rate-limiter": "^6.4|^7.0" + "predis/predis": "~1.0", + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.4|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^5.4.12|^6.0.12|^6.1.4", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/rate-limiter": "^5.2|^6.0" + }, + "suggest": { + "symfony/mime": "To use the file extension guesser" }, "type": "library", "autoload": { @@ -1385,7 +1454,7 @@ "description": "Defines an object-oriented layer for the HTTP specification", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-foundation/tree/v7.0.3" + "source": "https://github.com/symfony/http-foundation/tree/v5.4.35" }, "funding": [ { @@ -1401,75 +1470,75 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "symfony/http-kernel", - "version": "v7.0.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "6352029d6667e8ac5b54aae95afe10b2706b31ac" + "reference": "63a872e01fd70802b77023e2f5924170c99b2825" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/6352029d6667e8ac5b54aae95afe10b2706b31ac", - "reference": "6352029d6667e8ac5b54aae95afe10b2706b31ac", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/63a872e01fd70802b77023e2f5924170c99b2825", + "reference": "63a872e01fd70802b77023e2f5924170c99b2825", "shasum": "" }, "require": { - "php": ">=8.2", - "psr/log": "^1|^2|^3", - "symfony/error-handler": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/polyfill-ctype": "^1.8" + "php": ">=7.2.5", + "psr/log": "^1|^2", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^5.0|^6.0", + "symfony/http-foundation": "^5.4.21|^6.2.7", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/browser-kit": "<6.4", - "symfony/cache": "<6.4", - "symfony/config": "<6.4", - "symfony/console": "<6.4", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<6.4", - "symfony/form": "<6.4", - "symfony/http-client": "<6.4", - "symfony/http-client-contracts": "<2.5", - "symfony/mailer": "<6.4", - "symfony/messenger": "<6.4", - "symfony/translation": "<6.4", - "symfony/translation-contracts": "<2.5", - "symfony/twig-bridge": "<6.4", - "symfony/validator": "<6.4", - "symfony/var-dumper": "<6.4", - "twig/twig": "<3.0.4" + "symfony/browser-kit": "<5.4", + "symfony/cache": "<5.0", + "symfony/config": "<5.0", + "symfony/console": "<4.4", + "symfony/dependency-injection": "<5.3", + "symfony/doctrine-bridge": "<5.0", + "symfony/form": "<5.0", + "symfony/http-client": "<5.0", + "symfony/mailer": "<5.0", + "symfony/messenger": "<5.0", + "symfony/translation": "<5.0", + "symfony/twig-bridge": "<5.0", + "symfony/validator": "<5.0", + "twig/twig": "<2.13" }, "provide": { - "psr/log-implementation": "1.0|2.0|3.0" + "psr/log-implementation": "1.0|2.0" }, "require-dev": { "psr/cache": "^1.0|^2.0|^3.0", - "symfony/browser-kit": "^6.4|^7.0", - "symfony/clock": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/css-selector": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/dom-crawler": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/http-client-contracts": "^2.5|^3", - "symfony/process": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/routing": "^6.4|^7.0", - "symfony/serializer": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/translation": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "symfony/browser-kit": "^5.4|^6.0", + "symfony/config": "^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/css-selector": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^5.3|^6.0", + "symfony/dom-crawler": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^4.4|^5.0|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client-contracts": "^1.1|^2|^3", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/routing": "^4.4|^5.0|^6.0", + "symfony/stopwatch": "^4.4|^5.0|^6.0", + "symfony/translation": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2|^3", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "symfony/browser-kit": "", + "symfony/config": "", + "symfony/console": "", + "symfony/dependency-injection": "" }, "type": "library", "autoload": { @@ -1497,7 +1566,7 @@ "description": "Provides a structured process for converting a Request into a Response", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-kernel/tree/v7.0.3" + "source": "https://github.com/symfony/http-kernel/tree/v5.4.36" }, "funding": [ { @@ -1513,7 +1582,7 @@ "type": "tidelift" } ], - "time": "2024-01-31T07:32:56+00:00" + "time": "2024-02-27T06:22:59+00:00" }, { "name": "symfony/polyfill-ctype", @@ -1831,39 +1900,30 @@ "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/polyfill-php83", - "version": "v1.29.0", + "name": "symfony/process", + "version": "v5.4.36", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php83.git", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff" + "url": "https://github.com/symfony/process.git", + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php83/zipball/86fcae159633351e5fd145d1c47de6c528f8caff", - "reference": "86fcae159633351e5fd145d1c47de6c528f8caff", + "url": "https://api.github.com/repos/symfony/process/zipball/4fdf34004f149cc20b2f51d7d119aa500caad975", + "reference": "4fdf34004f149cc20b2f51d7d119aa500caad975", "shasum": "" }, "require": { - "php": ">=7.1", - "symfony/polyfill-php80": "^1.14" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php83\\": "" + "Symfony\\Component\\Process\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -1872,24 +1932,18 @@ ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Fabien Potencier", + "email": "fabien@symfony.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.3+ features to lower PHP versions", + "description": "Executes commands in sub-processes", "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], "support": { - "source": "https://github.com/symfony/polyfill-php83/tree/v1.29.0" + "source": "https://github.com/symfony/process/tree/v5.4.36" }, "funding": [ { @@ -1905,33 +1959,37 @@ "type": "tidelift" } ], - "time": "2024-01-29T20:11:03+00:00" + "time": "2024-02-12T15:49:53+00:00" }, { "name": "symfony/service-contracts", - "version": "v3.4.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/service-contracts.git", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", - "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/4b426aac47d6427cc1a1d0f7e2ac724627f5966c", + "reference": "4b426aac47d6427cc1a1d0f7e2ac724627f5966c", "shasum": "" }, "require": { - "php": ">=8.1", - "psr/container": "^1.1|^2.0" + "php": ">=7.2.5", + "psr/container": "^1.1", + "symfony/deprecation-contracts": "^2.1|^3" }, "conflict": { "ext-psr": "<1.1|>=2" }, + "suggest": { + "symfony/service-implementation": "" + }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -1941,10 +1999,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Service\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -1971,7 +2026,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/service-contracts/tree/v2.5.2" }, "funding": [ { @@ -1987,36 +2042,42 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2022-05-30T19:17:29+00:00" }, { "name": "symfony/var-dumper", - "version": "v7.0.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "a7a061abbf6fe3d4a79032cbc5149a4d65a10234" + "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/a7a061abbf6fe3d4a79032cbc5149a4d65a10234", - "reference": "a7a061abbf6fe3d4a79032cbc5149a4d65a10234", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90", + "reference": "2e9c2b11267119d9c90d6b3fdce5e4e9f15e2e90", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-mbstring": "~1.0" + "php": ">=7.2.5", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "conflict": { - "symfony/console": "<6.4" + "symfony/console": "<4.4" }, "require-dev": { "ext-iconv": "*", - "symfony/console": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/uid": "^6.4|^7.0", - "twig/twig": "^3.0.4" + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/uid": "^5.1|^6.0", + "twig/twig": "^2.13|^3.0.4" + }, + "suggest": { + "ext-iconv": "To convert non-UTF-8 strings to UTF-8 (or symfony/polyfill-iconv in case ext-iconv cannot be used).", + "ext-intl": "To show region name in time zone dump", + "symfony/console": "To use the ServerDumpCommand and/or the bin/var-dump-server script" }, "bin": [ "Resources/bin/var-dump-server" @@ -2054,7 +2115,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v7.0.3" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.36" }, "funding": [ { @@ -2070,27 +2131,28 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-02-15T11:19:14+00:00" }, { "name": "symfony/var-exporter", - "version": "v7.0.3", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/var-exporter.git", - "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8" + "reference": "abb0a151b62d6b07e816487e20040464af96cae7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-exporter/zipball/1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", - "reference": "1fb79308cb5fc2b44bff6e8af10a5af6812e05b8", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/abb0a151b62d6b07e816487e20040464af96cae7", + "reference": "abb0a151b62d6b07e816487e20040464af96cae7", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=7.2.5", + "symfony/polyfill-php80": "^1.16" }, "require-dev": { - "symfony/var-dumper": "^6.4|^7.0" + "symfony/var-dumper": "^4.4.9|^5.0.9|^6.0" }, "type": "library", "autoload": { @@ -2123,12 +2185,10 @@ "export", "hydrate", "instantiate", - "lazy-loading", - "proxy", "serialize" ], "support": { - "source": "https://github.com/symfony/var-exporter/tree/v7.0.3" + "source": "https://github.com/symfony/var-exporter/tree/v5.4.35" }, "funding": [ { @@ -2144,7 +2204,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-01-23T13:51:25+00:00" } ], "packages-dev": [ @@ -2206,57 +2266,39 @@ "time": "2022-10-31T08:38:03+00:00" }, { - "name": "brianium/paratest", - "version": "v7.4.3", + "name": "dealerdirect/phpcodesniffer-composer-installer", + "version": "v1.0.0", "source": { "type": "git", - "url": "https://github.com/paratestphp/paratest.git", - "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec" + "url": "https://github.com/PHPCSStandards/composer-installer.git", + "reference": "4be43904336affa5c2f70744a348312336afd0da" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/paratestphp/paratest/zipball/64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", - "reference": "64fcfd0e28a6b8078a19dbf9127be2ee645b92ec", + "url": "https://api.github.com/repos/PHPCSStandards/composer-installer/zipball/4be43904336affa5c2f70744a348312336afd0da", + "reference": "4be43904336affa5c2f70744a348312336afd0da", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-pcre": "*", - "ext-reflection": "*", - "ext-simplexml": "*", - "fidry/cpu-core-counter": "^1.1.0", - "jean85/pretty-package-versions": "^2.0.5", - "php": "~8.2.0 || ~8.3.0", - "phpunit/php-code-coverage": "^10.1.11 || ^11.0.0", - "phpunit/php-file-iterator": "^4.1.0 || ^5.0.0", - "phpunit/php-timer": "^6.0.0 || ^7.0.0", - "phpunit/phpunit": "^10.5.9 || ^11.0.3", - "sebastian/environment": "^6.0.1 || ^7.0.0", - "symfony/console": "^6.4.3 || ^7.0.3", - "symfony/process": "^6.4.3 || ^7.0.3" + "composer-plugin-api": "^1.0 || ^2.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" }, "require-dev": { - "doctrine/coding-standard": "^12.0.0", - "ext-pcov": "*", - "ext-posix": "*", - "phpstan/phpstan": "^1.10.58", - "phpstan/phpstan-deprecation-rules": "^1.1.4", - "phpstan/phpstan-phpunit": "^1.3.15", - "phpstan/phpstan-strict-rules": "^1.5.2", - "squizlabs/php_codesniffer": "^3.9.0", - "symfony/filesystem": "^6.4.3 || ^7.0.3" + "composer/composer": "*", + "ext-json": "*", + "ext-zip": "*", + "php-parallel-lint/php-parallel-lint": "^1.3.1", + "phpcompatibility/php-compatibility": "^9.0", + "yoast/phpunit-polyfills": "^1.0" + }, + "type": "composer-plugin", + "extra": { + "class": "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" }, - "bin": [ - "bin/paratest", - "bin/paratest.bat", - "bin/paratest_for_phpstorm" - ], - "type": "library", "autoload": { "psr-4": { - "ParaTest\\": [ - "src/" - ] + "PHPCSStandards\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2265,86 +2307,41 @@ ], "authors": [ { - "name": "Brian Scaturro", - "email": "scaturrob@gmail.com", - "role": "Developer" + "name": "Franck Nijhof", + "email": "franck.nijhof@dealerdirect.com", + "homepage": "http://www.frenck.nl", + "role": "Developer / IT Manager" }, { - "name": "Filippo Tessarotto", - "email": "zoeslam@gmail.com", - "role": "Developer" + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/composer-installer/graphs/contributors" } ], - "description": "Parallel testing for PHP", - "homepage": "https://github.com/paratestphp/paratest", + "description": "PHP_CodeSniffer Standards Composer Installer Plugin", + "homepage": "http://www.dealerdirect.com", "keywords": [ - "concurrent", - "parallel", - "phpunit", - "testing" - ], - "support": { - "issues": "https://github.com/paratestphp/paratest/issues", - "source": "https://github.com/paratestphp/paratest/tree/v7.4.3" - }, - "funding": [ - { - "url": "https://github.com/sponsors/Slamdunk", - "type": "github" - }, - { - "url": "https://paypal.me/filippotessarotto", - "type": "paypal" - } - ], - "time": "2024-02-20T07:24:02+00:00" - }, - { - "name": "doctrine/deprecations", - "version": "1.1.3", - "source": { - "type": "git", - "url": "https://github.com/doctrine/deprecations.git", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/deprecations/zipball/dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "reference": "dfbaa3c2d2e9a9df1118213f3b8b0c597bb99fab", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "phpstan/phpstan": "1.4.10 || 1.10.15", - "phpstan/phpstan-phpunit": "^1.0", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "psalm/plugin-phpunit": "0.18.4", - "psr/log": "^1 || ^2 || ^3", - "vimeo/psalm": "4.30.0 || 5.12.0" - }, - "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" + "PHPCodeSniffer", + "PHP_CodeSniffer", + "code quality", + "codesniffer", + "composer", + "installer", + "phpcbf", + "phpcs", + "plugin", + "qa", + "quality", + "standard", + "standards", + "style guide", + "stylecheck", + "tests" ], - "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" + "issues": "https://github.com/PHPCSStandards/composer-installer/issues", + "source": "https://github.com/PHPCSStandards/composer-installer" }, - "time": "2024-01-30T19:34:25+00:00" + "time": "2023-01-05T11:28:13+00:00" }, { "name": "doctrine/inflector", @@ -2438,37 +2435,36 @@ "time": "2024-02-18T20:23:39+00:00" }, { - "name": "fidry/cpu-core-counter", - "version": "1.1.0", + "name": "doctrine/instantiator", + "version": "1.5.0", "source": { "type": "git", - "url": "https://github.com/theofidry/cpu-core-counter.git", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42" + "url": "https://github.com/doctrine/instantiator.git", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/theofidry/cpu-core-counter/zipball/f92996c4d5c1a696a6a970e20f7c4216200fcc42", - "reference": "f92996c4d5c1a696a6a970e20f7c4216200fcc42", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", + "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": "^7.1 || ^8.0" }, "require-dev": { - "fidry/makefile": "^0.2.0", - "fidry/php-cs-fixer-config": "^1.1.2", - "phpstan/extension-installer": "^1.2.0", - "phpstan/phpstan": "^1.9.2", - "phpstan/phpstan-deprecation-rules": "^1.0.0", - "phpstan/phpstan-phpunit": "^1.2.2", - "phpstan/phpstan-strict-rules": "^1.4.4", - "phpunit/phpunit": "^8.5.31 || ^9.5.26", - "webmozarts/strict-phpunit": "^7.5" + "doctrine/coding-standard": "^9 || ^11", + "ext-pdo": "*", + "ext-phar": "*", + "phpbench/phpbench": "^0.16 || ^1", + "phpstan/phpstan": "^1.4", + "phpstan/phpstan-phpunit": "^1", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "vimeo/psalm": "^4.30 || ^5.4" }, "type": "library", "autoload": { "psr-4": { - "Fidry\\CpuCoreCounter\\": "src/" + "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2477,133 +2473,72 @@ ], "authors": [ { - "name": "Théo FIDRY", - "email": "theo.fidry@gmail.com" + "name": "Marco Pivetta", + "email": "ocramius@gmail.com", + "homepage": "https://ocramius.github.io/" } ], - "description": "Tiny utility to get the number of CPU cores.", + "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", + "homepage": "https://www.doctrine-project.org/projects/instantiator.html", "keywords": [ - "CPU", - "core" + "constructor", + "instantiate" ], "support": { - "issues": "https://github.com/theofidry/cpu-core-counter/issues", - "source": "https://github.com/theofidry/cpu-core-counter/tree/1.1.0" + "issues": "https://github.com/doctrine/instantiator/issues", + "source": "https://github.com/doctrine/instantiator/tree/1.5.0" }, "funding": [ { - "url": "https://github.com/theofidry", - "type": "github" - } - ], - "time": "2024-02-07T09:43:46+00:00" - }, - { - "name": "filp/whoops", - "version": "2.15.4", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a139776fa3f5985a50b509f2a02ff0f709d2a546", - "reference": "a139776fa3f5985a50b509f2a02ff0f709d2a546", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0 || ^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" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.15.4" - }, - "funding": [ + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, { - "url": "https://github.com/denis-sokolov", - "type": "github" + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", + "type": "tidelift" } ], - "time": "2023-11-03T12:00:00+00:00" + "time": "2022-12-30T00:15:36+00:00" }, { "name": "jane-php/json-schema", - "version": "v7.6.0", + "version": "v7.5.5", "source": { "type": "git", "url": "https://github.com/janephp/json-schema.git", - "reference": "5cd54d4cedd7aabb02037cc5114063149f437ca9" + "reference": "283e7ae383cef1dda5f284987201e1facb050ab4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/janephp/json-schema/zipball/5cd54d4cedd7aabb02037cc5114063149f437ca9", - "reference": "5cd54d4cedd7aabb02037cc5114063149f437ca9", + "url": "https://api.github.com/repos/janephp/json-schema/zipball/283e7ae383cef1dda5f284987201e1facb050ab4", + "reference": "283e7ae383cef1dda5f284987201e1facb050ab4", "shasum": "" }, "require": { "doctrine/inflector": "^1.4 || ^2.0", "ext-json": "*", - "jane-php/json-schema-runtime": "^7.5", - "nikic/php-parser": "^4.18", - "php": "^8.0", - "symfony/console": "^5.4 || ^6.4 || ^7.0", - "symfony/filesystem": "^5.4 || ^6.4 || ^7.0", - "symfony/options-resolver": "^5.4 || ^6.4 || ^7.0", - "symfony/serializer": "^5.4 || ^6.4 || ^7.0", - "symfony/validator": "^5.4 || ^6.4 || ^7.0", - "symfony/var-dumper": "^5.4 || ^6.4 || ^7.0", - "symfony/yaml": "^5.4 || ^6.4 || ^7.0" + "jane-php/json-schema-runtime": "^7.0", + "nikic/php-parser": "^4.0", + "php": "^7.2 || ^8.0", + "symfony/console": "^4.4 || ^5.0 || ^6.0", + "symfony/filesystem": "^4.4 || ^5.0 || ^6.0", + "symfony/options-resolver": "^4.4 || ^5.0 || ^6.0", + "symfony/serializer": "^4.4 || ^5.0 || ^6.0", + "symfony/validator": "^5.1 || ^6.0", + "symfony/var-dumper": "^4.4 || ^5.0 || ^6.0", + "symfony/yaml": "~4.4.9 || ^5.0 || ^6.0" }, "conflict": { "nikic/php-parser": "<4.0.4", "symfony/framework-bundle": "5.1.0" }, "require-dev": { - "phpunit/phpunit": "^8.5", - "symfony/finder": "^5.4 || ^6.4 || ^7.0" + "phpunit/phpunit": "^8.0", + "symfony/finder": "^4.4 || ^5.0 || ^6.0" }, "suggest": { "friendsofphp/php-cs-fixer": "Allow to automatically fix cs on generated code for better visualisation" @@ -2641,37 +2576,37 @@ ], "description": "Generate a serializable / deserializable object model given a json schema", "support": { - "source": "https://github.com/janephp/json-schema/tree/v7.6.0" + "source": "https://github.com/janephp/json-schema/tree/v7.5.5" }, - "time": "2024-01-31T09:18:22+00:00" + "time": "2023-11-20T09:16:59+00:00" }, { "name": "jane-php/json-schema-runtime", - "version": "v7.6.0", + "version": "v7.5.5", "source": { "type": "git", "url": "https://github.com/janephp/json-schema-runtime.git", - "reference": "658c68abf7e429db2ae71afe9e7a6a5d43d5d247" + "reference": "02e5a960f5e6db8cba1f711ca10a0d589174402f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/janephp/json-schema-runtime/zipball/658c68abf7e429db2ae71afe9e7a6a5d43d5d247", - "reference": "658c68abf7e429db2ae71afe9e7a6a5d43d5d247", + "url": "https://api.github.com/repos/janephp/json-schema-runtime/zipball/02e5a960f5e6db8cba1f711ca10a0d589174402f", + "reference": "02e5a960f5e6db8cba1f711ca10a0d589174402f", "shasum": "" }, "require": { "ext-json": "*", - "league/uri": "^6.7.2 || ^7.4", - "php": "^8.0", + "league/uri": "^6.0 || ^7.0", + "php": "^7.2 || ^8.0", "php-jsonpointer/php-jsonpointer": "^3.0 || ^4.0", - "symfony/serializer": "^5.4 || ^6.4 || ^7.0", - "symfony/yaml": "^5.4 || ^6.4 || ^7.0" + "symfony/serializer": "^4.4 || ^5.0 || ^6.0", + "symfony/yaml": "~4.4.9 || ^5.0 || ^6.0" }, "conflict": { "symfony/framework-bundle": "5.1.0" }, "require-dev": { - "phpunit/phpunit": "^8.5" + "phpunit/phpunit": "^8.0" }, "type": "library", "extra": { @@ -2703,109 +2638,59 @@ ], "description": "Jane runtime Library", "support": { - "source": "https://github.com/janephp/json-schema-runtime/tree/v7.6.0" + "source": "https://github.com/janephp/json-schema-runtime/tree/v7.5.5" }, - "time": "2024-01-31T09:18:22+00:00" + "time": "2023-09-08T13:25:01+00:00" }, { - "name": "jean85/pretty-package-versions", - "version": "2.0.5", - "source": { - "type": "git", - "url": "https://github.com/Jean85/pretty-package-versions.git", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Jean85/pretty-package-versions/zipball/ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "reference": "ae547e455a3d8babd07b96966b17d7fd21d9c6af", - "shasum": "" - }, - "require": { - "composer-runtime-api": "^2.0.0", - "php": "^7.1|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^2.17", - "jean85/composer-provided-replaced-stub-package": "^1.0", - "phpstan/phpstan": "^0.12.66", - "phpunit/phpunit": "^7.5|^8.5|^9.4", - "vimeo/psalm": "^4.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Jean85\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Alessandro Lai", - "email": "alessandro.lai85@gmail.com" - } - ], - "description": "A library to get pretty versions strings of installed dependencies", - "keywords": [ - "composer", - "package", - "release", - "versions" - ], - "support": { - "issues": "https://github.com/Jean85/pretty-package-versions/issues", - "source": "https://github.com/Jean85/pretty-package-versions/tree/2.0.5" - }, - "time": "2021-10-08T21:21:46+00:00" - }, - { - "name": "league/uri", - "version": "7.4.0", + "name": "league/uri", + "version": "6.7.2", "source": { "type": "git", "url": "https://github.com/thephpleague/uri.git", - "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5" + "reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri/zipball/bf414ba956d902f5d98bf9385fcf63954f09dce5", - "reference": "bf414ba956d902f5d98bf9385fcf63954f09dce5", + "url": "https://api.github.com/repos/thephpleague/uri/zipball/d3b50812dd51f3fbf176344cc2981db03d10fe06", + "reference": "d3b50812dd51f3fbf176344cc2981db03d10fe06", "shasum": "" }, "require": { - "league/uri-interfaces": "^7.3", - "php": "^8.1" + "ext-json": "*", + "league/uri-interfaces": "^2.3", + "php": "^7.4 || ^8.0", + "psr/http-message": "^1.0" }, "conflict": { "league/uri-schemes": "^1.0" }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^v3.3.2", + "nyholm/psr7": "^1.5", + "php-http/psr7-integration-tests": "^1.1", + "phpstan/phpstan": "^1.2.0", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpstan/phpstan-phpunit": "^1.0.0", + "phpstan/phpstan-strict-rules": "^1.1.0", + "phpunit/phpunit": "^9.5.10", + "psr/http-factory": "^1.0" + }, "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-fileinfo": "to create Data URI from file contennts", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "jeremykendall/php-domain-parser": "to resolve Public Suffix and Top Level Domain", - "league/uri-components": "Needed to easily manipulate URI objects components", - "php-64bit": "to improve IPV4 host parsing", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + "ext-fileinfo": "Needed to create Data URI from a filepath", + "ext-intl": "Needed to improve host validation", + "league/uri-components": "Needed to easily manipulate URI objects", + "psr/http-factory": "Needed to use the URI factory" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "6.x-dev" } }, "autoload": { "psr-4": { - "League\\Uri\\": "" + "League\\Uri\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -2845,8 +2730,8 @@ "support": { "docs": "https://uri.thephpleague.com", "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri/tree/7.4.0" + "issues": "https://github.com/thephpleague/uri/issues", + "source": "https://github.com/thephpleague/uri/tree/6.7.2" }, "funding": [ { @@ -2854,44 +2739,46 @@ "type": "github" } ], - "time": "2023-12-01T06:24:25+00:00" + "time": "2022-09-13T19:50:42+00:00" }, { "name": "league/uri-interfaces", - "version": "7.4.0", + "version": "2.3.0", "source": { "type": "git", "url": "https://github.com/thephpleague/uri-interfaces.git", - "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3" + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/bd8c487ec236930f7bbc42b8d374fa882fbba0f3", - "reference": "bd8c487ec236930f7bbc42b8d374fa882fbba0f3", + "url": "https://api.github.com/repos/thephpleague/uri-interfaces/zipball/00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", + "reference": "00e7e2943f76d8cb50c7dfdc2f6dee356e15e383", "shasum": "" }, "require": { - "ext-filter": "*", - "php": "^8.1", - "psr/http-factory": "^1", - "psr/http-message": "^1.1 || ^2.0" + "ext-json": "*", + "php": "^7.2 || ^8.0" + }, + "require-dev": { + "friendsofphp/php-cs-fixer": "^2.19", + "phpstan/phpstan": "^0.12.90", + "phpstan/phpstan-phpunit": "^0.12.19", + "phpstan/phpstan-strict-rules": "^0.12.9", + "phpunit/phpunit": "^8.5.15 || ^9.5" }, "suggest": { - "ext-bcmath": "to improve IPV4 host parsing", - "ext-gmp": "to improve IPV4 host parsing", - "ext-intl": "to handle IDN host with the best performance", - "php-64bit": "to improve IPV4 host parsing", - "symfony/polyfill-intl-idn": "to handle IDN host via the Symfony polyfill if ext-intl is not present" + "ext-intl": "to use the IDNA feature", + "symfony/intl": "to use the IDNA feature via Symfony Polyfill" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "7.x-dev" + "dev-master": "2.x-dev" } }, "autoload": { "psr-4": { - "League\\Uri\\": "" + "League\\Uri\\": "src/" } }, "notification-url": "https://packagist.org/downloads/", @@ -2905,32 +2792,17 @@ "homepage": "https://nyamsprod.com" } ], - "description": "Common interfaces and classes for URI representation and interaction", - "homepage": "https://uri.thephpleague.com", + "description": "Common interface for URI representation", + "homepage": "http://github.com/thephpleague/uri-interfaces", "keywords": [ - "data-uri", - "file-uri", - "ftp", - "hostname", - "http", - "https", - "parse_str", - "parse_url", - "psr-7", - "query-string", - "querystring", "rfc3986", "rfc3987", - "rfc6570", "uri", - "url", - "ws" + "url" ], "support": { - "docs": "https://uri.thephpleague.com", - "forum": "https://thephpleague.slack.com", - "issues": "https://github.com/thephpleague/uri-src/issues", - "source": "https://github.com/thephpleague/uri-interfaces/tree/7.4.0" + "issues": "https://github.com/thephpleague/uri-interfaces/issues", + "source": "https://github.com/thephpleague/uri-interfaces/tree/2.3.0" }, "funding": [ { @@ -2938,7 +2810,7 @@ "type": "github" } ], - "time": "2023-11-24T15:40:42+00:00" + "time": "2021-06-28T04:27:21+00:00" }, { "name": "myclabs/deep-copy", @@ -3001,36 +2873,35 @@ }, { "name": "nette/php-generator", - "version": "v4.1.3", + "version": "v3.6.9", "source": { "type": "git", "url": "https://github.com/nette/php-generator.git", - "reference": "08ab9bff22ae34fe4e1d2fe8ba16b3770ea2459f" + "reference": "d31782f7bd2ae84ad06f863391ec3fb77ca4d0a6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/php-generator/zipball/08ab9bff22ae34fe4e1d2fe8ba16b3770ea2459f", - "reference": "08ab9bff22ae34fe4e1d2fe8ba16b3770ea2459f", + "url": "https://api.github.com/repos/nette/php-generator/zipball/d31782f7bd2ae84ad06f863391ec3fb77ca4d0a6", + "reference": "d31782f7bd2ae84ad06f863391ec3fb77ca4d0a6", "shasum": "" }, "require": { - "nette/utils": "^3.2.9 || ^4.0", - "php": "8.0 - 8.3" + "nette/utils": "^3.1.2", + "php": ">=7.2 <8.3" }, "require-dev": { - "jetbrains/phpstorm-attributes": "dev-master", "nette/tester": "^2.4", - "nikic/php-parser": "^4.18 || ^5.0", - "phpstan/phpstan": "^1.0", + "nikic/php-parser": "^4.13", + "phpstan/phpstan": "^0.12", "tracy/tracy": "^2.8" }, "suggest": { - "nikic/php-parser": "to use ClassType::from(withBodies: true) & ClassType::fromCode()" + "nikic/php-parser": "to use ClassType::withBodiesFrom() & GlobalFunction::withBodyFrom()" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.1-dev" + "dev-master": "3.6-dev" } }, "autoload": { @@ -3054,7 +2925,7 @@ "homepage": "https://nette.org/contributors" } ], - "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.3 features.", + "description": "🐘 Nette PHP Generator: generates neat PHP code for you. Supports new PHP 8.1 features.", "homepage": "https://nette.org", "keywords": [ "code", @@ -3064,36 +2935,35 @@ ], "support": { "issues": "https://github.com/nette/php-generator/issues", - "source": "https://github.com/nette/php-generator/tree/v4.1.3" + "source": "https://github.com/nette/php-generator/tree/v3.6.9" }, - "time": "2024-01-18T17:44:20+00:00" + "time": "2022-10-04T11:49:47+00:00" }, { "name": "nette/utils", - "version": "v4.0.4", + "version": "v3.2.10", "source": { "type": "git", "url": "https://github.com/nette/utils.git", - "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218" + "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nette/utils/zipball/d3ad0aa3b9f934602cb3e3902ebccf10be34d218", - "reference": "d3ad0aa3b9f934602cb3e3902ebccf10be34d218", + "url": "https://api.github.com/repos/nette/utils/zipball/a4175c62652f2300c8017fb7e640f9ccb11648d2", + "reference": "a4175c62652f2300c8017fb7e640f9ccb11648d2", "shasum": "" }, "require": { - "php": ">=8.0 <8.4" + "php": ">=7.2 <8.4" }, "conflict": { - "nette/finder": "<3", - "nette/schema": "<1.2.2" + "nette/di": "<3.0.6" }, "require-dev": { "jetbrains/phpstorm-attributes": "dev-master", - "nette/tester": "^2.5", + "nette/tester": "~2.0", "phpstan/phpstan": "^1.0", - "tracy/tracy": "^2.9" + "tracy/tracy": "^2.3" }, "suggest": { "ext-gd": "to use Image", @@ -3101,12 +2971,13 @@ "ext-intl": "to use Strings::webalize(), toAscii(), normalize() and compare()", "ext-json": "to use Nette\\Utils\\Json", "ext-mbstring": "to use Strings::lower() etc...", - "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()" + "ext-tokenizer": "to use Nette\\Utils\\Reflection::getUseStatements()", + "ext-xml": "to use Strings::length() etc. when mbstring is not available" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "4.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -3150,443 +3021,9 @@ ], "support": { "issues": "https://github.com/nette/utils/issues", - "source": "https://github.com/nette/utils/tree/v4.0.4" - }, - "time": "2024-01-17T16:50:36+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v8.1.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "0d655ffbf3edf9b366e0eea5ab9c7871e0ab3357" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/0d655ffbf3edf9b366e0eea5ab9c7871e0ab3357", - "reference": "0d655ffbf3edf9b366e0eea5ab9c7871e0ab3357", - "shasum": "" - }, - "require": { - "filp/whoops": "^2.15.4", - "nunomaduro/termwind": "^2.0.0", - "php": "^8.2.0", - "symfony/console": "^7.0.2" - }, - "conflict": { - "laravel/framework": "<11.0.0 || >=12.0.0", - "phpunit/phpunit": "<10.5.1 || >=12.0.0" - }, - "require-dev": { - "larastan/larastan": "^2.8.1", - "laravel/framework": "^11.0.0", - "laravel/pint": "^1.13.8", - "laravel/sail": "^1.27.0", - "laravel/sanctum": "^4.0.0", - "laravel/tinker": "^2.9.0", - "orchestra/testbench-core": "^9.0.0", - "pestphp/pest": "^2.31.0 || ^3.0.0", - "sebastian/environment": "^6.0.1 || ^7.0.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - }, - "branch-alias": { - "dev-8.x": "8.x-dev" - } - }, - "autoload": { - "files": [ - "./src/Adapters/Phpunit/Autoload.php" - ], - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2024-01-12T13:38:24+00:00" - }, - { - "name": "nunomaduro/termwind", - "version": "v2.0.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/termwind.git", - "reference": "e534f661e09b712e51971e2cf0f662f83116d5ad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/termwind/zipball/e534f661e09b712e51971e2cf0f662f83116d5ad", - "reference": "e534f661e09b712e51971e2cf0f662f83116d5ad", - "shasum": "" - }, - "require": { - "ext-mbstring": "*", - "php": "^8.2", - "symfony/console": "^7.0.1" - }, - "require-dev": { - "ergebnis/phpstan-rules": "^2.1.0", - "illuminate/console": "^11.0.0", - "laravel/pint": "^1.13.7", - "mockery/mockery": "^1.6.6", - "pestphp/pest": "^2.28.0", - "phpstan/phpstan": "^1.10.48", - "phpstan/phpstan-strict-rules": "^1.5.2", - "symfony/var-dumper": "^7.0.0", - "thecodingmachine/phpstan-strict-rules": "^1.0.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "Termwind\\Laravel\\TermwindServiceProvider" - ] - }, - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "files": [ - "src/Functions.php" - ], - "psr-4": { - "Termwind\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Its like Tailwind CSS, but for the console.", - "keywords": [ - "cli", - "console", - "css", - "package", - "php", - "style" - ], - "support": { - "issues": "https://github.com/nunomaduro/termwind/issues", - "source": "https://github.com/nunomaduro/termwind/tree/v2.0.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/xiCO2k", - "type": "github" - } - ], - "time": "2023-12-08T16:23:40+00:00" - }, - { - "name": "pestphp/pest", - "version": "v2.34.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "602b696348efdf4da83c9719de3062462cc1d146" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/602b696348efdf4da83c9719de3062462cc1d146", - "reference": "602b696348efdf4da83c9719de3062462cc1d146", - "shasum": "" - }, - "require": { - "brianium/paratest": "^7.3.1", - "nunomaduro/collision": "^7.10.0|^8.1.0", - "nunomaduro/termwind": "^1.15.1|^2.0.0", - "pestphp/pest-plugin": "^2.1.1", - "pestphp/pest-plugin-arch": "^2.7.0", - "php": "^8.1.0", - "phpunit/phpunit": "^10.5.10" - }, - "conflict": { - "phpunit/phpunit": ">10.5.10", - "sebastian/exporter": "<5.1.0", - "webmozart/assert": "<1.11.0" - }, - "require-dev": { - "pestphp/pest-dev-tools": "^2.16.0", - "pestphp/pest-plugin-type-coverage": "^2.8.0", - "symfony/process": "^6.4.0|^7.0.3" - }, - "bin": [ - "bin/pest" - ], - "type": "library", - "extra": { - "pest": { - "plugins": [ - "Pest\\Plugins\\Bail", - "Pest\\Plugins\\Cache", - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Environment", - "Pest\\Plugins\\Help", - "Pest\\Plugins\\Memory", - "Pest\\Plugins\\Only", - "Pest\\Plugins\\Printer", - "Pest\\Plugins\\ProcessIsolation", - "Pest\\Plugins\\Profile", - "Pest\\Plugins\\Retry", - "Pest\\Plugins\\Snapshot", - "Pest\\Plugins\\Verbose", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Parallel" - ] - }, - "phpstan": { - "includes": [ - "extension.neon" - ] - } - }, - "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], - "psr-4": { - "Pest\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "The elegant PHP Testing Framework.", - "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" - ], - "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v2.34.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - } - ], - "time": "2024-02-17T10:06:53+00:00" - }, - { - "name": "pestphp/pest-plugin", - "version": "v2.1.1", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/e05d2859e08c2567ee38ce8b005d044e72648c0b", - "reference": "e05d2859e08c2567ee38ce8b005d044e72648c0b", - "shasum": "" + "source": "https://github.com/nette/utils/tree/v3.2.10" }, - "require": { - "composer-plugin-api": "^2.0.0", - "composer-runtime-api": "^2.2.2", - "php": "^8.1" - }, - "conflict": { - "pestphp/pest": "<2.2.3" - }, - "require-dev": { - "composer/composer": "^2.5.8", - "pestphp/pest": "^2.16.0", - "pestphp/pest-dev-tools": "^2.16.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Pest\\Plugin\\Manager" - }, - "autoload": { - "psr-4": { - "Pest\\Plugin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Pest plugin manager", - "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v2.1.1" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2023-08-22T08:40:06+00:00" - }, - { - "name": "pestphp/pest-plugin-arch", - "version": "v2.7.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin-arch.git", - "reference": "d23b2d7498475354522c3818c42ef355dca3fcda" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin-arch/zipball/d23b2d7498475354522c3818c42ef355dca3fcda", - "reference": "d23b2d7498475354522c3818c42ef355dca3fcda", - "shasum": "" - }, - "require": { - "nunomaduro/collision": "^7.10.0|^8.1.0", - "pestphp/pest-plugin": "^2.1.1", - "php": "^8.1", - "ta-tikoma/phpunit-architecture-test": "^0.8.4" - }, - "require-dev": { - "pestphp/pest": "^2.33.0", - "pestphp/pest-dev-tools": "^2.16.0" - }, - "type": "library", - "extra": { - "pest": { - "plugins": [ - "Pest\\Arch\\Plugin" - ] - } - }, - "autoload": { - "files": [ - "src/Autoload.php" - ], - "psr-4": { - "Pest\\Arch\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Arch plugin for Pest PHP.", - "keywords": [ - "arch", - "architecture", - "framework", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin-arch/tree/v2.7.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - } - ], - "time": "2024-01-26T09:46:42+00:00" + "time": "2023-07-30T15:38:18+00:00" }, { "name": "phar-io/manifest", @@ -3756,232 +3193,183 @@ "time": "2022-01-11T14:28:07+00:00" }, { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", + "name": "phpcsstandards/phpcsextra", + "version": "1.2.1", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" + "url": "https://github.com/PHPCSStandards/PHPCSExtra.git", + "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSExtra/zipball/11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", + "reference": "11d387c6642b6e4acaf0bd9bf5203b8cca1ec489", "shasum": "" }, "require": { - "php": "^7.2 || ^8.0" + "php": ">=5.4", + "phpcsstandards/phpcsutils": "^1.0.9", + "squizlabs/php_codesniffer": "^3.8.0" }, - "type": "library", + "require-dev": { + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "phpcsstandards/phpcsdevtools": "^1.2.1", + "phpunit/phpunit": "^4.5 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.0" + }, + "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" } }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-3.0-or-later" ], "authors": [ { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSExtra/graphs/contributors" } ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", + "description": "A collection of sniffs and standards for use with PHP_CodeSniffer.", "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "standards", "static analysis" ], "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "issues": "https://github.com/PHPCSStandards/PHPCSExtra/issues", + "security": "https://github.com/PHPCSStandards/PHPCSExtra/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSExtra" }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ + "funding": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "url": "https://github.com/PHPCSStandards", + "type": "github" }, { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" } ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" + "time": "2023-12-08T16:49:07+00:00" }, { - "name": "phpdocumentor/type-resolver", - "version": "1.8.2", + "name": "phpcsstandards/phpcsutils", + "version": "1.0.9", "source": { "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "153ae662783729388a584b4361f2545e4d841e3c" + "url": "https://github.com/PHPCSStandards/PHPCSUtils.git", + "reference": "908247bc65010c7b7541a9551e002db12e9dae70" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/153ae662783729388a584b4361f2545e4d841e3c", - "reference": "153ae662783729388a584b4361f2545e4d841e3c", + "url": "https://api.github.com/repos/PHPCSStandards/PHPCSUtils/zipball/908247bc65010c7b7541a9551e002db12e9dae70", + "reference": "908247bc65010c7b7541a9551e002db12e9dae70", "shasum": "" }, "require": { - "doctrine/deprecations": "^1.0", - "php": "^7.3 || ^8.0", - "phpdocumentor/reflection-common": "^2.0", - "phpstan/phpdoc-parser": "^1.13" + "dealerdirect/phpcodesniffer-composer-installer": "^0.4.1 || ^0.5 || ^0.6.2 || ^0.7 || ^1.0", + "php": ">=5.4", + "squizlabs/php_codesniffer": "^3.8.0 || 4.0.x-dev@dev" }, "require-dev": { - "ext-tokenizer": "*", - "phpbench/phpbench": "^1.2", - "phpstan/extension-installer": "^1.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-phpunit": "^1.1", - "phpunit/phpunit": "^9.5", - "rector/rector": "^0.13.9", - "vimeo/psalm": "^4.25" + "ext-filter": "*", + "php-parallel-lint/php-console-highlighter": "^1.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcsstandards/phpcsdevcs": "^1.1.6", + "yoast/phpunit-polyfills": "^1.1.0 || ^2.0.0" }, - "type": "library", + "type": "phpcodesniffer-standard", "extra": { "branch-alias": { - "dev-1.x": "1.x-dev" + "dev-stable": "1.x-dev", + "dev-develop": "1.x-dev" } }, "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } + "classmap": [ + "PHPCSUtils/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "LGPL-3.0-or-later" ], "authors": [ { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" + "name": "Juliette Reinders Folmer", + "homepage": "https://github.com/jrfnl", + "role": "lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHPCSUtils/graphs/contributors" } ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", + "description": "A suite of utility functions for use with PHP_CodeSniffer", + "homepage": "https://phpcsutils.com/", + "keywords": [ + "PHP_CodeSniffer", + "phpcbf", + "phpcodesniffer-standard", + "phpcs", + "phpcs3", + "standards", + "static analysis", + "tokens", + "utility" + ], "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.8.2" - }, - "time": "2024-02-23T11:10:43+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.25.0", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/bd84b629c8de41aa2ae82c067c955e06f1b00240", - "reference": "bd84b629c8de41aa2ae82c067c955e06f1b00240", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "doctrine/annotations": "^2.0", - "nikic/php-parser": "^4.15", - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-phpunit": "^1.1", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" + "docs": "https://phpcsutils.com/", + "issues": "https://github.com/PHPCSStandards/PHPCSUtils/issues", + "security": "https://github.com/PHPCSStandards/PHPCSUtils/security/policy", + "source": "https://github.com/PHPCSStandards/PHPCSUtils" }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] + "funding": [ + { + "url": "https://github.com/PHPCSStandards", + "type": "github" + }, + { + "url": "https://github.com/jrfnl", + "type": "github" + }, + { + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" ], - "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.25.0" - }, - "time": "2024-01-04T17:06:16+00:00" + "time": "2023-12-08T14:50:00+00:00" }, { "name": "phpunit/php-code-coverage", - "version": "10.1.11", + "version": "9.2.31", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "78c3b7625965c2513ee96569a4dbb62601784145" + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/78c3b7625965c2513ee96569a4dbb62601784145", - "reference": "78c3b7625965c2513ee96569a4dbb62601784145", + "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/48c34b5d8d983006bd2adc2d0de92963b9155965", + "reference": "48c34b5d8d983006bd2adc2d0de92963b9155965", "shasum": "" }, "require": { @@ -3989,18 +3377,18 @@ "ext-libxml": "*", "ext-xmlwriter": "*", "nikic/php-parser": "^4.18 || ^5.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", + "php": ">=7.3", + "phpunit/php-file-iterator": "^3.0.3", + "phpunit/php-text-template": "^2.0.2", + "sebastian/code-unit-reverse-lookup": "^2.0.2", + "sebastian/complexity": "^2.0", + "sebastian/environment": "^5.1.2", + "sebastian/lines-of-code": "^1.0.3", + "sebastian/version": "^3.0.1", "theseer/tokenizer": "^1.2.0" }, "require-dev": { - "phpunit/phpunit": "^10.1" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-pcov": "PHP extension that provides line coverage", @@ -4009,7 +3397,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.1-dev" + "dev-master": "9.2-dev" } }, "autoload": { @@ -4038,7 +3426,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.11" + "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.31" }, "funding": [ { @@ -4046,32 +3434,32 @@ "type": "github" } ], - "time": "2023-12-21T15:38:30+00:00" + "time": "2024-03-02T06:37:42+00:00" }, { "name": "phpunit/php-file-iterator", - "version": "4.1.0", + "version": "3.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c" + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/a95037b6d9e608ba092da1b23931e537cadc3c3c", - "reference": "a95037b6d9e608ba092da1b23931e537cadc3c3c", + "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", + "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -4098,8 +3486,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "security": "https://github.com/sebastianbergmann/php-file-iterator/security/policy", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/4.1.0" + "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" }, "funding": [ { @@ -4107,28 +3494,28 @@ "type": "github" } ], - "time": "2023-08-31T06:24:48+00:00" + "time": "2021-12-02T12:48:52+00:00" }, { "name": "phpunit/php-invoker", - "version": "4.0.0", + "version": "3.1.1", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7" + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", - "reference": "f5e568ba02fa5ba0ddd0f618391d5a9ea50b06d7", + "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", + "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { "ext-pcntl": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-pcntl": "*" @@ -4136,7 +3523,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "3.1-dev" } }, "autoload": { @@ -4162,7 +3549,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/4.0.0" + "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" }, "funding": [ { @@ -4170,32 +3557,32 @@ "type": "github" } ], - "time": "2023-02-03T06:56:09+00:00" + "time": "2020-09-28T05:58:55+00:00" }, { "name": "phpunit/php-text-template", - "version": "3.0.1", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748" + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/0c7b06ff49e3d5072f057eb1fa59258bf287a748", - "reference": "0c7b06ff49e3d5072f057eb1fa59258bf287a748", + "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", + "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4221,8 +3608,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "security": "https://github.com/sebastianbergmann/php-text-template/security/policy", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/3.0.1" + "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" }, "funding": [ { @@ -4230,32 +3616,32 @@ "type": "github" } ], - "time": "2023-08-31T14:07:24+00:00" + "time": "2020-10-26T05:33:50+00:00" }, { "name": "phpunit/php-timer", - "version": "6.0.0", + "version": "5.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d" + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/e2a2d67966e740530f4a3343fe2e030ffdc1161d", - "reference": "e2a2d67966e740530f4a3343fe2e030ffdc1161d", + "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", + "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -4281,7 +3667,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/6.0.0" + "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" }, "funding": [ { @@ -4289,23 +3675,24 @@ "type": "github" } ], - "time": "2023-02-03T06:57:52+00:00" + "time": "2020-10-26T13:16:10+00:00" }, { "name": "phpunit/phpunit", - "version": "10.5.10", + "version": "9.6.17", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c" + "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/50b8e314b6d0dd06521dc31d1abffa73f25f850c", - "reference": "50b8e314b6d0dd06521dc31d1abffa73f25f850c", + "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/1a156980d78a6666721b7e8e8502fe210b587fcd", + "reference": "1a156980d78a6666721b7e8e8502fe210b587fcd", "shasum": "" }, "require": { + "doctrine/instantiator": "^1.3.1 || ^2", "ext-dom": "*", "ext-json": "*", "ext-libxml": "*", @@ -4315,26 +3702,27 @@ "myclabs/deep-copy": "^1.10.1", "phar-io/manifest": "^2.0.3", "phar-io/version": "^3.0.2", - "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" + "php": ">=7.3", + "phpunit/php-code-coverage": "^9.2.28", + "phpunit/php-file-iterator": "^3.0.5", + "phpunit/php-invoker": "^3.1.1", + "phpunit/php-text-template": "^2.0.3", + "phpunit/php-timer": "^5.0.2", + "sebastian/cli-parser": "^1.0.1", + "sebastian/code-unit": "^1.0.6", + "sebastian/comparator": "^4.0.8", + "sebastian/diff": "^4.0.3", + "sebastian/environment": "^5.1.3", + "sebastian/exporter": "^4.0.5", + "sebastian/global-state": "^5.0.1", + "sebastian/object-enumerator": "^4.0.3", + "sebastian/resource-operations": "^3.0.3", + "sebastian/type": "^3.2", + "sebastian/version": "^3.0.2" }, "suggest": { - "ext-soap": "To be able to generate mocks based on WSDL files" + "ext-soap": "To be able to generate mocks based on WSDL files", + "ext-xdebug": "PHP extension that provides line coverage as well as branch and path coverage" }, "bin": [ "phpunit" @@ -4342,7 +3730,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "10.5-dev" + "dev-master": "9.6-dev" } }, "autoload": { @@ -4374,7 +3762,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.10" + "source": "https://github.com/sebastianbergmann/phpunit/tree/9.6.17" }, "funding": [ { @@ -4387,78 +3775,23 @@ }, { "url": "https://tidelift.com/funding/github/packagist/phpunit/phpunit", - "type": "tidelift" - } - ], - "time": "2024-02-04T09:07:51+00:00" - }, - { - "name": "psr/http-factory", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-factory.git", - "reference": "e616d01114759c4c489f93b099585439f795fe35" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-factory/zipball/e616d01114759c4c489f93b099585439f795fe35", - "reference": "e616d01114759c4c489f93b099585439f795fe35", - "shasum": "" - }, - "require": { - "php": ">=7.0.0", - "psr/http-message": "^1.0 || ^2.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interfaces for PSR-7 HTTP message factories", - "keywords": [ - "factory", - "http", - "message", - "psr", - "psr-17", - "psr-7", - "request", - "response" + "type": "tidelift" + } ], - "support": { - "source": "https://github.com/php-fig/http-factory/tree/1.0.2" - }, - "time": "2023-04-10T20:10:41+00:00" + "time": "2024-02-23T13:14:51+00:00" }, { "name": "psr/http-message", - "version": "2.0", + "version": "1.1", "source": { "type": "git", "url": "https://github.com/php-fig/http-message.git", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71" + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/402d35bcb92c70c026d1a6a9883f06b2ead23d71", - "reference": "402d35bcb92c70c026d1a6a9883f06b2ead23d71", + "url": "https://api.github.com/repos/php-fig/http-message/zipball/cb6ce4845ce34a8ad9e68117c10ee90a29919eba", + "reference": "cb6ce4845ce34a8ad9e68117c10ee90a29919eba", "shasum": "" }, "require": { @@ -4467,7 +3800,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "2.0.x-dev" + "dev-master": "1.1.x-dev" } }, "autoload": { @@ -4482,7 +3815,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" + "homepage": "http://www.php-fig.org/" } ], "description": "Common interface for HTTP messages", @@ -4496,34 +3829,34 @@ "response" ], "support": { - "source": "https://github.com/php-fig/http-message/tree/2.0" + "source": "https://github.com/php-fig/http-message/tree/1.1" }, - "time": "2023-04-04T09:54:51+00:00" + "time": "2023-04-04T09:50:52+00:00" }, { "name": "sebastian/cli-parser", - "version": "2.0.0", + "version": "1.0.2", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae" + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/efdc130dbbbb8ef0b545a994fd811725c5282cae", - "reference": "efdc130dbbbb8ef0b545a994fd811725c5282cae", + "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/2b56bea83a09de3ac06bb18b92f068e60cc6f50b", + "reference": "2b56bea83a09de3ac06bb18b92f068e60cc6f50b", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4546,7 +3879,7 @@ "homepage": "https://github.com/sebastianbergmann/cli-parser", "support": { "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/2.0.0" + "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.2" }, "funding": [ { @@ -4554,32 +3887,32 @@ "type": "github" } ], - "time": "2023-02-03T06:58:15+00:00" + "time": "2024-03-02T06:27:43+00:00" }, { "name": "sebastian/code-unit", - "version": "2.0.0", + "version": "1.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503" + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/a81fee9eef0b7a76af11d121767abc44c104e503", - "reference": "a81fee9eef0b7a76af11d121767abc44c104e503", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", + "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -4602,7 +3935,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit", "support": { "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/2.0.0" + "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" }, "funding": [ { @@ -4610,32 +3943,32 @@ "type": "github" } ], - "time": "2023-02-03T06:58:43+00:00" + "time": "2020-10-26T13:08:54+00:00" }, { "name": "sebastian/code-unit-reverse-lookup", - "version": "3.0.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d" + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", - "reference": "5e3a687f7d8ae33fb362c5c0743794bbb2420a1d", + "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", + "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4657,7 +3990,7 @@ "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", "support": { "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" }, "funding": [ { @@ -4665,36 +3998,34 @@ "type": "github" } ], - "time": "2023-02-03T06:59:15+00:00" + "time": "2020-09-28T05:30:19+00:00" }, { "name": "sebastian/comparator", - "version": "5.0.1", + "version": "4.0.8", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372" + "reference": "fa0f136dd2334583309d32b62544682ee972b51a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/2db5010a484d53ebf536087a70b4a5423c102372", - "reference": "2db5010a484d53ebf536087a70b4a5423c102372", + "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/fa0f136dd2334583309d32b62544682ee972b51a", + "reference": "fa0f136dd2334583309d32b62544682ee972b51a", "shasum": "" }, "require": { - "ext-dom": "*", - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/diff": "^5.0", - "sebastian/exporter": "^5.0" + "php": ">=7.3", + "sebastian/diff": "^4.0", + "sebastian/exporter": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^10.3" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4733,8 +4064,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/4.0.8" }, "funding": [ { @@ -4742,33 +4072,33 @@ "type": "github" } ], - "time": "2023-08-14T13:18:12+00:00" + "time": "2022-09-14T12:41:17+00:00" }, { "name": "sebastian/complexity", - "version": "3.2.0", + "version": "2.0.3", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "68ff824baeae169ec9f2137158ee529584553799" + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/68ff824baeae169ec9f2137158ee529584553799", - "reference": "68ff824baeae169ec9f2137158ee529584553799", + "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/25f207c40d62b8b7aa32f5ab026c53561964053a", + "reference": "25f207c40d62b8b7aa32f5ab026c53561964053a", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.2-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -4791,8 +4121,7 @@ "homepage": "https://github.com/sebastianbergmann/complexity", "support": { "issues": "https://github.com/sebastianbergmann/complexity/issues", - "security": "https://github.com/sebastianbergmann/complexity/security/policy", - "source": "https://github.com/sebastianbergmann/complexity/tree/3.2.0" + "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.3" }, "funding": [ { @@ -4800,33 +4129,33 @@ "type": "github" } ], - "time": "2023-12-21T08:37:17+00:00" + "time": "2023-12-22T06:19:30+00:00" }, { "name": "sebastian/diff", - "version": "5.1.0", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", - "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", + "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/ba01945089c3a293b01ba9badc29ad55b106b0bc", + "reference": "ba01945089c3a293b01ba9badc29ad55b106b0bc", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0", + "phpunit/phpunit": "^9.3", "symfony/process": "^4.2 || ^5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -4858,8 +4187,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/diff/issues", - "security": "https://github.com/sebastianbergmann/diff/security/policy", - "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" + "source": "https://github.com/sebastianbergmann/diff/tree/4.0.6" }, "funding": [ { @@ -4867,27 +4195,27 @@ "type": "github" } ], - "time": "2023-12-22T10:55:06+00:00" + "time": "2024-03-02T06:30:58+00:00" }, { "name": "sebastian/environment", - "version": "6.0.1", + "version": "5.1.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951" + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/43c751b41d74f96cbbd4e07b7aec9675651e2951", - "reference": "43c751b41d74f96cbbd4e07b7aec9675651e2951", + "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", + "reference": "830c43a844f1f8d5b7a1f6d6076b784454d8b7ed", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "suggest": { "ext-posix": "*" @@ -4895,7 +4223,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-master": "5.1-dev" } }, "autoload": { @@ -4914,7 +4242,7 @@ } ], "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "https://github.com/sebastianbergmann/environment", + "homepage": "http://www.github.com/sebastianbergmann/environment", "keywords": [ "Xdebug", "environment", @@ -4922,8 +4250,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/environment/issues", - "security": "https://github.com/sebastianbergmann/environment/security/policy", - "source": "https://github.com/sebastianbergmann/environment/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/environment/tree/5.1.5" }, "funding": [ { @@ -4931,34 +4258,34 @@ "type": "github" } ], - "time": "2023-04-11T05:39:26+00:00" + "time": "2023-02-03T06:03:51+00:00" }, { "name": "sebastian/exporter", - "version": "5.1.1", + "version": "4.0.6", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc" + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/64f51654862e0f5e318db7e9dcc2292c63cdbddc", - "reference": "64f51654862e0f5e318db7e9dcc2292c63cdbddc", + "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/78c00df8f170e02473b682df15bfcdacc3d32d72", + "reference": "78c00df8f170e02473b682df15bfcdacc3d32d72", "shasum": "" }, "require": { - "ext-mbstring": "*", - "php": ">=8.1", - "sebastian/recursion-context": "^5.0" + "php": ">=7.3", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "ext-mbstring": "*", + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.1-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -5000,8 +4327,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/exporter/issues", - "security": "https://github.com/sebastianbergmann/exporter/security/policy", - "source": "https://github.com/sebastianbergmann/exporter/tree/5.1.1" + "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.6" }, "funding": [ { @@ -5009,35 +4335,38 @@ "type": "github" } ], - "time": "2023-09-24T13:22:09+00:00" + "time": "2024-03-02T06:33:00+00:00" }, { "name": "sebastian/global-state", - "version": "6.0.1", + "version": "5.0.7", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4" + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/7ea9ead78f6d380d2a667864c132c2f7b83055e4", - "reference": "7ea9ead78f6d380d2a667864c132c2f7b83055e4", + "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", + "reference": "bca7df1f32ee6fe93b4d4a9abbf69e13a4ada2c9", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { "ext-dom": "*", - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" + }, + "suggest": { + "ext-uopz": "*" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "6.0-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -5062,8 +4391,7 @@ ], "support": { "issues": "https://github.com/sebastianbergmann/global-state/issues", - "security": "https://github.com/sebastianbergmann/global-state/security/policy", - "source": "https://github.com/sebastianbergmann/global-state/tree/6.0.1" + "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.7" }, "funding": [ { @@ -5071,33 +4399,33 @@ "type": "github" } ], - "time": "2023-07-19T07:19:23+00:00" + "time": "2024-03-02T06:35:11+00:00" }, { "name": "sebastian/lines-of-code", - "version": "2.0.2", + "version": "1.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0" + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/856e7f6a75a84e339195d48c556f23be2ebf75d0", - "reference": "856e7f6a75a84e339195d48c556f23be2ebf75d0", + "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/e1e4a170560925c26d424b6a03aed157e7dcc5c5", + "reference": "e1e4a170560925c26d424b6a03aed157e7dcc5c5", "shasum": "" }, "require": { "nikic/php-parser": "^4.18 || ^5.0", - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "2.0-dev" + "dev-master": "1.0-dev" } }, "autoload": { @@ -5120,8 +4448,7 @@ "homepage": "https://github.com/sebastianbergmann/lines-of-code", "support": { "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "security": "https://github.com/sebastianbergmann/lines-of-code/security/policy", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/2.0.2" + "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.4" }, "funding": [ { @@ -5129,34 +4456,34 @@ "type": "github" } ], - "time": "2023-12-21T08:38:20+00:00" + "time": "2023-12-22T06:20:34+00:00" }, { "name": "sebastian/object-enumerator", - "version": "5.0.0", + "version": "4.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906" + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/202d0e344a580d7f7d04b3fafce6933e59dae906", - "reference": "202d0e344a580d7f7d04b3fafce6933e59dae906", + "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", + "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", "shasum": "" }, "require": { - "php": ">=8.1", - "sebastian/object-reflector": "^3.0", - "sebastian/recursion-context": "^5.0" + "php": ">=7.3", + "sebastian/object-reflector": "^2.0", + "sebastian/recursion-context": "^4.0" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -5178,7 +4505,7 @@ "homepage": "https://github.com/sebastianbergmann/object-enumerator/", "support": { "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/5.0.0" + "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" }, "funding": [ { @@ -5186,32 +4513,32 @@ "type": "github" } ], - "time": "2023-02-03T07:08:32+00:00" + "time": "2020-10-26T13:12:34+00:00" }, { "name": "sebastian/object-reflector", - "version": "3.0.0", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957" + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/24ed13d98130f0e7122df55d06c5c4942a577957", - "reference": "24ed13d98130f0e7122df55d06c5c4942a577957", + "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", + "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.0-dev" + "dev-master": "2.0-dev" } }, "autoload": { @@ -5233,7 +4560,7 @@ "homepage": "https://github.com/sebastianbergmann/object-reflector/", "support": { "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/3.0.0" + "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" }, "funding": [ { @@ -5241,32 +4568,32 @@ "type": "github" } ], - "time": "2023-02-03T07:06:18+00:00" + "time": "2020-10-26T13:14:26+00:00" }, { "name": "sebastian/recursion-context", - "version": "5.0.0", + "version": "4.0.5", "source": { "type": "git", "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712" + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/05909fb5bc7df4c52992396d0116aed689f93712", - "reference": "05909fb5bc7df4c52992396d0116aed689f93712", + "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", + "reference": "e75bd0f07204fec2a0af9b0f3cfe97d05f92efc1", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.3" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "5.0-dev" + "dev-master": "4.0-dev" } }, "autoload": { @@ -5296,7 +4623,7 @@ "homepage": "https://github.com/sebastianbergmann/recursion-context", "support": { "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/5.0.0" + "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.5" }, "funding": [ { @@ -5304,32 +4631,32 @@ "type": "github" } ], - "time": "2023-02-03T07:05:40+00:00" + "time": "2023-02-03T06:07:39+00:00" }, { - "name": "sebastian/type", - "version": "4.0.0", + "name": "sebastian/resource-operations", + "version": "3.0.3", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf" + "url": "https://github.com/sebastianbergmann/resource-operations.git", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/462699a16464c3944eefc02ebdd77882bd3925bf", - "reference": "462699a16464c3944eefc02ebdd77882bd3925bf", + "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", + "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" }, "require-dev": { - "phpunit/phpunit": "^10.0" + "phpunit/phpunit": "^9.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "3.0-dev" } }, "autoload": { @@ -5344,15 +4671,14 @@ "authors": [ { "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" + "email": "sebastian@phpunit.de" } ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", + "description": "Provides a list of PHP built-in functions that operate on resources", + "homepage": "https://www.github.com/sebastianbergmann/resource-operations", "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/4.0.0" + "issues": "https://github.com/sebastianbergmann/resource-operations/issues", + "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" }, "funding": [ { @@ -5360,29 +4686,32 @@ "type": "github" } ], - "time": "2023-02-03T07:10:45+00:00" + "time": "2020-09-28T06:45:17+00:00" }, { - "name": "sebastian/version", - "version": "4.0.1", + "name": "sebastian/type", + "version": "3.2.1", "source": { "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17" + "url": "https://github.com/sebastianbergmann/type.git", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c51fa83a5d8f43f1402e3f32a005e6262244ef17", - "reference": "c51fa83a5d8f43f1402e3f32a005e6262244ef17", + "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", + "reference": "75e2c2a32f5e0b3aef905b9ed0b179b953b3d7c7", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.3" + }, + "require-dev": { + "phpunit/phpunit": "^9.5" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "4.0-dev" + "dev-master": "3.2-dev" } }, "autoload": { @@ -5401,11 +4730,11 @@ "role": "lead" } ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", + "description": "Collection of value objects that represent the types of the PHP type system", + "homepage": "https://github.com/sebastianbergmann/type", "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/4.0.1" + "issues": "https://github.com/sebastianbergmann/type/issues", + "source": "https://github.com/sebastianbergmann/type/tree/3.2.1" }, "funding": [ { @@ -5413,192 +4742,194 @@ "type": "github" } ], - "time": "2023-02-07T11:34:05+00:00" + "time": "2023-02-03T06:13:03+00:00" }, { - "name": "symfony/console", - "version": "v7.0.3", + "name": "sebastian/version", + "version": "3.0.2", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456" + "url": "https://github.com/sebastianbergmann/version.git", + "reference": "c6c1022351a901512170118436c764e473f6de8c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/c5010d50f1ee4b25cfa0201d9915cf1b14071456", - "reference": "c5010d50f1ee4b25cfa0201d9915cf1b14071456", + "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", + "reference": "c6c1022351a901512170118436c764e473f6de8c", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-mbstring": "~1.0", - "symfony/service-contracts": "^2.5|^3", - "symfony/string": "^6.4|^7.0" - }, - "conflict": { - "symfony/dependency-injection": "<6.4", - "symfony/dotenv": "<6.4", - "symfony/event-dispatcher": "<6.4", - "symfony/lock": "<6.4", - "symfony/process": "<6.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0|3.0" - }, - "require-dev": { - "psr/log": "^1|^2|^3", - "symfony/config": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/event-dispatcher": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/lock": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/process": "^6.4|^7.0", - "symfony/stopwatch": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0" + "php": ">=7.3" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.0-dev" + } + }, "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "src/" ] }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Sebastian Bergmann", + "email": "sebastian@phpunit.de", + "role": "lead" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command-line", - "console", - "terminal" - ], + "description": "Library that helps with managing the version number of Git-hosted PHP projects", + "homepage": "https://github.com/sebastianbergmann/version", "support": { - "source": "https://github.com/symfony/console/tree/v7.0.3" + "issues": "https://github.com/sebastianbergmann/version/issues", + "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", + "url": "https://github.com/sebastianbergmann", "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2020-09-28T06:39:44+00:00" }, { - "name": "symfony/deprecation-contracts", - "version": "v3.4.0", + "name": "squizlabs/php_codesniffer", + "version": "3.9.0", "source": { "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf" + "url": "https://github.com/PHPCSStandards/PHP_CodeSniffer.git", + "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/7c3aff79d10325257a001fcf92d991f24fc967cf", - "reference": "7c3aff79d10325257a001fcf92d991f24fc967cf", + "url": "https://api.github.com/repos/PHPCSStandards/PHP_CodeSniffer/zipball/d63cee4890a8afaf86a22e51ad4d97c91dd4579b", + "reference": "d63cee4890a8afaf86a22e51ad4d97c91dd4579b", "shasum": "" }, "require": { - "php": ">=8.1" + "ext-simplexml": "*", + "ext-tokenizer": "*", + "ext-xmlwriter": "*", + "php": ">=5.4.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0 || ^8.0 || ^9.3.4" }, + "bin": [ + "bin/phpcbf", + "bin/phpcs" + ], "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" + "dev-master": "3.x-dev" } }, - "autoload": { - "files": [ - "function.php" - ] - }, "notification-url": "https://packagist.org/downloads/", "license": [ - "MIT" + "BSD-3-Clause" ], "authors": [ { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" + "name": "Greg Sherwood", + "role": "Former lead" }, { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" + "name": "Juliette Reinders Folmer", + "role": "Current lead" + }, + { + "name": "Contributors", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer/graphs/contributors" } ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", + "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", + "homepage": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "keywords": [ + "phpcs", + "standards", + "static analysis" + ], "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v3.4.0" + "issues": "https://github.com/PHPCSStandards/PHP_CodeSniffer/issues", + "security": "https://github.com/PHPCSStandards/PHP_CodeSniffer/security/policy", + "source": "https://github.com/PHPCSStandards/PHP_CodeSniffer", + "wiki": "https://github.com/PHPCSStandards/PHP_CodeSniffer/wiki" }, "funding": [ { - "url": "https://symfony.com/sponsor", - "type": "custom" + "url": "https://github.com/PHPCSStandards", + "type": "github" }, { - "url": "https://github.com/fabpot", + "url": "https://github.com/jrfnl", "type": "github" }, { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" + "url": "https://opencollective.com/php_codesniffer", + "type": "open_collective" } ], - "time": "2023-05-23T14:45:45+00:00" + "time": "2024-02-16T15:06:51+00:00" }, { - "name": "symfony/finder", - "version": "v7.0.0", + "name": "symfony/console", + "version": "v5.4.36", "source": { "type": "git", - "url": "https://github.com/symfony/finder.git", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56" + "url": "https://github.com/symfony/console.git", + "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", - "reference": "6e5688d69f7cfc4ed4a511e96007e06c2d34ce56", + "url": "https://api.github.com/repos/symfony/console/zipball/39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", + "reference": "39f75d9d73d0c11952fdcecf4877b4d0f62a8f6e", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php73": "^1.9", + "symfony/polyfill-php80": "^1.16", + "symfony/service-contracts": "^1.1|^2|^3", + "symfony/string": "^5.1|^6.0" + }, + "conflict": { + "psr/log": ">=3", + "symfony/dependency-injection": "<4.4", + "symfony/dotenv": "<5.1", + "symfony/event-dispatcher": "<4.4", + "symfony/lock": "<4.4", + "symfony/process": "<4.4" + }, + "provide": { + "psr/log-implementation": "1.0|2.0" }, "require-dev": { - "symfony/filesystem": "^6.4|^7.0" + "psr/log": "^1|^2", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/event-dispatcher": "^4.4|^5.0|^6.0", + "symfony/lock": "^4.4|^5.0|^6.0", + "symfony/process": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/log": "For using the console logger", + "symfony/event-dispatcher": "", + "symfony/lock": "", + "symfony/process": "" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Finder\\": "" + "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -5618,10 +4949,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Finds files and directories via an intuitive fluent interface", + "description": "Eases the creation of beautiful and testable command line interfaces", "homepage": "https://symfony.com", + "keywords": [ + "cli", + "command-line", + "console", + "terminal" + ], "support": { - "source": "https://github.com/symfony/finder/tree/v7.0.0" + "source": "https://github.com/symfony/console/tree/v5.4.36" }, "funding": [ { @@ -5637,25 +4974,27 @@ "type": "tidelift" } ], - "time": "2023-10-31T17:59:56+00:00" + "time": "2024-02-20T16:33:57+00:00" }, { "name": "symfony/options-resolver", - "version": "v7.0.0", + "version": "v5.4.21", "source": { "type": "git", "url": "https://github.com/symfony/options-resolver.git", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f" + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/options-resolver/zipball/700ff4096e346f54cb628ea650767c8130f1001f", - "reference": "700ff4096e346f54cb628ea650767c8130f1001f", + "url": "https://api.github.com/repos/symfony/options-resolver/zipball/4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", + "reference": "4fe5cf6ede71096839f0e4b4444d65dd3a7c1eb9", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/deprecation-contracts": "^2.5|^3" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16" }, "type": "library", "autoload": { @@ -5688,7 +5027,7 @@ "options" ], "support": { - "source": "https://github.com/symfony/options-resolver/tree/v7.0.0" + "source": "https://github.com/symfony/options-resolver/tree/v5.4.21" }, "funding": [ { @@ -5704,7 +5043,7 @@ "type": "tidelift" } ], - "time": "2023-08-08T10:20:21+00:00" + "time": "2023-02-14T08:03:56+00:00" }, { "name": "symfony/polyfill-intl-grapheme", @@ -5866,29 +5205,38 @@ "time": "2024-01-29T20:11:03+00:00" }, { - "name": "symfony/process", - "version": "v7.0.3", + "name": "symfony/polyfill-php81", + "version": "v1.29.0", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "937a195147e0c27b2759ade834169ed006d0bc74" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/937a195147e0c27b2759ade834169ed006d0bc74", - "reference": "937a195147e0c27b2759ade834169ed006d0bc74", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/c565ad1e63f30e7477fc40738343c62b40bc672d", + "reference": "c565ad1e63f30e7477fc40738343c62b40bc672d", "shasum": "" }, "require": { - "php": ">=8.2" + "php": ">=7.1" }, "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, "autoload": { + "files": [ + "bootstrap.php" + ], "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Polyfill\\Php81\\": "" }, - "exclude-from-classmap": [ - "/Tests/" + "classmap": [ + "Resources/stubs" ] }, "notification-url": "https://packagist.org/downloads/", @@ -5897,18 +5245,24 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Executes commands in sub-processes", + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], "support": { - "source": "https://github.com/symfony/process/tree/v7.0.3" + "source": "https://github.com/symfony/polyfill-php81/tree/v1.29.0" }, "funding": [ { @@ -5924,58 +5278,66 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" + "time": "2024-01-29T20:11:03+00:00" }, { "name": "symfony/serializer", - "version": "v7.0.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/serializer.git", - "reference": "6e83031c481e50b6f28e72531660341f1f120e6f" + "reference": "05137a513f4c5a5e56ffbcf53847a93284b49f67" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/serializer/zipball/6e83031c481e50b6f28e72531660341f1f120e6f", - "reference": "6e83031c481e50b6f28e72531660341f1f120e6f", + "url": "https://api.github.com/repos/symfony/serializer/zipball/05137a513f4c5a5e56ffbcf53847a93284b49f67", + "reference": "05137a513f4c5a5e56ffbcf53847a93284b49f67", "shasum": "" }, "require": { - "php": ">=8.2", - "symfony/polyfill-ctype": "~1.8" + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-php80": "^1.16" }, "conflict": { + "doctrine/annotations": "<1.12", "phpdocumentor/reflection-docblock": "<3.2.2", "phpdocumentor/type-resolver": "<1.4.0", - "symfony/dependency-injection": "<6.4", - "symfony/property-access": "<6.4", - "symfony/property-info": "<6.4", - "symfony/uid": "<6.4", - "symfony/validator": "<6.4", - "symfony/yaml": "<6.4" + "symfony/dependency-injection": "<4.4", + "symfony/property-access": "<5.4", + "symfony/property-info": "<5.4.24|>=6,<6.2.11", + "symfony/uid": "<5.3", + "symfony/yaml": "<4.4" }, "require-dev": { + "doctrine/annotations": "^1.12|^2", "phpdocumentor/reflection-docblock": "^3.2|^4.0|^5.0", - "seld/jsonlint": "^1.10", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/error-handler": "^6.4|^7.0", - "symfony/filesystem": "^6.4|^7.0", - "symfony/form": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/messenger": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3", - "symfony/uid": "^6.4|^7.0", - "symfony/validator": "^6.4|^7.0", - "symfony/var-dumper": "^6.4|^7.0", - "symfony/var-exporter": "^6.4|^7.0", - "symfony/yaml": "^6.4|^7.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/filesystem": "^4.4|^5.0|^6.0", + "symfony/form": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^5.4.26|^6.3", + "symfony/property-info": "^5.4.24|^6.2.11", + "symfony/uid": "^5.3|^6.0", + "symfony/validator": "^4.4|^5.0|^6.0", + "symfony/var-dumper": "^4.4|^5.0|^6.0", + "symfony/var-exporter": "^4.4|^5.0|^6.0", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "psr/cache-implementation": "For using the metadata cache.", + "symfony/config": "For using the XML mapping loader.", + "symfony/mime": "For using a MIME type guesser within the DataUriNormalizer.", + "symfony/property-access": "For using the ObjectNormalizer.", + "symfony/property-info": "To deserialize relations.", + "symfony/var-exporter": "For using the metadata compiler.", + "symfony/yaml": "For using the default YAML mapping loader." }, "type": "library", "autoload": { @@ -6003,7 +5365,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.3" + "source": "https://github.com/symfony/serializer/tree/v5.4.36" }, "funding": [ { @@ -6019,38 +5381,38 @@ "type": "tidelift" } ], - "time": "2024-01-30T08:34:29+00:00" + "time": "2024-02-22T18:40:43+00:00" }, { "name": "symfony/string", - "version": "v7.0.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/string.git", - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac" + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/524aac4a280b90a4420d8d6a040718d0586505ac", - "reference": "524aac4a280b90a4420d8d6a040718d0586505ac", + "url": "https://api.github.com/repos/symfony/string/zipball/4e232c83622bd8cd32b794216aa29d0d266d353b", + "reference": "4e232c83622bd8cd32b794216aa29d0d266d353b", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=7.2.5", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-intl-grapheme": "~1.0", "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0" + "symfony/polyfill-mbstring": "~1.0", + "symfony/polyfill-php80": "~1.15" }, "conflict": { - "symfony/translation-contracts": "<2.5" + "symfony/translation-contracts": ">=3.0" }, "require-dev": { - "symfony/error-handler": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/translation-contracts": "^2.5|^3.0", - "symfony/var-exporter": "^6.4|^7.0" + "symfony/error-handler": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/translation-contracts": "^1.1|^2", + "symfony/var-exporter": "^4.4|^5.0|^6.0" }, "type": "library", "autoload": { @@ -6089,7 +5451,7 @@ "utf8" ], "support": { - "source": "https://github.com/symfony/string/tree/v7.0.3" + "source": "https://github.com/symfony/string/tree/v5.4.36" }, "funding": [ { @@ -6105,29 +5467,32 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:41:16+00:00" + "time": "2024-02-01T08:49:30+00:00" }, { "name": "symfony/translation-contracts", - "version": "v3.4.1", + "version": "v2.5.2", "source": { "type": "git", "url": "https://github.com/symfony/translation-contracts.git", - "reference": "06450585bf65e978026bda220cdebca3f867fde7" + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/06450585bf65e978026bda220cdebca3f867fde7", - "reference": "06450585bf65e978026bda220cdebca3f867fde7", + "url": "https://api.github.com/repos/symfony/translation-contracts/zipball/136b19dd05cdf0709db6537d058bcab6dd6e2dbe", + "reference": "136b19dd05cdf0709db6537d058bcab6dd6e2dbe", "shasum": "" }, "require": { - "php": ">=8.1" + "php": ">=7.2.5" + }, + "suggest": { + "symfony/translation-implementation": "" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "3.4-dev" + "dev-main": "2.5-dev" }, "thanks": { "name": "symfony/contracts", @@ -6137,10 +5502,7 @@ "autoload": { "psr-4": { "Symfony\\Contracts\\Translation\\": "" - }, - "exclude-from-classmap": [ - "/Test/" - ] + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -6167,7 +5529,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/translation-contracts/tree/v3.4.1" + "source": "https://github.com/symfony/translation-contracts/tree/v2.5.2" }, "funding": [ { @@ -6183,57 +5545,75 @@ "type": "tidelift" } ], - "time": "2023-12-26T14:02:43+00:00" + "time": "2022-06-27T16:58:25+00:00" }, { "name": "symfony/validator", - "version": "v7.0.3", + "version": "v5.4.36", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "03b0c75d7d3df1ef9a0fd9fb8db1e86f83ffa2bb" + "reference": "e80028e0f7814a8824fc1f474f1566a7bddceec5" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/03b0c75d7d3df1ef9a0fd9fb8db1e86f83ffa2bb", - "reference": "03b0c75d7d3df1ef9a0fd9fb8db1e86f83ffa2bb", + "url": "https://api.github.com/repos/symfony/validator/zipball/e80028e0f7814a8824fc1f474f1566a7bddceec5", + "reference": "e80028e0f7814a8824fc1f474f1566a7bddceec5", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "~1.8", "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php83": "^1.27", - "symfony/translation-contracts": "^2.5|^3" + "symfony/polyfill-php73": "~1.0", + "symfony/polyfill-php80": "^1.16", + "symfony/polyfill-php81": "^1.22", + "symfony/translation-contracts": "^1.1|^2|^3" }, "conflict": { + "doctrine/annotations": "<1.13", + "doctrine/cache": "<1.11", "doctrine/lexer": "<1.1", - "symfony/dependency-injection": "<6.4", - "symfony/doctrine-bridge": "<7.0", - "symfony/expression-language": "<6.4", - "symfony/http-kernel": "<6.4", - "symfony/intl": "<6.4", - "symfony/property-info": "<6.4", - "symfony/translation": "<6.4.3|>=7.0,<7.0.3", - "symfony/yaml": "<6.4" + "symfony/dependency-injection": "<4.4", + "symfony/expression-language": "<5.1", + "symfony/http-kernel": "<4.4", + "symfony/intl": "<4.4", + "symfony/property-info": "<5.3", + "symfony/translation": "<5.4.35|>=6.0,<6.3.12|>=6.4,<6.4.3", + "symfony/yaml": "<4.4" }, "require-dev": { + "doctrine/annotations": "^1.13|^2", + "doctrine/cache": "^1.11|^2.0", "egulias/email-validator": "^2.1.10|^3|^4", - "symfony/cache": "^6.4|^7.0", - "symfony/config": "^6.4|^7.0", - "symfony/console": "^6.4|^7.0", - "symfony/dependency-injection": "^6.4|^7.0", - "symfony/expression-language": "^6.4|^7.0", - "symfony/finder": "^6.4|^7.0", - "symfony/http-client": "^6.4|^7.0", - "symfony/http-foundation": "^6.4|^7.0", - "symfony/http-kernel": "^6.4|^7.0", - "symfony/intl": "^6.4|^7.0", - "symfony/mime": "^6.4|^7.0", - "symfony/property-access": "^6.4|^7.0", - "symfony/property-info": "^6.4|^7.0", - "symfony/translation": "^6.4.3|^7.0.3", - "symfony/yaml": "^6.4|^7.0" + "symfony/cache": "^4.4|^5.0|^6.0", + "symfony/config": "^4.4|^5.0|^6.0", + "symfony/console": "^4.4|^5.0|^6.0", + "symfony/dependency-injection": "^4.4|^5.0|^6.0", + "symfony/expression-language": "^5.1|^6.0", + "symfony/finder": "^4.4|^5.0|^6.0", + "symfony/http-client": "^4.4|^5.0|^6.0", + "symfony/http-foundation": "^4.4|^5.0|^6.0", + "symfony/http-kernel": "^4.4|^5.0|^6.0", + "symfony/intl": "^4.4|^5.0|^6.0", + "symfony/mime": "^4.4|^5.0|^6.0", + "symfony/property-access": "^4.4|^5.0|^6.0", + "symfony/property-info": "^5.3|^6.0", + "symfony/translation": "^5.4.35|~6.3.12|^6.4.3", + "symfony/yaml": "^4.4|^5.0|^6.0" + }, + "suggest": { + "egulias/email-validator": "Strict (RFC compliant) email validation", + "psr/cache-implementation": "For using the mapping cache.", + "symfony/config": "", + "symfony/expression-language": "For using the Expression validator and the ExpressionLanguageSyntax constraints", + "symfony/http-foundation": "", + "symfony/intl": "", + "symfony/property-access": "For accessing properties within comparison constraints", + "symfony/property-info": "To automatically add NotNull and Type constraints", + "symfony/translation": "For translating validation errors.", + "symfony/yaml": "" }, "type": "library", "autoload": { @@ -6261,7 +5641,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v7.0.3" + "source": "https://github.com/symfony/validator/tree/v5.4.36" }, "funding": [ { @@ -6277,31 +5657,35 @@ "type": "tidelift" } ], - "time": "2024-01-29T15:41:16+00:00" + "time": "2024-02-21T11:39:05+00:00" }, { "name": "symfony/yaml", - "version": "v7.0.3", + "version": "v5.4.35", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3" + "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/2d4fca631c00700597e9442a0b2451ce234513d3", - "reference": "2d4fca631c00700597e9442a0b2451ce234513d3", + "url": "https://api.github.com/repos/symfony/yaml/zipball/e78db7f5c70a21f0417a31f414c4a95fe76c07e4", + "reference": "e78db7f5c70a21f0417a31f414c4a95fe76c07e4", "shasum": "" }, "require": { - "php": ">=8.2", + "php": ">=7.2.5", + "symfony/deprecation-contracts": "^2.1|^3", "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<6.4" + "symfony/console": "<5.3" }, "require-dev": { - "symfony/console": "^6.4|^7.0" + "symfony/console": "^5.3|^6.0" + }, + "suggest": { + "symfony/console": "For validating YAML files using the lint command" }, "bin": [ "Resources/bin/yaml-lint" @@ -6332,7 +5716,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v7.0.3" + "source": "https://github.com/symfony/yaml/tree/v5.4.35" }, "funding": [ { @@ -6348,66 +5732,7 @@ "type": "tidelift" } ], - "time": "2024-01-23T15:02:46+00:00" - }, - { - "name": "ta-tikoma/phpunit-architecture-test", - "version": "0.8.4", - "source": { - "type": "git", - "url": "https://github.com/ta-tikoma/phpunit-architecture-test.git", - "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ta-tikoma/phpunit-architecture-test/zipball/89f0dea1cb0f0d5744d3ec1764a286af5e006636", - "reference": "89f0dea1cb0f0d5744d3ec1764a286af5e006636", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.18.0 || ^5.0.0", - "php": "^8.1.0", - "phpdocumentor/reflection-docblock": "^5.3.0", - "phpunit/phpunit": "^10.5.5 || ^11.0.0", - "symfony/finder": "^6.4.0 || ^7.0.0" - }, - "require-dev": { - "laravel/pint": "^1.13.7", - "phpstan/phpstan": "^1.10.52" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPUnit\\Architecture\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ni Shi", - "email": "futik0ma011@gmail.com" - }, - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Methods for testing application architecture", - "keywords": [ - "architecture", - "phpunit", - "stucture", - "test", - "testing" - ], - "support": { - "issues": "https://github.com/ta-tikoma/phpunit-architecture-test/issues", - "source": "https://github.com/ta-tikoma/phpunit-architecture-test/tree/0.8.4" - }, - "time": "2024-01-05T14:10:56+00:00" + "time": "2024-01-23T13:51:25+00:00" }, { "name": "theseer/tokenizer", @@ -6460,70 +5785,75 @@ "time": "2023-11-20T00:12:19+00:00" }, { - "name": "webmozart/assert", - "version": "1.11.0", + "name": "wp-coding-standards/wpcs", + "version": "3.0.0", "source": { "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + "url": "https://github.com/WordPress/WordPress-Coding-Standards.git", + "reference": "bb792cb331472b82c5d7f28fb9b8ec2d20f68826" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", - "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "url": "https://api.github.com/repos/WordPress/WordPress-Coding-Standards/zipball/bb792cb331472b82c5d7f28fb9b8ec2d20f68826", + "reference": "bb792cb331472b82c5d7f28fb9b8ec2d20f68826", "shasum": "" }, "require": { - "ext-ctype": "*", - "php": "^7.2 || ^8.0" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" + "ext-filter": "*", + "ext-libxml": "*", + "ext-tokenizer": "*", + "ext-xmlreader": "*", + "php": ">=5.4", + "phpcsstandards/phpcsextra": "^1.1.0", + "phpcsstandards/phpcsutils": "^1.0.8", + "squizlabs/php_codesniffer": "^3.7.2" }, "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } + "php-parallel-lint/php-console-highlighter": "^1.0.0", + "php-parallel-lint/php-parallel-lint": "^1.3.2", + "phpcompatibility/php-compatibility": "^9.0", + "phpcsstandards/phpcsdevtools": "^1.2.0", + "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } + "suggest": { + "ext-iconv": "For improved results", + "ext-mbstring": "For improved results" }, + "type": "phpcodesniffer-standard", "notification-url": "https://packagist.org/downloads/", "license": [ "MIT" ], "authors": [ { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" + "name": "Contributors", + "homepage": "https://github.com/WordPress/WordPress-Coding-Standards/graphs/contributors" } ], - "description": "Assertions to validate method input/output with nice error messages.", + "description": "PHP_CodeSniffer rules (sniffs) to enforce WordPress coding conventions", "keywords": [ - "assert", - "check", - "validate" + "phpcs", + "standards", + "static analysis", + "wordpress" ], "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.11.0" + "issues": "https://github.com/WordPress/WordPress-Coding-Standards/issues", + "source": "https://github.com/WordPress/WordPress-Coding-Standards", + "wiki": "https://github.com/WordPress/WordPress-Coding-Standards/wiki" }, - "time": "2022-06-03T18:03:27+00:00" + "time": "2023-08-21T14:28:38+00:00" } ], "aliases": [], "minimum-stability": "stable", "stability-flags": [], - "prefer-stable": false, + "prefer-stable": true, "prefer-lowest": false, "platform": [], "platform-dev": [], - "plugin-api-version": "2.3.0" + "platform-overrides": { + "php": "7.4" + }, + "plugin-api-version": "2.6.0" } diff --git a/php.ini b/php.ini new file mode 100644 index 00000000..c0d5759b --- /dev/null +++ b/php.ini @@ -0,0 +1,6 @@ +memory_limit=-1 +error_reporting=-1 +log_errors_max_len=0 +zend.assertions=1 +assert.exception=1 +xdebug.show_exception_trace=0 diff --git a/phpunit.xml b/phpunit.xml index 0efd5c61..45a4851a 100644 --- a/phpunit.xml +++ b/phpunit.xml @@ -1,17 +1,8 @@ - + - - ./tests + + tests - - - ./Playground - - diff --git a/src/WordPress/Blueprints/BlueprintException.php b/src/WordPress/Blueprints/BlueprintException.php index ea96d7ce..a53c7dfc 100644 --- a/src/WordPress/Blueprints/BlueprintException.php +++ b/src/WordPress/Blueprints/BlueprintException.php @@ -2,6 +2,9 @@ namespace WordPress\Blueprints; -class BlueprintException extends \Exception { +use Exception; + +class BlueprintException extends Exception +{ } diff --git a/src/WordPress/Blueprints/BlueprintParser.php b/src/WordPress/Blueprints/BlueprintParser.php index e37efd87..76b98330 100644 --- a/src/WordPress/Blueprints/BlueprintParser.php +++ b/src/WordPress/Blueprints/BlueprintParser.php @@ -5,187 +5,206 @@ use Opis\JsonSchema\Errors\ErrorFormatter; use WordPress\Blueprints\Model\BlueprintBuilder; use WordPress\Blueprints\Model\DataClass\Blueprint; -use WordPress\Blueprints\Model\DataClass\WriteFileStep; -use WordPress\Blueprints\Resource\Resolver\ResourceResolverInterface; - -class BlueprintParser { - - public function __construct( - protected BlueprintValidator $validator, - protected BlueprintMapper $mapper - ) { - } - - public function parse( $rawBlueprint ) { - if ( is_string( $rawBlueprint ) ) { - return $this->fromJson( $rawBlueprint ); - } elseif ( $rawBlueprint instanceof Blueprint ) { - return $this->fromBlueprint( $rawBlueprint ); - } elseif ( $rawBlueprint instanceof BlueprintBuilder ) { - return $this->fromBlueprint( $rawBlueprint->toBlueprint() ); - } elseif ( $rawBlueprint instanceof \stdClass ) { - return $this->fromObject( $rawBlueprint ); - } - throw new \InvalidArgumentException( 'Unsupported $rawBlueprint type. Use a JSON string, a parsed JSON object, or a BlueprintBuilder instance.' ); - } - - public function fromJson( $json ) { - return $this->fromObject( json_decode( $json, false ) ); - } - - public function fromObject( object $data ) { - $result = $this->validator->validate( $data ); - if ( ! $result->isValid() ) { - print_r( ( new ErrorFormatter() )->format( $result->error() ) ); - die(); - } - - return $this->mapper->map( $data ); - } - - public function fromBlueprint( Blueprint $blueprint ) { - $result = $this->validator->validate( $blueprint ); - if ( ! $result->isValid() ) { - print_r( ( new ErrorFormatter() )->format( $result->error() ) ); -// $errorReport = [ -// "dataPointer" => $rootError->getDataPointer(), -// "schemaPointer" => $rootError->getSchemaPointer(), -// "Message" => $rootError->getMessage(), -// "Data" => $rootError->data, -// "Constraint" => $rootError->constraint, -// ]; - -// $specificError = $this->getSpecificAnyOfError( $rootError ); -// if ( $specificError ) { -// throw $specificError; -// } -// throw $rootError; - die(); - } - - return $blueprint; - } - - /** - * Narrows down ambiguous anyOf errors using the discriminator property. - * - * When one of the `anyOf` inputs doesn't match the schema, Swaggest\JsonSchema will return as many errors, - * as there are `anyOf` options. Sometimes that means 26 errors to sieve through. For example: - * - * ``` - * No valid results for oneOf { - * 0: Enum failed, enum: ["a"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[0] - * 1: Enum failed, enum: ["b"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[1] - * 2: No valid results for anyOf { - * 0: Enum failed, enum: ["c"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde]->anyOf[0] - * 1: Enum failed, enum: ["d"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde]->anyOf[1] - * 2: Enum failed, enum: ["e"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde]->anyOf[2] - * } at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde] - * } at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo - * ``` - * - * It's highly impractical to reason about that much output, so we narrow down the error to the specific `anyOf` option that failed. - * - * This function uses the discriminator property to find the specific `anyOf` option that failed. - * For example, if the data looks like this: - * - * ``` - * { - * "steps": [ - * { "step": "activatePlugin", "plugin": null }, - * ] - * } - * ``` - * - * And the schema looks like this: - * - * ``` - * "StepDefinition": { - * "type": "object", - * "discriminator": { - * "propertyName": "step" - * }, - * "oneOf": [ - * { "$ref": "#/definitions/ActivatePluginStep" }, - * { "$ref": "#/definitions/ActivateThemeStep" }, - * ``` - * - * This function will go through all the errors reported by Swaggest\JsonSchema and find the one associated - * with the `ActivatePluginStep` definition, since its `step` property is set to `activatePlugin`. - * - * @param InvalidValue $e - * - * @return \Swaggest\JsonSchema\Exception\Error|void|null - */ - function getSpecificAnyOfError( InvalidValue $e ): \Throwable|null { - $subSchema = $this->getSubschema( $e->getSchemaPointer() ); - - if ( property_exists( $subSchema, '$ref' ) ) { - $discriminatedDefinition = $this->getSubschema( $subSchema->{'$ref'} ); - if ( property_exists( $discriminatedDefinition, 'discriminator' ) ) { - $discriminatorField = $discriminatedDefinition->discriminator->propertyName; - $discriminatorValue = $e->data->$discriminatorField; - - foreach ( $discriminatedDefinition->oneOf as $discriminatorOption ) { - if ( property_exists( $discriminatorOption, '$ref' ) ) { - $optionDefinition = $this->getSubschema( $discriminatorOption->{'$ref'} ); - $optionDiscriminatorValue = $optionDefinition->properties->{$discriminatorField}->const; - if ( $optionDiscriminatorValue === $discriminatorValue ) { - return $this->findSubErrorForSpecificAnyOfOption( $e->inspect(), - $discriminatorOption->{'$ref'} ); - } - } - } - } - } - } - - private function findSubErrorForSpecificAnyOfOption( \Swaggest\JsonSchema\Exception\Error $e, string $anyOfRef ) { - if ( $anyOfRef[0] === '#' ) { - $anyOfRef = substr( $anyOfRef, 1 ); - } - if ( $e->schemaPointers ) { - foreach ( $e->schemaPointers as $pointer ) { - if ( str_starts_with( $pointer, $anyOfRef ) ) { - return $e; - } - } - } - if ( ! $e->subErrors ) { - return; - } - foreach ( $e->subErrors as $subError ) { - $subError = findSubErrorForSpecificAnyOfOption( $subError, $anyOfRef ); - if ( $subError !== null ) { - return $subError; - } - } - } - - private function getSubschema( $pointer ) { - if ( $pointer[0] === '#' ) { - $pointer = substr( $pointer, 1 ); - } - if ( $pointer[0] !== '/' ) { - $pointer = substr( $pointer, 1 ); - } - $path = explode( '/', substr( $pointer, 1 ) ); - $subSchema = $this->blueprintSchema; - foreach ( $path as $key ) { - if ( is_numeric( $key ) && ! property_exists( $subSchema, $key ) ) { - foreach ( $subSchema->anyOf as $v ) { - if ( is_object( $v ) && property_exists( $v, '$ref' ) ) { - $subSchema = $v; - break; - } - } - } else { - $subSchema = $subSchema->$key; - } - } - - return $subSchema; - } - +// TODO Review class +class BlueprintParser +{ + + protected BlueprintValidator $validator; + protected BlueprintMapper $mapper; + + public function __construct( + BlueprintValidator $validator, + BlueprintMapper $mapper + ) { + $this->mapper = $mapper; + $this->validator = $validator; + } + + public function parse($rawBlueprint) + { + if (is_string($rawBlueprint)) { + return $this->fromJson($rawBlueprint); + } elseif ($rawBlueprint instanceof Blueprint) { + return $this->fromBlueprint($rawBlueprint); + } elseif ($rawBlueprint instanceof BlueprintBuilder) { + return $this->fromBlueprint($rawBlueprint->toBlueprint()); + } elseif ($rawBlueprint instanceof \stdClass) { + return $this->fromObject($rawBlueprint); + } + throw new \InvalidArgumentException( + 'Unsupported $rawBlueprint type. Use a JSON string, a parsed JSON object, or a BlueprintBuilder instance.' + ); + } + // TODO Evaluate waring: missing function's return type + public function fromJson($json) + { + // TODO Evaluate warning: 'ext-json' is missing in composer.json + return $this->fromObject(json_decode($json, false)); + } + + public function fromObject(object $data) + { + $result = $this->validator->validate($data); + if (!$result->isValid()) { + print_r((new ErrorFormatter())->format($result->error())); + die(); + } + + return $this->mapper->map($data); + } + + public function fromBlueprint(Blueprint $blueprint) + { + $result = $this->validator->validate($blueprint); + if (!$result->isValid()) { + print_r((new ErrorFormatter())->format($result->error())); +// $errorReport = [ +// "dataPointer" => $rootError->getDataPointer(), +// "schemaPointer" => $rootError->getSchemaPointer(), +// "Message" => $rootError->getMessage(), +// "Data" => $rootError->data, +// "Constraint" => $rootError->constraint, +// ]; + +// $specificError = $this->getSpecificAnyOfError( $rootError ); +// if ( $specificError ) { +// throw $specificError; +// } +// throw $rootError; + die(); + } + + return $blueprint; + } + +// /** +// * Narrows down ambiguous anyOf errors using the discriminator property. +// * +// * When one of the `anyOf` inputs doesn't match the schema, Swaggest\JsonSchema will return as many errors, +// * as there are `anyOf` options. Sometimes that means 26 errors to sieve through. For example: +// * +// * ``` +// * No valid results for oneOf { +// * 0: Enum failed, enum: ["a"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[0] +// * 1: Enum failed, enum: ["b"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[1] +// * 2: No valid results for anyOf { +// * 0: Enum failed, enum: ["c"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde]->anyOf[0] +// * 1: Enum failed, enum: ["d"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde]->anyOf[1] +// * 2: Enum failed, enum: ["e"], data: "f" at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde]->anyOf[2] +// * } at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo->oneOf[2]->$ref[#/cde] +// * } at #->properties:root->patternProperties[^[a-zA-Z0-9_]+$]:zoo +// * ``` +// * +// * It's highly impractical to reason about that much output, so we narrow down the error to the specific `anyOf` option that failed. +// * +// * This function uses the discriminator property to find the specific `anyOf` option that failed. +// * For example, if the data looks like this: +// * +// * ``` +// * { +// * "steps": [ +// * { "step": "activatePlugin", "plugin": null }, +// * ] +// * } +// * ``` +// * +// * And the schema looks like this: +// * +// * ``` +// * "StepDefinition": { +// * "type": "object", +// * "discriminator": { +// * "propertyName": "step" +// * }, +// * "oneOf": [ +// * { "$ref": "#/definitions/ActivatePluginStep" }, +// * { "$ref": "#/definitions/ActivateThemeStep" }, +// * ``` +// * +// * This function will go through all the errors reported by Swaggest\JsonSchema and find the one associated +// * with the `ActivatePluginStep` definition, since its `step` property is set to `activatePlugin`. +// * +// * @param InvalidValue $e +// * +// * @return Error|void|null +// */ +// function getSpecificAnyOfError(InvalidValue $e): \Throwable|null +// { +// $subSchema = $this->getSubschema($e->getSchemaPointer()); +// +// if (property_exists($subSchema, '$ref')) { +// $discriminatedDefinition = $this->getSubschema($subSchema->{'$ref'}); +// if (property_exists($discriminatedDefinition, 'discriminator')) { +// $discriminatorField = $discriminatedDefinition->discriminator->propertyName; +// $discriminatorValue = $e->data->$discriminatorField; +// +// foreach ($discriminatedDefinition->oneOf as $discriminatorOption) { +// if (property_exists($discriminatorOption, '$ref')) { +// $optionDefinition = $this->getSubschema($discriminatorOption->{'$ref'}); +// $optionDiscriminatorValue = $optionDefinition->properties->{$discriminatorField}->const; +// if ($optionDiscriminatorValue === $discriminatorValue) { +// return $this->findSubErrorForSpecificAnyOfOption( +// $e->inspect(), +// $discriminatorOption->{'$ref'} +// ); +// } +// } +// } +// } +// } +// } +// + +// TODO Review logic in this method (might've been corrupted during downgrade) + +// private function findSubErrorForSpecificAnyOfOption(Error $e, string $anyOfRef) +// { +// if ($anyOfRef[0] === '#') { +// $anyOfRef = substr($anyOfRef, 1); +// } +// if ($e->schemaPointers) { +// foreach ($e->schemaPointers as $pointer) { +// if (str_starts_with($pointer, $anyOfRef)) { +// return $e; +// } +// } +// } +// if (!$e->subErrors) { +// return $e->error; +// } +// foreach ($e->subErrors as $subError) { +// $subError = findSubErrorForSpecificAnyOfOption($subError, $anyOfRef); +// if ($subError !== null) { +// return $subError; +// } +// } +// return $e; +// } + +// private function getSubschema($pointer) +// { +// if ($pointer[0] === '#') { +// $pointer = substr($pointer, 1); +// } +// if ($pointer[0] !== '/') { +// $pointer = substr($pointer, 1); +// } +// $path = explode('/', substr($pointer, 1)); +// $subSchema = $this->blueprintSchema; +// foreach ($path as $key) { +// if (is_numeric($key) && !property_exists($subSchema, $key)) { +// foreach ($subSchema->anyOf as $v) { +// if (is_object($v) && property_exists($v, '$ref')) { +// $subSchema = $v; +// break; +// } +// } +// } else { +// $subSchema = $subSchema->$key; +// } +// } +// +// return $subSchema; +// } } diff --git a/src/WordPress/Blueprints/Compile/BlueprintCompiler.php b/src/WordPress/Blueprints/Compile/BlueprintCompiler.php index b25fb93e..84115b87 100644 --- a/src/WordPress/Blueprints/Compile/BlueprintCompiler.php +++ b/src/WordPress/Blueprints/Compile/BlueprintCompiler.php @@ -13,15 +13,19 @@ use WordPress\Blueprints\Model\DataClass\UrlResource; use WordPress\Blueprints\Model\DataClass\WordPressInstallationOptions; use WordPress\Blueprints\Model\DataClass\WriteFileStep; +use WordPress\Blueprints\Resources\Resolver\ResourceResolverInterface; use WordPress\Blueprints\Progress\Tracker; -use WordPress\Blueprints\Resource\Resolver\ResourceResolverInterface; class BlueprintCompiler { + protected $stepRunnerFactory; + protected ResourceResolverInterface $resourceResolver; public function __construct( - protected $stepRunnerFactory, - protected ResourceResolverInterface $resourceResolver + $stepRunnerFactory, + ResourceResolverInterface $resourceResolver ) { + $this->resourceResolver = $resourceResolver; + $this->stepRunnerFactory = $stepRunnerFactory; } public function compile( Blueprint $blueprint ): CompiledBlueprint { diff --git a/src/WordPress/Blueprints/ContainerBuilder.php b/src/WordPress/Blueprints/ContainerBuilder.php index f3748875..4c173dd9 100644 --- a/src/WordPress/Blueprints/ContainerBuilder.php +++ b/src/WordPress/Blueprints/ContainerBuilder.php @@ -21,7 +21,6 @@ use WordPress\Blueprints\Model\DataClass\InstallSqliteIntegrationStep; use WordPress\Blueprints\Model\DataClass\InstallThemeStep; use WordPress\Blueprints\Model\DataClass\MvStep; -use WordPress\Blueprints\Model\DataClass\RmDirStep; use WordPress\Blueprints\Model\DataClass\RmStep; use WordPress\Blueprints\Model\DataClass\RunPHPStep; use WordPress\Blueprints\Model\DataClass\RunSQLStep; @@ -32,11 +31,11 @@ use WordPress\Blueprints\Model\DataClass\WPCLIStep; use WordPress\Blueprints\Model\DataClass\WriteFileStep; use WordPress\Blueprints\BlueprintMapper; -use WordPress\Blueprints\Resource\Resolver\FilesystemResourceResolver; -use WordPress\Blueprints\Resource\Resolver\InlineResourceResolver; -use WordPress\Blueprints\Resource\Resolver\ResourceResolverCollection; -use WordPress\Blueprints\Resource\Resolver\UrlResourceResolver; -use WordPress\Blueprints\Resource\ResourceManager; +use WordPress\Blueprints\Resources\Resolver\FilesystemResourceResolver; +use WordPress\Blueprints\Resources\Resolver\InlineResourceResolver; +use WordPress\Blueprints\Resources\Resolver\ResourceResolverCollection; +use WordPress\Blueprints\Resources\Resolver\UrlResourceResolver; +use WordPress\Blueprints\Resources\ResourceManager; use WordPress\Blueprints\Runner\Blueprint\BlueprintRunner; use WordPress\Blueprints\Runner\Step\ActivatePluginStepRunner; use WordPress\Blueprints\Runner\Step\ActivateThemeStepRunner; @@ -50,7 +49,6 @@ use WordPress\Blueprints\Runner\Step\InstallSqliteIntegrationStepRunner; use WordPress\Blueprints\Runner\Step\InstallThemeStepRunner; use WordPress\Blueprints\Runner\Step\MvStepRunner; -use WordPress\Blueprints\Runner\Step\RmDirStepRunner; use WordPress\Blueprints\Runner\Step\RmStepRunner; use WordPress\Blueprints\Runner\Step\RunPHPStepRunner; use WordPress\Blueprints\Runner\Step\RunSQLStepRunner; diff --git a/src/WordPress/Blueprints/Resource/ResourceMap.php b/src/WordPress/Blueprints/Resource/ResourceMap.php deleted file mode 100644 index 122cc5da..00000000 --- a/src/WordPress/Blueprints/Resource/ResourceMap.php +++ /dev/null @@ -1,53 +0,0 @@ -fs = new Filesystem(); - } - - public function offsetExists( $offset ): bool { - foreach ( $this->pairs as $pair ) { - if ( $pair[0] === $offset ) { - return true; - } - } - } - - public function offsetGet( $offset ): mixed { - foreach ( $this->pairs as $pair ) { - if ( $pair[0] === $offset ) { - return $pair[1]; - } - } - - throw new \Exception( "Stream for resource " . json_encode( $offset ) . " not found" ); - } - - public function offsetSet( $offset, $value ): void { - foreach ( $this->pairs as $k => $pair ) { - if ( $pair[0] === $offset ) { - $this->pairs[ $k ] = [ $offset, $value ]; - - return; - } - } - $this->pairs[] = [ $offset, $value ]; - } - - public function offsetUnset( $offset ): void { - foreach ( $this->pairs as $i => $pair ) { - if ( $pair[0] === $offset ) { - unset( $this->pairs[ $i ] ); - } - } - } - - -} diff --git a/src/WordPress/Blueprints/Resource/Resolver/FilesystemResourceResolver.php b/src/WordPress/Blueprints/Resources/Resolver/FilesystemResourceResolver.php similarity index 95% rename from src/WordPress/Blueprints/Resource/Resolver/FilesystemResourceResolver.php rename to src/WordPress/Blueprints/Resources/Resolver/FilesystemResourceResolver.php index 83a74022..db52ca3b 100644 --- a/src/WordPress/Blueprints/Resource/Resolver/FilesystemResourceResolver.php +++ b/src/WordPress/Blueprints/Resources/Resolver/FilesystemResourceResolver.php @@ -1,6 +1,6 @@ fs = new Filesystem(); + } + + public function offsetExists($offset): bool + { + foreach ($this->pairs as $pair) { + if ($pair[0] === $offset) { + return true; + } + } + return false; + } + + public function offsetGet($offset) + { + foreach ($this->pairs as $pair) { + if ($pair[0] === $offset) { + return $pair[1]; + } + } + + // TODO Evaluate waring: 'ext-json' is missing in composer.json + throw new \Exception("Stream for resource " . json_encode($offset) . " not found"); + } + + public function offsetSet($offset, $value): void + { + foreach ($this->pairs as $k => $pair) { + if ($pair[0] === $offset) { + $this->pairs[ $k ] = [ $offset, $value ]; + + return; + } + } + $this->pairs[] = [ $offset, $value ]; + } + + public function offsetUnset($offset): void + { + foreach ($this->pairs as $i => $pair) { + if ($pair[0] === $offset) { + unset($this->pairs[ $i ]); + } + } + } +} diff --git a/src/WordPress/Blueprints/Runner/Step/BaseStepRunner.php b/src/WordPress/Blueprints/Runner/Step/BaseStepRunner.php index 72d97a32..500a684b 100644 --- a/src/WordPress/Blueprints/Runner/Step/BaseStepRunner.php +++ b/src/WordPress/Blueprints/Runner/Step/BaseStepRunner.php @@ -2,33 +2,37 @@ namespace WordPress\Blueprints\Runner\Step; -use WordPress\Blueprints\Context\ExecutionContext; -use WordPress\Blueprints\Resource\ResourceManager; +use WordPress\Blueprints\Resources\ResourceManager; use WordPress\Blueprints\Runtime\RuntimeInterface; -abstract class BaseStepRunner implements StepRunnerInterface { - protected ResourceManager $resourceManager; +abstract class BaseStepRunner implements StepRunnerInterface +{ + protected ResourceManager $resourceManager; - protected RuntimeInterface $runtime; + protected RuntimeInterface $runtime; - public function setResourceManager( ResourceManager $map ) { - $this->resourceManager = $map; - } + public function setResourceManager(ResourceManager $map) + { + $this->resourceManager = $map; + } - protected function getResource( $declaration ) { - return $this->resourceManager->getStream( $declaration ); - } + protected function getResource($declaration) + { + return $this->resourceManager->getStream($declaration); + } - public function setRuntime( RuntimeInterface $runtime ): void { - $this->runtime = $runtime; - } + public function setRuntime(RuntimeInterface $runtime): void + { + $this->runtime = $runtime; + } - protected function getRuntime(): RuntimeInterface { - return $this->runtime; - } - - public function getDefaultCaption( $input ): string|null { - return null; - } + protected function getRuntime(): RuntimeInterface + { + return $this->runtime; + } + protected function getDefaultCaption($input): ?string + { + return null; + } } diff --git a/src/WordPress/Blueprints/Runner/Step/RmStepRunner.php b/src/WordPress/Blueprints/Runner/Step/RmStepRunner.php index 33516d09..b16c75e2 100644 --- a/src/WordPress/Blueprints/Runner/Step/RmStepRunner.php +++ b/src/WordPress/Blueprints/Runner/Step/RmStepRunner.php @@ -7,13 +7,13 @@ use WordPress\Blueprints\BlueprintException; use WordPress\Blueprints\Model\DataClass\RmStep; - class RmStepRunner extends BaseStepRunner { /** * @param RmStep $input */ - function run(RmStep $input) { + public function run(RmStep $input) + { $resolvedPath = $this->getRuntime()->resolvePath($input->path); $fileSystem = new Filesystem(); if (false === $fileSystem->exists($resolvedPath)) { diff --git a/src/WordPress/Blueprints/Runner/Step/StepRunnerInterface.php b/src/WordPress/Blueprints/Runner/Step/StepRunnerInterface.php index 4b32178b..2b61b87e 100644 --- a/src/WordPress/Blueprints/Runner/Step/StepRunnerInterface.php +++ b/src/WordPress/Blueprints/Runner/Step/StepRunnerInterface.php @@ -2,17 +2,17 @@ namespace WordPress\Blueprints\Runner\Step; -use WordPress\Blueprints\Resource\ResourceManager; +use WordPress\Blueprints\Resources\ResourceManager; use WordPress\Blueprints\Runtime\RuntimeInterface; -interface StepRunnerInterface { +interface StepRunnerInterface +{ - function setResourceManager( ResourceManager $map ); + public function setResourceManager(ResourceManager $map); - function setRuntime( RuntimeInterface $runtime ): void; + public function setRuntime(RuntimeInterface $runtime): void; // @TODO: Document how this method isn't defined because // PHP doens't support covariant arguments -// function run( StepInterface $input, Tracker $tracker ); - +// function run( StepInterface $input, Tracker $tracker ); } diff --git a/src/WordPress/Blueprints/Runtime/Runtime.php b/src/WordPress/Blueprints/Runtime/Runtime.php index 79240a11..40d8a5b4 100644 --- a/src/WordPress/Blueprints/Runtime/Runtime.php +++ b/src/WordPress/Blueprints/Runtime/Runtime.php @@ -10,11 +10,13 @@ class Runtime implements RuntimeInterface { public Filesystem $fs; + protected string $documentRoot; - public function __construct( - protected string $documentRoot + public function __construct( + string $documentRoot ) { - $this->fs = new Filesystem(); + $this->documentRoot = $documentRoot; + $this->fs = new Filesystem(); if ( ! file_exists( $this->getDocumentRoot() ) ) { $this->fs->mkdir( $this->getDocumentRoot() ); } @@ -69,7 +71,7 @@ public function getTempRoot() { public function evalPhpInSubProcess( $code, ?array $env = null, - mixed $input = null, + $input = null, ?float $timeout = 60 ) { return $this->runShellCommand( @@ -93,7 +95,7 @@ public function runShellCommand( array $command, ?string $cwd = null, ?array $env = null, - mixed $input = null, + $input = null, ?float $timeout = 60 ) { $process = $this->startProcess( @@ -116,7 +118,7 @@ public function startProcess( array $command, ?string $cwd = null, ?array $env = null, - mixed $input = null, + $input = null, ?float $timeout = 60 ): Process { $cwd ??= $this->getDocumentRoot(); diff --git a/tests/Blueprints/Runner/Step/RmStepRunnerTest.php b/tests/Blueprints/Runner/Step/RmStepRunnerTest.php new file mode 100644 index 00000000..df2c03e4 --- /dev/null +++ b/tests/Blueprints/Runner/Step/RmStepRunnerTest.php @@ -0,0 +1,175 @@ +documentRoot = Path::makeAbsolute("test", sys_get_temp_dir()); + $this->runtime = new Runtime($this->documentRoot); + + $this->step = new RmStepRunner(); + $this->step->setRuntime($this->runtime); + + $this->fileSystem = new Filesystem(); + } + + /** + * @after + */ + public function after() + { + $this->fileSystem->remove($this->documentRoot); + } + + public function testRemoveDirectoryWhenUsingAbsolutePath(): void + { + $absolutePath = $this->runtime->resolvePath("dir"); + $this->fileSystem->mkdir($absolutePath); + + $input = new RmStep(); + $input->path = $absolutePath; + + $this->step->run($input); + + $this->assertDirectoryDoesNotExist($absolutePath); + } + + public function testRemoveDirectoryWhenUsingRelativePath(): void + { + $relativePath = "dir"; + $absolutePath = $this->runtime->resolvePath($relativePath); + $this->fileSystem->mkdir($absolutePath); + + $input = new RmStep(); + $input->path = $relativePath; + + $this->step->run($input); + + $this->assertDirectoryDoesNotExist($absolutePath); + } + + public function testRemoveDirectoryWithSubdirectory(): void + { + $relativePath = "dir/subdir"; + $absolutePath = $this->runtime->resolvePath($relativePath); + $this->fileSystem->mkdir($absolutePath); + + $input = new RmStep(); + $input->path = dirname($relativePath); + + $this->step->run($input); + + $this->assertDirectoryDoesNotExist($absolutePath); + } + + public function testRemoveDirectoryWithFile(): void + { + $relativePath = "dir/file.txt"; + $absolutePath = $this->runtime->resolvePath($relativePath); + $this->fileSystem->dumpFile($absolutePath, "test"); + + $input = new RmStep(); + $input->path = dirname($relativePath); + + $this->step->run($input); + + $this->assertDirectoryDoesNotExist(dirname($absolutePath)); + } + + public function testRemoveFile(): void + { + $relativePath = "file.txt"; + $absolutePath = $this->runtime->resolvePath($relativePath); + $this->fileSystem->dumpFile($absolutePath, "test"); + + $input = new RmStep(); + $input->path = $relativePath; + + $this->step->run($input); + + $this->assertDirectoryDoesNotExist($absolutePath); + } + + public function testThrowExceptionWhenRemovingNonexistentDirectoryAndUsingRelativePath(): void + { + $relativePath = "dir"; + $absolutePath = $this->runtime->resolvePath($relativePath); + + $input = new RmStep(); + $input->path = $relativePath; + + $this->expectException(BlueprintException::class); + $this->expectExceptionMessage("Failed to remove \"$absolutePath\": the directory or file does not exist."); + $this->step->run($input); + } + + public function testThrowExceptionWhenRemovingNonexistentDirectoryAndUsingAbsolutePath(): void + { + $absolutePath = "/dir"; + + $input = new RmStep(); + $input->path = $absolutePath; + + $this->expectException(BlueprintException::class); + $this->expectExceptionMessage("Failed to remove \"$absolutePath\": the directory or file does not exist."); + $this->step->run($input); + } + + public function testThrowExceptionWhenRemovingNonexistentFileAndUsingAbsolutePath(): void + { + $relativePath = "/file.txt"; + + $input = new RmStep(); + $input->path = $relativePath; + + $this->expectException(BlueprintException::class); + $this->expectExceptionMessage("Failed to remove \"$relativePath\": the directory or file does not exist."); + $this->step->run($input); + } + + public function testThrowExceptionWhenRemovingNonexistentFileAndUsingRelativePath(): void + { + $relativePath = "file.txt"; + $absolutePath = $this->runtime->resolvePath($relativePath); + + $input = new RmStep(); + $input->path = $relativePath; + + $this->expectException(BlueprintException::class); + $this->expectExceptionMessage("Failed to remove \"$absolutePath\": the directory or file does not exist."); + $this->step->run($input); + } +} diff --git a/tests/TestCase.php b/tests/TestCase.php deleted file mode 100644 index 79893ff2..00000000 --- a/tests/TestCase.php +++ /dev/null @@ -1,9 +0,0 @@ -compile([ - 'steps' => [] - ]); -}); diff --git a/tests/Unit/RmStepTest.php b/tests/Unit/RmStepTest.php deleted file mode 100644 index 231935d1..00000000 --- a/tests/Unit/RmStepTest.php +++ /dev/null @@ -1,119 +0,0 @@ -documentRoot = Path::makeAbsolute( "test", sys_get_temp_dir() ); - $this->runtime = new Runtime( $this->documentRoot ); - - $this->step = new RmStepRunner(); - $this->step->setRuntime( $this->runtime ); - - $this->fileSystem = new Filesystem(); -} ); - -afterEach( function () { - $this->fileSystem->remove( $this->documentRoot ); -} ); - -it( 'should remove a directory (using an absolute path)', function () { - $absolutePath = $this->runtime->resolvePath( "dir" ); - $this->fileSystem->mkdir( $absolutePath ); - - $input = new RmStep(); - $input->path = $absolutePath; - - $this->step->run( $input ); - - expect( $this->fileSystem->exists( $absolutePath ) )->toBeFalse(); -} ); - -it( 'should remove a directory (using a relative path)', function () { - $relativePath = "dir"; - $absolutePath = $this->runtime->resolvePath( $relativePath ); - $this->fileSystem->mkdir( $absolutePath ); - - $input = new RmStep(); - $input->path = $relativePath; - - $this->step->run( $input ); - - expect( $this->fileSystem->exists( $absolutePath ) )->toBeFalse(); -} ); - -it( 'should remove a directory with a subdirectory', function () { - $relativePath = "dir/subdir"; - $absolutePath = $this->runtime->resolvePath( $relativePath ); - $this->fileSystem->mkdir( $absolutePath ); - - $input = new RmStep(); - $input->path = dirname( $relativePath ); - - $this->step->run( $input ); - - expect( $this->fileSystem->exists( dirname( $absolutePath ) ) )->toBeFalse(); -} ); - -it( 'should remove a directory with a file', function () { - $relativePath = "dir/file.txt"; - $absolutePath = $this->runtime->resolvePath( $relativePath ); - $this->fileSystem->dumpFile( $absolutePath, "test" ); - - $input = new RmStep(); - $input->path = dirname( $relativePath ); - - $this->step->run( $input ); - - expect( $this->fileSystem->exists( dirname( $absolutePath ) ) )->toBeFalse(); -} ); - -it( 'should remove a file', function () { - $relativePath = "file.txt"; - $absolutePath = $this->runtime->resolvePath( $relativePath ); - $this->fileSystem->dumpFile( $absolutePath, "test" ); - - $input = new RmStep(); - $input->path = $relativePath; - - $this->step->run( $input ); - - expect( $this->fileSystem->exists( $absolutePath ) )->toBeFalse(); -} ); - -it( 'should throw an exception when asked to remove a nonexistent directory (using a relative path)', function () { - $relativePath = "dir"; - - $input = new RmStep(); - $input->path = $relativePath; - - $absolutePath = $this->runtime->resolvePath( $relativePath ); - expect( fn() => $this->step->run( $input ) )->toThrow( BlueprintException::class, - "Failed to remove \"$absolutePath\": the directory or file does not exist." ); -} ); - -it( 'should throw an exception when asked to remove a nonexistent directory (using an absolute path)', function () { - $absolutePath = "/dir"; - - $input = new RmStep(); - $input->path = $absolutePath; - - expect( fn() => $this->step->run( $input ) )->toThrow( BlueprintException::class, - "Failed to remove \"$absolutePath\": the directory or file does not exist." ); -} ); - -it( 'should throw an exception when asked to remove a nonexistent file', function () { - $relativePath = "file.txt"; - - $input = new RmStep(); - $input->path = $relativePath; - - $absolutePath = $this->runtime->resolvePath( $relativePath ); - expect( fn() => $this->step->run( $input ) )->toThrow( BlueprintException::class, - "Failed to remove \"$absolutePath\": the directory or file does not exist." ); -} ); diff --git a/tests/Unit/TrackerTest.php b/tests/Unit/TrackerTest.php index 1a1f8dd1..f6142b52 100644 --- a/tests/Unit/TrackerTest.php +++ b/tests/Unit/TrackerTest.php @@ -1,227 +1,227 @@ set( 50 ); - - expect( (int) $tracker->getProgress() )->toBe( 50 ); - } ); - - it( 'Equally-weighted subtrackers should sum to 100 total progress after completion', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 1 / 3, 'Part 1' ); - $partial2 = $tracker->stage( 1 / 3, 'Part 2' ); - $partial3 = $tracker->stage( 1 / 3, 'Part 3' ); - - $partial1->set( 100 ); - expect( (int) $tracker->getProgress() )->toBe( 33, 2 ); - - $partial2->set( 100 ); - $partial2->set( 100 ); - expect( (int) $tracker->getProgress() )->toBe( 66, 2 ); - - $partial3->set( 100 ); - expect( (int) $tracker->getProgress() )->toBe( 100 ); - } ); - - it( 'Differently-weighted subtrackers should sum to 100 total progress after completion', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 0.2, 'Part 1' ); - $partial2 = $tracker->stage( 0.3, 'Part 2' ); - $partial3 = $tracker->stage( 0.5, 'Part 3' ); - - $partial1->set( 100 ); - expect( (int) $tracker->getProgress() )->toBe( 20 ); - - $partial2->set( 100 ); - expect( (int) $tracker->getProgress() )->toBe( 50 ); - - $partial3->set( 100 ); - expect( (int) $tracker->getProgress() )->toBe( 100 ); - } ); - - describe( 'Subtrackers should sum to 100 total progress after completion even if the top-level tracker also has self-progress', - function () { - it( 'When subtrackers cover the entire progress range ', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 1 / 3, 'Part 1' ); - $partial2 = $tracker->stage( 1 / 3, 'Part 2' ); - $partial3 = $tracker->stage( 1 / 3, 'Part 3' ); - - $tracker->set( 100 ); - $partial1->set( 100 ); - $partial2->set( 100 ); - $partial3->set( 100 ); - expect( $tracker->getProgress() )->toBe( 100 ); - } ); - it( 'When subtrackers only cover 2/3 of the progress range ', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 1 / 3, 'Part 1' ); - $partial2 = $tracker->stage( 1 / 3, 'Part 2' ); - - $tracker->set( 100 ); - $partial1->set( 100 ); - $partial2->set( 100 ); - expect( (int) $tracker->getProgress() )->toBe( 100 ); - } ); - } ); - - it( 'Two levels of sub-trackers should sum to 100 total progress after completion', function () { - $tracker = new Tracker(); - $level1A = $tracker->stage( 0.6, 'Level 1A' ); - $level1B = $tracker->stage( 0.4, 'Level 1B' ); - - $level2A1 = $level1A->stage( 0.5, 'Level 2A1' ); - $level2A2 = $level1A->stage( 0.5, 'Level 2A2' ); - $level2B1 = $level1B->stage( 0.7, 'Level 2B1' ); - $level2B2 = $level1B->stage( 0.3, 'Level 2B2' ); - $level2A1->set( 100 ); - expect( $tracker->getProgress() )->toBe( 30.0, 2 ); - - $level2A2->set( 100 ); - expect( $tracker->getProgress() )->toBe( 60.0, 2 ); - - $level2B1->set( 100 ); - expect( $tracker->getProgress() )->toBe( 88.0, 2 ); - - $level2B2->set( 100 ); - expect( $tracker->getProgress() )->toBe( 100.0 ); - } ); -} ); - -describe( 'Events', function () { - it( 'Progress event emitted when using set', function () { - $tracker = new Tracker(); - $eventProgress = 0; - - $tracker->events->addListener( 'progress', function ( ProgressEvent $event ) use ( &$eventProgress ) { - $eventProgress = $event->progress; - } ); - - $tracker->set( 50 ); - - expect( $eventProgress )->toBe( 50.0 ); - } ); - - it( 'Progress event emitted when setting caption', function () { - $tracker = new Tracker(); - $eventCaption = ''; - - $tracker->events->addListener( 'progress', function ( ProgressEvent $event ) use ( &$eventCaption ) { - $eventCaption = $event->caption; - } ); - - $tracker->setCaption( 'Test caption' ); - - expect( $eventCaption )->toBe( 'Test caption' ); - } ); - - it( 'Progress event emitted for sub trackers', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 0.5, 'Part 1' ); - $eventProgress = 0; - - $tracker->events->addListener( 'progress', function ( ProgressEvent $event ) use ( &$eventProgress ) { - $eventProgress = $event->progress; - } ); - - $partial1->set( 100 ); - - expect( $eventProgress )->toBe( 50.0 ); - } ); -} ); - -describe( 'Caption management', function () { - it( 'Should return caption of a Tracker', function () { - $tracker = new Tracker( [ "caption" => 'Initial caption' ] ); - - expect( $tracker->getCaption() )->toBe( 'Initial caption' ); - } ); - - it( 'Should return the updated caption of a single Tracker', function () { - $tracker = new Tracker( [ "caption" => 'Initial caption' ] ); - $tracker->setCaption( 'Updated caption' ); - - expect( $tracker->getCaption() )->toBe( 'Updated caption' ); - } ); - - it( 'Should return caption of the most recently started sub tracker', function () { - $tracker = new Tracker(); - $tracker->stage( 0.5, 'Part 1' ); - $tracker->stage( 0.5, 'Part 2' ); - expect( $tracker->getCaption() )->toBe( 'Part 2' ); - } ); - - it( 'Should return caption of the most recently started sub tracker – multi-level', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 0.5, 'Part 1' ); - expect( $tracker->getCaption() )->toBe( 'Part 1' ); - - $partial1->stage( 0.5, 'Part 1.a' ); - expect( $tracker->getCaption() )->toBe( 'Part 1.a' ); - - $partial1->stage( 0.5, 'Part 1.b' ); - expect( $tracker->getCaption() )->toBe( 'Part 1.b' ); - - $partial2 = $tracker->stage( 0.5, 'Part 2' ); - expect( $tracker->getCaption() )->toBe( 'Part 2' ); - - $partial2->stage( 0.5, 'Part 2.a' ); - expect( $tracker->getCaption() )->toBe( 'Part 2.a' ); - - $partial2->stage( 0.5, 'Part 2.b' ); - expect( $tracker->getCaption() )->toBe( 'Part 2.b' ); - } ); - - it( 'Should return caption of the most recent incomplete sub tracker – multi-level', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 0.5, 'Part 1' ); - expect( $tracker->getCaption() )->toBe( 'Part 1' ); - - $partial1a = $partial1->stage( 0.5, 'Part 1.a' ); - $partial1b = $partial1->stage( 0.5, 'Part 1.b' ); - $partial2 = $tracker->stage( 0.5, 'Part 2' ); - $partial2a = $partial2->stage( 0.5, 'Part 2.a' ); - $partial2b = $partial2->stage( 0.5, 'Part 2.b' ); - - $partial2b->set( 100 ); - expect( $tracker->getCaption() )->toBe( 'Part 2.a' ); - - $partial2a->set( 100 ); - expect( $partial2->isDone() )->toBe( true ); - expect( $tracker->getCaption() )->toBe( 'Part 1.b' ); - - $partial1a->set( 100 ); - expect( $tracker->getCaption() )->toBe( 'Part 1.b' ); - - $partial1b->set( 100 ); - expect( $tracker->getCaption() )->toBe( '' ); - } ); - - it( 'Should return caption of the most recently started and not completed sub tracker', function () { - $tracker = new Tracker(); - $tracker->stage( 0.5, 'Part 1' ); - $partial2 = $tracker->stage( 0.5, 'Part 2' ); - - $partial2->set( 95 ); - expect( $tracker->getCaption() )->toBe( 'Part 2' ); - - $partial2->set( 100 ); - expect( $tracker->getCaption() )->toBe( 'Part 1' ); - } ); - - it( 'Should return no caption when all sub trackers are completed', function () { - $tracker = new Tracker(); - $partial1 = $tracker->stage( 0.5, 'Part 1' ); - $partial2 = $tracker->stage( 0.5, 'Part 2' ); - - $partial1->set( 100 ); - $partial2->set( 100 ); - - expect( $tracker->getCaption() )->toBe( '' ); - } ); -} ); +// +//use WordPress\Blueprints\Progress\ProgressEvent; +//use WordPress\Blueprints\Progress\Tracker; +// +//describe( 'Tracks total progress', function () { +// it( 'A single Tracker populated via set', function () { +// $tracker = new Tracker(); +// $tracker->set( 50 ); +// +// expect( (int) $tracker->getProgress() )->toBe( 50 ); +// } ); +// +// it( 'Equally-weighted subtrackers should sum to 100 total progress after completion', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 1 / 3, 'Part 1' ); +// $partial2 = $tracker->stage( 1 / 3, 'Part 2' ); +// $partial3 = $tracker->stage( 1 / 3, 'Part 3' ); +// +// $partial1->set( 100 ); +// expect( (int) $tracker->getProgress() )->toBe( 33, 2 ); +// +// $partial2->set( 100 ); +// $partial2->set( 100 ); +// expect( (int) $tracker->getProgress() )->toBe( 66, 2 ); +// +// $partial3->set( 100 ); +// expect( (int) $tracker->getProgress() )->toBe( 100 ); +// } ); +// +// it( 'Differently-weighted subtrackers should sum to 100 total progress after completion', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 0.2, 'Part 1' ); +// $partial2 = $tracker->stage( 0.3, 'Part 2' ); +// $partial3 = $tracker->stage( 0.5, 'Part 3' ); +// +// $partial1->set( 100 ); +// expect( (int) $tracker->getProgress() )->toBe( 20 ); +// +// $partial2->set( 100 ); +// expect( (int) $tracker->getProgress() )->toBe( 50 ); +// +// $partial3->set( 100 ); +// expect( (int) $tracker->getProgress() )->toBe( 100 ); +// } ); +// +// describe( 'Subtrackers should sum to 100 total progress after completion even if the top-level tracker also has self-progress', +// function () { +// it( 'When subtrackers cover the entire progress range ', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 1 / 3, 'Part 1' ); +// $partial2 = $tracker->stage( 1 / 3, 'Part 2' ); +// $partial3 = $tracker->stage( 1 / 3, 'Part 3' ); +// +// $tracker->set( 100 ); +// $partial1->set( 100 ); +// $partial2->set( 100 ); +// $partial3->set( 100 ); +// expect( $tracker->getProgress() )->toBe( 100 ); +// } ); +// it( 'When subtrackers only cover 2/3 of the progress range ', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 1 / 3, 'Part 1' ); +// $partial2 = $tracker->stage( 1 / 3, 'Part 2' ); +// +// $tracker->set( 100 ); +// $partial1->set( 100 ); +// $partial2->set( 100 ); +// expect( (int) $tracker->getProgress() )->toBe( 100 ); +// } ); +// } ); +// +// it( 'Two levels of sub-trackers should sum to 100 total progress after completion', function () { +// $tracker = new Tracker(); +// $level1A = $tracker->stage( 0.6, 'Level 1A' ); +// $level1B = $tracker->stage( 0.4, 'Level 1B' ); +// +// $level2A1 = $level1A->stage( 0.5, 'Level 2A1' ); +// $level2A2 = $level1A->stage( 0.5, 'Level 2A2' ); +// $level2B1 = $level1B->stage( 0.7, 'Level 2B1' ); +// $level2B2 = $level1B->stage( 0.3, 'Level 2B2' ); +// $level2A1->set( 100 ); +// expect( $tracker->getProgress() )->toBe( 30.0, 2 ); +// +// $level2A2->set( 100 ); +// expect( $tracker->getProgress() )->toBe( 60.0, 2 ); +// +// $level2B1->set( 100 ); +// expect( $tracker->getProgress() )->toBe( 88.0, 2 ); +// +// $level2B2->set( 100 ); +// expect( $tracker->getProgress() )->toBe( 100.0 ); +// } ); +//} ); +// +//describe( 'Events', function () { +// it( 'Progress event emitted when using set', function () { +// $tracker = new Tracker(); +// $eventProgress = 0; +// +// $tracker->events->addListener( 'progress', function ( ProgressEvent $event ) use ( &$eventProgress ) { +// $eventProgress = $event->progress; +// } ); +// +// $tracker->set( 50 ); +// +// expect( $eventProgress )->toBe( 50.0 ); +// } ); +// +// it( 'Progress event emitted when setting caption', function () { +// $tracker = new Tracker(); +// $eventCaption = ''; +// +// $tracker->events->addListener( 'progress', function ( ProgressEvent $event ) use ( &$eventCaption ) { +// $eventCaption = $event->caption; +// } ); +// +// $tracker->setCaption( 'Test caption' ); +// +// expect( $eventCaption )->toBe( 'Test caption' ); +// } ); +// +// it( 'Progress event emitted for sub trackers', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 0.5, 'Part 1' ); +// $eventProgress = 0; +// +// $tracker->events->addListener( 'progress', function ( ProgressEvent $event ) use ( &$eventProgress ) { +// $eventProgress = $event->progress; +// } ); +// +// $partial1->set( 100 ); +// +// expect( $eventProgress )->toBe( 50.0 ); +// } ); +//} ); +// +//describe( 'Caption management', function () { +// it( 'Should return caption of a Tracker', function () { +// $tracker = new Tracker( [ "caption" => 'Initial caption' ] ); +// +// expect( $tracker->getCaption() )->toBe( 'Initial caption' ); +// } ); +// +// it( 'Should return the updated caption of a single Tracker', function () { +// $tracker = new Tracker( [ "caption" => 'Initial caption' ] ); +// $tracker->setCaption( 'Updated caption' ); +// +// expect( $tracker->getCaption() )->toBe( 'Updated caption' ); +// } ); +// +// it( 'Should return caption of the most recently started sub tracker', function () { +// $tracker = new Tracker(); +// $tracker->stage( 0.5, 'Part 1' ); +// $tracker->stage( 0.5, 'Part 2' ); +// expect( $tracker->getCaption() )->toBe( 'Part 2' ); +// } ); +// +// it( 'Should return caption of the most recently started sub tracker – multi-level', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 0.5, 'Part 1' ); +// expect( $tracker->getCaption() )->toBe( 'Part 1' ); +// +// $partial1->stage( 0.5, 'Part 1.a' ); +// expect( $tracker->getCaption() )->toBe( 'Part 1.a' ); +// +// $partial1->stage( 0.5, 'Part 1.b' ); +// expect( $tracker->getCaption() )->toBe( 'Part 1.b' ); +// +// $partial2 = $tracker->stage( 0.5, 'Part 2' ); +// expect( $tracker->getCaption() )->toBe( 'Part 2' ); +// +// $partial2->stage( 0.5, 'Part 2.a' ); +// expect( $tracker->getCaption() )->toBe( 'Part 2.a' ); +// +// $partial2->stage( 0.5, 'Part 2.b' ); +// expect( $tracker->getCaption() )->toBe( 'Part 2.b' ); +// } ); +// +// it( 'Should return caption of the most recent incomplete sub tracker – multi-level', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 0.5, 'Part 1' ); +// expect( $tracker->getCaption() )->toBe( 'Part 1' ); +// +// $partial1a = $partial1->stage( 0.5, 'Part 1.a' ); +// $partial1b = $partial1->stage( 0.5, 'Part 1.b' ); +// $partial2 = $tracker->stage( 0.5, 'Part 2' ); +// $partial2a = $partial2->stage( 0.5, 'Part 2.a' ); +// $partial2b = $partial2->stage( 0.5, 'Part 2.b' ); +// +// $partial2b->set( 100 ); +// expect( $tracker->getCaption() )->toBe( 'Part 2.a' ); +// +// $partial2a->set( 100 ); +// expect( $partial2->isDone() )->toBe( true ); +// expect( $tracker->getCaption() )->toBe( 'Part 1.b' ); +// +// $partial1a->set( 100 ); +// expect( $tracker->getCaption() )->toBe( 'Part 1.b' ); +// +// $partial1b->set( 100 ); +// expect( $tracker->getCaption() )->toBe( '' ); +// } ); +// +// it( 'Should return caption of the most recently started and not completed sub tracker', function () { +// $tracker = new Tracker(); +// $tracker->stage( 0.5, 'Part 1' ); +// $partial2 = $tracker->stage( 0.5, 'Part 2' ); +// +// $partial2->set( 95 ); +// expect( $tracker->getCaption() )->toBe( 'Part 2' ); +// +// $partial2->set( 100 ); +// expect( $tracker->getCaption() )->toBe( 'Part 1' ); +// } ); +// +// it( 'Should return no caption when all sub trackers are completed', function () { +// $tracker = new Tracker(); +// $partial1 = $tracker->stage( 0.5, 'Part 1' ); +// $partial2 = $tracker->stage( 0.5, 'Part 2' ); +// +// $partial1->set( 100 ); +// $partial2->set( 100 ); +// +// expect( $tracker->getCaption() )->toBe( '' ); +// } ); +//} ); diff --git a/tests/Unit/stream_str_replace_Test.php b/tests/Unit/stream_str_replace_Test.php index 38fb7045..5c5e6c81 100644 --- a/tests/Unit/stream_str_replace_Test.php +++ b/tests/Unit/stream_str_replace_Test.php @@ -1,39 +1,39 @@ toBe( $expected ); -} ); - -it( "Replace a URL in a longer string", function () { - $data = << - - - Test - - -

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

- Example - -EOT; - - $source = fopen( 'php://memory', 'w+' ); - fwrite( $source, $data ); - rewind( $source ); - - $generator = stream_str_replace( $source, "https://example.com", "https://playground.internal" ); - $chunks = iterator_to_array( $generator ); - $expected = str_replace( "https://example.com", "https://playground.internal", $data ); - - expect( implode( "", $chunks ) )->toBe( $expected ); -} ); +// +//use function WordPress\Streams\stream_str_replace; +// +//it( "Replace a string in a stream", function () { +// $source = fopen( 'php://memory', 'w+' ); +// fwrite( $source, "Hello, world, and all the other places too!" ); +// rewind( $source ); +// +// $generator = stream_str_replace( $source, "and all ", "" ); +// $chunks = iterator_to_array( $generator ); +// $expected = "Hello, world, the other places too!"; +// +// expect( implode( "", $chunks ) )->toBe( $expected ); +//} ); +// +//it( "Replace a URL in a longer string", function () { +// $data = << +// +// +// Test +// +// +//

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

+// Example +// +//EOT; +// +// $source = fopen( 'php://memory', 'w+' ); +// fwrite( $source, $data ); +// rewind( $source ); +// +// $generator = stream_str_replace( $source, "https://example.com", "https://playground.internal" ); +// $chunks = iterator_to_array( $generator ); +// $expected = str_replace( "https://example.com", "https://playground.internal", $data ); +// +// expect( implode( "", $chunks ) )->toBe( $expected ); +//} );