diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml index d21bea1bc9..f74e9cfcae 100644 --- a/.github/workflows/build.yaml +++ b/.github/workflows/build.yaml @@ -11,7 +11,7 @@ jobs: permissions: contents: write # for release creation (svenstaro/upload-release-action) - if: "!github.event.release.prerelease" + #if: "!github.event.release.prerelease" runs-on: ubuntu-latest steps: @@ -23,7 +23,7 @@ jobs: - name: Setup PHP uses: shivammathur/setup-php@v2 with: - php-version: 7.3 + php-version: 8.2 extensions: opcache, gd tools: composer:v2 coverage: none @@ -38,10 +38,10 @@ jobs: - name: Retrieval of Builder Scripts run: | # Real Grav URL - curl --silent -H "Authorization: token ${{ secrets.GLOBAL_TOKEN }}" -H "Accept: application/vnd.github.v3.raw" ${{ secrets.BUILD_SCRIPT_URL }} --output build-grav.sh + curl --silent -H "Authorization: token ${{ secrets.GLOBAL_TOKEN }}" -H "Accept: application/vnd.github.v3.raw" ${{ secrets.BUILD_SCRIPT_URL_18 }} --output build-grav.sh # Development Local URL - # curl ${{ secrets.BUILD_SCRIPT_URL }} --output build-grav.sh + # curl ${{ secrets.BUILD_SCRIPT_URL_18 }} --output build-grav.sh - name: Grav Builder run: | diff --git a/CHANGELOG.md b/CHANGELOG.md index 8af149c6bd..5d618d24a3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,19 +1,47 @@ +# v1.8.0-beta.2 +## mm/dd/2024 + +1. [](#new) + * Use `dev-master` branch of Clockwork to support Monolog2 / Monolog3 + * `AVIF` image support via updates to `getgrav/Image` library + * Upgrade to **Doctrine Collection 2.2** +1. [](#improved) + * Updated composer libraries + * Updated composer.php binary to `v2.8.1` + * Fixes for PHP 8.4 - Implicitly nullable parameter declarations deprecated + * Added back Missing `RocketTheme\Toolbox\Event\EventSubscriberInterface` for Gantry5 + +# v1.8.0-beta.1 +## 10/23/2024 + +1. [](#new) + * Set minimum requirements to **PHP 8.2** + * Updated to **Twig 2.14** + * Updated to **Symfony 6.4** + * Updated to **Monolog 2.3** + * Updated to **RocketTheme/Toolbox 2.0** + * Updated to **Composer/Semver 3.2** + * Use **Symfony Cache** instead of unmaintained **Doctrine Cache** + * Removed unsupported **APC**, **WinCache**, **XCache** and **Memcache**, use apcu or memcached instead + * Removed `system.umask_fix` setting for security reasons + * Support phpstan level 6 in Framework classes + # v1.7.47 ## 10/23/2024 1. [](#new) - * New `Utils::toAscii()` method - * Added support for Clockwork Debugger to allow web UI (requires new `clockwork-web` plugin) + * New `Utils::toAscii()` method + * Added support for Clockwork Debugger to allow web UI (requires new `clockwork-web` plugin) 1. [](#improved) - * Include modular sub-pages in last-modification date computation [#3562](https://github.com/getgrav/grav/pull/3562) - * Updated vendor libs to latest versions - * Updated JQuery to `3.7.1` [#3787](https://github.com/getgrav/grav/pull/3827) - * Updated vendor libraries to latest versions - * Support for Fediverse Creator meta tag [#3844](https://github.com/getgrav/grav/pull/3844) -1. [](#bugfix) - * Fixes deprecated for return type in Filesystem with PHP 8.3.6 [#3831](https://github.com/getgrav/grav/issues/3831) - * Fix for `exif_imagtetype()` throwing an exception when file doesn't exist - * Fix JSON output comments check with content type [#3859](https://github.com/getgrav/grav/pull/3859) + * Include modular sub-pages in last-modification date computation [#3562](https://github.com/getgrav/grav/pull/3562) + * Updated vendor libs to latest versions + * Updated JQuery to `3.7.1` [#3787](https://github.com/getgrav/grav/pull/3827) + * Updated vendor libraries to latest versions + * Support for Fediverse Creator meta tag [#3844](https://github.com/getgrav/grav/pull/3844) +1. [](#bugfix) + * Fixes deprecated for return type in Filesystem with PHP 8.3.6 [#3831](https://github.com/getgrav/grav/issues/3831) + * Fix for `exif_imagtetype()` throwing an exception when file doesn't exist + * Fix JSON output comments check with content type [#3859](https://github.com/getgrav/grav/pull/3859) # v1.7.46 ## 05/15/2024 diff --git a/README.md b/README.md index f16f62b4e4..3a0214dbd1 100644 --- a/README.md +++ b/README.md @@ -89,9 +89,10 @@ $ bin/gpm update ## Upgrading from older version +* [Upgrading to Grav 1.8](https://learn.getgrav.org/16/advanced/grav-development/grav-18-upgrade-guide) * [Upgrading to Grav 1.7](https://learn.getgrav.org/16/advanced/grav-development/grav-17-upgrade-guide) * [Upgrading to Grav 1.6](https://learn.getgrav.org/16/advanced/grav-development/grav-16-upgrade-guide) -* [Upgrading from Grav <1.6](https://learn.getgrav.org/16/advanced/grav-development/grav-15-upgrade-guide) +* [Upgrading from Grav before 1.6](https://learn.getgrav.org/16/advanced/grav-development/grav-15-upgrade-guide) # Contributing We appreciate any contribution to Grav, whether it is related to bugs, grammar, or simply a suggestion or improvement! Please refer to the [Contributing guide](CONTRIBUTING.md) for more guidance on this topic. diff --git a/bin/composer.phar b/bin/composer.phar index e6ba7bbadc..e3253ebc9d 100755 Binary files a/bin/composer.phar and b/bin/composer.phar differ diff --git a/codeception.yml b/codeception.yml index 4b41baa97f..e968b85040 100644 --- a/codeception.yml +++ b/codeception.yml @@ -2,7 +2,7 @@ actor: Tester bootstrap: _bootstrap.php paths: tests: tests - log: tests/_output + output: tests/_output data: tests/_data support: tests/_support envs: tests/_envs diff --git a/composer.json b/composer.json index 364ee70ee2..fd41e78d56 100644 --- a/composer.json +++ b/composer.json @@ -12,7 +12,7 @@ "homepage": "https://getgrav.org", "license": "MIT", "require": { - "php": "^7.3.6 || ^8.0", + "php": "^8.2", "ext-json": "*", "ext-openssl": "*", "ext-curl": "*", @@ -20,61 +20,71 @@ "ext-dom": "*", "ext-libxml": "*", "ext-gd": "*", - "symfony/polyfill-mbstring": "~1.23", - "symfony/polyfill-iconv": "^1.23", - "symfony/polyfill-php74": "^1.23", - "symfony/polyfill-php80": "^1.23", - "symfony/polyfill-php81": "^1.23", + "symfony/polyfill-mbstring": "^1.24", + "symfony/polyfill-iconv": "^1.24", + "symfony/polyfill-php80": "^1.24", + "symfony/polyfill-php81": "^1.24", "psr/simple-cache": "^1.0", - "psr/http-message": "^1.0", + "psr/http-message": "^1.1", "psr/http-server-middleware": "^1.0", - "psr/container": "~1.1.0", - "nyholm/psr7-server": "^1.0", - "nyholm/psr7": "^1.3", - "twig/twig": "~v1.44", + "psr/container": "^1.1", + "psr/log": "^1.1", + "symfony/cache": "^6.4", + "symfony/yaml": "^6.4", + "symfony/console": "^6.4", + "symfony/event-dispatcher": "^6.4", + "symfony/var-exporter": "^6.4", + "symfony/var-dumper": "^6.4", + "symfony/process": "^6.4", + "symfony/http-client": "^6.4", + "twig/twig": "^2.1", + "monolog/monolog": "^2.0", + "doctrine/cache": "^2.2", + "doctrine/collections": "^2.2", + "pimple/pimple": "~3.5.0", + "nyholm/psr7-server": "^1.1", + "nyholm/psr7": "^1.8", "erusev/parsedown": "^1.7", "erusev/parsedown-extra": "~0.8", - "symfony/contracts": "~1.1", - "symfony/yaml": "~4.4", - "symfony/console": "~4.4", - "symfony/event-dispatcher": "~4.4", - "symfony/var-dumper": "~4.4", - "symfony/process": "~4.4", - "doctrine/cache": "^1.10", - "doctrine/collections": "^1.6", - "guzzlehttp/psr7": "^1.7", - "filp/whoops": "~2.9", + "rockettheme/toolbox": "v2.x-dev", + "composer/ca-bundle": "^1.5", + "composer/semver": "^3.4", + "dragonmantank/cron-expression": "^3.0", + "willdurand/negotiation": "^3.1", + "rhukster/dom-sanitizer": "^1.0", "matthiasmullie/minify": "^1.3", - "monolog/monolog": "~1.25", - "getgrav/image": "^3.0", + "donatj/phpuseragentparser": "~1.9", + "guzzlehttp/psr7": "^2.7", + "filp/whoops": "~2.16", + "itsgoingd/clockwork": "dev-master", + "maximebf/debugbar": "~1.23", + "getgrav/image": "^4.0", "getgrav/cache": "^2.0", - "donatj/phpuseragentparser": "~1.1", - "pimple/pimple": "~3.5.0", - "rockettheme/toolbox": "~1.5", - "maximebf/debugbar": "~1.16", - "league/climate": "^3.6", + "antoligy/dom-string-iterators": "^1.0", "miljar/php-exif": "^0.6", - "composer/ca-bundle": "^1.2", - "dragonmantank/cron-expression": "^1.2", - "willdurand/negotiation": "^3.0", - "itsgoingd/clockwork": "^5.0", - "symfony/http-client": "^4.4", - "composer/semver": "^1.4", - "rhukster/dom-sanitizer": "^1.0", + "league/climate": "^3.8", "multiavatar/multiavatar-php": "^1.0" }, "require-dev": { - "codeception/codeception": "^4.1", - "phpstan/phpstan": "^1.8", - "phpstan/phpstan-deprecation-rules": "^1.0", + "codeception/codeception": "^5.1", + "phpstan/phpstan": "^1.12", + "phpstan/phpstan-deprecation-rules": "^1.2", "phpunit/php-code-coverage": "~9.2", "getgrav/markdowndocs": "^2.0", - "codeception/module-asserts": "^1.3", - "codeception/module-phpbrowser": "^1.0" + "codeception/module-asserts": "*", + "codeception/module-phpbrowser": "*", + "rector/rector": "^1.2" }, + "repositories": [ + { + "type": "vcs", + "url": "https://github.com/rockettheme/toolbox" + } + ], "replace": { "symfony/polyfill-php72": "*", - "symfony/polyfill-php73": "*" + "symfony/polyfill-php73": "*", + "symfony/polyfill-php74": "*" }, "suggest": { "ext-mbstring": "Recommended for better performance", @@ -89,12 +99,14 @@ "config": { "apcu-autoloader": true, "platform": { - "php": "7.3.6" + "php": "8.2" } }, "autoload": { "psr-4": { "Grav\\": "system/src/Grav", + "Doctrine\\": "system/src/Doctrine", + "RocketTheme\\": "system/src/RocketTheme", "Twig\\": "system/src/Twig" }, "files": [ @@ -117,7 +129,7 @@ "api-17": "vendor/bin/phpdoc-md generate system/src > user/pages/14.api/default.17.md", "post-create-project-cmd": "bin/grav install", "phpstan": "vendor/bin/phpstan analyse -l 2 -c ./tests/phpstan/phpstan.neon --memory-limit=720M system/src", - "phpstan-framework": "vendor/bin/phpstan analyse -l 5 -c ./tests/phpstan/phpstan.neon --memory-limit=480M system/src/Grav/Framework system/src/Grav/Events system/src/Grav/Installer", + "phpstan-framework": "vendor/bin/phpstan analyse -l 6 -c ./tests/phpstan/phpstan.neon --memory-limit=480M system/src/Grav/Framework system/src/Grav/Events system/src/Grav/Installer", "phpstan-plugins": "vendor/bin/phpstan analyse -l 1 -c ./tests/phpstan/plugins.neon --memory-limit=400M user/plugins", "test": "vendor/bin/codecept run unit", "test-windows": "vendor\\bin\\codecept run unit" diff --git a/composer.lock b/composer.lock index 08e5a264ef..47593206c1 100644 --- a/composer.lock +++ b/composer.lock @@ -4,8 +4,56 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "6f85edb2bd83cfed5c469b1c824a57ac", + "content-hash": "93cb46c384939d2a4edb42a301745aeb", "packages": [ + { + "name": "antoligy/dom-string-iterators", + "version": "v1.0.1", + "source": { + "type": "git", + "url": "https://github.com/antoligy/dom-string-iterators.git", + "reference": "fae88f66e1970d68c5585fc42db44f1217bf74e6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/antoligy/dom-string-iterators/zipball/fae88f66e1970d68c5585fc42db44f1217bf74e6", + "reference": "fae88f66e1970d68c5585fc42db44f1217bf74e6", + "shasum": "" + }, + "require": { + "php": ">=5.3.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "CC0-1.0" + ], + "authors": [ + { + "name": "Alex Wilson", + "email": "a@ax.gy" + }, + { + "name": "Kornel Lesinski", + "email": "pornel@pornel.net" + }, + { + "name": "Patrick Galbraith", + "email": "patrick.j.galbraith@gmail.com" + } + ], + "description": "Composer package for DOMWordsIterator and DOMLettersIterator", + "support": { + "issues": "https://github.com/antoligy/dom-string-iterators/issues", + "source": "https://github.com/antoligy/dom-string-iterators/tree/v1.0.1" + }, + "time": "2018-02-03T16:01:11+00:00" + }, { "name": "composer/ca-bundle", "version": "1.5.2", @@ -84,28 +132,29 @@ }, { "name": "composer/semver", - "version": "1.7.2", + "version": "3.4.3", "source": { "type": "git", "url": "https://github.com/composer/semver.git", - "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a" + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/composer/semver/zipball/647490bbcaf7fc4891c58f47b825eb99d19c377a", - "reference": "647490bbcaf7fc4891c58f47b825eb99d19c377a", + "url": "https://api.github.com/repos/composer/semver/zipball/4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", + "reference": "4313d26ada5e0c4edfbd1dc481a92ff7bff91f12", "shasum": "" }, "require": { "php": "^5.3.2 || ^7.0 || ^8.0" }, "require-dev": { - "phpunit/phpunit": "^4.5 || ^5.0.5" + "phpstan/phpstan": "^1.11", + "symfony/phpunit-bridge": "^3 || ^7" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.x-dev" + "dev-main": "3.x-dev" } }, "autoload": { @@ -142,9 +191,9 @@ "versioning" ], "support": { - "irc": "irc://irc.freenode.org/composer", + "irc": "ircs://irc.libera.chat:6697/composer", "issues": "https://github.com/composer/semver/issues", - "source": "https://github.com/composer/semver/tree/1.7.2" + "source": "https://github.com/composer/semver/tree/3.4.3" }, "funding": [ { @@ -160,20 +209,20 @@ "type": "tidelift" } ], - "time": "2020-12-03T15:47:16+00:00" + "time": "2024-09-19T14:15:21+00:00" }, { "name": "doctrine/cache", - "version": "1.13.0", + "version": "2.2.0", "source": { "type": "git", "url": "https://github.com/doctrine/cache.git", - "reference": "56cd022adb5514472cb144c087393c1821911d09" + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/cache/zipball/56cd022adb5514472cb144c087393c1821911d09", - "reference": "56cd022adb5514472cb144c087393c1821911d09", + "url": "https://api.github.com/repos/doctrine/cache/zipball/1ca8f21980e770095a31456042471a57bc4c68fb", + "reference": "1ca8f21980e770095a31456042471a57bc4c68fb", "shasum": "" }, "require": { @@ -183,19 +232,13 @@ "doctrine/common": ">2.2,<2.4" }, "require-dev": { - "alcaeus/mongo-php-adapter": "^1.1", "cache/integration-tests": "dev-master", "doctrine/coding-standard": "^9", - "mongodb/mongodb": "^1.1", "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "predis/predis": "~1.0", "psr/cache": "^1.0 || ^2.0 || ^3.0", "symfony/cache": "^4.4 || ^5.4 || ^6", "symfony/var-exporter": "^4.4 || ^5.4 || ^6" }, - "suggest": { - "alcaeus/mongo-php-adapter": "Required to use legacy MongoDB driver" - }, "type": "library", "autoload": { "psr-4": { @@ -243,7 +286,7 @@ ], "support": { "issues": "https://github.com/doctrine/cache/issues", - "source": "https://github.com/doctrine/cache/tree/1.13.0" + "source": "https://github.com/doctrine/cache/tree/2.2.0" }, "funding": [ { @@ -259,36 +302,38 @@ "type": "tidelift" } ], - "time": "2022-05-20T20:06:54+00:00" + "time": "2022-05-20T20:07:39+00:00" }, { "name": "doctrine/collections", - "version": "1.8.0", + "version": "2.2.2", "source": { "type": "git", "url": "https://github.com/doctrine/collections.git", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e" + "reference": "d8af7f248c74f195f7347424600fd9e17b57af59" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/collections/zipball/2b44dd4cbca8b5744327de78bafef5945c7e7b5e", - "reference": "2b44dd4cbca8b5744327de78bafef5945c7e7b5e", + "url": "https://api.github.com/repos/doctrine/collections/zipball/d8af7f248c74f195f7347424600fd9e17b57af59", + "reference": "d8af7f248c74f195f7347424600fd9e17b57af59", "shasum": "" }, "require": { - "doctrine/deprecations": "^0.5.3 || ^1", - "php": "^7.1.3 || ^8.0" + "doctrine/deprecations": "^1", + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9.0 || ^10.0", - "phpstan/phpstan": "^1.4.8", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.1.5", - "vimeo/psalm": "^4.22" + "doctrine/coding-standard": "^12", + "ext-json": "*", + "phpstan/phpstan": "^1.8", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/phpunit": "^10.5", + "vimeo/psalm": "^5.11" }, "type": "library", "autoload": { "psr-4": { - "Doctrine\\Common\\Collections\\": "lib/Doctrine/Common/Collections" + "Doctrine\\Common\\Collections\\": "src" } }, "notification-url": "https://packagist.org/downloads/", @@ -327,9 +372,23 @@ ], "support": { "issues": "https://github.com/doctrine/collections/issues", - "source": "https://github.com/doctrine/collections/tree/1.8.0" + "source": "https://github.com/doctrine/collections/tree/2.2.2" }, - "time": "2022-09-01T20:12:10+00:00" + "funding": [ + { + "url": "https://www.doctrine-project.org/sponsorship.html", + "type": "custom" + }, + { + "url": "https://www.patreon.com/phpdoctrine", + "type": "patreon" + }, + { + "url": "https://tidelift.com/funding/github/packagist/doctrine%2Fcollections", + "type": "tidelift" + } + ], + "time": "2024-04-18T06:56:21+00:00" }, { "name": "doctrine/deprecations", @@ -454,25 +513,36 @@ }, { "name": "dragonmantank/cron-expression", - "version": "v1.2.1", + "version": "v3.4.0", "source": { "type": "git", "url": "https://github.com/dragonmantank/cron-expression.git", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad" + "reference": "8c784d071debd117328803d86b2097615b457500" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/9504fa9ea681b586028adaaa0877db4aecf32bad", - "reference": "9504fa9ea681b586028adaaa0877db4aecf32bad", + "url": "https://api.github.com/repos/dragonmantank/cron-expression/zipball/8c784d071debd117328803d86b2097615b457500", + "reference": "8c784d071debd117328803d86b2097615b457500", "shasum": "" }, "require": { - "php": ">=5.3.2" + "php": "^7.2|^8.0", + "webmozart/assert": "^1.0" + }, + "replace": { + "mtdowling/cron-expression": "^1.0" }, "require-dev": { - "phpunit/phpunit": "~4.0|~5.0" + "phpstan/extension-installer": "^1.0", + "phpstan/phpstan": "^1.0", + "phpunit/phpunit": "^7.0|^8.0|^9.0" }, "type": "library", + "extra": { + "branch-alias": { + "dev-master": "3.x-dev" + } + }, "autoload": { "psr-4": { "Cron\\": "src/Cron/" @@ -484,9 +554,9 @@ ], "authors": [ { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" + "name": "Chris Tankersley", + "email": "chris@ctankersley.com", + "homepage": "https://github.com/dragonmantank" } ], "description": "CRON for PHP: Calculate the next or previous run date and determine if a CRON expression is due", @@ -495,9 +565,16 @@ "schedule" ], "support": { - "source": "https://github.com/dragonmantank/cron-expression/tree/v1.2.0" + "issues": "https://github.com/dragonmantank/cron-expression/issues", + "source": "https://github.com/dragonmantank/cron-expression/tree/v3.4.0" }, - "time": "2017-01-23T04:29:33+00:00" + "funding": [ + { + "url": "https://github.com/dragonmantank", + "type": "github" + } + ], + "time": "2024-10-09T13:47:03+00:00" }, { "name": "erusev/parsedown", @@ -673,17 +750,17 @@ }, { "name": "getgrav/cache", - "version": "v2.0.0", + "version": "v2.0.1", "target-dir": "Gregwar/Cache", "source": { "type": "git", "url": "https://github.com/getgrav/Cache.git", - "reference": "56fd63f752779928fcd1074ab7d12f406dde8861" + "reference": "28e2b0072add37b9547daea1da6fcd26d660850b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getgrav/Cache/zipball/56fd63f752779928fcd1074ab7d12f406dde8861", - "reference": "56fd63f752779928fcd1074ab7d12f406dde8861", + "url": "https://api.github.com/repos/getgrav/Cache/zipball/28e2b0072add37b9547daea1da6fcd26d660850b", + "reference": "28e2b0072add37b9547daea1da6fcd26d660850b", "shasum": "" }, "require": { @@ -718,41 +795,40 @@ "system" ], "support": { - "source": "https://github.com/getgrav/Cache/tree/v2.0.0" + "source": "https://github.com/getgrav/Cache/tree/v2.0.1" }, - "time": "2021-04-20T05:48:00+00:00" + "time": "2024-10-25T14:21:29+00:00" }, { "name": "getgrav/image", - "version": "v3.0.1", - "target-dir": "Gregwar/Image", + "version": "v4.0.0", "source": { "type": "git", "url": "https://github.com/getgrav/Image.git", - "reference": "a6a36c24db4b0fd7a7bfd50b86412eaecd5c6370" + "reference": "5d06194ca0588727b25f80d7302253edaf5d8e9f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/getgrav/Image/zipball/a6a36c24db4b0fd7a7bfd50b86412eaecd5c6370", - "reference": "a6a36c24db4b0fd7a7bfd50b86412eaecd5c6370", + "url": "https://api.github.com/repos/getgrav/Image/zipball/5d06194ca0588727b25f80d7302253edaf5d8e9f", + "reference": "5d06194ca0588727b25f80d7302253edaf5d8e9f", "shasum": "" }, "require": { "ext-gd": "*", "getgrav/cache": "^2.0", - "php": "^5.6 || ^7.0 || ^8.0" + "php": "^7.2 || ^8.0" }, "require-dev": { - "sllh/php-cs-fixer-styleci-bridge": "~1.0", - "symfony/phpunit-bridge": "^2.7.4 || ^3.0" + "phpunit/phpunit": "^9", + "sllh/php-cs-fixer-styleci-bridge": "~1.0" }, "suggest": { "behat/transliterator": "Transliterator provides ability to set non-latin1 pretty names" }, "type": "library", "autoload": { - "psr-0": { - "Gregwar\\Image": "" + "psr-4": { + "Gregwar\\Image\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -778,44 +854,50 @@ "image" ], "support": { - "source": "https://github.com/getgrav/Image/tree/v3.0.1" + "source": "https://github.com/getgrav/Image/tree/v4.0.0" }, - "time": "2023-05-08T21:44:38+00:00" + "time": "2024-10-25T14:14:34+00:00" }, { "name": "guzzlehttp/psr7", - "version": "1.9.1", + "version": "2.7.0", "source": { "type": "git", "url": "https://github.com/guzzle/psr7.git", - "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b" + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/psr7/zipball/e4490cabc77465aaee90b20cfc9a770f8c04be6b", - "reference": "e4490cabc77465aaee90b20cfc9a770f8c04be6b", + "url": "https://api.github.com/repos/guzzle/psr7/zipball/a70f5c95fb43bc83f07c9c948baa0dc1829bf201", + "reference": "a70f5c95fb43bc83f07c9c948baa0dc1829bf201", "shasum": "" }, "require": { - "php": ">=5.4.0", - "psr/http-message": "~1.0", - "ralouphie/getallheaders": "^2.0.5 || ^3.0.0" + "php": "^7.2.5 || ^8.0", + "psr/http-factory": "^1.0", + "psr/http-message": "^1.1 || ^2.0", + "ralouphie/getallheaders": "^3.0" }, "provide": { + "psr/http-factory-implementation": "1.0", "psr/http-message-implementation": "1.0" }, "require-dev": { - "ext-zlib": "*", - "phpunit/phpunit": "~4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.10" + "bamarni/composer-bin-plugin": "^1.8.2", + "http-interop/http-factory-tests": "0.9.0", + "phpunit/phpunit": "^8.5.39 || ^9.6.20" }, "suggest": { "laminas/laminas-httphandlerrunner": "Emit PSR-7 responses" }, "type": "library", + "extra": { + "bamarni-bin": { + "bin-links": true, + "forward-command": false + } + }, "autoload": { - "files": [ - "src/functions_include.php" - ], "psr-4": { "GuzzleHttp\\Psr7\\": "src/" } @@ -854,6 +936,11 @@ "name": "Tobias Schultze", "email": "webmaster@tubo-world.de", "homepage": "https://github.com/Tobion" + }, + { + "name": "Márk Sági-Kazár", + "email": "mark.sagikazar@gmail.com", + "homepage": "https://sagikazarmark.hu" } ], "description": "PSR-7 message implementation that also provides common utility methods", @@ -869,7 +956,7 @@ ], "support": { "issues": "https://github.com/guzzle/psr7/issues", - "source": "https://github.com/guzzle/psr7/tree/1.9.1" + "source": "https://github.com/guzzle/psr7/tree/2.7.0" }, "funding": [ { @@ -885,33 +972,35 @@ "type": "tidelift" } ], - "time": "2023-04-17T16:00:37+00:00" + "time": "2024-07-18T11:15:46+00:00" }, { "name": "itsgoingd/clockwork", - "version": "v5.2.2", + "version": "dev-master", "source": { "type": "git", "url": "https://github.com/itsgoingd/clockwork.git", - "reference": "29bc4cedfbe742b419544c30b7b6e15cd9da08ef" + "reference": "00eb90fb2842532e4c3b0ae2eafae290c854b11f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/29bc4cedfbe742b419544c30b7b6e15cd9da08ef", - "reference": "29bc4cedfbe742b419544c30b7b6e15cd9da08ef", + "url": "https://api.github.com/repos/itsgoingd/clockwork/zipball/00eb90fb2842532e4c3b0ae2eafae290c854b11f", + "reference": "00eb90fb2842532e4c3b0ae2eafae290c854b11f", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=5.6" + "php": ">=7.1" }, "suggest": { "ext-pdo": "Needed in order to use a SQL database for metadata storage", "ext-pdo_mysql": "Needed in order to use MySQL for metadata storage", "ext-pdo_postgres": "Needed in order to use Postgres for metadata storage", "ext-pdo_sqlite": "Needed in order to use a SQLite for metadata storage", - "ext-redis": "Needed in order to use Redis for metadata storage" + "ext-redis": "Needed in order to use Redis for metadata storage", + "php-http/discovery": "Vanilla integration - required for the middleware zero-configuration setup" }, + "default-branch": true, "type": "library", "extra": { "laravel": { @@ -952,7 +1041,7 @@ ], "support": { "issues": "https://github.com/itsgoingd/clockwork/issues", - "source": "https://github.com/itsgoingd/clockwork/tree/v5.2.2" + "source": "https://github.com/itsgoingd/clockwork/tree/master" }, "funding": [ { @@ -960,7 +1049,7 @@ "type": "github" } ], - "time": "2024-04-14T10:49:22+00:00" + "time": "2024-10-24T20:15:54+00:00" }, { "name": "league/climate", @@ -1281,51 +1370,67 @@ }, { "name": "monolog/monolog", - "version": "1.27.1", + "version": "2.9.3", "source": { "type": "git", "url": "https://github.com/Seldaek/monolog.git", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1" + "reference": "a30bfe2e142720dfa990d0a7e573997f5d884215" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Seldaek/monolog/zipball/904713c5929655dc9b97288b69cfeedad610c9a1", - "reference": "904713c5929655dc9b97288b69cfeedad610c9a1", + "url": "https://api.github.com/repos/Seldaek/monolog/zipball/a30bfe2e142720dfa990d0a7e573997f5d884215", + "reference": "a30bfe2e142720dfa990d0a7e573997f5d884215", "shasum": "" }, "require": { - "php": ">=5.3.0", - "psr/log": "~1.0" + "php": ">=7.2", + "psr/log": "^1.0.1 || ^2.0 || ^3.0" }, "provide": { - "psr/log-implementation": "1.0.0" + "psr/log-implementation": "1.0.0 || 2.0.0 || 3.0.0" }, "require-dev": { "aws/aws-sdk-php": "^2.4.9 || ^3.0", "doctrine/couchdb": "~1.0@dev", - "graylog2/gelf-php": "~1.0", - "php-amqplib/php-amqplib": "~2.4", - "php-console/php-console": "^3.1.3", - "phpstan/phpstan": "^0.12.59", - "phpunit/phpunit": "~4.5", - "ruflin/elastica": ">=0.90 <3.0", - "sentry/sentry": "^0.13", - "swiftmailer/swiftmailer": "^5.3|^6.0" + "elasticsearch/elasticsearch": "^7 || ^8", + "ext-json": "*", + "graylog2/gelf-php": "^1.4.2 || ^2@dev", + "guzzlehttp/guzzle": "^7.4", + "guzzlehttp/psr7": "^2.2", + "mongodb/mongodb": "^1.8", + "php-amqplib/php-amqplib": "~2.4 || ^3", + "phpspec/prophecy": "^1.15", + "phpstan/phpstan": "^1.10", + "phpunit/phpunit": "^8.5.38 || ^9.6.19", + "predis/predis": "^1.1 || ^2.0", + "rollbar/rollbar": "^1.3 || ^2 || ^3", + "ruflin/elastica": "^7", + "swiftmailer/swiftmailer": "^5.3|^6.0", + "symfony/mailer": "^5.4 || ^6", + "symfony/mime": "^5.4 || ^6" }, "suggest": { "aws/aws-sdk-php": "Allow sending log messages to AWS services like DynamoDB", "doctrine/couchdb": "Allow sending log messages to a CouchDB server", + "elasticsearch/elasticsearch": "Allow sending log messages to an Elasticsearch server via official client", "ext-amqp": "Allow sending log messages to an AMQP server (1.0+ required)", - "ext-mongo": "Allow sending log messages to a MongoDB server", + "ext-curl": "Required to send log messages using the IFTTTHandler, the LogglyHandler, the SendGridHandler, the SlackWebhookHandler or the TelegramBotHandler", + "ext-mbstring": "Allow to work properly with unicode symbols", + "ext-mongodb": "Allow sending log messages to a MongoDB server (via driver)", + "ext-openssl": "Required to send log messages using SSL", + "ext-sockets": "Allow sending log messages to a Syslog server (via UDP driver)", "graylog2/gelf-php": "Allow sending log messages to a GrayLog2 server", - "mongodb/mongodb": "Allow sending log messages to a MongoDB server via PHP Driver", + "mongodb/mongodb": "Allow sending log messages to a MongoDB server (via library)", "php-amqplib/php-amqplib": "Allow sending log messages to an AMQP server using php-amqplib", - "php-console/php-console": "Allow sending log messages to Google Chrome", "rollbar/rollbar": "Allow sending log messages to Rollbar", - "ruflin/elastica": "Allow sending log messages to an Elastic Search server", - "sentry/sentry": "Allow sending log messages to a Sentry server" + "ruflin/elastica": "Allow sending log messages to an Elastic Search server" }, "type": "library", + "extra": { + "branch-alias": { + "dev-main": "2.x-dev" + } + }, "autoload": { "psr-4": { "Monolog\\": "src/Monolog" @@ -1339,11 +1444,11 @@ { "name": "Jordi Boggiano", "email": "j.boggiano@seld.be", - "homepage": "http://seld.be" + "homepage": "https://seld.be" } ], "description": "Sends your logs to files, sockets, inboxes, databases and various web services", - "homepage": "http://github.com/Seldaek/monolog", + "homepage": "https://github.com/Seldaek/monolog", "keywords": [ "log", "logging", @@ -1351,7 +1456,7 @@ ], "support": { "issues": "https://github.com/Seldaek/monolog/issues", - "source": "https://github.com/Seldaek/monolog/tree/1.27.1" + "source": "https://github.com/Seldaek/monolog/tree/2.9.3" }, "funding": [ { @@ -1363,7 +1468,7 @@ "type": "tidelift" } ], - "time": "2022-06-09T08:53:42+00:00" + "time": "2024-04-12T20:52:51+00:00" }, { "name": "multiavatar/multiavatar-php", @@ -1611,20 +1716,20 @@ }, { "name": "psr/cache", - "version": "1.0.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/php-fig/cache.git", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8" + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/cache/zipball/d11b50ad223250cf17b86e38383413f5a6764bf8", - "reference": "d11b50ad223250cf17b86e38383413f5a6764bf8", + "url": "https://api.github.com/repos/php-fig/cache/zipball/aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", + "reference": "aa5030cfa5405eccfdcb1083ce040c2cb8d253bf", "shasum": "" }, "require": { - "php": ">=5.3.0" + "php": ">=8.0.0" }, "type": "library", "extra": { @@ -1644,7 +1749,7 @@ "authors": [ { "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" + "homepage": "https://www.php-fig.org/" } ], "description": "Common interface for caching libraries", @@ -1654,26 +1759,26 @@ "psr-6" ], "support": { - "source": "https://github.com/php-fig/cache/tree/master" + "source": "https://github.com/php-fig/cache/tree/3.0.0" }, - "time": "2016-08-06T20:24:11+00:00" + "time": "2021-02-03T23:26:27+00:00" }, { "name": "psr/container", - "version": "1.1.1", + "version": "1.1.2", "source": { "type": "git", "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", + "url": "https://api.github.com/repos/php-fig/container/zipball/513e0666f7216c7459170d56df27dfcefe1689ea", + "reference": "513e0666f7216c7459170d56df27dfcefe1689ea", "shasum": "" }, "require": { - "php": ">=7.2.0" + "php": ">=7.4.0" }, "type": "library", "autoload": { @@ -1702,9 +1807,59 @@ ], "support": { "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" + "source": "https://github.com/php-fig/container/tree/1.1.2" + }, + "time": "2021-11-05T16:50:12+00:00" + }, + { + "name": "psr/event-dispatcher", + "version": "1.0.0", + "source": { + "type": "git", + "url": "https://github.com/php-fig/event-dispatcher.git", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/php-fig/event-dispatcher/zipball/dbefd12671e8a14ec7f180cab83036ed26714bb0", + "reference": "dbefd12671e8a14ec7f180cab83036ed26714bb0", + "shasum": "" + }, + "require": { + "php": ">=7.2.0" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.0.x-dev" + } + }, + "autoload": { + "psr-4": { + "Psr\\EventDispatcher\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "PHP-FIG", + "homepage": "http://www.php-fig.org/" + } + ], + "description": "Standard interfaces for event handling.", + "keywords": [ + "events", + "psr", + "psr-14" + ], + "support": { + "issues": "https://github.com/php-fig/event-dispatcher/issues", + "source": "https://github.com/php-fig/event-dispatcher/tree/1.0.0" }, - "time": "2021-03-05T17:36:06+00:00" + "time": "2019-01-08T18:20:26+00:00" }, { "name": "psr/http-factory", @@ -2119,43 +2274,64 @@ }, { "name": "rockettheme/toolbox", - "version": "1.6.5", + "version": "v2.x-dev", "source": { "type": "git", "url": "https://github.com/rockettheme/toolbox.git", - "reference": "c5e84deac813da7fcb78cd8a663c8966da9b27bd" + "reference": "322fcd0d2b258c6e6d7cfa6833421802d200c47e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rockettheme/toolbox/zipball/c5e84deac813da7fcb78cd8a663c8966da9b27bd", - "reference": "c5e84deac813da7fcb78cd8a663c8966da9b27bd", + "url": "https://api.github.com/repos/rockettheme/toolbox/zipball/322fcd0d2b258c6e6d7cfa6833421802d200c47e", + "reference": "322fcd0d2b258c6e6d7cfa6833421802d200c47e", "shasum": "" }, "require": { "ext-json": "*", - "php": ">=5.6.0", - "pimple/pimple": "^3.0", - "symfony/event-dispatcher": "^3.4|^4.0", - "symfony/yaml": "^3.4|^4.0|^5.0" + "php": ">=7.2.5", + "pimple/pimple": "~3.0", + "symfony/polyfill-php80": "^1.23", + "symfony/polyfill-php81": "^1.23", + "symfony/yaml": "^4.0|^5.0|^6.0" + }, + "require-dev": { + "phpstan/phpstan": "^1.2", + "phpstan/phpstan-deprecation-rules": "^1.0", + "phpunit/phpunit": "^8.0" }, "type": "library", "autoload": { "psr-4": { + "RocketTheme\\Toolbox\\ArrayTraits\\": "ArrayTraits/src", + "RocketTheme\\Toolbox\\Blueprints\\": "Blueprints/src", + "RocketTheme\\Toolbox\\Compat\\": "Compat/src", "RocketTheme\\Toolbox\\DI\\": "DI/src", - "RocketTheme\\Toolbox\\File\\": "File/src", "RocketTheme\\Toolbox\\Event\\": "Event/src", - "RocketTheme\\Toolbox\\Compat\\": "Compat/src", + "RocketTheme\\Toolbox\\File\\": "File/src", + "RocketTheme\\Toolbox\\ResourceLocator\\": "ResourceLocator/src", "RocketTheme\\Toolbox\\Session\\": "Session/src", - "RocketTheme\\Toolbox\\Blueprints\\": "Blueprints/src", - "RocketTheme\\Toolbox\\ArrayTraits\\": "ArrayTraits/src", - "RocketTheme\\Toolbox\\StreamWrapper\\": "StreamWrapper/src", - "RocketTheme\\Toolbox\\ResourceLocator\\": "ResourceLocator/src" + "RocketTheme\\Toolbox\\StreamWrapper\\": "StreamWrapper/src" }, "exclude-from-classmap": [ "**/tests/" ] }, - "notification-url": "https://packagist.org/downloads/", + "archive": { + "exclude": [ + "tests" + ] + }, + "scripts": { + "test": [ + "vendor/bin/phpunit run unit" + ], + "test-windows": [ + "vendor\\bin\\phpunit run unit" + ], + "phpstan": [ + "vendor/bin/phpstan analyse -l 8 -c ./tests/phpstan/phpstan.neon . --memory-limit=128M --no-progress" + ] + }, "license": [ "MIT" ], @@ -2166,10 +2342,10 @@ "rockettheme" ], "support": { - "issues": "https://github.com/rockettheme/toolbox/issues", - "source": "https://github.com/rockettheme/toolbox/tree/1.6.5" + "source": "https://github.com/rockettheme/toolbox/tree/v2", + "issues": "https://github.com/rockettheme/toolbox/issues" }, - "time": "2023-05-09T18:11:17+00:00" + "time": "2024-10-14T18:08:26+00:00" }, { "name": "seld/cli-prompt", @@ -2227,56 +2403,58 @@ "time": "2020-12-15T21:32:01+00:00" }, { - "name": "symfony/console", - "version": "v4.4.49", + "name": "symfony/cache", + "version": "v6.4.12", "source": { "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9" + "url": "https://github.com/symfony/cache.git", + "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", - "reference": "33fa45ffc81fdcc1ca368d4946da859c8cdb58d9", + "url": "https://api.github.com/repos/symfony/cache/zipball/a463451b7f6ac4a47b98dbfc78ec2d3560c759d8", + "reference": "a463451b7f6ac4a47b98dbfc78ec2d3560c759d8", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.8", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2" + "php": ">=8.1", + "psr/cache": "^2.0|^3.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" }, "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<3.4", - "symfony/event-dispatcher": "<4.3|>=5", - "symfony/lock": "<4.4", - "symfony/process": "<3.3" + "doctrine/dbal": "<2.13.1", + "symfony/dependency-injection": "<5.4", + "symfony/http-kernel": "<5.4", + "symfony/var-dumper": "<5.4" }, "provide": { - "psr/log-implementation": "1.0|2.0" + "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" }, "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/event-dispatcher": "^4.3", - "symfony/lock": "^4.4|^5.0", - "symfony/process": "^3.4|^4.0|^5.0", - "symfony/var-dumper": "^4.3|^5.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" + "cache/integration-tests": "dev-master", + "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" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\Console\\": "" + "Symfony\\Component\\Cache\\": "" }, + "classmap": [ + "Traits/ValueWrapper.php" + ], "exclude-from-classmap": [ "/Tests/" ] @@ -2287,18 +2465,22 @@ ], "authors": [ { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Eases the creation of beautiful and testable command line interfaces", + "description": "Provides extended PSR-6, PSR-16 (and tags) implementations", "homepage": "https://symfony.com", + "keywords": [ + "caching", + "psr6" + ], "support": { - "source": "https://github.com/symfony/console/tree/v4.4.49" + "source": "https://github.com/symfony/cache/tree/v6.4.12" }, "funding": [ { @@ -2314,58 +2496,40 @@ "type": "tidelift" } ], - "time": "2022-11-05T17:10:16+00:00" + "time": "2024-09-16T16:01:33+00:00" }, { - "name": "symfony/contracts", - "version": "v1.10.0", + "name": "symfony/cache-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/contracts.git", - "reference": "e3cc841da1eaf10088250a10618aa223eeb82280" + "url": "https://github.com/symfony/cache-contracts.git", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/contracts/zipball/e3cc841da1eaf10088250a10618aa223eeb82280", - "reference": "e3cc841da1eaf10088250a10618aa223eeb82280", + "url": "https://api.github.com/repos/symfony/cache-contracts/zipball/df6a1a44c890faded49a5fca33c2d5c5fd3c2197", + "reference": "df6a1a44c890faded49a5fca33c2d5c5fd3c2197", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/cache": "^1.0|^2.0|^3.0", - "psr/container": "^1.0" - }, - "replace": { - "symfony/cache-contracts": "self.version", - "symfony/event-dispatcher-contracts": "self.version", - "symfony/http-client-contracts": "self.version", - "symfony/service-contracts": "self.version", - "symfony/translation-contracts": "self.version" - }, - "require-dev": { - "symfony/polyfill-intl-idn": "^1.10" - }, - "suggest": { - "psr/event-dispatcher": "When using the EventDispatcher contracts", - "symfony/cache-implementation": "", - "symfony/event-dispatcher-implementation": "", - "symfony/http-client-implementation": "", - "symfony/service-implementation": "", - "symfony/translation-implementation": "" + "php": ">=8.1", + "psr/cache": "^3.0" }, "type": "library", "extra": { "branch-alias": { - "dev-main": "1.1-dev" + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { "psr-4": { - "Symfony\\Contracts\\": "" - }, - "exclude-from-classmap": [ - "**/Tests/" - ] + "Symfony\\Contracts\\Cache\\": "" + } }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2381,7 +2545,7 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "A set of abstractions extracted out of the Symfony components", + "description": "Generic abstractions related to caching", "homepage": "https://symfony.com", "keywords": [ "abstractions", @@ -2392,7 +2556,7 @@ "standards" ], "support": { - "source": "https://github.com/symfony/contracts/tree/v1.10.0" + "source": "https://github.com/symfony/cache-contracts/tree/v3.5.0" }, "funding": [ { @@ -2408,52 +2572,56 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/event-dispatcher", - "version": "v4.4.44", + "name": "symfony/console", + "version": "v6.4.12", "source": { "type": "git", - "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a" + "url": "https://github.com/symfony/console.git", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/1e866e9e5c1b22168e0ce5f0b467f19bba61266a", - "reference": "1e866e9e5c1b22168e0ce5f0b467f19bba61266a", + "url": "https://api.github.com/repos/symfony/console/zipball/72d080eb9edf80e36c19be61f72c98ed8273b765", + "reference": "72d080eb9edf80e36c19be61f72c98ed8273b765", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/event-dispatcher-contracts": "^1.1", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/string": "^5.4|^6.0|^7.0" }, "conflict": { - "symfony/dependency-injection": "<3.4" + "symfony/dependency-injection": "<5.4", + "symfony/dotenv": "<5.4", + "symfony/event-dispatcher": "<5.4", + "symfony/lock": "<5.4", + "symfony/process": "<5.4" }, "provide": { - "psr/event-dispatcher-implementation": "1.0", - "symfony/event-dispatcher-implementation": "1.1" + "psr/log-implementation": "1.0|2.0|3.0" }, "require-dev": { "psr/log": "^1|^2|^3", - "symfony/config": "^3.4|^4.0|^5.0", - "symfony/dependency-injection": "^3.4|^4.0|^5.0", - "symfony/error-handler": "~3.4|~4.4", - "symfony/expression-language": "^3.4|^4.0|^5.0", - "symfony/http-foundation": "^3.4|^4.0|^5.0", - "symfony/service-contracts": "^1.1|^2", - "symfony/stopwatch": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/dependency-injection": "", - "symfony/http-kernel": "" + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/event-dispatcher": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^6.4|^7.0", + "symfony/http-kernel": "^6.4|^7.0", + "symfony/lock": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { "psr-4": { - "Symfony\\Component\\EventDispatcher\\": "" + "Symfony\\Component\\Console\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -2473,10 +2641,16 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", + "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/event-dispatcher/tree/v4.4.44" + "source": "https://github.com/symfony/console/tree/v6.4.12" }, "funding": [ { @@ -2492,53 +2666,38 @@ "type": "tidelift" } ], - "time": "2022-07-20T09:59:04+00:00" + "time": "2024-09-20T08:15:52+00:00" }, { - "name": "symfony/http-client", - "version": "v4.4.51", + "name": "symfony/deprecation-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/http-client.git", - "reference": "da88e5df8a24e7c229c3df4f19f24ac502b8532b" + "url": "https://github.com/symfony/deprecation-contracts.git", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-client/zipball/da88e5df8a24e7c229c3df4f19f24ac502b8532b", - "reference": "da88e5df8a24e7c229c3df4f19f24ac502b8532b", + "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", + "reference": "0e0d29ce1f20deffb4ab1b016a7257c4f1e789a1", "shasum": "" }, "require": { - "php": ">=7.1.3", - "psr/log": "^1|^2|^3", - "symfony/http-client-contracts": "^1.1.10|^2", - "symfony/polyfill-php73": "^1.11", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.0|^2" - }, - "provide": { - "php-http/async-client-implementation": "*", - "php-http/client-implementation": "*", - "psr/http-client-implementation": "1.0", - "symfony/http-client-implementation": "1.1|2.0" - }, - "require-dev": { - "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": "^4.3|^5.0", - "symfony/http-kernel": "^4.4.13", - "symfony/process": "^4.2|^5.0" + "php": ">=8.1" }, "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\HttpClient\\": "" + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" }, - "exclude-from-classmap": [ - "/Tests/" + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "files": [ + "function.php" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2555,10 +2714,10 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "description": "A generic function and convention to trigger deprecation notices", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/http-client/tree/v4.4.51" + "source": "https://github.com/symfony/deprecation-contracts/tree/v3.5.0" }, "funding": [ { @@ -2574,29 +2733,356 @@ "type": "tidelift" } ], - "time": "2023-05-04T08:52:02+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/polyfill-ctype", - "version": "v1.31.0", + "name": "symfony/event-dispatcher", + "version": "v6.4.8", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + "url": "https://github.com/symfony/event-dispatcher.git", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", - "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/8d7507f02b06e06815e56bb39aa0128e3806208b", + "reference": "8d7507f02b06e06815e56bb39aa0128e3806208b", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=8.1", + "symfony/event-dispatcher-contracts": "^2.5|^3" + }, + "conflict": { + "symfony/dependency-injection": "<5.4", + "symfony/service-contracts": "<2.5" }, "provide": { - "ext-ctype": "*" + "psr/event-dispatcher-implementation": "1.0", + "symfony/event-dispatcher-implementation": "2.0|3.0" }, - "suggest": { + "require-dev": { + "psr/log": "^1|^2|^3", + "symfony/config": "^5.4|^6.0|^7.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^5.4|^6.0|^7.0", + "symfony/expression-language": "^5.4|^6.0|^7.0", + "symfony/http-foundation": "^5.4|^6.0|^7.0", + "symfony/service-contracts": "^2.5|^3", + "symfony/stopwatch": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\EventDispatcher\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Fabien Potencier", + "email": "fabien@symfony.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "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/v6.4.8" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-05-31T14:49:08+00:00" + }, + { + "name": "symfony/event-dispatcher-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/event-dispatcher-contracts.git", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/event-dispatcher-contracts/zipball/8f93aec25d41b72493c6ddff14e916177c9efc50", + "reference": "8f93aec25d41b72493c6ddff14e916177c9efc50", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/event-dispatcher": "^1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\EventDispatcher\\": "" + } + }, + "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": "Generic abstractions related to dispatching event", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/event-dispatcher-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/http-client", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client.git", + "reference": "fbebfcce21084d3e91ea987ae5bdd8c71ff0fd56" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client/zipball/fbebfcce21084d3e91ea987ae5bdd8c71ff0fd56", + "reference": "fbebfcce21084d3e91ea987ae5bdd8c71ff0fd56", + "shasum": "" + }, + "require": { + "php": ">=8.1", + "psr/log": "^1|^2|^3", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/http-client-contracts": "^3.4.1", + "symfony/service-contracts": "^2.5|^3" + }, + "conflict": { + "php-http/discovery": "<1.15", + "symfony/http-foundation": "<6.3" + }, + "provide": { + "php-http/async-client-implementation": "*", + "php-http/client-implementation": "*", + "psr/http-client-implementation": "1.0", + "symfony/http-client-implementation": "3.0" + }, + "require-dev": { + "amphp/amp": "^2.5", + "amphp/http-client": "^4.2.1", + "amphp/http-tunnel": "^1.0", + "amphp/socket": "^1.1", + "guzzlehttp/promises": "^1.4|^2.0", + "nyholm/psr7": "^1.0", + "php-http/httplug": "^1.0|^2.0", + "psr/http-client": "^1.0", + "symfony/dependency-injection": "^5.4|^6.0|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/messenger": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/stopwatch": "^5.4|^6.0|^7.0" + }, + "type": "library", + "autoload": { + "psr-4": { + "Symfony\\Component\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] + }, + "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": "Provides powerful methods to fetch HTTP resources synchronously or asynchronously", + "homepage": "https://symfony.com", + "keywords": [ + "http" + ], + "support": { + "source": "https://github.com/symfony/http-client/tree/v6.4.12" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-20T08:21:33+00:00" + }, + { + "name": "symfony/http-client-contracts", + "version": "v3.5.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/http-client-contracts.git", + "reference": "20414d96f391677bf80078aa55baece78b82647d" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/http-client-contracts/zipball/20414d96f391677bf80078aa55baece78b82647d", + "reference": "20414d96f391677bf80078aa55baece78b82647d", + "shasum": "" + }, + "require": { + "php": ">=8.1" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, + "thanks": { + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" + } + }, + "autoload": { + "psr-4": { + "Symfony\\Contracts\\HttpClient\\": "" + }, + "exclude-from-classmap": [ + "/Test/" + ] + }, + "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": "Generic abstractions related to HTTP clients", + "homepage": "https://symfony.com", + "keywords": [ + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" + ], + "support": { + "source": "https://github.com/symfony/http-client-contracts/tree/v3.5.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-04-18T09:32:20+00:00" + }, + { + "name": "symfony/polyfill-ctype", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-ctype.git", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/a3cc8b044a6ea513310cbd48ef7333b384945638", + "reference": "a3cc8b044a6ea513310cbd48ef7333b384945638", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-ctype": "*" + }, + "suggest": { "ext-ctype": "For best performance" }, "type": "library", @@ -2611,7 +3097,86 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" + "Symfony\\Polyfill\\Ctype\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gert de Pagter", + "email": "BackEndTea@gmail.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for ctype functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "ctype", + "polyfill", + "portable" + ], + "support": { + "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-iconv", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-iconv.git", + "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956", + "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "provide": { + "ext-iconv": "*" + }, + "suggest": { + "ext-iconv": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Iconv\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2620,24 +3185,25 @@ ], "authors": [ { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" + "name": "Nicolas Grekas", + "email": "p@tchwork.com" }, { "name": "Symfony Community", "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for ctype functions", + "description": "Symfony polyfill for the Iconv extension", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "ctype", + "iconv", "polyfill", - "portable" + "portable", + "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.0" }, "funding": [ { @@ -2656,27 +3222,24 @@ "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-iconv", + "name": "symfony/polyfill-intl-grapheme", "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-iconv.git", - "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956" + "url": "https://github.com/symfony/polyfill-intl-grapheme.git", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/48becf00c920479ca2e910c22a5a39e5d47ca956", - "reference": "48becf00c920479ca2e910c22a5a39e5d47ca956", + "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", + "reference": "b9123926e3b7bc2f98c02ad54f6a4b02b91a8abe", "shasum": "" }, "require": { "php": ">=7.2" }, - "provide": { - "ext-iconv": "*" - }, "suggest": { - "ext-iconv": "For best performance" + "ext-intl": "For best performance" }, "type": "library", "extra": { @@ -2690,7 +3253,7 @@ "bootstrap.php" ], "psr-4": { - "Symfony\\Polyfill\\Iconv\\": "" + "Symfony\\Polyfill\\Intl\\Grapheme\\": "" } }, "notification-url": "https://packagist.org/downloads/", @@ -2707,17 +3270,99 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill for the Iconv extension", + "description": "Symfony polyfill for intl's grapheme_* functions", "homepage": "https://symfony.com", "keywords": [ "compatibility", - "iconv", + "grapheme", + "intl", "polyfill", "portable", "shim" ], "support": { - "source": "https://github.com/symfony/polyfill-iconv/tree/v1.31.0" + "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-intl-normalizer", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-intl-normalizer.git", + "reference": "3833d7255cc303546435cb650316bff708a1c75c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/3833d7255cc303546435cb650316bff708a1c75c", + "reference": "3833d7255cc303546435cb650316bff708a1c75c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "suggest": { + "ext-intl": "For best performance" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Intl\\Normalizer\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for intl's Normalizer class and related functions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "intl", + "normalizer", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.31.0" }, "funding": [ { @@ -2816,36 +3461,186 @@ "time": "2024-09-09T11:45:10+00:00" }, { - "name": "symfony/polyfill-php74", + "name": "symfony/polyfill-php80", + "version": "v1.31.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-php80.git", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php80\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Ion Bazan", + "email": "ion.bazan@gmail.com" + }, + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/polyfill-php81", "version": "v1.31.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php74.git", - "reference": "9589537d05325fb5d88a20d8926823e5b827a43e" + "url": "https://github.com/symfony/polyfill-php81.git", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "shasum": "" + }, + "require": { + "php": ">=7.2" + }, + "type": "library", + "extra": { + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Php81\\": "" + }, + "classmap": [ + "Resources/stubs" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "time": "2024-09-09T11:45:10+00:00" + }, + { + "name": "symfony/process", + "version": "v6.4.12", + "source": { + "type": "git", + "url": "https://github.com/symfony/process.git", + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php74/zipball/9589537d05325fb5d88a20d8926823e5b827a43e", - "reference": "9589537d05325fb5d88a20d8926823e5b827a43e", + "url": "https://api.github.com/repos/symfony/process/zipball/3f94e5f13ff58df371a7ead461b6e8068900fbb3", + "reference": "3f94e5f13ff58df371a7ead461b6e8068900fbb3", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=8.1" }, "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php74\\": "" - } + "Symfony\\Component\\Process\\": "" + }, + "exclude-from-classmap": [ + "/Tests/" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -2853,28 +3648,18 @@ ], "authors": [ { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "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 7.4+ 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-php74/tree/v1.31.0" + "source": "https://github.com/symfony/process/tree/v6.4.12" }, "funding": [ { @@ -2890,41 +3675,46 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-09-17T12:47:12+00:00" }, { - "name": "symfony/polyfill-php80", - "version": "v1.31.0", + "name": "symfony/service-contracts", + "version": "v3.5.0", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8" + "url": "https://github.com/symfony/service-contracts.git", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", - "reference": "60328e362d4c2c802a54fcbf04f9d3fb892b4cf8", + "url": "https://api.github.com/repos/symfony/service-contracts/zipball/bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", + "reference": "bd1d9e59a81d8fa4acdcea3f617c581f7475a80f", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=8.1", + "psr/container": "^1.1|^2.0", + "symfony/deprecation-contracts": "^2.5|^3" + }, + "conflict": { + "ext-psr": "<1.1|>=2" }, "type": "library", "extra": { + "branch-alias": { + "dev-main": "3.5-dev" + }, "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" + "name": "symfony/contracts", + "url": "https://github.com/symfony/contracts" } }, "autoload": { - "files": [ - "bootstrap.php" - ], "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" + "Symfony\\Contracts\\Service\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Test/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -2932,10 +3722,6 @@ "MIT" ], "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, { "name": "Nicolas Grekas", "email": "p@tchwork.com" @@ -2945,16 +3731,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", + "description": "Generic abstractions related to writing services", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "abstractions", + "contracts", + "decoupling", + "interfaces", + "interoperability", + "standards" ], "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.31.0" + "source": "https://github.com/symfony/service-contracts/tree/v3.5.0" }, "funding": [ { @@ -2970,41 +3758,50 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-04-18T09:32:20+00:00" }, { - "name": "symfony/polyfill-php81", - "version": "v1.31.0", + "name": "symfony/string", + "version": "v7.1.5", "source": { "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c" + "url": "https://github.com/symfony/string.git", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", - "reference": "4a4cfc2d253c21a5ad0e53071df248ed48c6ce5c", + "url": "https://api.github.com/repos/symfony/string/zipball/d66f9c343fa894ec2037cc928381df90a7ad4306", + "reference": "d66f9c343fa894ec2037cc928381df90a7ad4306", "shasum": "" }, "require": { - "php": ">=7.2" + "php": ">=8.2", + "symfony/polyfill-ctype": "~1.8", + "symfony/polyfill-intl-grapheme": "~1.0", + "symfony/polyfill-intl-normalizer": "~1.0", + "symfony/polyfill-mbstring": "~1.0" }, - "type": "library", - "extra": { - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } + "conflict": { + "symfony/translation-contracts": "<2.5" + }, + "require-dev": { + "symfony/emoji": "^7.1", + "symfony/error-handler": "^6.4|^7.0", + "symfony/http-client": "^6.4|^7.0", + "symfony/intl": "^6.4|^7.0", + "symfony/translation-contracts": "^2.5|^3.0", + "symfony/var-exporter": "^6.4|^7.0" }, + "type": "library", "autoload": { "files": [ - "bootstrap.php" + "Resources/functions.php" ], "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" + "Symfony\\Component\\String\\": "" }, - "classmap": [ - "Resources/stubs" + "exclude-from-classmap": [ + "/Tests/" ] }, "notification-url": "https://packagist.org/downloads/", @@ -3021,16 +3818,18 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", + "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", "homepage": "https://symfony.com", "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" + "grapheme", + "i18n", + "string", + "unicode", + "utf-8", + "utf8" ], "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.31.0" + "source": "https://github.com/symfony/string/tree/v7.1.5" }, "funding": [ { @@ -3046,30 +3845,49 @@ "type": "tidelift" } ], - "time": "2024-09-09T11:45:10+00:00" + "time": "2024-09-20T08:28:38+00:00" }, { - "name": "symfony/process", - "version": "v4.4.44", + "name": "symfony/var-dumper", + "version": "v6.4.11", "source": { "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2" + "url": "https://github.com/symfony/var-dumper.git", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", - "reference": "5cee9cdc4f7805e2699d9fd66991a0e6df8252a2", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/ee14c8254a480913268b1e3b1cba8045ed122694", + "reference": "ee14c8254a480913268b1e3b1cba8045ed122694", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-mbstring": "~1.0" + }, + "conflict": { + "symfony/console": "<5.4" }, + "require-dev": { + "ext-iconv": "*", + "symfony/console": "^5.4|^6.0|^7.0", + "symfony/error-handler": "^6.3|^7.0", + "symfony/http-kernel": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0", + "symfony/uid": "^5.4|^6.0|^7.0", + "twig/twig": "^2.13|^3.0.4" + }, + "bin": [ + "Resources/bin/var-dump-server" + ], "type": "library", "autoload": { + "files": [ + "Resources/functions/dump.php" + ], "psr-4": { - "Symfony\\Component\\Process\\": "" + "Symfony\\Component\\VarDumper\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3081,18 +3899,22 @@ ], "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": "Provides mechanisms for walking through any arbitrary PHP variable", "homepage": "https://symfony.com", + "keywords": [ + "debug", + "dump" + ], "support": { - "source": "https://github.com/symfony/process/tree/v4.4.44" + "source": "https://github.com/symfony/var-dumper/tree/v6.4.11" }, "funding": [ { @@ -3108,53 +3930,35 @@ "type": "tidelift" } ], - "time": "2022-06-27T13:16:42+00:00" + "time": "2024-08-30T16:03:21+00:00" }, { - "name": "symfony/var-dumper", - "version": "v4.4.47", + "name": "symfony/var-exporter", + "version": "v6.4.9", "source": { "type": "git", - "url": "https://github.com/symfony/var-dumper.git", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63" + "url": "https://github.com/symfony/var-exporter.git", + "reference": "f9a060622e0d93777b7f8687ec4860191e16802e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/1069c7a3fca74578022fab6f81643248d02f8e63", - "reference": "1069c7a3fca74578022fab6f81643248d02f8e63", + "url": "https://api.github.com/repos/symfony/var-exporter/zipball/f9a060622e0d93777b7f8687ec4860191e16802e", + "reference": "f9a060622e0d93777b7f8687ec4860191e16802e", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php72": "~1.5", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "phpunit/phpunit": "<4.8.35|<5.4.3,>=5.0", - "symfony/console": "<3.4" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3" }, "require-dev": { - "ext-iconv": "*", - "symfony/console": "^3.4|^4.0|^5.0", - "symfony/process": "^4.4|^5.0", - "twig/twig": "^1.43|^2.13|^3.0.4" + "symfony/property-access": "^6.4|^7.0", + "symfony/serializer": "^6.4|^7.0", + "symfony/var-dumper": "^5.4|^6.0|^7.0" }, - "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" - ], "type": "library", "autoload": { - "files": [ - "Resources/functions/dump.php" - ], "psr-4": { - "Symfony\\Component\\VarDumper\\": "" + "Symfony\\Component\\VarExporter\\": "" }, "exclude-from-classmap": [ "/Tests/" @@ -3174,14 +3978,20 @@ "homepage": "https://symfony.com/contributors" } ], - "description": "Provides mechanisms for walking through any arbitrary PHP variable", + "description": "Allows exporting any serializable PHP data structure to plain PHP code", "homepage": "https://symfony.com", "keywords": [ - "debug", - "dump" + "clone", + "construct", + "export", + "hydrate", + "instantiate", + "lazy-loading", + "proxy", + "serialize" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v4.4.47" + "source": "https://github.com/symfony/var-exporter/tree/v6.4.9" }, "funding": [ { @@ -3197,35 +4007,36 @@ "type": "tidelift" } ], - "time": "2022-10-03T15:15:11+00:00" + "time": "2024-06-24T15:53:56+00:00" }, { "name": "symfony/yaml", - "version": "v4.4.45", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d" + "reference": "762ee56b2649659380e0ef4d592d807bc17b7971" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", - "reference": "aeccc4dc52a9e634f1d1eebeb21eacfdcff1053d", + "url": "https://api.github.com/repos/symfony/yaml/zipball/762ee56b2649659380e0ef4d592d807bc17b7971", + "reference": "762ee56b2649659380e0ef4d592d807bc17b7971", "shasum": "" }, "require": { - "php": ">=7.1.3", - "symfony/polyfill-ctype": "~1.8" + "php": ">=8.1", + "symfony/deprecation-contracts": "^2.5|^3", + "symfony/polyfill-ctype": "^1.8" }, "conflict": { - "symfony/console": "<3.4" + "symfony/console": "<5.4" }, "require-dev": { - "symfony/console": "^3.4|^4.0|^5.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" + "symfony/console": "^5.4|^6.0|^7.0" }, + "bin": [ + "Resources/bin/yaml-lint" + ], "type": "library", "autoload": { "psr-4": { @@ -3252,7 +4063,7 @@ "description": "Loads and dumps YAML files", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/yaml/tree/v4.4.45" + "source": "https://github.com/symfony/yaml/tree/v6.4.12" }, "funding": [ { @@ -3268,34 +4079,36 @@ "type": "tidelift" } ], - "time": "2022-08-02T15:47:23+00:00" + "time": "2024-09-17T12:47:12+00:00" }, { "name": "twig/twig", - "version": "v1.44.8", + "version": "v2.16.1", "source": { "type": "git", "url": "https://github.com/twigphp/Twig.git", - "reference": "b1f009c449e435a0384814e67205d9190a4d050e" + "reference": "19185947ec75d433a3ac650af32fc05649b95ee1" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/twigphp/Twig/zipball/b1f009c449e435a0384814e67205d9190a4d050e", - "reference": "b1f009c449e435a0384814e67205d9190a4d050e", + "url": "https://api.github.com/repos/twigphp/Twig/zipball/19185947ec75d433a3ac650af32fc05649b95ee1", + "reference": "19185947ec75d433a3ac650af32fc05649b95ee1", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "^1.8" + "php": ">=7.1.3", + "symfony/polyfill-ctype": "^1.8", + "symfony/polyfill-mbstring": "^1.3", + "symfony/polyfill-php72": "^1.8" }, "require-dev": { "psr/container": "^1.0", - "symfony/phpunit-bridge": "^4.4.9|^5.0.9" + "symfony/phpunit-bridge": "^5.4.9|^6.3" }, "type": "library", "extra": { "branch-alias": { - "dev-master": "1.44-dev" + "dev-master": "2.16-dev" } }, "autoload": { @@ -3334,7 +4147,7 @@ ], "support": { "issues": "https://github.com/twigphp/Twig/issues", - "source": "https://github.com/twigphp/Twig/tree/v1.44.8" + "source": "https://github.com/twigphp/Twig/tree/v2.16.1" }, "funding": [ { @@ -3346,7 +4159,65 @@ "type": "tidelift" } ], - "time": "2024-09-09T17:17:16+00:00" + "time": "2024-09-09T17:53:56+00:00" + }, + { + "name": "webmozart/assert", + "version": "1.11.0", + "source": { + "type": "git", + "url": "https://github.com/webmozarts/assert.git", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/webmozarts/assert/zipball/11cb2199493b2f8a3b53e7f19068fc6aac760991", + "reference": "11cb2199493b2f8a3b53e7f19068fc6aac760991", + "shasum": "" + }, + "require": { + "ext-ctype": "*", + "php": "^7.2 || ^8.0" + }, + "conflict": { + "phpstan/phpstan": "<0.12.20", + "vimeo/psalm": "<4.6.1 || 4.6.2" + }, + "require-dev": { + "phpunit/phpunit": "^8.5.13" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "1.10-dev" + } + }, + "autoload": { + "psr-4": { + "Webmozart\\Assert\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Bernhard Schussek", + "email": "bschussek@gmail.com" + } + ], + "description": "Assertions to validate method input/output with nice error messages.", + "keywords": [ + "assert", + "check", + "validate" + ], + "support": { + "issues": "https://github.com/webmozarts/assert/issues", + "source": "https://github.com/webmozarts/assert/tree/1.11.0" + }, + "time": "2022-06-03T18:03:27+00:00" }, { "name": "willdurand/negotiation", @@ -3408,25 +4279,25 @@ "packages-dev": [ { "name": "behat/gherkin", - "version": "v4.9.0", + "version": "v4.10.0", "source": { "type": "git", "url": "https://github.com/Behat/Gherkin.git", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4" + "reference": "cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Behat/Gherkin/zipball/0bc8d1e30e96183e4f36db9dc79caead300beff4", - "reference": "0bc8d1e30e96183e4f36db9dc79caead300beff4", + "url": "https://api.github.com/repos/Behat/Gherkin/zipball/cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6", + "reference": "cbb83c4c435dd8d05a161f2a5ae322e61b2f4db6", "shasum": "" }, "require": { "php": "~7.2|~8.0" }, "require-dev": { - "cucumber/cucumber": "dev-gherkin-22.0.0", + "cucumber/cucumber": "dev-gherkin-24.1.0", "phpunit/phpunit": "~8|~9", - "symfony/yaml": "~3|~4|~5" + "symfony/yaml": "~3|~4|~5|~6|~7" }, "suggest": { "symfony/yaml": "If you want to parse features, represented in YAML files" @@ -3465,67 +4336,82 @@ ], "support": { "issues": "https://github.com/Behat/Gherkin/issues", - "source": "https://github.com/Behat/Gherkin/tree/v4.9.0" + "source": "https://github.com/Behat/Gherkin/tree/v4.10.0" }, - "time": "2021-10-12T13:05:09+00:00" + "time": "2024-10-19T14:46:06+00:00" }, { "name": "codeception/codeception", - "version": "4.2.2", + "version": "5.1.2", "source": { "type": "git", "url": "https://github.com/Codeception/Codeception.git", - "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474" + "reference": "3b2d7d1a88e7e1d9dc0acb6d3c8f0acda0a37374" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Codeception/zipball/b88014f3348c93f3df99dc6d0967b0dbfa804474", - "reference": "b88014f3348c93f3df99dc6d0967b0dbfa804474", + "url": "https://api.github.com/repos/Codeception/Codeception/zipball/3b2d7d1a88e7e1d9dc0acb6d3c8f0acda0a37374", + "reference": "3b2d7d1a88e7e1d9dc0acb6d3c8f0acda0a37374", "shasum": "" }, "require": { - "behat/gherkin": "^4.4.0", - "codeception/lib-asserts": "^1.0 | 2.0.*@dev", - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.1.1 | ^9.0", - "codeception/stub": "^2.0 | ^3.0 | ^4.0", + "behat/gherkin": "^4.6.2", + "codeception/lib-asserts": "^2.0", + "codeception/stub": "^4.1", "ext-curl": "*", "ext-json": "*", "ext-mbstring": "*", - "guzzlehttp/psr7": "^1.4 | ^2.0", - "php": ">=5.6.0 <9.0", - "symfony/console": ">=2.7 <6.0", - "symfony/css-selector": ">=2.7 <6.0", - "symfony/event-dispatcher": ">=2.7 <6.0", - "symfony/finder": ">=2.7 <6.0", - "symfony/yaml": ">=2.7 <6.0" + "php": "^8.0", + "phpunit/php-code-coverage": "^9.2 || ^10.0 || ^11.0", + "phpunit/php-text-template": "^2.0 || ^3.0 || ^4.0", + "phpunit/php-timer": "^5.0.3 || ^6.0 || ^7.0", + "phpunit/phpunit": "^9.5.20 || ^10.0 || ^11.0", + "psy/psysh": "^0.11.2 || ^0.12", + "sebastian/comparator": "^4.0.5 || ^5.0 || ^6.0", + "sebastian/diff": "^4.0.3 || ^5.0 || ^6.0", + "symfony/console": ">=4.4.24 <8.0", + "symfony/css-selector": ">=4.4.24 <8.0", + "symfony/event-dispatcher": ">=4.4.24 <8.0", + "symfony/finder": ">=4.4.24 <8.0", + "symfony/var-dumper": ">=4.4.24 <8.0", + "symfony/yaml": ">=4.4.24 <8.0" + }, + "conflict": { + "codeception/lib-innerbrowser": "<3.1.3", + "codeception/module-filesystem": "<3.0", + "codeception/module-phpbrowser": "<2.5" + }, + "replace": { + "codeception/phpunit-wrapper": "*" }, "require-dev": { - "codeception/module-asserts": "^1.0 | 2.0.*@dev", - "codeception/module-cli": "^1.0 | 2.0.*@dev", - "codeception/module-db": "^1.0 | 2.0.*@dev", - "codeception/module-filesystem": "^1.0 | 2.0.*@dev", - "codeception/module-phpbrowser": "^1.0 | 2.0.*@dev", - "codeception/specify": "~0.3", + "codeception/lib-innerbrowser": "*@dev", + "codeception/lib-web": "^1.0", + "codeception/module-asserts": "*@dev", + "codeception/module-cli": "*@dev", + "codeception/module-db": "*@dev", + "codeception/module-filesystem": "*@dev", + "codeception/module-phpbrowser": "*@dev", "codeception/util-universalframework": "*@dev", - "monolog/monolog": "~1.8", - "squizlabs/php_codesniffer": "~2.0", - "symfony/process": ">=2.7 <6.0", - "vlucas/phpdotenv": "^2.0 | ^3.0 | ^4.0 | ^5.0" + "ext-simplexml": "*", + "jetbrains/phpstorm-attributes": "^1.0", + "symfony/dotenv": ">=4.4.24 <8.0", + "symfony/process": ">=4.4.24 <8.0", + "vlucas/phpdotenv": "^5.1" }, "suggest": { "codeception/specify": "BDD-style code blocks", "codeception/verify": "BDD-style assertions", - "hoa/console": "For interactive console functionality", + "ext-simplexml": "For loading params from XML files", "stecman/symfony-console-completion": "For BASH autocompletion", - "symfony/phpunit-bridge": "For phpunit-bridge support" + "symfony/dotenv": "For loading params from .env files", + "symfony/phpunit-bridge": "For phpunit-bridge support", + "vlucas/phpdotenv": "For loading params from .env files" }, "bin": [ "codecept" ], "type": "library", - "extra": { - "branch-alias": [] - }, "autoload": { "files": [ "functions.php" @@ -3533,7 +4419,10 @@ "psr-4": { "Codeception\\": "src/Codeception", "Codeception\\Extension\\": "ext" - } + }, + "classmap": [ + "src/PHPUnit/TestCase.php" + ] }, "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3542,8 +4431,8 @@ "authors": [ { "name": "Michael Bodnarchuk", - "email": "davert@mail.ua", - "homepage": "https://codegyre.com" + "email": "davert.ua@gmail.com", + "homepage": "https://codeception.com" } ], "description": "BDD-style testing framework", @@ -3557,7 +4446,7 @@ ], "support": { "issues": "https://github.com/Codeception/Codeception/issues", - "source": "https://github.com/Codeception/Codeception/tree/4.2.2" + "source": "https://github.com/Codeception/Codeception/tree/5.1.2" }, "funding": [ { @@ -3565,26 +4454,26 @@ "type": "open_collective" } ], - "time": "2022-08-13T13:28:25+00:00" + "time": "2024-03-07T07:19:42+00:00" }, { "name": "codeception/lib-asserts", - "version": "1.13.2", + "version": "2.1.0", "source": { "type": "git", "url": "https://github.com/Codeception/lib-asserts.git", - "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6" + "reference": "b8c7dff552249e560879c682ba44a4b963af91bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/184231d5eab66bc69afd6b9429344d80c67a33b6", - "reference": "184231d5eab66bc69afd6b9429344d80c67a33b6", + "url": "https://api.github.com/repos/Codeception/lib-asserts/zipball/b8c7dff552249e560879c682ba44a4b963af91bc", + "reference": "b8c7dff552249e560879c682ba44a4b963af91bc", "shasum": "" }, "require": { - "codeception/phpunit-wrapper": ">6.0.15 <6.1.0 | ^6.6.1 | ^7.7.1 | ^8.0.3 | ^9.0", + "codeception/phpunit-wrapper": "^7.7.1 | ^8.0.3 | ^9.0", "ext-dom": "*", - "php": ">=5.6.0 <9.0" + "php": "^7.4 | ^8.0" }, "type": "library", "autoload": { @@ -3617,35 +4506,34 @@ ], "support": { "issues": "https://github.com/Codeception/lib-asserts/issues", - "source": "https://github.com/Codeception/lib-asserts/tree/1.13.2" + "source": "https://github.com/Codeception/lib-asserts/tree/2.1.0" }, - "time": "2020-10-21T16:26:20+00:00" + "time": "2023-02-10T18:36:23+00:00" }, { "name": "codeception/lib-innerbrowser", - "version": "1.5.1", + "version": "3.1.3", "source": { "type": "git", "url": "https://github.com/Codeception/lib-innerbrowser.git", - "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2" + "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", - "reference": "31b4b56ad53c3464fcb2c0a14d55a51a201bd3c2", + "url": "https://api.github.com/repos/Codeception/lib-innerbrowser/zipball/10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", + "reference": "10482f7e34c0537bf5b87bc82a3d65a1842a8b4f", "shasum": "" }, "require": { - "codeception/codeception": "4.*@dev", + "codeception/codeception": "^5.0", + "codeception/lib-web": "^1.0.1", "ext-dom": "*", "ext-json": "*", "ext-mbstring": "*", - "php": ">=5.6.0 <9.0", - "symfony/browser-kit": ">=2.7 <6.0", - "symfony/dom-crawler": ">=2.7 <6.0" - }, - "conflict": { - "codeception/codeception": "<4.0" + "php": "^8.0", + "phpunit/phpunit": "^9.5", + "symfony/browser-kit": "^4.4.24 || ^5.4 || ^6.0", + "symfony/dom-crawler": "^4.4.30 || ^5.4 || ^6.0" }, "require-dev": { "codeception/util-universalframework": "dev-master" @@ -3664,44 +4552,97 @@ { "name": "Michael Bodnarchuk", "email": "davert@mail.ua", - "homepage": "http://codegyre.com" + "homepage": "https://codegyre.com" }, { "name": "Gintautas Miselis" } ], - "description": "Parent library for all Codeception framework modules and PhpBrowser", + "description": "Parent library for all Codeception framework modules and PhpBrowser", + "homepage": "https://codeception.com/", + "keywords": [ + "codeception" + ], + "support": { + "issues": "https://github.com/Codeception/lib-innerbrowser/issues", + "source": "https://github.com/Codeception/lib-innerbrowser/tree/3.1.3" + }, + "time": "2022-10-03T15:33:34+00:00" + }, + { + "name": "codeception/lib-web", + "version": "1.0.6", + "source": { + "type": "git", + "url": "https://github.com/Codeception/lib-web.git", + "reference": "01ff7f9ed8760ba0b0805a0b3a843b4e74165a60" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Codeception/lib-web/zipball/01ff7f9ed8760ba0b0805a0b3a843b4e74165a60", + "reference": "01ff7f9ed8760ba0b0805a0b3a843b4e74165a60", + "shasum": "" + }, + "require": { + "ext-mbstring": "*", + "guzzlehttp/psr7": "^2.0", + "php": "^8.0", + "phpunit/phpunit": "^9.5 | ^10.0 | ^11.0", + "symfony/css-selector": ">=4.4.24 <8.0" + }, + "conflict": { + "codeception/codeception": "<5.0.0-alpha3" + }, + "require-dev": { + "php-webdriver/webdriver": "^1.12" + }, + "type": "library", + "autoload": { + "classmap": [ + "src/" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Gintautas Miselis" + } + ], + "description": "Library containing files used by module-webdriver and lib-innerbrowser or module-phpbrowser", "homepage": "https://codeception.com/", "keywords": [ "codeception" ], "support": { - "issues": "https://github.com/Codeception/lib-innerbrowser/issues", - "source": "https://github.com/Codeception/lib-innerbrowser/tree/1.5.1" + "issues": "https://github.com/Codeception/lib-web/issues", + "source": "https://github.com/Codeception/lib-web/tree/1.0.6" }, - "time": "2021-08-30T15:21:42+00:00" + "time": "2024-02-06T20:50:08+00:00" }, { "name": "codeception/module-asserts", - "version": "1.3.1", + "version": "3.0.0", "source": { "type": "git", "url": "https://github.com/Codeception/module-asserts.git", - "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de" + "reference": "1b6b150b30586c3614e7e5761b31834ed7968603" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/59374f2fef0cabb9e8ddb53277e85cdca74328de", - "reference": "59374f2fef0cabb9e8ddb53277e85cdca74328de", + "url": "https://api.github.com/repos/Codeception/module-asserts/zipball/1b6b150b30586c3614e7e5761b31834ed7968603", + "reference": "1b6b150b30586c3614e7e5761b31834ed7968603", "shasum": "" }, "require": { "codeception/codeception": "*@dev", - "codeception/lib-asserts": "^1.13.1", - "php": ">=5.6.0 <9.0" + "codeception/lib-asserts": "^2.0", + "php": "^8.0" }, "conflict": { - "codeception/codeception": "<4.0" + "codeception/codeception": "<5.0" }, "type": "library", "autoload": { @@ -3734,35 +4675,40 @@ ], "support": { "issues": "https://github.com/Codeception/module-asserts/issues", - "source": "https://github.com/Codeception/module-asserts/tree/1.3.1" + "source": "https://github.com/Codeception/module-asserts/tree/3.0.0" }, - "time": "2020-10-21T16:48:15+00:00" + "time": "2022-02-16T19:48:08+00:00" }, { "name": "codeception/module-phpbrowser", - "version": "1.0.3", + "version": "3.0.1", "source": { "type": "git", "url": "https://github.com/Codeception/module-phpbrowser.git", - "reference": "8ba6bede11d0914e74d98691f427fd8f397f192e" + "reference": "a972411f60cd00d00d5e5e3b35496ba4a23bcffc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/8ba6bede11d0914e74d98691f427fd8f397f192e", - "reference": "8ba6bede11d0914e74d98691f427fd8f397f192e", + "url": "https://api.github.com/repos/Codeception/module-phpbrowser/zipball/a972411f60cd00d00d5e5e3b35496ba4a23bcffc", + "reference": "a972411f60cd00d00d5e5e3b35496ba4a23bcffc", "shasum": "" }, "require": { - "codeception/codeception": "^4.1", - "codeception/lib-innerbrowser": "^1.3", - "guzzlehttp/guzzle": "^6.3|^7.0", - "php": ">=5.6.0 <9.0" + "codeception/codeception": "*@dev", + "codeception/lib-innerbrowser": "*@dev", + "ext-json": "*", + "guzzlehttp/guzzle": "^7.4", + "php": "^8.0", + "symfony/browser-kit": "^5.4 || ^6.0 || ^7.0" }, "conflict": { - "codeception/codeception": "<4.0" + "codeception/codeception": "<5.0", + "codeception/lib-innerbrowser": "<3.0" }, "require-dev": { - "codeception/module-rest": "^1.0" + "aws/aws-sdk-php": "^3.199", + "codeception/module-rest": "^2.0 || *@dev", + "ext-curl": "*" }, "suggest": { "codeception/phpbuiltinserver": "Start and stop PHP built-in web server for your tests" @@ -3786,7 +4732,7 @@ } ], "description": "Codeception module for testing web application over HTTP", - "homepage": "http://codeception.com/", + "homepage": "https://codeception.com/", "keywords": [ "codeception", "functional-testing", @@ -3794,75 +4740,33 @@ ], "support": { "issues": "https://github.com/Codeception/module-phpbrowser/issues", - "source": "https://github.com/Codeception/module-phpbrowser/tree/1.0.3" - }, - "time": "2022-05-21T13:50:41+00:00" - }, - { - "name": "codeception/phpunit-wrapper", - "version": "9.0.9", - "source": { - "type": "git", - "url": "https://github.com/Codeception/phpunit-wrapper.git", - "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Codeception/phpunit-wrapper/zipball/7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", - "reference": "7439a53ae367986e9c22b2ac00f9d7376bb2f8cf", - "shasum": "" - }, - "require": { - "php": ">=7.2", - "phpunit/phpunit": "^9.0" - }, - "require-dev": { - "codeception/specify": "*", - "consolidation/robo": "^3.0.0-alpha3", - "vlucas/phpdotenv": "^3.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Codeception\\PHPUnit\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Davert", - "email": "davert.php@resend.cc" - }, - { - "name": "Naktibalda" - } - ], - "description": "PHPUnit classes used by Codeception", - "support": { - "issues": "https://github.com/Codeception/phpunit-wrapper/issues", - "source": "https://github.com/Codeception/phpunit-wrapper/tree/9.0.9" + "source": "https://github.com/Codeception/module-phpbrowser/tree/3.0.1" }, - "time": "2022-05-23T06:24:11+00:00" + "time": "2023-12-08T19:41:28+00:00" }, { "name": "codeception/stub", - "version": "3.7.0", + "version": "4.1.3", "source": { "type": "git", "url": "https://github.com/Codeception/Stub.git", - "reference": "468dd5fe659f131fc997f5196aad87512f9b1304" + "reference": "4fcad2c165f365377486dc3fd8703b07f1f2fcae" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/Codeception/Stub/zipball/468dd5fe659f131fc997f5196aad87512f9b1304", - "reference": "468dd5fe659f131fc997f5196aad87512f9b1304", + "url": "https://api.github.com/repos/Codeception/Stub/zipball/4fcad2c165f365377486dc3fd8703b07f1f2fcae", + "reference": "4fcad2c165f365377486dc3fd8703b07f1f2fcae", "shasum": "" }, "require": { - "phpunit/phpunit": "^8.4 | ^9.0" + "php": "^7.4 | ^8.0", + "phpunit/phpunit": "^8.4 | ^9.0 | ^10.0 | ^11" + }, + "conflict": { + "codeception/codeception": "<5.0.6" + }, + "require-dev": { + "consolidation/robo": "^3.0" }, "type": "library", "autoload": { @@ -3877,36 +4781,36 @@ "description": "Flexible Stub wrapper for PHPUnit's Mock Builder", "support": { "issues": "https://github.com/Codeception/Stub/issues", - "source": "https://github.com/Codeception/Stub/tree/3.7.0" + "source": "https://github.com/Codeception/Stub/tree/4.1.3" }, - "time": "2020-07-03T15:54:43+00:00" + "time": "2024-02-02T19:21:00+00:00" }, { "name": "doctrine/instantiator", - "version": "1.5.0", + "version": "2.0.0", "source": { "type": "git", "url": "https://github.com/doctrine/instantiator.git", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b" + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/0a0fa9780f5d4e507415a065172d26a98d02047b", - "reference": "0a0fa9780f5d4e507415a065172d26a98d02047b", + "url": "https://api.github.com/repos/doctrine/instantiator/zipball/c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", + "reference": "c6222283fa3f4ac679f8b9ced9a4e23f163e80d0", "shasum": "" }, "require": { - "php": "^7.1 || ^8.0" + "php": "^8.1" }, "require-dev": { - "doctrine/coding-standard": "^9 || ^11", + "doctrine/coding-standard": "^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" + "phpbench/phpbench": "^1.2", + "phpstan/phpstan": "^1.9.4", + "phpstan/phpstan-phpunit": "^1.3", + "phpunit/phpunit": "^9.5.27", + "vimeo/psalm": "^5.4" }, "type": "library", "autoload": { @@ -3933,7 +4837,7 @@ ], "support": { "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.5.0" + "source": "https://github.com/doctrine/instantiator/tree/2.0.0" }, "funding": [ { @@ -3949,7 +4853,7 @@ "type": "tidelift" } ], - "time": "2022-12-30T00:15:36+00:00" + "time": "2022-12-30T00:23:10+00:00" }, { "name": "getgrav/markdowndocs", @@ -4005,22 +4909,22 @@ }, { "name": "guzzlehttp/guzzle", - "version": "7.8.2", + "version": "7.9.2", "source": { "type": "git", "url": "https://github.com/guzzle/guzzle.git", - "reference": "f4152d9eb85c445fe1f992001d1748e8bec070d2" + "reference": "d281ed313b989f213357e3be1a179f02196ac99b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/guzzle/zipball/f4152d9eb85c445fe1f992001d1748e8bec070d2", - "reference": "f4152d9eb85c445fe1f992001d1748e8bec070d2", + "url": "https://api.github.com/repos/guzzle/guzzle/zipball/d281ed313b989f213357e3be1a179f02196ac99b", + "reference": "d281ed313b989f213357e3be1a179f02196ac99b", "shasum": "" }, "require": { "ext-json": "*", "guzzlehttp/promises": "^1.5.3 || ^2.0.3", - "guzzlehttp/psr7": "^1.9.1 || ^2.6.3", + "guzzlehttp/psr7": "^2.7.0", "php": "^7.2.5 || ^8.0", "psr/http-client": "^1.0", "symfony/deprecation-contracts": "^2.2 || ^3.0" @@ -4111,7 +5015,7 @@ ], "support": { "issues": "https://github.com/guzzle/guzzle/issues", - "source": "https://github.com/guzzle/guzzle/tree/7.8.2" + "source": "https://github.com/guzzle/guzzle/tree/7.9.2" }, "funding": [ { @@ -4127,20 +5031,20 @@ "type": "tidelift" } ], - "time": "2024-07-18T11:12:18+00:00" + "time": "2024-07-24T11:22:20+00:00" }, { "name": "guzzlehttp/promises", - "version": "2.0.3", + "version": "2.0.4", "source": { "type": "git", "url": "https://github.com/guzzle/promises.git", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8" + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/guzzle/promises/zipball/6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", - "reference": "6ea8dd08867a2a42619d65c3deb2c0fcbf81c8f8", + "url": "https://api.github.com/repos/guzzle/promises/zipball/f9c436286ab2892c7db7be8c8da4ef61ccf7b455", + "reference": "f9c436286ab2892c7db7be8c8da4ef61ccf7b455", "shasum": "" }, "require": { @@ -4194,7 +5098,7 @@ ], "support": { "issues": "https://github.com/guzzle/promises/issues", - "source": "https://github.com/guzzle/promises/tree/2.0.3" + "source": "https://github.com/guzzle/promises/tree/2.0.4" }, "funding": [ { @@ -4210,7 +5114,74 @@ "type": "tidelift" } ], - "time": "2024-07-18T10:29:17+00:00" + "time": "2024-10-17T10:06:22+00:00" + }, + { + "name": "masterminds/html5", + "version": "2.9.0", + "source": { + "type": "git", + "url": "https://github.com/Masterminds/html5-php.git", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/Masterminds/html5-php/zipball/f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "reference": "f5ac2c0b0a2eefca70b2ce32a5809992227e75a6", + "shasum": "" + }, + "require": { + "ext-dom": "*", + "php": ">=5.3.0" + }, + "require-dev": { + "phpunit/phpunit": "^4.8.35 || ^5.7.21 || ^6 || ^7 || ^8 || ^9" + }, + "type": "library", + "extra": { + "branch-alias": { + "dev-master": "2.7-dev" + } + }, + "autoload": { + "psr-4": { + "Masterminds\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Matt Butcher", + "email": "technosophos@gmail.com" + }, + { + "name": "Matt Farina", + "email": "matt@mattfarina.com" + }, + { + "name": "Asmir Mustafic", + "email": "goetas@gmail.com" + } + ], + "description": "An HTML5 parser and serializer.", + "homepage": "http://masterminds.github.io/html5-php", + "keywords": [ + "HTML5", + "dom", + "html", + "parser", + "querypath", + "serializer", + "xml" + ], + "support": { + "issues": "https://github.com/Masterminds/html5-php/issues", + "source": "https://github.com/Masterminds/html5-php/tree/2.9.0" + }, + "time": "2024-03-31T07:05:07+00:00" }, { "name": "myclabs/deep-copy", @@ -4274,25 +5245,27 @@ }, { "name": "nikic/php-parser", - "version": "v4.19.4", + "version": "v5.3.1", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2" + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/715f4d25e225bc47b293a8b997fe6ce99bf987d2", - "reference": "715f4d25e225bc47b293a8b997fe6ce99bf987d2", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/8eea230464783aa9671db8eea6f8c6ac5285794b", + "reference": "8eea230464783aa9671db8eea6f8c6ac5285794b", "shasum": "" }, "require": { + "ext-ctype": "*", + "ext-json": "*", "ext-tokenizer": "*", - "php": ">=7.1" + "php": ">=7.4" }, "require-dev": { "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^7.0 || ^8.0 || ^9.0" + "phpunit/phpunit": "^9.0" }, "bin": [ "bin/php-parse" @@ -4300,7 +5273,7 @@ "type": "library", "extra": { "branch-alias": { - "dev-master": "4.9-dev" + "dev-master": "5.0-dev" } }, "autoload": { @@ -4324,9 +5297,9 @@ ], "support": { "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.19.4" + "source": "https://github.com/nikic/PHP-Parser/tree/v5.3.1" }, - "time": "2024-09-29T15:01:53+00:00" + "time": "2024-10-08T18:51:32+00:00" }, { "name": "phar-io/manifest", @@ -4448,16 +5421,16 @@ }, { "name": "phpstan/phpstan", - "version": "1.12.6", + "version": "1.12.7", "source": { "type": "git", "url": "https://github.com/phpstan/phpstan.git", - "reference": "dc4d2f145a88ea7141ae698effd64d9df46527ae" + "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc4d2f145a88ea7141ae698effd64d9df46527ae", - "reference": "dc4d2f145a88ea7141ae698effd64d9df46527ae", + "url": "https://api.github.com/repos/phpstan/phpstan/zipball/dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", + "reference": "dc2b9976bd8b0f84ec9b0e50cc35378551de7af0", "shasum": "" }, "require": { @@ -4502,7 +5475,7 @@ "type": "github" } ], - "time": "2024-10-06T15:03:59+00:00" + "time": "2024-10-18T11:12:07+00:00" }, { "name": "phpstan/phpstan-deprecation-rules", @@ -5025,6 +5998,144 @@ }, "time": "2023-09-23T14:17:50+00:00" }, + { + "name": "psy/psysh", + "version": "v0.12.4", + "source": { + "type": "git", + "url": "https://github.com/bobthecow/psysh.git", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/bobthecow/psysh/zipball/2fd717afa05341b4f8152547f142cd2f130f6818", + "reference": "2fd717afa05341b4f8152547f142cd2f130f6818", + "shasum": "" + }, + "require": { + "ext-json": "*", + "ext-tokenizer": "*", + "nikic/php-parser": "^5.0 || ^4.0", + "php": "^8.0 || ^7.4", + "symfony/console": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4", + "symfony/var-dumper": "^7.0 || ^6.0 || ^5.0 || ^4.0 || ^3.4" + }, + "conflict": { + "symfony/console": "4.4.37 || 5.3.14 || 5.3.15 || 5.4.3 || 5.4.4 || 6.0.3 || 6.0.4" + }, + "require-dev": { + "bamarni/composer-bin-plugin": "^1.2" + }, + "suggest": { + "ext-pcntl": "Enabling the PCNTL extension makes PsySH a lot happier :)", + "ext-pdo-sqlite": "The doc command requires SQLite to work.", + "ext-posix": "If you have PCNTL, you'll want the POSIX extension as well." + }, + "bin": [ + "bin/psysh" + ], + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "0.12.x-dev" + }, + "bamarni-bin": { + "bin-links": false, + "forward-command": false + } + }, + "autoload": { + "files": [ + "src/functions.php" + ], + "psr-4": { + "Psy\\": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Justin Hileman", + "email": "justin@justinhileman.info", + "homepage": "http://justinhileman.com" + } + ], + "description": "An interactive shell for modern PHP.", + "homepage": "http://psysh.org", + "keywords": [ + "REPL", + "console", + "interactive", + "shell" + ], + "support": { + "issues": "https://github.com/bobthecow/psysh/issues", + "source": "https://github.com/bobthecow/psysh/tree/v0.12.4" + }, + "time": "2024-06-10T01:18:23+00:00" + }, + { + "name": "rector/rector", + "version": "1.2.8", + "source": { + "type": "git", + "url": "https://github.com/rectorphp/rector.git", + "reference": "05755bf43617449c08ee8e50fb840c85ad3b1240" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/rectorphp/rector/zipball/05755bf43617449c08ee8e50fb840c85ad3b1240", + "reference": "05755bf43617449c08ee8e50fb840c85ad3b1240", + "shasum": "" + }, + "require": { + "php": "^7.2|^8.0", + "phpstan/phpstan": "^1.12.5" + }, + "conflict": { + "rector/rector-doctrine": "*", + "rector/rector-downgrade-php": "*", + "rector/rector-phpunit": "*", + "rector/rector-symfony": "*" + }, + "suggest": { + "ext-dom": "To manipulate phpunit.xml via the custom-rule command" + }, + "bin": [ + "bin/rector" + ], + "type": "library", + "autoload": { + "files": [ + "bootstrap.php" + ] + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "description": "Instant Upgrade and Automated Refactoring of any PHP code", + "keywords": [ + "automation", + "dev", + "migration", + "refactoring" + ], + "support": { + "issues": "https://github.com/rectorphp/rector/issues", + "source": "https://github.com/rectorphp/rector/tree/1.2.8" + }, + "funding": [ + { + "url": "https://github.com/tomasvotruba", + "type": "github" + } + ], + "time": "2024-10-18T11:54:27+00:00" + }, { "name": "sebastian/cli-parser", "version": "1.0.2", @@ -5990,31 +7101,27 @@ }, { "name": "symfony/browser-kit", - "version": "v5.4.40", + "version": "v6.4.8", "source": { "type": "git", "url": "https://github.com/symfony/browser-kit.git", - "reference": "92c8ba1e5ee12d07120744c90898516132b4e58b" + "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/browser-kit/zipball/92c8ba1e5ee12d07120744c90898516132b4e58b", - "reference": "92c8ba1e5ee12d07120744c90898516132b4e58b", + "url": "https://api.github.com/repos/symfony/browser-kit/zipball/62ab90b92066ef6cce5e79365625b4b1432464c8", + "reference": "62ab90b92066ef6cce5e79365625b4b1432464c8", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/dom-crawler": "^4.4|^5.0|^6.0", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.1", + "symfony/dom-crawler": "^5.4|^6.0|^7.0" }, "require-dev": { - "symfony/css-selector": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/mime": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/process": "" + "symfony/css-selector": "^5.4|^6.0|^7.0", + "symfony/http-client": "^5.4|^6.0|^7.0", + "symfony/mime": "^5.4|^6.0|^7.0", + "symfony/process": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6042,7 +7149,7 @@ "description": "Simulates the behavior of a web browser, allowing you to make requests, click on links and submit forms programmatically", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/browser-kit/tree/v5.4.40" + "source": "https://github.com/symfony/browser-kit/tree/v6.4.8" }, "funding": [ { @@ -6058,25 +7165,24 @@ "type": "tidelift" } ], - "time": "2024-05-31T14:33:22+00:00" + "time": "2024-05-31T14:49:08+00:00" }, { "name": "symfony/css-selector", - "version": "v5.4.40", + "version": "v7.1.1", "source": { "type": "git", "url": "https://github.com/symfony/css-selector.git", - "reference": "ea43887e9afd2029509662d4f95e8b5ef6fc9bbb" + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/css-selector/zipball/ea43887e9afd2029509662d4f95e8b5ef6fc9bbb", - "reference": "ea43887e9afd2029509662d4f95e8b5ef6fc9bbb", + "url": "https://api.github.com/repos/symfony/css-selector/zipball/1c7cee86c6f812896af54434f8ce29c8d94f9ff4", + "reference": "1c7cee86c6f812896af54434f8ce29c8d94f9ff4", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2" }, "type": "library", "autoload": { @@ -6108,74 +7214,7 @@ "description": "Converts CSS selectors to XPath expressions", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/css-selector/tree/v5.4.40" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2024-05-31T14:33:22+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "80d075412b557d41002320b96a096ca65aa2c98d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/80d075412b557d41002320b96a096ca65aa2c98d", - "reference": "80d075412b557d41002320b96a096ca65aa2c98d", - "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.3" + "source": "https://github.com/symfony/css-selector/tree/v7.1.1" }, "funding": [ { @@ -6191,38 +7230,30 @@ "type": "tidelift" } ], - "time": "2023-01-24T14:02:46+00:00" + "time": "2024-05-31T14:57:53+00:00" }, { "name": "symfony/dom-crawler", - "version": "v5.4.44", + "version": "v6.4.12", "source": { "type": "git", "url": "https://github.com/symfony/dom-crawler.git", - "reference": "4c76e4176a5472c5afe504194d7bbef5cfdd1703" + "reference": "9d307ecbcb917001692be333cdc58f474fdb37f0" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/4c76e4176a5472c5afe504194d7bbef5cfdd1703", - "reference": "4c76e4176a5472c5afe504194d7bbef5cfdd1703", + "url": "https://api.github.com/repos/symfony/dom-crawler/zipball/9d307ecbcb917001692be333cdc58f474fdb37f0", + "reference": "9d307ecbcb917001692be333cdc58f474fdb37f0", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", + "masterminds/html5": "^2.6", + "php": ">=8.1", "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "^1.16" - }, - "conflict": { - "masterminds/html5": "<2.6" + "symfony/polyfill-mbstring": "~1.0" }, "require-dev": { - "masterminds/html5": "^2.6", - "symfony/css-selector": "^4.4|^5.0|^6.0" - }, - "suggest": { - "symfony/css-selector": "" + "symfony/css-selector": "^5.4|^6.0|^7.0" }, "type": "library", "autoload": { @@ -6250,7 +7281,7 @@ "description": "Eases DOM navigation for HTML and XML documents", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/dom-crawler/tree/v5.4.44" + "source": "https://github.com/symfony/dom-crawler/tree/v6.4.12" }, "funding": [ { @@ -6266,26 +7297,27 @@ "type": "tidelift" } ], - "time": "2024-09-11T06:50:28+00:00" + "time": "2024-09-15T06:35:36+00:00" }, { "name": "symfony/finder", - "version": "v5.4.43", + "version": "v7.1.4", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "ae25a9145a900764158d439653d5630191155ca0" + "reference": "d95bbf319f7d052082fb7af147e0f835a695e823" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/ae25a9145a900764158d439653d5630191155ca0", - "reference": "ae25a9145a900764158d439653d5630191155ca0", + "url": "https://api.github.com/repos/symfony/finder/zipball/d95bbf319f7d052082fb7af147e0f835a695e823", + "reference": "d95bbf319f7d052082fb7af147e0f835a695e823", "shasum": "" }, "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-php80": "^1.16" + "php": ">=8.2" + }, + "require-dev": { + "symfony/filesystem": "^6.4|^7.0" }, "type": "library", "autoload": { @@ -6313,7 +7345,7 @@ "description": "Finds files and directories via an intuitive fluent interface", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/finder/tree/v5.4.43" + "source": "https://github.com/symfony/finder/tree/v7.1.4" }, "funding": [ { @@ -6329,7 +7361,7 @@ "type": "tidelift" } ], - "time": "2024-08-13T14:03:51+00:00" + "time": "2024-08-13T14:28:19+00:00" }, { "name": "theseer/tokenizer", @@ -6384,11 +7416,14 @@ ], "aliases": [], "minimum-stability": "stable", - "stability-flags": [], + "stability-flags": { + "itsgoingd/clockwork": 20, + "rockettheme/toolbox": 20 + }, "prefer-stable": false, "prefer-lowest": false, "platform": { - "php": "^7.3.6 || ^8.0", + "php": "^8.2", "ext-json": "*", "ext-openssl": "*", "ext-curl": "*", @@ -6399,7 +7434,7 @@ }, "platform-dev": [], "platform-overrides": { - "php": "7.3.6" + "php": "8.2" }, "plugin-api-version": "2.6.0" } diff --git a/index.php b/index.php index 242794a058..0db9c1876e 100644 --- a/index.php +++ b/index.php @@ -10,7 +10,7 @@ namespace Grav; \define('GRAV_REQUEST_TIME', microtime(true)); -\define('GRAV_PHP_MIN', '7.3.6'); +\define('GRAV_PHP_MIN', '8.2.0'); if (PHP_SAPI === 'cli-server') { $symfony_server = stripos(getenv('_'), 'symfony') !== false || stripos($_SERVER['SERVER_SOFTWARE'] ?? '', 'symfony') !== false || stripos($_ENV['SERVER_SOFTWARE'] ?? '', 'symfony') !== false; diff --git a/system/blueprints/config/system.yaml b/system/blueprints/config/system.yaml index 352d4193f0..9d96afc723 100644 --- a/system/blueprints/config/system.yaml +++ b/system/blueprints/config/system.yaml @@ -619,11 +619,9 @@ form: options: auto: Auto detect file: File - apc: APC apcu: APCu memcache: Memcache memcached: Memcached - wincache: WinCache redis: Redis cache.prefix: @@ -707,20 +705,6 @@ form: validate: type: bool - cache.memcache.server: - type: text - size: medium - label: PLUGIN_ADMIN.MEMCACHE_SERVER - help: PLUGIN_ADMIN.MEMCACHE_SERVER_HELP - placeholder: "localhost" - - cache.memcache.port: - type: text - size: small - label: PLUGIN_ADMIN.MEMCACHE_PORT - help: PLUGIN_ADMIN.MEMCACHE_PORT_HELP - placeholder: "11211" - cache.memcached.server: type: text size: medium @@ -884,17 +868,6 @@ form: validate: type: bool - twig.umask_fix: - type: toggle - label: PLUGIN_ADMIN.TWIG_UMASK_FIX - help: PLUGIN_ADMIN.TWIG_UMASK_FIX_HELP - highlight: 0 - options: - 1: PLUGIN_ADMIN.YES - 0: PLUGIN_ADMIN.NO - validate: - type: bool - assets: type: tab title: PLUGIN_ADMIN.ASSETS diff --git a/system/config/mime.yaml b/system/config/mime.yaml index 3143c67337..0edb802e43 100644 --- a/system/config/mime.yaml +++ b/system/config/mime.yaml @@ -1,1986 +1,1988 @@ types: - '123': - - application/vnd.lotus-1-2-3 - wof: - - application/font-woff - php: - - application/php - - application/x-httpd-php - - application/x-httpd-php-source - - application/x-php - - text/php - - text/x-php - otf: - - application/x-font-otf - - font/otf - ttf: - - application/x-font-ttf - - font/ttf - ttc: - - application/x-font-ttf - - font/collection - zip: - - application/x-gzip - - application/zip - - application/x-zip-compressed - amr: - - audio/amr - mp3: - - audio/mpeg - mpga: - - audio/mpeg - mp2: - - audio/mpeg - mp2a: - - audio/mpeg - m2a: - - audio/mpeg - m3a: - - audio/mpeg - jpg: - - image/jpeg - jpeg: - - image/jpeg - jpe: - - image/jpeg - bmp: - - image/x-ms-bmp - - image/bmp - ez: - - application/andrew-inset - aw: - - application/applixware - atom: - - application/atom+xml - atomcat: - - application/atomcat+xml - atomsvc: - - application/atomsvc+xml - ccxml: - - application/ccxml+xml - cdmia: - - application/cdmi-capability - cdmic: - - application/cdmi-container - cdmid: - - application/cdmi-domain - cdmio: - - application/cdmi-object - cdmiq: - - application/cdmi-queue - cu: - - application/cu-seeme - davmount: - - application/davmount+xml - dbk: - - application/docbook+xml - dssc: - - application/dssc+der - xdssc: - - application/dssc+xml - ecma: - - application/ecmascript - emma: - - application/emma+xml - epub: - - application/epub+zip - exi: - - application/exi - pfr: - - application/font-tdpfr - gml: - - application/gml+xml - gpx: - - application/gpx+xml - gxf: - - application/gxf - stk: - - application/hyperstudio - ink: - - application/inkml+xml - inkml: - - application/inkml+xml - ipfix: - - application/ipfix - jar: - - application/java-archive - ser: - - application/java-serialized-object - class: - - application/java-vm - js: - - application/javascript - json: - - application/json - jsonml: - - application/jsonml+json - lostxml: - - application/lost+xml - hqx: - - application/mac-binhex40 - cpt: - - application/mac-compactpro - mads: - - application/mads+xml - mrc: - - application/marc - mrcx: - - application/marcxml+xml - ma: - - application/mathematica - nb: - - application/mathematica - mb: - - application/mathematica - mathml: - - application/mathml+xml - mbox: - - application/mbox - mscml: - - application/mediaservercontrol+xml - metalink: - - application/metalink+xml - meta4: - - application/metalink4+xml - mets: - - application/mets+xml - mods: - - application/mods+xml - m21: - - application/mp21 - mp21: - - application/mp21 - mp4s: - - application/mp4 - doc: - - application/msword - dot: - - application/msword - mxf: - - application/mxf - bin: - - application/octet-stream - dms: - - application/octet-stream - lrf: - - application/octet-stream - mar: - - application/octet-stream - so: - - application/octet-stream - dist: - - application/octet-stream - distz: - - application/octet-stream - pkg: - - application/octet-stream - bpk: - - application/octet-stream - dump: - - application/octet-stream - elc: - - application/octet-stream - deploy: - - application/octet-stream - oda: - - application/oda - opf: - - application/oebps-package+xml - ogx: - - application/ogg - omdoc: - - application/omdoc+xml - onetoc: - - application/onenote - onetoc2: - - application/onenote - onetmp: - - application/onenote - onepkg: - - application/onenote - oxps: - - application/oxps - xer: - - application/patch-ops-error+xml - pdf: - - application/pdf - pgp: - - application/pgp-encrypted - asc: - - application/pgp-signature - sig: - - application/pgp-signature - prf: - - application/pics-rules - p10: - - application/pkcs10 - p7m: - - application/pkcs7-mime - p7c: - - application/pkcs7-mime - p7s: - - application/pkcs7-signature - p8: - - application/pkcs8 - ac: - - application/pkix-attr-cert - cer: - - application/pkix-cert - crl: - - application/pkix-crl - pkipath: - - application/pkix-pkipath - pki: - - application/pkixcmp - pls: - - application/pls+xml - ai: - - application/postscript - eps: - - application/postscript - ps: - - application/postscript - cww: - - application/prs.cww - pskcxml: - - application/pskc+xml - rdf: - - application/rdf+xml - rif: - - application/reginfo+xml - rnc: - - application/relax-ng-compact-syntax - rl: - - application/resource-lists+xml - rld: - - application/resource-lists-diff+xml - rs: - - application/rls-services+xml - gbr: - - application/rpki-ghostbusters - mft: - - application/rpki-manifest - roa: - - application/rpki-roa - rsd: - - application/rsd+xml - rss: - - application/rss+xml - rtf: - - application/rtf - sbml: - - application/sbml+xml - scq: - - application/scvp-cv-request - scs: - - application/scvp-cv-response - spq: - - application/scvp-vp-request - spp: - - application/scvp-vp-response - sdp: - - application/sdp - setpay: - - application/set-payment-initiation - setreg: - - application/set-registration-initiation - shf: - - application/shf+xml - smi: - - application/smil+xml - smil: - - application/smil+xml - rq: - - application/sparql-query - srx: - - application/sparql-results+xml - gram: - - application/srgs - grxml: - - application/srgs+xml - sru: - - application/sru+xml - ssdl: - - application/ssdl+xml - ssml: - - application/ssml+xml - tei: - - application/tei+xml - teicorpus: - - application/tei+xml - tfi: - - application/thraud+xml - tsd: - - application/timestamped-data - plb: - - application/vnd.3gpp.pic-bw-large - psb: - - application/vnd.3gpp.pic-bw-small - pvb: - - application/vnd.3gpp.pic-bw-var - tcap: - - application/vnd.3gpp2.tcap - pwn: - - application/vnd.3m.post-it-notes - aso: - - application/vnd.accpac.simply.aso - imp: - - application/vnd.accpac.simply.imp - acu: - - application/vnd.acucobol - atc: - - application/vnd.acucorp - acutc: - - application/vnd.acucorp - air: - - application/vnd.adobe.air-application-installer-package+zip - fcdt: - - application/vnd.adobe.formscentral.fcdt - fxp: - - application/vnd.adobe.fxp - fxpl: - - application/vnd.adobe.fxp - xdp: - - application/vnd.adobe.xdp+xml - xfdf: - - application/vnd.adobe.xfdf - ahead: - - application/vnd.ahead.space - azf: - - application/vnd.airzip.filesecure.azf - azs: - - application/vnd.airzip.filesecure.azs - azw: - - application/vnd.amazon.ebook - acc: - - application/vnd.americandynamics.acc - ami: - - application/vnd.amiga.ami - apk: - - application/vnd.android.package-archive - cii: - - application/vnd.anser-web-certificate-issue-initiation - fti: - - application/vnd.anser-web-funds-transfer-initiation - atx: - - application/vnd.antix.game-component - mpkg: - - application/vnd.apple.installer+xml - m3u8: - - application/vnd.apple.mpegurl - swi: - - application/vnd.aristanetworks.swi - iota: - - application/vnd.astraea-software.iota - aep: - - application/vnd.audiograph - mpm: - - application/vnd.blueice.multipass - bmi: - - application/vnd.bmi - rep: - - application/vnd.businessobjects - cdxml: - - application/vnd.chemdraw+xml - mmd: - - application/vnd.chipnuts.karaoke-mmd - cdy: - - application/vnd.cinderella - cla: - - application/vnd.claymore - rp9: - - application/vnd.cloanto.rp9 - c4g: - - application/vnd.clonk.c4group - c4d: - - application/vnd.clonk.c4group - c4f: - - application/vnd.clonk.c4group - c4p: - - application/vnd.clonk.c4group - c4u: - - application/vnd.clonk.c4group - c11amc: - - application/vnd.cluetrust.cartomobile-config - c11amz: - - application/vnd.cluetrust.cartomobile-config-pkg - csp: - - application/vnd.commonspace - cdbcmsg: - - application/vnd.contact.cmsg - cmc: - - application/vnd.cosmocaller - clkx: - - application/vnd.crick.clicker - clkk: - - application/vnd.crick.clicker.keyboard - clkp: - - application/vnd.crick.clicker.palette - clkt: - - application/vnd.crick.clicker.template - clkw: - - application/vnd.crick.clicker.wordbank - wbs: - - application/vnd.criticaltools.wbs+xml - pml: - - application/vnd.ctc-posml - ppd: - - application/vnd.cups-ppd - car: - - application/vnd.curl.car - pcurl: - - application/vnd.curl.pcurl - dart: - - application/vnd.dart - rdz: - - application/vnd.data-vision.rdz - uvf: - - application/vnd.dece.data - uvvf: - - application/vnd.dece.data - uvd: - - application/vnd.dece.data - uvvd: - - application/vnd.dece.data - uvt: - - application/vnd.dece.ttml+xml - uvvt: - - application/vnd.dece.ttml+xml - uvx: - - application/vnd.dece.unspecified - uvvx: - - application/vnd.dece.unspecified - uvz: - - application/vnd.dece.zip - uvvz: - - application/vnd.dece.zip - fe_launch: - - application/vnd.denovo.fcselayout-link - dna: - - application/vnd.dna - mlp: - - application/vnd.dolby.mlp - dpg: - - application/vnd.dpgraph - dfac: - - application/vnd.dreamfactory - kpxx: - - application/vnd.ds-keypoint - ait: - - application/vnd.dvb.ait - svc: - - application/vnd.dvb.service - geo: - - application/vnd.dynageo - mag: - - application/vnd.ecowin.chart - nml: - - application/vnd.enliven - esf: - - application/vnd.epson.esf - msf: - - application/vnd.epson.msf - qam: - - application/vnd.epson.quickanime - slt: - - application/vnd.epson.salt - ssf: - - application/vnd.epson.ssf - es3: - - application/vnd.eszigno3+xml - et3: - - application/vnd.eszigno3+xml - ez2: - - application/vnd.ezpix-album - ez3: - - application/vnd.ezpix-package - fdf: - - application/vnd.fdf - mseed: - - application/vnd.fdsn.mseed - seed: - - application/vnd.fdsn.seed - dataless: - - application/vnd.fdsn.seed - gph: - - application/vnd.flographit - ftc: - - application/vnd.fluxtime.clip - fm: - - application/vnd.framemaker - frame: - - application/vnd.framemaker - maker: - - application/vnd.framemaker - book: - - application/vnd.framemaker - fnc: - - application/vnd.frogans.fnc - ltf: - - application/vnd.frogans.ltf - fsc: - - application/vnd.fsc.weblaunch - oas: - - application/vnd.fujitsu.oasys - oa2: - - application/vnd.fujitsu.oasys2 - oa3: - - application/vnd.fujitsu.oasys3 - fg5: - - application/vnd.fujitsu.oasysgp - bh2: - - application/vnd.fujitsu.oasysprs - ddd: - - application/vnd.fujixerox.ddd - xdw: - - application/vnd.fujixerox.docuworks - xbd: - - application/vnd.fujixerox.docuworks.binder - fzs: - - application/vnd.fuzzysheet - txd: - - application/vnd.genomatix.tuxedo - ggb: - - application/vnd.geogebra.file - ggt: - - application/vnd.geogebra.tool - gex: - - application/vnd.geometry-explorer - gre: - - application/vnd.geometry-explorer - gxt: - - application/vnd.geonext - g2w: - - application/vnd.geoplan - g3w: - - application/vnd.geospace - gmx: - - application/vnd.gmx - kml: - - application/vnd.google-earth.kml+xml - kmz: - - application/vnd.google-earth.kmz - gqf: - - application/vnd.grafeq - gqs: - - application/vnd.grafeq - gac: - - application/vnd.groove-account - ghf: - - application/vnd.groove-help - gim: - - application/vnd.groove-identity-message - grv: - - application/vnd.groove-injector - gtm: - - application/vnd.groove-tool-message - tpl: - - application/vnd.groove-tool-template - vcg: - - application/vnd.groove-vcard - hal: - - application/vnd.hal+xml - zmm: - - application/vnd.handheld-entertainment+xml - hbci: - - application/vnd.hbci - les: - - application/vnd.hhe.lesson-player - hpgl: - - application/vnd.hp-hpgl - hpid: - - application/vnd.hp-hpid - hps: - - application/vnd.hp-hps - jlt: - - application/vnd.hp-jlyt - pcl: - - application/vnd.hp-pcl - pclxl: - - application/vnd.hp-pclxl - sfd-hdstx: - - application/vnd.hydrostatix.sof-data - mpy: - - application/vnd.ibm.minipay - afp: - - application/vnd.ibm.modcap - listafp: - - application/vnd.ibm.modcap - list3820: - - application/vnd.ibm.modcap - irm: - - application/vnd.ibm.rights-management - sc: - - application/vnd.ibm.secure-container - icc: - - application/vnd.iccprofile - icm: - - application/vnd.iccprofile - igl: - - application/vnd.igloader - ivp: - - application/vnd.immervision-ivp - ivu: - - application/vnd.immervision-ivu - igm: - - application/vnd.insors.igm - xpw: - - application/vnd.intercon.formnet - xpx: - - application/vnd.intercon.formnet - i2g: - - application/vnd.intergeo - qbo: - - application/vnd.intu.qbo - qfx: - - application/vnd.intu.qfx - rcprofile: - - application/vnd.ipunplugged.rcprofile - irp: - - application/vnd.irepository.package+xml - xpr: - - application/vnd.is-xpr - fcs: - - application/vnd.isac.fcs - jam: - - application/vnd.jam - rms: - - application/vnd.jcp.javame.midlet-rms - jisp: - - application/vnd.jisp - joda: - - application/vnd.joost.joda-archive - ktz: - - application/vnd.kahootz - ktr: - - application/vnd.kahootz - karbon: - - application/vnd.kde.karbon - chrt: - - application/vnd.kde.kchart - kfo: - - application/vnd.kde.kformula - flw: - - application/vnd.kde.kivio - kon: - - application/vnd.kde.kontour - kpr: - - application/vnd.kde.kpresenter - kpt: - - application/vnd.kde.kpresenter - ksp: - - application/vnd.kde.kspread - kwd: - - application/vnd.kde.kword - kwt: - - application/vnd.kde.kword - htke: - - application/vnd.kenameaapp - kia: - - application/vnd.kidspiration - kne: - - application/vnd.kinar - knp: - - application/vnd.kinar - skp: - - application/vnd.koan - skd: - - application/vnd.koan - skt: - - application/vnd.koan - skm: - - application/vnd.koan - sse: - - application/vnd.kodak-descriptor - lasxml: - - application/vnd.las.las+xml - lbd: - - application/vnd.llamagraphics.life-balance.desktop - lbe: - - application/vnd.llamagraphics.life-balance.exchange+xml - apr: - - application/vnd.lotus-approach - pre: - - application/vnd.lotus-freelance - nsf: - - application/vnd.lotus-notes - org: - - application/vnd.lotus-organizer - scm: - - application/vnd.lotus-screencam - lwp: - - application/vnd.lotus-wordpro - portpkg: - - application/vnd.macports.portpkg - mcd: - - application/vnd.mcd - mc1: - - application/vnd.medcalcdata - cdkey: - - application/vnd.mediastation.cdkey - mwf: - - application/vnd.mfer - mfm: - - application/vnd.mfmp - flo: - - application/vnd.micrografx.flo - igx: - - application/vnd.micrografx.igx - mif: - - application/vnd.mif - daf: - - application/vnd.mobius.daf - dis: - - application/vnd.mobius.dis - mbk: - - application/vnd.mobius.mbk - mqy: - - application/vnd.mobius.mqy - msl: - - application/vnd.mobius.msl - plc: - - application/vnd.mobius.plc - txf: - - application/vnd.mobius.txf - mpn: - - application/vnd.mophun.application - mpc: - - application/vnd.mophun.certificate - xul: - - application/vnd.mozilla.xul+xml - cil: - - application/vnd.ms-artgalry - cab: - - application/vnd.ms-cab-compressed - xls: - - application/vnd.ms-excel - xlm: - - application/vnd.ms-excel - xla: - - application/vnd.ms-excel - xlc: - - application/vnd.ms-excel - xlt: - - application/vnd.ms-excel - xlw: - - application/vnd.ms-excel - xlam: - - application/vnd.ms-excel.addin.macroenabled.12 - xlsb: - - application/vnd.ms-excel.sheet.binary.macroenabled.12 - xlsm: - - application/vnd.ms-excel.sheet.macroenabled.12 - xltm: - - application/vnd.ms-excel.template.macroenabled.12 - eot: - - application/vnd.ms-fontobject - chm: - - application/vnd.ms-htmlhelp - ims: - - application/vnd.ms-ims - lrm: - - application/vnd.ms-lrm - thmx: - - application/vnd.ms-officetheme - cat: - - application/vnd.ms-pki.seccat - stl: - - application/vnd.ms-pki.stl - ppt: - - application/vnd.ms-powerpoint - pps: - - application/vnd.ms-powerpoint - pot: - - application/vnd.ms-powerpoint - ppam: - - application/vnd.ms-powerpoint.addin.macroenabled.12 - pptm: - - application/vnd.ms-powerpoint.presentation.macroenabled.12 - sldm: - - application/vnd.ms-powerpoint.slide.macroenabled.12 - ppsm: - - application/vnd.ms-powerpoint.slideshow.macroenabled.12 - potm: - - application/vnd.ms-powerpoint.template.macroenabled.12 - mpp: - - application/vnd.ms-project - mpt: - - application/vnd.ms-project - docm: - - application/vnd.ms-word.document.macroenabled.12 - dotm: - - application/vnd.ms-word.template.macroenabled.12 - wps: - - application/vnd.ms-works - wks: - - application/vnd.ms-works - wcm: - - application/vnd.ms-works - wdb: - - application/vnd.ms-works - wpl: - - application/vnd.ms-wpl - xps: - - application/vnd.ms-xpsdocument - mseq: - - application/vnd.mseq - mus: - - application/vnd.musician - msty: - - application/vnd.muvee.style - taglet: - - application/vnd.mynfc - nlu: - - application/vnd.neurolanguage.nlu - ntf: - - application/vnd.nitf - nitf: - - application/vnd.nitf - nnd: - - application/vnd.noblenet-directory - nns: - - application/vnd.noblenet-sealer - nnw: - - application/vnd.noblenet-web - ngdat: - - application/vnd.nokia.n-gage.data - n-gage: - - application/vnd.nokia.n-gage.symbian.install - rpst: - - application/vnd.nokia.radio-preset - rpss: - - application/vnd.nokia.radio-presets - edm: - - application/vnd.novadigm.edm - edx: - - application/vnd.novadigm.edx - ext: - - application/vnd.novadigm.ext - odc: - - application/vnd.oasis.opendocument.chart - otc: - - application/vnd.oasis.opendocument.chart-template - odb: - - application/vnd.oasis.opendocument.database - odf: - - application/vnd.oasis.opendocument.formula - odft: - - application/vnd.oasis.opendocument.formula-template - odg: - - application/vnd.oasis.opendocument.graphics - otg: - - application/vnd.oasis.opendocument.graphics-template - odi: - - application/vnd.oasis.opendocument.image - oti: - - application/vnd.oasis.opendocument.image-template - odp: - - application/vnd.oasis.opendocument.presentation - otp: - - application/vnd.oasis.opendocument.presentation-template - ods: - - application/vnd.oasis.opendocument.spreadsheet - ots: - - application/vnd.oasis.opendocument.spreadsheet-template - odt: - - application/vnd.oasis.opendocument.text - odm: - - application/vnd.oasis.opendocument.text-master - ott: - - application/vnd.oasis.opendocument.text-template - oth: - - application/vnd.oasis.opendocument.text-web - xo: - - application/vnd.olpc-sugar - dd2: - - application/vnd.oma.dd2+xml - oxt: - - application/vnd.openofficeorg.extension - pptx: - - application/vnd.openxmlformats-officedocument.presentationml.presentation - sldx: - - application/vnd.openxmlformats-officedocument.presentationml.slide - ppsx: - - application/vnd.openxmlformats-officedocument.presentationml.slideshow - potx: - - application/vnd.openxmlformats-officedocument.presentationml.template - xlsx: - - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - xltx: - - application/vnd.openxmlformats-officedocument.spreadsheetml.template - docx: - - application/vnd.openxmlformats-officedocument.wordprocessingml.document - dotx: - - application/vnd.openxmlformats-officedocument.wordprocessingml.template - mgp: - - application/vnd.osgeo.mapguide.package - dp: - - application/vnd.osgi.dp - esa: - - application/vnd.osgi.subsystem - pdb: - - application/vnd.palm - pqa: - - application/vnd.palm - oprc: - - application/vnd.palm - paw: - - application/vnd.pawaafile - str: - - application/vnd.pg.format - ei6: - - application/vnd.pg.osasli - efif: - - application/vnd.picsel - wg: - - application/vnd.pmi.widget - plf: - - application/vnd.pocketlearn - pbd: - - application/vnd.powerbuilder6 - box: - - application/vnd.previewsystems.box - mgz: - - application/vnd.proteus.magazine - qps: - - application/vnd.publishare-delta-tree - ptid: - - application/vnd.pvi.ptid1 - qxd: - - application/vnd.quark.quarkxpress - qxt: - - application/vnd.quark.quarkxpress - qwd: - - application/vnd.quark.quarkxpress - qwt: - - application/vnd.quark.quarkxpress - qxl: - - application/vnd.quark.quarkxpress - qxb: - - application/vnd.quark.quarkxpress - bed: - - application/vnd.realvnc.bed - mxl: - - application/vnd.recordare.musicxml - musicxml: - - application/vnd.recordare.musicxml+xml - cryptonote: - - application/vnd.rig.cryptonote - cod: - - application/vnd.rim.cod - rm: - - application/vnd.rn-realmedia - rmvb: - - application/vnd.rn-realmedia-vbr - link66: - - application/vnd.route66.link66+xml - st: - - application/vnd.sailingtracker.track - see: - - application/vnd.seemail - sema: - - application/vnd.sema - semd: - - application/vnd.semd - semf: - - application/vnd.semf - ifm: - - application/vnd.shana.informed.formdata - itp: - - application/vnd.shana.informed.formtemplate - iif: - - application/vnd.shana.informed.interchange - ipk: - - application/vnd.shana.informed.package - twd: - - application/vnd.simtech-mindmapper - twds: - - application/vnd.simtech-mindmapper - mmf: - - application/vnd.smaf - teacher: - - application/vnd.smart.teacher - sdkm: - - application/vnd.solent.sdkm+xml - sdkd: - - application/vnd.solent.sdkm+xml - dxp: - - application/vnd.spotfire.dxp - sfs: - - application/vnd.spotfire.sfs - sdc: - - application/vnd.stardivision.calc - sda: - - application/vnd.stardivision.draw - sdd: - - application/vnd.stardivision.impress - smf: - - application/vnd.stardivision.math - sdw: - - application/vnd.stardivision.writer - vor: - - application/vnd.stardivision.writer - sgl: - - application/vnd.stardivision.writer-global - smzip: - - application/vnd.stepmania.package - sm: - - application/vnd.stepmania.stepchart - sxc: - - application/vnd.sun.xml.calc - stc: - - application/vnd.sun.xml.calc.template - sxd: - - application/vnd.sun.xml.draw - std: - - application/vnd.sun.xml.draw.template - sxi: - - application/vnd.sun.xml.impress - sti: - - application/vnd.sun.xml.impress.template - sxm: - - application/vnd.sun.xml.math - sxw: - - application/vnd.sun.xml.writer - sxg: - - application/vnd.sun.xml.writer.global - stw: - - application/vnd.sun.xml.writer.template - sus: - - application/vnd.sus-calendar - susp: - - application/vnd.sus-calendar - svd: - - application/vnd.svd - sis: - - application/vnd.symbian.install - sisx: - - application/vnd.symbian.install - xsm: - - application/vnd.syncml+xml - bdm: - - application/vnd.syncml.dm+wbxml - xdm: - - application/vnd.syncml.dm+xml - tao: - - application/vnd.tao.intent-module-archive - pcap: - - application/vnd.tcpdump.pcap - cap: - - application/vnd.tcpdump.pcap - dmp: - - application/vnd.tcpdump.pcap - tmo: - - application/vnd.tmobile-livetv - tpt: - - application/vnd.trid.tpt - mxs: - - application/vnd.triscape.mxs - tra: - - application/vnd.trueapp - ufd: - - application/vnd.ufdl - ufdl: - - application/vnd.ufdl - utz: - - application/vnd.uiq.theme - umj: - - application/vnd.umajin - unityweb: - - application/vnd.unity - uoml: - - application/vnd.uoml+xml - vcx: - - application/vnd.vcx - vsd: - - application/vnd.visio - vst: - - application/vnd.visio - vss: - - application/vnd.visio - vsw: - - application/vnd.visio - vis: - - application/vnd.visionary - vsf: - - application/vnd.vsf - wbxml: - - application/vnd.wap.wbxml - wmlc: - - application/vnd.wap.wmlc - wmlsc: - - application/vnd.wap.wmlscriptc - wtb: - - application/vnd.webturbo - nbp: - - application/vnd.wolfram.player - wpd: - - application/vnd.wordperfect - wqd: - - application/vnd.wqd - stf: - - application/vnd.wt.stf - xar: - - application/vnd.xara - xfdl: - - application/vnd.xfdl - hvd: - - application/vnd.yamaha.hv-dic - hvs: - - application/vnd.yamaha.hv-script - hvp: - - application/vnd.yamaha.hv-voice - osf: - - application/vnd.yamaha.openscoreformat - osfpvg: - - application/vnd.yamaha.openscoreformat.osfpvg+xml - saf: - - application/vnd.yamaha.smaf-audio - spf: - - application/vnd.yamaha.smaf-phrase - cmp: - - application/vnd.yellowriver-custom-menu - zir: - - application/vnd.zul - zirz: - - application/vnd.zul - zaz: - - application/vnd.zzazz.deck+xml - vxml: - - application/voicexml+xml - wgt: - - application/widget - hlp: - - application/winhlp - wsdl: - - application/wsdl+xml - wspolicy: - - application/wspolicy+xml - 7z: - - application/x-7z-compressed - abw: - - application/x-abiword - ace: - - application/x-ace-compressed - dmg: - - application/x-apple-diskimage - aab: - - application/x-authorware-bin - x32: - - application/x-authorware-bin - u32: - - application/x-authorware-bin - vox: - - application/x-authorware-bin - aam: - - application/x-authorware-map - aas: - - application/x-authorware-seg - bcpio: - - application/x-bcpio - torrent: - - application/x-bittorrent - blb: - - application/x-blorb - blorb: - - application/x-blorb - bz: - - application/x-bzip - bz2: - - application/x-bzip2 - boz: - - application/x-bzip2 - cbr: - - application/x-cbr - cba: - - application/x-cbr - cbt: - - application/x-cbr - cbz: - - application/x-cbr - cb7: - - application/x-cbr - vcd: - - application/x-cdlink - cfs: - - application/x-cfs-compressed - chat: - - application/x-chat - pgn: - - application/x-chess-pgn - nsc: - - application/x-conference - cpio: - - application/x-cpio - csh: - - application/x-csh - deb: - - application/x-debian-package - udeb: - - application/x-debian-package - dgc: - - application/x-dgc-compressed - dir: - - application/x-director - dcr: - - application/x-director - dxr: - - application/x-director - cst: - - application/x-director - cct: - - application/x-director - cxt: - - application/x-director - w3d: - - application/x-director - fgd: - - application/x-director - swa: - - application/x-director - wad: - - application/x-doom - ncx: - - application/x-dtbncx+xml - dtb: - - application/x-dtbook+xml - res: - - application/x-dtbresource+xml - dvi: - - application/x-dvi - evy: - - application/x-envoy - eva: - - application/x-eva - bdf: - - application/x-font-bdf - gsf: - - application/x-font-ghostscript - psf: - - application/x-font-linux-psf - pcf: - - application/x-font-pcf - snf: - - application/x-font-snf - pfa: - - application/x-font-type1 - pfb: - - application/x-font-type1 - pfm: - - application/x-font-type1 - afm: - - application/x-font-type1 - arc: - - application/x-freearc - spl: - - application/x-futuresplash - gca: - - application/x-gca-compressed - ulx: - - application/x-glulx - gnumeric: - - application/x-gnumeric - gramps: - - application/x-gramps-xml - gtar: - - application/x-gtar - hdf: - - application/x-hdf - install: - - application/x-install-instructions - iso: - - application/x-iso9660-image - jnlp: - - application/x-java-jnlp-file - latex: - - application/x-latex - lzh: - - application/x-lzh-compressed - lha: - - application/x-lzh-compressed - mie: - - application/x-mie - prc: - - application/x-mobipocket-ebook - mobi: - - application/x-mobipocket-ebook - application: - - application/x-ms-application - lnk: - - application/x-ms-shortcut - wmd: - - application/x-ms-wmd - wmz: - - application/x-ms-wmz - - application/x-msmetafile - xbap: - - application/x-ms-xbap - mdb: - - application/x-msaccess - obd: - - application/x-msbinder - crd: - - application/x-mscardfile - clp: - - application/x-msclip - exe: - - application/x-msdownload - dll: - - application/x-msdownload - com: - - application/x-msdownload - bat: - - application/x-msdownload - msi: - - application/x-msdownload - mvb: - - application/x-msmediaview - m13: - - application/x-msmediaview - m14: - - application/x-msmediaview - wmf: - - application/x-msmetafile - emf: - - application/x-msmetafile - emz: - - application/x-msmetafile - mny: - - application/x-msmoney - pub: - - application/x-mspublisher - scd: - - application/x-msschedule - trm: - - application/x-msterminal - wri: - - application/x-mswrite - nc: - - application/x-netcdf - cdf: - - application/x-netcdf - nzb: - - application/x-nzb - p12: - - application/x-pkcs12 - pfx: - - application/x-pkcs12 - p7b: - - application/x-pkcs7-certificates - spc: - - application/x-pkcs7-certificates - p7r: - - application/x-pkcs7-certreqresp - rar: - - application/x-rar-compressed - ris: - - application/x-research-info-systems - sh: - - application/x-sh - shar: - - application/x-shar - swf: - - application/x-shockwave-flash - xap: - - application/x-silverlight-app - sql: - - application/x-sql - sit: - - application/x-stuffit - sitx: - - application/x-stuffitx - srt: - - application/x-subrip - sv4cpio: - - application/x-sv4cpio - sv4crc: - - application/x-sv4crc - t3: - - application/x-t3vm-image - gam: - - application/x-tads - tar: - - application/x-tar - tcl: - - application/x-tcl - tex: - - application/x-tex - tfm: - - application/x-tex-tfm - texinfo: - - application/x-texinfo - texi: - - application/x-texinfo - obj: - - application/x-tgif - ustar: - - application/x-ustar - src: - - application/x-wais-source - der: - - application/x-x509-ca-cert - crt: - - application/x-x509-ca-cert - fig: - - application/x-xfig - xlf: - - application/x-xliff+xml - xpi: - - application/x-xpinstall - xz: - - application/x-xz - z1: - - application/x-zmachine - z2: - - application/x-zmachine - z3: - - application/x-zmachine - z4: - - application/x-zmachine - z5: - - application/x-zmachine - z6: - - application/x-zmachine - z7: - - application/x-zmachine - z8: - - application/x-zmachine - xaml: - - application/xaml+xml - xdf: - - application/xcap-diff+xml - xenc: - - application/xenc+xml - xhtml: - - application/xhtml+xml - xht: - - application/xhtml+xml - xml: - - application/xml - xsl: - - application/xml - dtd: - - application/xml-dtd - xop: - - application/xop+xml - xpl: - - application/xproc+xml - xslt: - - application/xslt+xml - xspf: - - application/xspf+xml - mxml: - - application/xv+xml - xhvml: - - application/xv+xml - xvml: - - application/xv+xml - xvm: - - application/xv+xml - yang: - - application/yang - yin: - - application/yin+xml - adp: - - audio/adpcm - au: - - audio/basic - snd: - - audio/basic - mid: - - audio/midi - midi: - - audio/midi - kar: - - audio/midi - rmi: - - audio/midi - m4a: - - audio/mp4 - mp4a: - - audio/mp4 - oga: - - audio/ogg - ogg: - - audio/ogg - spx: - - audio/ogg - s3m: - - audio/s3m - sil: - - audio/silk - uva: - - audio/vnd.dece.audio - uvva: - - audio/vnd.dece.audio - eol: - - audio/vnd.digital-winds - dra: - - audio/vnd.dra - dts: - - audio/vnd.dts - dtshd: - - audio/vnd.dts.hd - lvp: - - audio/vnd.lucent.voice - pya: - - audio/vnd.ms-playready.media.pya - ecelp4800: - - audio/vnd.nuera.ecelp4800 - ecelp7470: - - audio/vnd.nuera.ecelp7470 - ecelp9600: - - audio/vnd.nuera.ecelp9600 - rip: - - audio/vnd.rip - weba: - - audio/webm - aac: - - audio/x-aac - aif: - - audio/x-aiff - aiff: - - audio/x-aiff - aifc: - - audio/x-aiff - caf: - - audio/x-caf - flac: - - audio/x-flac - mka: - - audio/x-matroska - m3u: - - audio/x-mpegurl - wax: - - audio/x-ms-wax - wma: - - audio/x-ms-wma - ram: - - audio/x-pn-realaudio - ra: - - audio/x-pn-realaudio - rmp: - - audio/x-pn-realaudio-plugin - wav: - - audio/x-wav - xm: - - audio/xm - cdx: - - chemical/x-cdx - cif: - - chemical/x-cif - cmdf: - - chemical/x-cmdf - cml: - - chemical/x-cml - csml: - - chemical/x-csml - xyz: - - chemical/x-xyz - woff: - - font/woff - woff2: - - font/woff2 - cgm: - - image/cgm - g3: - - image/g3fax - gif: - - image/gif - ief: - - image/ief - ktx: - - image/ktx - png: - - image/png - btif: - - image/prs.btif - sgi: - - image/sgi - svg: - - image/svg+xml - svgz: - - image/svg+xml - tiff: - - image/tiff - tif: - - image/tiff - psd: - - image/vnd.adobe.photoshop - uvi: - - image/vnd.dece.graphic - uvvi: - - image/vnd.dece.graphic - uvg: - - image/vnd.dece.graphic - uvvg: - - image/vnd.dece.graphic - djvu: - - image/vnd.djvu - djv: - - image/vnd.djvu - sub: - - image/vnd.dvb.subtitle - - text/vnd.dvb.subtitle - dwg: - - image/vnd.dwg - dxf: - - image/vnd.dxf - fbs: - - image/vnd.fastbidsheet - fpx: - - image/vnd.fpx - fst: - - image/vnd.fst - mmr: - - image/vnd.fujixerox.edmics-mmr - rlc: - - image/vnd.fujixerox.edmics-rlc - mdi: - - image/vnd.ms-modi - wdp: - - image/vnd.ms-photo - npx: - - image/vnd.net-fpx - wbmp: - - image/vnd.wap.wbmp - xif: - - image/vnd.xiff - webp: - - image/webp - 3ds: - - image/x-3ds - ras: - - image/x-cmu-raster - cmx: - - image/x-cmx - fh: - - image/x-freehand - fhc: - - image/x-freehand - fh4: - - image/x-freehand - fh5: - - image/x-freehand - fh7: - - image/x-freehand - ico: - - image/x-icon - sid: - - image/x-mrsid-image - pcx: - - image/x-pcx - pic: - - image/x-pict - pct: - - image/x-pict - pnm: - - image/x-portable-anymap - pbm: - - image/x-portable-bitmap - pgm: - - image/x-portable-graymap - ppm: - - image/x-portable-pixmap - rgb: - - image/x-rgb - tga: - - image/x-tga - xbm: - - image/x-xbitmap - xpm: - - image/x-xpixmap - xwd: - - image/x-xwindowdump - eml: - - message/rfc822 - mime: - - message/rfc822 - igs: - - model/iges - iges: - - model/iges - msh: - - model/mesh - mesh: - - model/mesh - silo: - - model/mesh - dae: - - model/vnd.collada+xml - dwf: - - model/vnd.dwf - gdl: - - model/vnd.gdl - gtw: - - model/vnd.gtw - mts: - - model/vnd.mts - vtu: - - model/vnd.vtu - wrl: - - model/vrml - vrml: - - model/vrml - x3db: - - model/x3d+binary - x3dbz: - - model/x3d+binary - x3dv: - - model/x3d+vrml - x3dvz: - - model/x3d+vrml - x3d: - - model/x3d+xml - x3dz: - - model/x3d+xml - appcache: - - text/cache-manifest - ics: - - text/calendar - ifb: - - text/calendar - css: - - text/css - csv: - - text/csv - html: - - text/html - htm: - - text/html - n3: - - text/n3 - txt: - - text/plain - text: - - text/plain - conf: - - text/plain - def: - - text/plain - list: - - text/plain - log: - - text/plain - in: - - text/plain - dsc: - - text/prs.lines.tag - rtx: - - text/richtext - sgml: - - text/sgml - sgm: - - text/sgml - tsv: - - text/tab-separated-values - t: - - text/troff - tr: - - text/troff - roff: - - text/troff - man: - - text/troff - me: - - text/troff - ms: - - text/troff - ttl: - - text/turtle - uri: - - text/uri-list - uris: - - text/uri-list - urls: - - text/uri-list - vcard: - - text/vcard - curl: - - text/vnd.curl - dcurl: - - text/vnd.curl.dcurl - mcurl: - - text/vnd.curl.mcurl - scurl: - - text/vnd.curl.scurl - fly: - - text/vnd.fly - flx: - - text/vnd.fmi.flexstor - gv: - - text/vnd.graphviz - 3dml: - - text/vnd.in3d.3dml - spot: - - text/vnd.in3d.spot - jad: - - text/vnd.sun.j2me.app-descriptor - wml: - - text/vnd.wap.wml - wmls: - - text/vnd.wap.wmlscript - s: - - text/x-asm - asm: - - text/x-asm - c: - - text/x-c - cc: - - text/x-c - cxx: - - text/x-c - cpp: - - text/x-c - h: - - text/x-c - hh: - - text/x-c - dic: - - text/x-c - f: - - text/x-fortran - for: - - text/x-fortran - f77: - - text/x-fortran - f90: - - text/x-fortran - java: - - text/x-java-source - nfo: - - text/x-nfo - opml: - - text/x-opml - p: - - text/x-pascal - pas: - - text/x-pascal - etx: - - text/x-setext - sfv: - - text/x-sfv - uu: - - text/x-uuencode - vcs: - - text/x-vcalendar - vcf: - - text/x-vcard - 3gp: - - video/3gpp - 3g2: - - video/3gpp2 - h261: - - video/h261 - h263: - - video/h263 - h264: - - video/h264 - jpgv: - - video/jpeg - jpm: - - video/jpm - jpgm: - - video/jpm - mj2: - - video/mj2 - mjp2: - - video/mj2 - mp4: - - video/mp4 - mp4v: - - video/mp4 - mpg4: - - video/mp4 - mpeg: - - video/mpeg - mpg: - - video/mpeg - mpe: - - video/mpeg - m1v: - - video/mpeg - m2v: - - video/mpeg - ogv: - - video/ogg - qt: - - video/quicktime - mov: - - video/quicktime - uvh: - - video/vnd.dece.hd - uvvh: - - video/vnd.dece.hd - uvm: - - video/vnd.dece.mobile - uvvm: - - video/vnd.dece.mobile - uvp: - - video/vnd.dece.pd - uvvp: - - video/vnd.dece.pd - uvs: - - video/vnd.dece.sd - uvvs: - - video/vnd.dece.sd - uvv: - - video/vnd.dece.video - uvvv: - - video/vnd.dece.video - dvb: - - video/vnd.dvb.file - fvt: - - video/vnd.fvt - mxu: - - video/vnd.mpegurl - m4u: - - video/vnd.mpegurl - pyv: - - video/vnd.ms-playready.media.pyv - uvu: - - video/vnd.uvvu.mp4 - uvvu: - - video/vnd.uvvu.mp4 - viv: - - video/vnd.vivo - webm: - - video/webm - f4v: - - video/x-f4v - fli: - - video/x-fli - flv: - - video/x-flv - m4v: - - video/x-m4v - mkv: - - video/x-matroska - mk3d: - - video/x-matroska - mks: - - video/x-matroska - mng: - - video/x-mng - asf: - - video/x-ms-asf - asx: - - video/x-ms-asf - vob: - - video/x-ms-vob - wm: - - video/x-ms-wm - wmv: - - video/x-ms-wmv - wmx: - - video/x-ms-wmx - wvx: - - video/x-ms-wvx - avi: - - video/x-msvideo - movie: - - video/x-sgi-movie - smv: - - video/x-smv - ice: - - x-conference/x-cooltalk + '123': + - application/vnd.lotus-1-2-3 + wof: + - application/font-woff + php: + - application/php + - application/x-httpd-php + - application/x-httpd-php-source + - application/x-php + - text/php + - text/x-php + otf: + - application/x-font-otf + - font/otf + ttf: + - application/x-font-ttf + - font/ttf + ttc: + - application/x-font-ttf + - font/collection + zip: + - application/x-gzip + - application/zip + - application/x-zip-compressed + amr: + - audio/amr + mp3: + - audio/mpeg + mpga: + - audio/mpeg + mp2: + - audio/mpeg + mp2a: + - audio/mpeg + m2a: + - audio/mpeg + m3a: + - audio/mpeg + jpg: + - image/jpeg + jpeg: + - image/jpeg + jpe: + - image/jpeg + bmp: + - image/x-ms-bmp + - image/bmp + ez: + - application/andrew-inset + aw: + - application/applixware + atom: + - application/atom+xml + atomcat: + - application/atomcat+xml + atomsvc: + - application/atomsvc+xml + ccxml: + - application/ccxml+xml + cdmia: + - application/cdmi-capability + cdmic: + - application/cdmi-container + cdmid: + - application/cdmi-domain + cdmio: + - application/cdmi-object + cdmiq: + - application/cdmi-queue + cu: + - application/cu-seeme + davmount: + - application/davmount+xml + dbk: + - application/docbook+xml + dssc: + - application/dssc+der + xdssc: + - application/dssc+xml + ecma: + - application/ecmascript + emma: + - application/emma+xml + epub: + - application/epub+zip + exi: + - application/exi + pfr: + - application/font-tdpfr + gml: + - application/gml+xml + gpx: + - application/gpx+xml + gxf: + - application/gxf + stk: + - application/hyperstudio + ink: + - application/inkml+xml + inkml: + - application/inkml+xml + ipfix: + - application/ipfix + jar: + - application/java-archive + ser: + - application/java-serialized-object + class: + - application/java-vm + js: + - application/javascript + json: + - application/json + jsonml: + - application/jsonml+json + lostxml: + - application/lost+xml + hqx: + - application/mac-binhex40 + cpt: + - application/mac-compactpro + mads: + - application/mads+xml + mrc: + - application/marc + mrcx: + - application/marcxml+xml + ma: + - application/mathematica + nb: + - application/mathematica + mb: + - application/mathematica + mathml: + - application/mathml+xml + mbox: + - application/mbox + mscml: + - application/mediaservercontrol+xml + metalink: + - application/metalink+xml + meta4: + - application/metalink4+xml + mets: + - application/mets+xml + mods: + - application/mods+xml + m21: + - application/mp21 + mp21: + - application/mp21 + mp4s: + - application/mp4 + doc: + - application/msword + dot: + - application/msword + mxf: + - application/mxf + bin: + - application/octet-stream + dms: + - application/octet-stream + lrf: + - application/octet-stream + mar: + - application/octet-stream + so: + - application/octet-stream + dist: + - application/octet-stream + distz: + - application/octet-stream + pkg: + - application/octet-stream + bpk: + - application/octet-stream + dump: + - application/octet-stream + elc: + - application/octet-stream + deploy: + - application/octet-stream + oda: + - application/oda + opf: + - application/oebps-package+xml + ogx: + - application/ogg + omdoc: + - application/omdoc+xml + onetoc: + - application/onenote + onetoc2: + - application/onenote + onetmp: + - application/onenote + onepkg: + - application/onenote + oxps: + - application/oxps + xer: + - application/patch-ops-error+xml + pdf: + - application/pdf + pgp: + - application/pgp-encrypted + asc: + - application/pgp-signature + sig: + - application/pgp-signature + prf: + - application/pics-rules + p10: + - application/pkcs10 + p7m: + - application/pkcs7-mime + p7c: + - application/pkcs7-mime + p7s: + - application/pkcs7-signature + p8: + - application/pkcs8 + ac: + - application/pkix-attr-cert + cer: + - application/pkix-cert + crl: + - application/pkix-crl + pkipath: + - application/pkix-pkipath + pki: + - application/pkixcmp + pls: + - application/pls+xml + ai: + - application/postscript + eps: + - application/postscript + ps: + - application/postscript + cww: + - application/prs.cww + pskcxml: + - application/pskc+xml + rdf: + - application/rdf+xml + rif: + - application/reginfo+xml + rnc: + - application/relax-ng-compact-syntax + rl: + - application/resource-lists+xml + rld: + - application/resource-lists-diff+xml + rs: + - application/rls-services+xml + gbr: + - application/rpki-ghostbusters + mft: + - application/rpki-manifest + roa: + - application/rpki-roa + rsd: + - application/rsd+xml + rss: + - application/rss+xml + rtf: + - application/rtf + sbml: + - application/sbml+xml + scq: + - application/scvp-cv-request + scs: + - application/scvp-cv-response + spq: + - application/scvp-vp-request + spp: + - application/scvp-vp-response + sdp: + - application/sdp + setpay: + - application/set-payment-initiation + setreg: + - application/set-registration-initiation + shf: + - application/shf+xml + smi: + - application/smil+xml + smil: + - application/smil+xml + rq: + - application/sparql-query + srx: + - application/sparql-results+xml + gram: + - application/srgs + grxml: + - application/srgs+xml + sru: + - application/sru+xml + ssdl: + - application/ssdl+xml + ssml: + - application/ssml+xml + tei: + - application/tei+xml + teicorpus: + - application/tei+xml + tfi: + - application/thraud+xml + tsd: + - application/timestamped-data + plb: + - application/vnd.3gpp.pic-bw-large + psb: + - application/vnd.3gpp.pic-bw-small + pvb: + - application/vnd.3gpp.pic-bw-var + tcap: + - application/vnd.3gpp2.tcap + pwn: + - application/vnd.3m.post-it-notes + aso: + - application/vnd.accpac.simply.aso + imp: + - application/vnd.accpac.simply.imp + acu: + - application/vnd.acucobol + atc: + - application/vnd.acucorp + acutc: + - application/vnd.acucorp + air: + - application/vnd.adobe.air-application-installer-package+zip + fcdt: + - application/vnd.adobe.formscentral.fcdt + fxp: + - application/vnd.adobe.fxp + fxpl: + - application/vnd.adobe.fxp + xdp: + - application/vnd.adobe.xdp+xml + xfdf: + - application/vnd.adobe.xfdf + ahead: + - application/vnd.ahead.space + azf: + - application/vnd.airzip.filesecure.azf + azs: + - application/vnd.airzip.filesecure.azs + azw: + - application/vnd.amazon.ebook + acc: + - application/vnd.americandynamics.acc + ami: + - application/vnd.amiga.ami + apk: + - application/vnd.android.package-archive + cii: + - application/vnd.anser-web-certificate-issue-initiation + fti: + - application/vnd.anser-web-funds-transfer-initiation + atx: + - application/vnd.antix.game-component + mpkg: + - application/vnd.apple.installer+xml + m3u8: + - application/vnd.apple.mpegurl + swi: + - application/vnd.aristanetworks.swi + iota: + - application/vnd.astraea-software.iota + aep: + - application/vnd.audiograph + mpm: + - application/vnd.blueice.multipass + bmi: + - application/vnd.bmi + rep: + - application/vnd.businessobjects + cdxml: + - application/vnd.chemdraw+xml + mmd: + - application/vnd.chipnuts.karaoke-mmd + cdy: + - application/vnd.cinderella + cla: + - application/vnd.claymore + rp9: + - application/vnd.cloanto.rp9 + c4g: + - application/vnd.clonk.c4group + c4d: + - application/vnd.clonk.c4group + c4f: + - application/vnd.clonk.c4group + c4p: + - application/vnd.clonk.c4group + c4u: + - application/vnd.clonk.c4group + c11amc: + - application/vnd.cluetrust.cartomobile-config + c11amz: + - application/vnd.cluetrust.cartomobile-config-pkg + csp: + - application/vnd.commonspace + cdbcmsg: + - application/vnd.contact.cmsg + cmc: + - application/vnd.cosmocaller + clkx: + - application/vnd.crick.clicker + clkk: + - application/vnd.crick.clicker.keyboard + clkp: + - application/vnd.crick.clicker.palette + clkt: + - application/vnd.crick.clicker.template + clkw: + - application/vnd.crick.clicker.wordbank + wbs: + - application/vnd.criticaltools.wbs+xml + pml: + - application/vnd.ctc-posml + ppd: + - application/vnd.cups-ppd + car: + - application/vnd.curl.car + pcurl: + - application/vnd.curl.pcurl + dart: + - application/vnd.dart + rdz: + - application/vnd.data-vision.rdz + uvf: + - application/vnd.dece.data + uvvf: + - application/vnd.dece.data + uvd: + - application/vnd.dece.data + uvvd: + - application/vnd.dece.data + uvt: + - application/vnd.dece.ttml+xml + uvvt: + - application/vnd.dece.ttml+xml + uvx: + - application/vnd.dece.unspecified + uvvx: + - application/vnd.dece.unspecified + uvz: + - application/vnd.dece.zip + uvvz: + - application/vnd.dece.zip + fe_launch: + - application/vnd.denovo.fcselayout-link + dna: + - application/vnd.dna + mlp: + - application/vnd.dolby.mlp + dpg: + - application/vnd.dpgraph + dfac: + - application/vnd.dreamfactory + kpxx: + - application/vnd.ds-keypoint + ait: + - application/vnd.dvb.ait + svc: + - application/vnd.dvb.service + geo: + - application/vnd.dynageo + mag: + - application/vnd.ecowin.chart + nml: + - application/vnd.enliven + esf: + - application/vnd.epson.esf + msf: + - application/vnd.epson.msf + qam: + - application/vnd.epson.quickanime + slt: + - application/vnd.epson.salt + ssf: + - application/vnd.epson.ssf + es3: + - application/vnd.eszigno3+xml + et3: + - application/vnd.eszigno3+xml + ez2: + - application/vnd.ezpix-album + ez3: + - application/vnd.ezpix-package + fdf: + - application/vnd.fdf + mseed: + - application/vnd.fdsn.mseed + seed: + - application/vnd.fdsn.seed + dataless: + - application/vnd.fdsn.seed + gph: + - application/vnd.flographit + ftc: + - application/vnd.fluxtime.clip + fm: + - application/vnd.framemaker + frame: + - application/vnd.framemaker + maker: + - application/vnd.framemaker + book: + - application/vnd.framemaker + fnc: + - application/vnd.frogans.fnc + ltf: + - application/vnd.frogans.ltf + fsc: + - application/vnd.fsc.weblaunch + oas: + - application/vnd.fujitsu.oasys + oa2: + - application/vnd.fujitsu.oasys2 + oa3: + - application/vnd.fujitsu.oasys3 + fg5: + - application/vnd.fujitsu.oasysgp + bh2: + - application/vnd.fujitsu.oasysprs + ddd: + - application/vnd.fujixerox.ddd + xdw: + - application/vnd.fujixerox.docuworks + xbd: + - application/vnd.fujixerox.docuworks.binder + fzs: + - application/vnd.fuzzysheet + txd: + - application/vnd.genomatix.tuxedo + ggb: + - application/vnd.geogebra.file + ggt: + - application/vnd.geogebra.tool + gex: + - application/vnd.geometry-explorer + gre: + - application/vnd.geometry-explorer + gxt: + - application/vnd.geonext + g2w: + - application/vnd.geoplan + g3w: + - application/vnd.geospace + gmx: + - application/vnd.gmx + kml: + - application/vnd.google-earth.kml+xml + kmz: + - application/vnd.google-earth.kmz + gqf: + - application/vnd.grafeq + gqs: + - application/vnd.grafeq + gac: + - application/vnd.groove-account + ghf: + - application/vnd.groove-help + gim: + - application/vnd.groove-identity-message + grv: + - application/vnd.groove-injector + gtm: + - application/vnd.groove-tool-message + tpl: + - application/vnd.groove-tool-template + vcg: + - application/vnd.groove-vcard + hal: + - application/vnd.hal+xml + zmm: + - application/vnd.handheld-entertainment+xml + hbci: + - application/vnd.hbci + les: + - application/vnd.hhe.lesson-player + hpgl: + - application/vnd.hp-hpgl + hpid: + - application/vnd.hp-hpid + hps: + - application/vnd.hp-hps + jlt: + - application/vnd.hp-jlyt + pcl: + - application/vnd.hp-pcl + pclxl: + - application/vnd.hp-pclxl + sfd-hdstx: + - application/vnd.hydrostatix.sof-data + mpy: + - application/vnd.ibm.minipay + afp: + - application/vnd.ibm.modcap + listafp: + - application/vnd.ibm.modcap + list3820: + - application/vnd.ibm.modcap + irm: + - application/vnd.ibm.rights-management + sc: + - application/vnd.ibm.secure-container + icc: + - application/vnd.iccprofile + icm: + - application/vnd.iccprofile + igl: + - application/vnd.igloader + ivp: + - application/vnd.immervision-ivp + ivu: + - application/vnd.immervision-ivu + igm: + - application/vnd.insors.igm + xpw: + - application/vnd.intercon.formnet + xpx: + - application/vnd.intercon.formnet + i2g: + - application/vnd.intergeo + qbo: + - application/vnd.intu.qbo + qfx: + - application/vnd.intu.qfx + rcprofile: + - application/vnd.ipunplugged.rcprofile + irp: + - application/vnd.irepository.package+xml + xpr: + - application/vnd.is-xpr + fcs: + - application/vnd.isac.fcs + jam: + - application/vnd.jam + rms: + - application/vnd.jcp.javame.midlet-rms + jisp: + - application/vnd.jisp + joda: + - application/vnd.joost.joda-archive + ktz: + - application/vnd.kahootz + ktr: + - application/vnd.kahootz + karbon: + - application/vnd.kde.karbon + chrt: + - application/vnd.kde.kchart + kfo: + - application/vnd.kde.kformula + flw: + - application/vnd.kde.kivio + kon: + - application/vnd.kde.kontour + kpr: + - application/vnd.kde.kpresenter + kpt: + - application/vnd.kde.kpresenter + ksp: + - application/vnd.kde.kspread + kwd: + - application/vnd.kde.kword + kwt: + - application/vnd.kde.kword + htke: + - application/vnd.kenameaapp + kia: + - application/vnd.kidspiration + kne: + - application/vnd.kinar + knp: + - application/vnd.kinar + skp: + - application/vnd.koan + skd: + - application/vnd.koan + skt: + - application/vnd.koan + skm: + - application/vnd.koan + sse: + - application/vnd.kodak-descriptor + lasxml: + - application/vnd.las.las+xml + lbd: + - application/vnd.llamagraphics.life-balance.desktop + lbe: + - application/vnd.llamagraphics.life-balance.exchange+xml + apr: + - application/vnd.lotus-approach + pre: + - application/vnd.lotus-freelance + nsf: + - application/vnd.lotus-notes + org: + - application/vnd.lotus-organizer + scm: + - application/vnd.lotus-screencam + lwp: + - application/vnd.lotus-wordpro + portpkg: + - application/vnd.macports.portpkg + mcd: + - application/vnd.mcd + mc1: + - application/vnd.medcalcdata + cdkey: + - application/vnd.mediastation.cdkey + mwf: + - application/vnd.mfer + mfm: + - application/vnd.mfmp + flo: + - application/vnd.micrografx.flo + igx: + - application/vnd.micrografx.igx + mif: + - application/vnd.mif + daf: + - application/vnd.mobius.daf + dis: + - application/vnd.mobius.dis + mbk: + - application/vnd.mobius.mbk + mqy: + - application/vnd.mobius.mqy + msl: + - application/vnd.mobius.msl + plc: + - application/vnd.mobius.plc + txf: + - application/vnd.mobius.txf + mpn: + - application/vnd.mophun.application + mpc: + - application/vnd.mophun.certificate + xul: + - application/vnd.mozilla.xul+xml + cil: + - application/vnd.ms-artgalry + cab: + - application/vnd.ms-cab-compressed + xls: + - application/vnd.ms-excel + xlm: + - application/vnd.ms-excel + xla: + - application/vnd.ms-excel + xlc: + - application/vnd.ms-excel + xlt: + - application/vnd.ms-excel + xlw: + - application/vnd.ms-excel + xlam: + - application/vnd.ms-excel.addin.macroenabled.12 + xlsb: + - application/vnd.ms-excel.sheet.binary.macroenabled.12 + xlsm: + - application/vnd.ms-excel.sheet.macroenabled.12 + xltm: + - application/vnd.ms-excel.template.macroenabled.12 + eot: + - application/vnd.ms-fontobject + chm: + - application/vnd.ms-htmlhelp + ims: + - application/vnd.ms-ims + lrm: + - application/vnd.ms-lrm + thmx: + - application/vnd.ms-officetheme + cat: + - application/vnd.ms-pki.seccat + stl: + - application/vnd.ms-pki.stl + ppt: + - application/vnd.ms-powerpoint + pps: + - application/vnd.ms-powerpoint + pot: + - application/vnd.ms-powerpoint + ppam: + - application/vnd.ms-powerpoint.addin.macroenabled.12 + pptm: + - application/vnd.ms-powerpoint.presentation.macroenabled.12 + sldm: + - application/vnd.ms-powerpoint.slide.macroenabled.12 + ppsm: + - application/vnd.ms-powerpoint.slideshow.macroenabled.12 + potm: + - application/vnd.ms-powerpoint.template.macroenabled.12 + mpp: + - application/vnd.ms-project + mpt: + - application/vnd.ms-project + docm: + - application/vnd.ms-word.document.macroenabled.12 + dotm: + - application/vnd.ms-word.template.macroenabled.12 + wps: + - application/vnd.ms-works + wks: + - application/vnd.ms-works + wcm: + - application/vnd.ms-works + wdb: + - application/vnd.ms-works + wpl: + - application/vnd.ms-wpl + xps: + - application/vnd.ms-xpsdocument + mseq: + - application/vnd.mseq + mus: + - application/vnd.musician + msty: + - application/vnd.muvee.style + taglet: + - application/vnd.mynfc + nlu: + - application/vnd.neurolanguage.nlu + ntf: + - application/vnd.nitf + nitf: + - application/vnd.nitf + nnd: + - application/vnd.noblenet-directory + nns: + - application/vnd.noblenet-sealer + nnw: + - application/vnd.noblenet-web + ngdat: + - application/vnd.nokia.n-gage.data + n-gage: + - application/vnd.nokia.n-gage.symbian.install + rpst: + - application/vnd.nokia.radio-preset + rpss: + - application/vnd.nokia.radio-presets + edm: + - application/vnd.novadigm.edm + edx: + - application/vnd.novadigm.edx + ext: + - application/vnd.novadigm.ext + odc: + - application/vnd.oasis.opendocument.chart + otc: + - application/vnd.oasis.opendocument.chart-template + odb: + - application/vnd.oasis.opendocument.database + odf: + - application/vnd.oasis.opendocument.formula + odft: + - application/vnd.oasis.opendocument.formula-template + odg: + - application/vnd.oasis.opendocument.graphics + otg: + - application/vnd.oasis.opendocument.graphics-template + odi: + - application/vnd.oasis.opendocument.image + oti: + - application/vnd.oasis.opendocument.image-template + odp: + - application/vnd.oasis.opendocument.presentation + otp: + - application/vnd.oasis.opendocument.presentation-template + ods: + - application/vnd.oasis.opendocument.spreadsheet + ots: + - application/vnd.oasis.opendocument.spreadsheet-template + odt: + - application/vnd.oasis.opendocument.text + odm: + - application/vnd.oasis.opendocument.text-master + ott: + - application/vnd.oasis.opendocument.text-template + oth: + - application/vnd.oasis.opendocument.text-web + xo: + - application/vnd.olpc-sugar + dd2: + - application/vnd.oma.dd2+xml + oxt: + - application/vnd.openofficeorg.extension + pptx: + - application/vnd.openxmlformats-officedocument.presentationml.presentation + sldx: + - application/vnd.openxmlformats-officedocument.presentationml.slide + ppsx: + - application/vnd.openxmlformats-officedocument.presentationml.slideshow + potx: + - application/vnd.openxmlformats-officedocument.presentationml.template + xlsx: + - application/vnd.openxmlformats-officedocument.spreadsheetml.sheet + xltx: + - application/vnd.openxmlformats-officedocument.spreadsheetml.template + docx: + - application/vnd.openxmlformats-officedocument.wordprocessingml.document + dotx: + - application/vnd.openxmlformats-officedocument.wordprocessingml.template + mgp: + - application/vnd.osgeo.mapguide.package + dp: + - application/vnd.osgi.dp + esa: + - application/vnd.osgi.subsystem + pdb: + - application/vnd.palm + pqa: + - application/vnd.palm + oprc: + - application/vnd.palm + paw: + - application/vnd.pawaafile + str: + - application/vnd.pg.format + ei6: + - application/vnd.pg.osasli + efif: + - application/vnd.picsel + wg: + - application/vnd.pmi.widget + plf: + - application/vnd.pocketlearn + pbd: + - application/vnd.powerbuilder6 + box: + - application/vnd.previewsystems.box + mgz: + - application/vnd.proteus.magazine + qps: + - application/vnd.publishare-delta-tree + ptid: + - application/vnd.pvi.ptid1 + qxd: + - application/vnd.quark.quarkxpress + qxt: + - application/vnd.quark.quarkxpress + qwd: + - application/vnd.quark.quarkxpress + qwt: + - application/vnd.quark.quarkxpress + qxl: + - application/vnd.quark.quarkxpress + qxb: + - application/vnd.quark.quarkxpress + bed: + - application/vnd.realvnc.bed + mxl: + - application/vnd.recordare.musicxml + musicxml: + - application/vnd.recordare.musicxml+xml + cryptonote: + - application/vnd.rig.cryptonote + cod: + - application/vnd.rim.cod + rm: + - application/vnd.rn-realmedia + rmvb: + - application/vnd.rn-realmedia-vbr + link66: + - application/vnd.route66.link66+xml + st: + - application/vnd.sailingtracker.track + see: + - application/vnd.seemail + sema: + - application/vnd.sema + semd: + - application/vnd.semd + semf: + - application/vnd.semf + ifm: + - application/vnd.shana.informed.formdata + itp: + - application/vnd.shana.informed.formtemplate + iif: + - application/vnd.shana.informed.interchange + ipk: + - application/vnd.shana.informed.package + twd: + - application/vnd.simtech-mindmapper + twds: + - application/vnd.simtech-mindmapper + mmf: + - application/vnd.smaf + teacher: + - application/vnd.smart.teacher + sdkm: + - application/vnd.solent.sdkm+xml + sdkd: + - application/vnd.solent.sdkm+xml + dxp: + - application/vnd.spotfire.dxp + sfs: + - application/vnd.spotfire.sfs + sdc: + - application/vnd.stardivision.calc + sda: + - application/vnd.stardivision.draw + sdd: + - application/vnd.stardivision.impress + smf: + - application/vnd.stardivision.math + sdw: + - application/vnd.stardivision.writer + vor: + - application/vnd.stardivision.writer + sgl: + - application/vnd.stardivision.writer-global + smzip: + - application/vnd.stepmania.package + sm: + - application/vnd.stepmania.stepchart + sxc: + - application/vnd.sun.xml.calc + stc: + - application/vnd.sun.xml.calc.template + sxd: + - application/vnd.sun.xml.draw + std: + - application/vnd.sun.xml.draw.template + sxi: + - application/vnd.sun.xml.impress + sti: + - application/vnd.sun.xml.impress.template + sxm: + - application/vnd.sun.xml.math + sxw: + - application/vnd.sun.xml.writer + sxg: + - application/vnd.sun.xml.writer.global + stw: + - application/vnd.sun.xml.writer.template + sus: + - application/vnd.sus-calendar + susp: + - application/vnd.sus-calendar + svd: + - application/vnd.svd + sis: + - application/vnd.symbian.install + sisx: + - application/vnd.symbian.install + xsm: + - application/vnd.syncml+xml + bdm: + - application/vnd.syncml.dm+wbxml + xdm: + - application/vnd.syncml.dm+xml + tao: + - application/vnd.tao.intent-module-archive + pcap: + - application/vnd.tcpdump.pcap + cap: + - application/vnd.tcpdump.pcap + dmp: + - application/vnd.tcpdump.pcap + tmo: + - application/vnd.tmobile-livetv + tpt: + - application/vnd.trid.tpt + mxs: + - application/vnd.triscape.mxs + tra: + - application/vnd.trueapp + ufd: + - application/vnd.ufdl + ufdl: + - application/vnd.ufdl + utz: + - application/vnd.uiq.theme + umj: + - application/vnd.umajin + unityweb: + - application/vnd.unity + uoml: + - application/vnd.uoml+xml + vcx: + - application/vnd.vcx + vsd: + - application/vnd.visio + vst: + - application/vnd.visio + vss: + - application/vnd.visio + vsw: + - application/vnd.visio + vis: + - application/vnd.visionary + vsf: + - application/vnd.vsf + wbxml: + - application/vnd.wap.wbxml + wmlc: + - application/vnd.wap.wmlc + wmlsc: + - application/vnd.wap.wmlscriptc + wtb: + - application/vnd.webturbo + nbp: + - application/vnd.wolfram.player + wpd: + - application/vnd.wordperfect + wqd: + - application/vnd.wqd + stf: + - application/vnd.wt.stf + xar: + - application/vnd.xara + xfdl: + - application/vnd.xfdl + hvd: + - application/vnd.yamaha.hv-dic + hvs: + - application/vnd.yamaha.hv-script + hvp: + - application/vnd.yamaha.hv-voice + osf: + - application/vnd.yamaha.openscoreformat + osfpvg: + - application/vnd.yamaha.openscoreformat.osfpvg+xml + saf: + - application/vnd.yamaha.smaf-audio + spf: + - application/vnd.yamaha.smaf-phrase + cmp: + - application/vnd.yellowriver-custom-menu + zir: + - application/vnd.zul + zirz: + - application/vnd.zul + zaz: + - application/vnd.zzazz.deck+xml + vxml: + - application/voicexml+xml + wgt: + - application/widget + hlp: + - application/winhlp + wsdl: + - application/wsdl+xml + wspolicy: + - application/wspolicy+xml + 7z: + - application/x-7z-compressed + abw: + - application/x-abiword + ace: + - application/x-ace-compressed + dmg: + - application/x-apple-diskimage + aab: + - application/x-authorware-bin + x32: + - application/x-authorware-bin + u32: + - application/x-authorware-bin + vox: + - application/x-authorware-bin + aam: + - application/x-authorware-map + aas: + - application/x-authorware-seg + bcpio: + - application/x-bcpio + torrent: + - application/x-bittorrent + blb: + - application/x-blorb + blorb: + - application/x-blorb + bz: + - application/x-bzip + bz2: + - application/x-bzip2 + boz: + - application/x-bzip2 + cbr: + - application/x-cbr + cba: + - application/x-cbr + cbt: + - application/x-cbr + cbz: + - application/x-cbr + cb7: + - application/x-cbr + vcd: + - application/x-cdlink + cfs: + - application/x-cfs-compressed + chat: + - application/x-chat + pgn: + - application/x-chess-pgn + nsc: + - application/x-conference + cpio: + - application/x-cpio + csh: + - application/x-csh + deb: + - application/x-debian-package + udeb: + - application/x-debian-package + dgc: + - application/x-dgc-compressed + dir: + - application/x-director + dcr: + - application/x-director + dxr: + - application/x-director + cst: + - application/x-director + cct: + - application/x-director + cxt: + - application/x-director + w3d: + - application/x-director + fgd: + - application/x-director + swa: + - application/x-director + wad: + - application/x-doom + ncx: + - application/x-dtbncx+xml + dtb: + - application/x-dtbook+xml + res: + - application/x-dtbresource+xml + dvi: + - application/x-dvi + evy: + - application/x-envoy + eva: + - application/x-eva + bdf: + - application/x-font-bdf + gsf: + - application/x-font-ghostscript + psf: + - application/x-font-linux-psf + pcf: + - application/x-font-pcf + snf: + - application/x-font-snf + pfa: + - application/x-font-type1 + pfb: + - application/x-font-type1 + pfm: + - application/x-font-type1 + afm: + - application/x-font-type1 + arc: + - application/x-freearc + spl: + - application/x-futuresplash + gca: + - application/x-gca-compressed + ulx: + - application/x-glulx + gnumeric: + - application/x-gnumeric + gramps: + - application/x-gramps-xml + gtar: + - application/x-gtar + hdf: + - application/x-hdf + install: + - application/x-install-instructions + iso: + - application/x-iso9660-image + jnlp: + - application/x-java-jnlp-file + latex: + - application/x-latex + lzh: + - application/x-lzh-compressed + lha: + - application/x-lzh-compressed + mie: + - application/x-mie + prc: + - application/x-mobipocket-ebook + mobi: + - application/x-mobipocket-ebook + application: + - application/x-ms-application + lnk: + - application/x-ms-shortcut + wmd: + - application/x-ms-wmd + wmz: + - application/x-ms-wmz + - application/x-msmetafile + xbap: + - application/x-ms-xbap + mdb: + - application/x-msaccess + obd: + - application/x-msbinder + crd: + - application/x-mscardfile + clp: + - application/x-msclip + exe: + - application/x-msdownload + dll: + - application/x-msdownload + com: + - application/x-msdownload + bat: + - application/x-msdownload + msi: + - application/x-msdownload + mvb: + - application/x-msmediaview + m13: + - application/x-msmediaview + m14: + - application/x-msmediaview + wmf: + - application/x-msmetafile + emf: + - application/x-msmetafile + emz: + - application/x-msmetafile + mny: + - application/x-msmoney + pub: + - application/x-mspublisher + scd: + - application/x-msschedule + trm: + - application/x-msterminal + wri: + - application/x-mswrite + nc: + - application/x-netcdf + cdf: + - application/x-netcdf + nzb: + - application/x-nzb + p12: + - application/x-pkcs12 + pfx: + - application/x-pkcs12 + p7b: + - application/x-pkcs7-certificates + spc: + - application/x-pkcs7-certificates + p7r: + - application/x-pkcs7-certreqresp + rar: + - application/x-rar-compressed + ris: + - application/x-research-info-systems + sh: + - application/x-sh + shar: + - application/x-shar + swf: + - application/x-shockwave-flash + xap: + - application/x-silverlight-app + sql: + - application/x-sql + sit: + - application/x-stuffit + sitx: + - application/x-stuffitx + srt: + - application/x-subrip + sv4cpio: + - application/x-sv4cpio + sv4crc: + - application/x-sv4crc + t3: + - application/x-t3vm-image + gam: + - application/x-tads + tar: + - application/x-tar + tcl: + - application/x-tcl + tex: + - application/x-tex + tfm: + - application/x-tex-tfm + texinfo: + - application/x-texinfo + texi: + - application/x-texinfo + obj: + - application/x-tgif + ustar: + - application/x-ustar + src: + - application/x-wais-source + der: + - application/x-x509-ca-cert + crt: + - application/x-x509-ca-cert + fig: + - application/x-xfig + xlf: + - application/x-xliff+xml + xpi: + - application/x-xpinstall + xz: + - application/x-xz + z1: + - application/x-zmachine + z2: + - application/x-zmachine + z3: + - application/x-zmachine + z4: + - application/x-zmachine + z5: + - application/x-zmachine + z6: + - application/x-zmachine + z7: + - application/x-zmachine + z8: + - application/x-zmachine + xaml: + - application/xaml+xml + xdf: + - application/xcap-diff+xml + xenc: + - application/xenc+xml + xhtml: + - application/xhtml+xml + xht: + - application/xhtml+xml + xml: + - application/xml + xsl: + - application/xml + dtd: + - application/xml-dtd + xop: + - application/xop+xml + xpl: + - application/xproc+xml + xslt: + - application/xslt+xml + xspf: + - application/xspf+xml + mxml: + - application/xv+xml + xhvml: + - application/xv+xml + xvml: + - application/xv+xml + xvm: + - application/xv+xml + yang: + - application/yang + yin: + - application/yin+xml + adp: + - audio/adpcm + au: + - audio/basic + snd: + - audio/basic + mid: + - audio/midi + midi: + - audio/midi + kar: + - audio/midi + rmi: + - audio/midi + m4a: + - audio/mp4 + mp4a: + - audio/mp4 + oga: + - audio/ogg + ogg: + - audio/ogg + spx: + - audio/ogg + s3m: + - audio/s3m + sil: + - audio/silk + uva: + - audio/vnd.dece.audio + uvva: + - audio/vnd.dece.audio + eol: + - audio/vnd.digital-winds + dra: + - audio/vnd.dra + dts: + - audio/vnd.dts + dtshd: + - audio/vnd.dts.hd + lvp: + - audio/vnd.lucent.voice + pya: + - audio/vnd.ms-playready.media.pya + ecelp4800: + - audio/vnd.nuera.ecelp4800 + ecelp7470: + - audio/vnd.nuera.ecelp7470 + ecelp9600: + - audio/vnd.nuera.ecelp9600 + rip: + - audio/vnd.rip + weba: + - audio/webm + aac: + - audio/x-aac + aif: + - audio/x-aiff + aiff: + - audio/x-aiff + aifc: + - audio/x-aiff + caf: + - audio/x-caf + flac: + - audio/x-flac + mka: + - audio/x-matroska + m3u: + - audio/x-mpegurl + wax: + - audio/x-ms-wax + wma: + - audio/x-ms-wma + ram: + - audio/x-pn-realaudio + ra: + - audio/x-pn-realaudio + rmp: + - audio/x-pn-realaudio-plugin + wav: + - audio/x-wav + xm: + - audio/xm + cdx: + - chemical/x-cdx + cif: + - chemical/x-cif + cmdf: + - chemical/x-cmdf + cml: + - chemical/x-cml + csml: + - chemical/x-csml + xyz: + - chemical/x-xyz + woff: + - font/woff + woff2: + - font/woff2 + image: + - image/avif + cgm: + - image/cgm + g3: + - image/g3fax + gif: + - image/gif + ief: + - image/ief + ktx: + - image/ktx + png: + - image/png + btif: + - image/prs.btif + sgi: + - image/sgi + svg: + - image/svg+xml + svgz: + - image/svg+xml + tiff: + - image/tiff + tif: + - image/tiff + psd: + - image/vnd.adobe.photoshop + uvi: + - image/vnd.dece.graphic + uvvi: + - image/vnd.dece.graphic + uvg: + - image/vnd.dece.graphic + uvvg: + - image/vnd.dece.graphic + djvu: + - image/vnd.djvu + djv: + - image/vnd.djvu + sub: + - image/vnd.dvb.subtitle + - text/vnd.dvb.subtitle + dwg: + - image/vnd.dwg + dxf: + - image/vnd.dxf + fbs: + - image/vnd.fastbidsheet + fpx: + - image/vnd.fpx + fst: + - image/vnd.fst + mmr: + - image/vnd.fujixerox.edmics-mmr + rlc: + - image/vnd.fujixerox.edmics-rlc + mdi: + - image/vnd.ms-modi + wdp: + - image/vnd.ms-photo + npx: + - image/vnd.net-fpx + wbmp: + - image/vnd.wap.wbmp + xif: + - image/vnd.xiff + webp: + - image/webp + 3ds: + - image/x-3ds + ras: + - image/x-cmu-raster + cmx: + - image/x-cmx + fh: + - image/x-freehand + fhc: + - image/x-freehand + fh4: + - image/x-freehand + fh5: + - image/x-freehand + fh7: + - image/x-freehand + ico: + - image/x-icon + sid: + - image/x-mrsid-image + pcx: + - image/x-pcx + pic: + - image/x-pict + pct: + - image/x-pict + pnm: + - image/x-portable-anymap + pbm: + - image/x-portable-bitmap + pgm: + - image/x-portable-graymap + ppm: + - image/x-portable-pixmap + rgb: + - image/x-rgb + tga: + - image/x-tga + xbm: + - image/x-xbitmap + xpm: + - image/x-xpixmap + xwd: + - image/x-xwindowdump + eml: + - message/rfc822 + mime: + - message/rfc822 + igs: + - model/iges + iges: + - model/iges + msh: + - model/mesh + mesh: + - model/mesh + silo: + - model/mesh + dae: + - model/vnd.collada+xml + dwf: + - model/vnd.dwf + gdl: + - model/vnd.gdl + gtw: + - model/vnd.gtw + mts: + - model/vnd.mts + vtu: + - model/vnd.vtu + wrl: + - model/vrml + vrml: + - model/vrml + x3db: + - model/x3d+binary + x3dbz: + - model/x3d+binary + x3dv: + - model/x3d+vrml + x3dvz: + - model/x3d+vrml + x3d: + - model/x3d+xml + x3dz: + - model/x3d+xml + appcache: + - text/cache-manifest + ics: + - text/calendar + ifb: + - text/calendar + css: + - text/css + csv: + - text/csv + html: + - text/html + htm: + - text/html + n3: + - text/n3 + txt: + - text/plain + text: + - text/plain + conf: + - text/plain + def: + - text/plain + list: + - text/plain + log: + - text/plain + in: + - text/plain + dsc: + - text/prs.lines.tag + rtx: + - text/richtext + sgml: + - text/sgml + sgm: + - text/sgml + tsv: + - text/tab-separated-values + t: + - text/troff + tr: + - text/troff + roff: + - text/troff + man: + - text/troff + me: + - text/troff + ms: + - text/troff + ttl: + - text/turtle + uri: + - text/uri-list + uris: + - text/uri-list + urls: + - text/uri-list + vcard: + - text/vcard + curl: + - text/vnd.curl + dcurl: + - text/vnd.curl.dcurl + mcurl: + - text/vnd.curl.mcurl + scurl: + - text/vnd.curl.scurl + fly: + - text/vnd.fly + flx: + - text/vnd.fmi.flexstor + gv: + - text/vnd.graphviz + 3dml: + - text/vnd.in3d.3dml + spot: + - text/vnd.in3d.spot + jad: + - text/vnd.sun.j2me.app-descriptor + wml: + - text/vnd.wap.wml + wmls: + - text/vnd.wap.wmlscript + s: + - text/x-asm + asm: + - text/x-asm + c: + - text/x-c + cc: + - text/x-c + cxx: + - text/x-c + cpp: + - text/x-c + h: + - text/x-c + hh: + - text/x-c + dic: + - text/x-c + f: + - text/x-fortran + for: + - text/x-fortran + f77: + - text/x-fortran + f90: + - text/x-fortran + java: + - text/x-java-source + nfo: + - text/x-nfo + opml: + - text/x-opml + p: + - text/x-pascal + pas: + - text/x-pascal + etx: + - text/x-setext + sfv: + - text/x-sfv + uu: + - text/x-uuencode + vcs: + - text/x-vcalendar + vcf: + - text/x-vcard + 3gp: + - video/3gpp + 3g2: + - video/3gpp2 + h261: + - video/h261 + h263: + - video/h263 + h264: + - video/h264 + jpgv: + - video/jpeg + jpm: + - video/jpm + jpgm: + - video/jpm + mj2: + - video/mj2 + mjp2: + - video/mj2 + mp4: + - video/mp4 + mp4v: + - video/mp4 + mpg4: + - video/mp4 + mpeg: + - video/mpeg + mpg: + - video/mpeg + mpe: + - video/mpeg + m1v: + - video/mpeg + m2v: + - video/mpeg + ogv: + - video/ogg + qt: + - video/quicktime + mov: + - video/quicktime + uvh: + - video/vnd.dece.hd + uvvh: + - video/vnd.dece.hd + uvm: + - video/vnd.dece.mobile + uvvm: + - video/vnd.dece.mobile + uvp: + - video/vnd.dece.pd + uvvp: + - video/vnd.dece.pd + uvs: + - video/vnd.dece.sd + uvvs: + - video/vnd.dece.sd + uvv: + - video/vnd.dece.video + uvvv: + - video/vnd.dece.video + dvb: + - video/vnd.dvb.file + fvt: + - video/vnd.fvt + mxu: + - video/vnd.mpegurl + m4u: + - video/vnd.mpegurl + pyv: + - video/vnd.ms-playready.media.pyv + uvu: + - video/vnd.uvvu.mp4 + uvvu: + - video/vnd.uvvu.mp4 + viv: + - video/vnd.vivo + webm: + - video/webm + f4v: + - video/x-f4v + fli: + - video/x-fli + flv: + - video/x-flv + m4v: + - video/x-m4v + mkv: + - video/x-matroska + mk3d: + - video/x-matroska + mks: + - video/x-matroska + mng: + - video/x-mng + asf: + - video/x-ms-asf + asx: + - video/x-ms-asf + vob: + - video/x-ms-vob + wm: + - video/x-ms-wm + wmv: + - video/x-ms-wmv + wmx: + - video/x-ms-wmx + wvx: + - video/x-ms-wvx + avi: + - video/x-msvideo + movie: + - video/x-sgi-movie + smv: + - video/x-smv + ice: + - x-conference/x-cooltalk diff --git a/system/config/system.yaml b/system/config/system.yaml index 1280f7d136..ec88a7a55b 100644 --- a/system/config/system.yaml +++ b/system/config/system.yaml @@ -93,13 +93,13 @@ cache: enabled: true # Set to true to enable caching check: method: file # Method to check for updates in pages: file|folder|hash|none - driver: auto # One of: auto|file|apcu|memcache|wincache + driver: auto # One of: auto|file|apcu|memcached|redis prefix: 'g' # Cache prefix string (prevents cache conflicts) purge_at: '0 4 * * *' # How often to purge old file cache (using new scheduler) clear_at: '0 3 * * *' # How often to clear cache (using new scheduler) clear_job_type: 'standard' # Type to clear when processing the scheduled clear job `standard`|`all` clear_images_by_default: false # By default grav does not include processed images in cache clear, this can be enabled - cli_compatibility: false # Ensures only non-volatile drivers are used (file, redis, memcache, etc.) + cli_compatibility: false # Ensures only non-volatile drivers are used (file, redis, memcached, etc.) lifetime: 604800 # Lifetime of cached data in seconds (0 = infinite) gzip: false # GZip compress the page output allow_webserver_gzip: false # If true, `content-encoding: identity` but connection isn't closed before `onShutDown()` event @@ -117,7 +117,6 @@ twig: undefined_filters: true # Allow undefined filters safe_functions: [] # List of PHP functions which are allowed to be used as Twig functions safe_filters: [] # List of PHP functions which are allowed to be used as Twig filters - umask_fix: false # By default Twig creates cached files as 755, fix switches this to 775 assets: # Configuration for Assets Manager (JS, CSS) css_pipeline: false # The CSS pipeline is the unification of multiple CSS resources into one file diff --git a/system/defines.php b/system/defines.php index c3e1cdd65b..ed67862e0b 100644 --- a/system/defines.php +++ b/system/defines.php @@ -9,13 +9,13 @@ // Some standard defines define('GRAV', true); -define('GRAV_VERSION', '1.7.47'); +define('GRAV_VERSION', '1.8.0-beta.1'); define('GRAV_SCHEMA', '1.7.0_2020-11-20_1'); -define('GRAV_TESTING', false); +define('GRAV_TESTING', true); // PHP minimum requirement if (!defined('GRAV_PHP_MIN')) { - define('GRAV_PHP_MIN', '7.3.6'); + define('GRAV_PHP_MIN', '8.2.0'); } // Directory separator diff --git a/system/src/Doctrine/Common/Cache/FilesystemCache.php b/system/src/Doctrine/Common/Cache/FilesystemCache.php new file mode 100644 index 0000000000..5c6845fb09 --- /dev/null +++ b/system/src/Doctrine/Common/Cache/FilesystemCache.php @@ -0,0 +1,93 @@ +pool = new FilesystemAdapter('', 0, $directory); + } + + /** + * {@inheritdoc} + */ + protected function doFetch($id) + { + $item = $this->pool->getItem(rawurlencode($id)); + + return $item->isHit() ? $item->get() : false; + } + + /** + * {@inheritdoc} + * + * @return bool + */ + protected function doContains($id) + { + return $this->pool->hasItem(rawurlencode($id)); + } + + /** + * {@inheritdoc} + * + * @return bool + */ + protected function doSave($id, $data, $lifeTime = 0) + { + $item = $this->pool->getItem(rawurlencode($id)); + + if (0 < $lifeTime) { + $item->expiresAfter($lifeTime); + } + + return $this->pool->save($item->set($data)); + } + + /** + * {@inheritdoc} + * + * @return bool + */ + protected function doDelete($id) + { + return $this->pool->deleteItem(rawurlencode($id)); + } + + /** + * {@inheritdoc} + * + * @return bool + */ + protected function doFlush() + { + return $this->pool->clear(); + } + + /** + * {@inheritdoc} + * + * @return array|null + */ + protected function doGetStats() + { + return null; + } + +} diff --git a/system/src/Grav/Common/Backup/Backups.php b/system/src/Grav/Common/Backup/Backups.php index dd2cf379c9..d9a1531a6a 100644 --- a/system/src/Grav/Common/Backup/Backups.php +++ b/system/src/Grav/Common/Backup/Backups.php @@ -194,7 +194,7 @@ public static function getAvailableBackups($force = false) * @param callable|null $status * @return string|null */ - public static function backup($id = 0, callable $status = null) + public static function backup($id = 0, ?callable $status = null) { $grav = Grav::instance(); diff --git a/system/src/Grav/Common/Cache.php b/system/src/Grav/Common/Cache.php index acb68e0da7..4d70089ca7 100644 --- a/system/src/Grav/Common/Cache.php +++ b/system/src/Grav/Common/Cache.php @@ -10,7 +10,8 @@ namespace Grav\Common; use DirectoryIterator; -use \Doctrine\Common\Cache as DoctrineCache; +use Doctrine\Common\Cache\CacheProvider; +use Doctrine\Common\Cache\Psr6\DoctrineProvider; use Exception; use Grav\Common\Config\Config; use Grav\Common\Filesystem\Folder; @@ -18,6 +19,12 @@ use LogicException; use Psr\SimpleCache\CacheInterface; use RocketTheme\Toolbox\Event\Event; +use Symfony\Component\Cache\Adapter\AdapterInterface; +use Symfony\Component\Cache\Adapter\ApcuAdapter; +use Symfony\Component\Cache\Adapter\FilesystemAdapter; +use Symfony\Component\Cache\Adapter\MemcachedAdapter; +use Symfony\Component\Cache\Adapter\RedisAdapter; +use Symfony\Component\Cache\Psr16Cache; use Symfony\Component\EventDispatcher\EventDispatcher; use function dirname; use function extension_loaded; @@ -27,12 +34,11 @@ /** * The GravCache object is used throughout Grav to store and retrieve cached data. - * It uses DoctrineCache library and supports a variety of caching mechanisms. Those include: + * It uses Symfony library (adding backward compatibility to Doctrine Cache) and supports a variety of caching mechanisms. Those include: * * APCu * RedisCache - * MemCache - * MemCacheD + * MemCached * FileSystem */ class Cache extends Getters @@ -49,7 +55,10 @@ class Cache extends Getters /** @var Config $config */ protected $config; - /** @var DoctrineCache\CacheProvider */ + /** @var AdapterInterface */ + protected $adapter; + + /** @var CacheProvider */ protected $driver; /** @var CacheInterface */ @@ -70,6 +79,7 @@ class Cache extends Getters protected static $standard_remove = [ 'cache://twig/', 'cache://doctrine/', + 'cache://grav/', 'cache://compiled/', 'cache://clockwork/', 'cache://validated-', @@ -80,6 +90,7 @@ class Cache extends Getters protected static $standard_remove_no_images = [ 'cache://twig/', 'cache://doctrine/', + 'cache://grav/', 'cache://compiled/', 'cache://clockwork/', 'cache://validated-', @@ -142,10 +153,10 @@ public function init(Grav $grav) // Cache key allows us to invalidate all cache on configuration changes. $this->key = ($prefix ?: 'g') . '-' . $uniqueness; - $this->cache_dir = $grav['locator']->findResource('cache://doctrine/' . $uniqueness, true, true); + $this->cache_dir = $grav['locator']->findResource('cache://grav/' . $uniqueness, true, true); $this->driver_setting = $this->config->get('system.cache.driver'); - $this->driver = $this->getCacheDriver(); - $this->driver->setNamespace($this->key); + $this->adapter = $this->getCacheAdapter(); + $this->driver = $this->getCacheDriver($this->adapter); /** @var EventDispatcher $dispatcher */ $dispatcher = Grav::instance()['events']; @@ -158,12 +169,7 @@ public function init(Grav $grav) public function getSimpleCache() { if (null === $this->simpleCache) { - $cache = new \Grav\Framework\Cache\Adapter\DoctrineCache($this->driver, '', $this->getLifetime()); - - // Disable cache key validation. - $cache->setValidation(false); - - $this->simpleCache = $cache; + $this->simpleCache = new Psr16Cache($this->adapter); } return $this->simpleCache; @@ -229,53 +235,42 @@ public function getCacheStatus() * If there is no config option for $driver in the config, or it's set to 'auto', it will * pick the best option based on which cache extensions are installed. * - * @return DoctrineCache\CacheProvider The cache driver to use + * @param string|null $namespace + * @param int|null $defaultLifetime + * @return AdapterInterface The cache driver to use + * @throws \RedisException + * @throws \Symfony\Component\Cache\Exception\CacheException */ - public function getCacheDriver() + public function getCacheAdapter(?string $namespace = null, ?int $defaultLifetime = null): AdapterInterface { - $setting = $this->driver_setting; + $setting = $this->driver_setting ?? 'auto'; $driver_name = 'file'; + if (in_array($setting, ['apc', 'xcache', 'wincache', 'memcache'], true)) { + throw new LogicException(sprintf('Cache driver for %s has been removed, use auto, file, apcu or memcached instead!', $setting)); + } + // CLI compatibility requires a non-volatile cache driver - if ($this->config->get('system.cache.cli_compatibility') && ( - $setting === 'auto' || $this->isVolatileDriver($setting))) { + if ($this->config->get('system.cache.cli_compatibility') && ($setting === 'auto' || $this->isVolatileDriver($setting))) { $setting = $driver_name; } - if (!$setting || $setting === 'auto') { + if ($setting === 'auto' || $this->isVolatileDriver($setting)) { if (extension_loaded('apcu')) { $driver_name = 'apcu'; - } elseif (extension_loaded('wincache')) { - $driver_name = 'wincache'; } } else { $driver_name = $setting; } $this->driver_name = $driver_name; + $namespace = $namespace ?? $this->key; + $defaultLifetime = $defaultLifetime ?? 0; switch ($driver_name) { case 'apc': case 'apcu': - $driver = new DoctrineCache\ApcuCache(); - break; - - case 'wincache': - $driver = new DoctrineCache\WinCacheCache(); - break; - - case 'memcache': - if (extension_loaded('memcache')) { - $memcache = new \Memcache(); - $memcache->connect( - $this->config->get('system.cache.memcache.server', 'localhost'), - $this->config->get('system.cache.memcache.port', 11211) - ); - $driver = new DoctrineCache\MemcacheCache(); - $driver->setMemcache($memcache); - } else { - throw new LogicException('Memcache PHP extension has not been installed'); - } + $adapter = new ApcuAdapter($namespace, $defaultLifetime); break; case 'memcached': @@ -285,8 +280,7 @@ public function getCacheDriver() $this->config->get('system.cache.memcached.server', 'localhost'), $this->config->get('system.cache.memcached.port', 11211) ); - $driver = new DoctrineCache\MemcachedCache(); - $driver->setMemcached($memcached); + $adapter = new MemcachedAdapter($memcached, $namespace, $defaultLifetime); } else { throw new LogicException('Memcached PHP extension has not been installed'); } @@ -318,19 +312,39 @@ public function getCacheDriver() throw new \RedisException('Could not select alternate Redis database ID'); } - $driver = new DoctrineCache\RedisCache(); - $driver->setRedis($redis); + $adapter = new RedisAdapter($redis, $namespace, $defaultLifetime); } else { throw new LogicException('Redis PHP extension has not been installed'); } break; default: - $driver = new DoctrineCache\FilesystemCache($this->cache_dir); + $adapter = new FilesystemAdapter($namespace, $defaultLifetime, $this->cache_dir); break; } - return $driver; + return $adapter; + } + + /** + * Automatically picks the cache mechanism to use. If you pick one manually it will use that + * If there is no config option for $driver in the config, or it's set to 'auto', it will + * pick the best option based on which cache extensions are installed. + * + * @return CacheProvider The cache driver to use + */ + public function getCacheDriver(?AdapterInterface $adapter = null) + { + if (null === $adapter) { + $adapter = $this->getCacheAdapter(); + } + + $cache = DoctrineProvider::wrap($adapter); + if (!$cache instanceof CacheProvider) { + throw new \RuntimeException('Internal error'); + } + + return $cache; } /** @@ -618,7 +632,7 @@ public function getDriverSetting() */ public function isVolatileDriver($setting) { - return in_array($setting, ['apc', 'apcu', 'xcache', 'wincache'], true); + return $setting === 'apcu'; } /** diff --git a/system/src/Grav/Common/Data/Data.php b/system/src/Grav/Common/Data/Data.php index 95944b2faa..0900a74306 100644 --- a/system/src/Grav/Common/Data/Data.php +++ b/system/src/Grav/Common/Data/Data.php @@ -323,7 +323,7 @@ public function raw() * @param FileInterface|null $storage Optionally enter a new storage. * @return FileInterface|null */ - public function file(FileInterface $storage = null) + public function file(?FileInterface $storage = null) { if ($storage) { $this->storage = $storage; diff --git a/system/src/Grav/Common/Data/DataInterface.php b/system/src/Grav/Common/Data/DataInterface.php index 52469b18fd..a34fe69ad8 100644 --- a/system/src/Grav/Common/Data/DataInterface.php +++ b/system/src/Grav/Common/Data/DataInterface.php @@ -80,5 +80,5 @@ public function save(); * @param FileInterface|null $storage Optionally enter a new storage. * @return FileInterface */ - public function file(FileInterface $storage = null); + public function file(?FileInterface $storage = null); } diff --git a/system/src/Grav/Common/Data/Validation.php b/system/src/Grav/Common/Data/Validation.php index d0f5bff8a4..1b799ad877 100644 --- a/system/src/Grav/Common/Data/Validation.php +++ b/system/src/Grav/Common/Data/Validation.php @@ -162,7 +162,7 @@ public static function checkSafety($value, array $field) * @param UserInterface|null $user * @return bool */ - public static function authorize($action, UserInterface $user = null) + public static function authorize($action, ?UserInterface $user = null) { if (!$user) { return false; diff --git a/system/src/Grav/Common/Debugger.php b/system/src/Grav/Common/Debugger.php index 6d412c36c5..c732cbeafc 100644 --- a/system/src/Grav/Common/Debugger.php +++ b/system/src/Grav/Common/Debugger.php @@ -544,7 +544,7 @@ public function getData() * @param string|null $message * @return mixed */ - public function profile(callable $callable, string $message = null) + public function profile(callable $callable, ?string $message = null) { $this->startProfiling(); $response = $callable(); @@ -585,7 +585,7 @@ public function startProfiling(): void * @param string|null $message * @return array|null */ - public function stopProfiling(string $message = null): ?array + public function stopProfiling(?string $message = null): ?array { $timings = null; if ($this->enabled && extension_loaded('tideways_xhprof')) { @@ -776,7 +776,7 @@ public function addMessage($message, $label = 'info', $isString = true) * @param float|null $time * @return $this */ - public function addEvent(string $name, $event, EventDispatcherInterface $dispatcher, float $time = null) + public function addEvent(string $name, $event, EventDispatcherInterface $dispatcher, ?float $time = null) { if ($this->enabled && $this->clockwork) { $time = $time ?? microtime(true); diff --git a/system/src/Grav/Common/Errors/Errors.php b/system/src/Grav/Common/Errors/Errors.php index eec79f48e5..ac56fa6300 100644 --- a/system/src/Grav/Common/Errors/Errors.php +++ b/system/src/Grav/Common/Errors/Errors.php @@ -70,7 +70,7 @@ public function resetHandlers() $logger = $grav['log']; $whoops->pushHandler(function ($exception, $inspector, $run) use ($logger) { try { - $logger->addCritical($exception->getMessage() . ' - Trace: ' . $exception->getTraceAsString()); + $logger->critical($exception->getMessage() . ' - Trace: ' . $exception->getTraceAsString()); } catch (Exception $e) { echo $e; } diff --git a/system/src/Grav/Common/Filesystem/Archiver.php b/system/src/Grav/Common/Filesystem/Archiver.php index bf07791d47..a69b12ab3b 100644 --- a/system/src/Grav/Common/Filesystem/Archiver.php +++ b/system/src/Grav/Common/Filesystem/Archiver.php @@ -75,21 +75,21 @@ public function setOptions($options) * @param callable|null $status * @return $this */ - abstract public function compress($folder, callable $status = null); + abstract public function compress($folder, ?callable $status = null); /** * @param string $destination * @param callable|null $status * @return $this */ - abstract public function extract($destination, callable $status = null); + abstract public function extract($destination, ?callable $status = null); /** * @param array $folders * @param callable|null $status * @return $this */ - abstract public function addEmptyFolders($folders, callable $status = null); + abstract public function addEmptyFolders($folders, ?callable $status = null); /** * @param string $rootPath diff --git a/system/src/Grav/Common/Filesystem/ZipArchiver.php b/system/src/Grav/Common/Filesystem/ZipArchiver.php index 8e61a5d4f6..82b5a769c2 100644 --- a/system/src/Grav/Common/Filesystem/ZipArchiver.php +++ b/system/src/Grav/Common/Filesystem/ZipArchiver.php @@ -26,7 +26,7 @@ class ZipArchiver extends Archiver * @param callable|null $status * @return $this */ - public function extract($destination, callable $status = null) + public function extract($destination, ?callable $status = null) { $zip = new ZipArchive(); $archive = $zip->open($this->archive_file); @@ -51,7 +51,7 @@ public function extract($destination, callable $status = null) * @param callable|null $status * @return $this */ - public function compress($source, callable $status = null) + public function compress($source, ?callable $status = null) { if (!extension_loaded('zip')) { throw new InvalidArgumentException('ZipArchiver: Zip PHP module not installed...'); @@ -105,7 +105,7 @@ public function compress($source, callable $status = null) * @param callable|null $status * @return $this */ - public function addEmptyFolders($folders, callable $status = null) + public function addEmptyFolders($folders, ?callable $status = null) { if (!extension_loaded('zip')) { throw new InvalidArgumentException('ZipArchiver: Zip PHP module not installed...'); diff --git a/system/src/Grav/Common/Flex/FlexObject.php b/system/src/Grav/Common/Flex/FlexObject.php index 870bc05fc0..3ec49efa77 100644 --- a/system/src/Grav/Common/Flex/FlexObject.php +++ b/system/src/Grav/Common/Flex/FlexObject.php @@ -32,7 +32,7 @@ abstract class FlexObject extends \Grav\Framework\Flex\FlexObject implements Med * {@inheritdoc} * @see FlexObjectInterface::getFormValue() */ - public function getFormValue(string $name, $default = null, string $separator = null) + public function getFormValue(string $name, $default = null, ?string $separator = null) { $value = $this->getNestedProperty($name, null, $separator); diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php b/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php index bf1e2d55b9..a061f86eff 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageCollection.php @@ -766,7 +766,7 @@ public function withPages(bool $bool = true) * @return static * @phpstan-return static */ - public function withTranslation(bool $bool = true, string $languageCode = null, bool $fallback = null) + public function withTranslation(bool $bool = true, ?string $languageCode = null, ?bool $fallback = null) { $list = array_keys(array_filter($this->call('hasTranslation', [$languageCode, $fallback]))); @@ -778,7 +778,7 @@ public function withTranslation(bool $bool = true, string $languageCode = null, * @param bool|null $fallback * @return PageIndex */ - public function withTranslated(string $languageCode = null, bool $fallback = null) + public function withTranslated(?string $languageCode = null, ?bool $fallback = null) { return $this->getIndex()->withTranslated($languageCode, $fallback); } diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php index 21e02ab0cd..82e8501ea6 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageIndex.php @@ -57,7 +57,7 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface public const ORDER_LIST_REGEX = '/(\/\d+)\.[^\/]+/u'; public const PAGE_ROUTE_REGEX = '/\/\d+\./u'; - /** @var PageObject|array */ + /** @var T|array */ protected $_root; /** @var array|null */ protected $_params; @@ -66,7 +66,7 @@ class PageIndex extends FlexPageIndex implements PageCollectionInterface * @param array $entries * @param FlexDirectory|null $directory */ - public function __construct(array $entries = [], FlexDirectory $directory = null) + public function __construct(array $entries = [], ?FlexDirectory $directory = null) { // Remove root if it's taken. if (isset($entries[''])) { @@ -181,7 +181,7 @@ public function getRoot() * @return static * @phpstan-return static */ - public function withTranslated(string $languageCode = null, bool $fallback = null) + public function withTranslated(?string $languageCode = null, ?bool $fallback = null) { if (null === $languageCode) { return $this; @@ -413,7 +413,7 @@ public function getLevelListing(array $options): array * @return static * @phpstan-return static */ - protected function createFrom(array $entries, string $keyField = null) + protected function createFrom(array $entries, ?string $keyField = null) { /** @var static $index */ $index = parent::createFrom($entries, $keyField); @@ -428,7 +428,7 @@ protected function createFrom(array $entries, string $keyField = null) * @param bool|null $fallback * @return array */ - protected function translateEntries(array $entries, string $lang, bool $fallback = null): array + protected function translateEntries(array $entries, string $lang, ?bool $fallback = null): array { $languages = $this->getFallbackLanguages($lang, $fallback); foreach ($entries as $key => &$entry) { @@ -493,7 +493,7 @@ protected function getLanguageTemplates(string $key): array * @param bool|null $fallback * @return array */ - protected function getFallbackLanguages(string $languageCode = null, bool $fallback = null): array + protected function getFallbackLanguages(?string $languageCode = null, ?bool $fallback = null): array { $fallback = $fallback ?? true; if (!$fallback && null !== $languageCode) { @@ -781,7 +781,7 @@ protected static function getIndexFile(FlexStorageInterface $storage) * @param int|null $timestamp * @return string|null */ - private function jsDate(int $timestamp = null): ?string + private function jsDate(?int $timestamp = null): ?string { if (!$timestamp) { return null; diff --git a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php index 9f71df72e8..2af4ee7c85 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/PageObject.php +++ b/system/src/Grav/Common/Flex/Types/Pages/PageObject.php @@ -129,7 +129,7 @@ public function getRoute($query = []): ?Route /** * @inheritdoc PageInterface */ - public function getFormValue(string $name, $default = null, string $separator = null) + public function getFormValue(string $name, $default = null, ?string $separator = null) { $test = new stdClass(); @@ -261,7 +261,7 @@ protected function onAfterSave(array $variables): void /** * @param UserInterface|null $user */ - public function check(UserInterface $user = null): void + public function check(?UserInterface $user = null): void { parent::check($user); diff --git a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php index 2cfe450208..8aeeed136e 100644 --- a/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php +++ b/system/src/Grav/Common/Flex/Types/Pages/Traits/PageRoutableTrait.php @@ -32,7 +32,7 @@ trait PageRoutableTrait * @return PageInterface|null the parent page object if it exists. */ - public function parent(PageInterface $var = null) + public function parent(?PageInterface $var = null) { if (Utils::isAdminPlugin()) { return parent::parent(); diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php index daaa942368..f2c8591b0a 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupCollection.php @@ -38,7 +38,7 @@ public static function getCachedMethods(): array * @param string|null $scope * @return bool|null */ - public function authorize(string $action, string $scope = null): ?bool + public function authorize(string $action, ?string $scope = null): ?bool { $authorized = null; /** @var UserGroupObject $object */ diff --git a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php index c8da8a2a17..9e753d21b8 100644 --- a/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php +++ b/system/src/Grav/Common/Flex/Types/UserGroups/UserGroupObject.php @@ -57,7 +57,7 @@ public function getTitle(): string * @param string|null $scope * @return bool|null */ - public function authorize(string $action, string $scope = null): ?bool + public function authorize(string $action, ?string $scope = null): ?bool { if ($scope === 'test') { $scope = null; diff --git a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php index 01e3f967a5..771210e1ba 100644 --- a/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php +++ b/system/src/Grav/Common/Flex/Types/Users/Storage/UserFileStorage.php @@ -23,7 +23,7 @@ class UserFileStorage extends FileStorage * {@inheritdoc} * @see FlexStorageInterface::getMediaPath() */ - public function getMediaPath(string $key = null): ?string + public function getMediaPath(?string $key = null): ?string { // There is no media support for file storage (fallback to common location). return null; diff --git a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php index d6781af05c..74524106d2 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserIndex.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserIndex.php @@ -197,7 +197,7 @@ protected static function onChanges(array $entries, array $added, array $updated /** @var Logger $logger */ $logger = $grav['log']; - $logger->addDebug($message); + $logger->debug($message); /** @var Debugger $debugger */ $debugger = $grav['debugger']; diff --git a/system/src/Grav/Common/Flex/Types/Users/UserObject.php b/system/src/Grav/Common/Flex/Types/Users/UserObject.php index 5cdaafdfdf..1a3eb3fa27 100644 --- a/system/src/Grav/Common/Flex/Types/Users/UserObject.php +++ b/system/src/Grav/Common/Flex/Types/Users/UserObject.php @@ -92,9 +92,9 @@ class UserObject extends FlexObject implements UserInterface, Countable protected $_uploads_original; /** @var FileInterface|null */ protected $_storage; - /** @var UserGroupIndex */ + /** @var UserGroupIndex|null */ protected $_groups; - /** @var Access */ + /** @var Access|null */ protected $_access; /** @var array|null */ protected $access; @@ -270,7 +270,7 @@ public function isMyself(?UserInterface $user = null): bool * @param string|null $scope * @return bool|null */ - public function authorize(string $action, string $scope = null): ?bool + public function authorize(string $action, ?string $scope = null): ?bool { if ($scope === 'test') { // Special scope to test user permissions. @@ -557,7 +557,7 @@ public function raw() * @param FileInterface|null $storage Optionally enter a new storage. * @return FileInterface|null */ - public function file(FileInterface $storage = null) + public function file(?FileInterface $storage = null) { if (null !== $storage) { $this->_storage = $storage; diff --git a/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php b/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php index 077fcd2fe3..c08108af9a 100644 --- a/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php +++ b/system/src/Grav/Common/GPM/Remote/AbstractPackageCollection.php @@ -12,7 +12,7 @@ use Grav\Common\Grav; use Grav\Common\HTTP\Response; use Grav\Common\GPM\Common\AbstractPackageCollection as BaseCollection; -use \Doctrine\Common\Cache\FilesystemCache; +use Doctrine\Common\Cache\FilesystemCache; use RuntimeException; /** diff --git a/system/src/Grav/Common/Grav.php b/system/src/Grav/Common/Grav.php index 5f879ca534..f9c9b00fb4 100644 --- a/system/src/Grav/Common/Grav.php +++ b/system/src/Grav/Common/Grav.php @@ -200,7 +200,7 @@ public function isSetup(): bool * @param string|null $environment * @return $this */ - public function setup(string $environment = null) + public function setup(?string $environment = null) { if (isset($this->initialized['setup'])) { return $this; @@ -522,7 +522,7 @@ public function redirectLangSafe($route, $code = null): void * @param ResponseInterface|null $response * @return void */ - public function header(ResponseInterface $response = null): void + public function header(?ResponseInterface $response = null): void { if (null === $response) { /** @var PageInterface $page */ @@ -585,7 +585,7 @@ public function dispatchEvent($event) * @param Event|null $event * @return Event */ - public function fireEvent($eventName, Event $event = null) + public function fireEvent($eventName, ?Event $event = null) { /** @var EventDispatcherInterface $events */ $events = $this['events']; diff --git a/system/src/Grav/Common/HTTP/Client.php b/system/src/Grav/Common/HTTP/Client.php index 02a420b84b..4c9a79616a 100644 --- a/system/src/Grav/Common/HTTP/Client.php +++ b/system/src/Grav/Common/HTTP/Client.php @@ -25,7 +25,7 @@ class Client 'User-Agent' => 'Grav CMS' ]; - public static function getClient(array $overrides = [], int $connections = 6, callable $callback = null): HttpClientInterface + public static function getClient(array $overrides = [], int $connections = 6, ?callable $callback = null): HttpClientInterface { $config = Grav::instance()['config']; $options = static::getOptions(); diff --git a/system/src/Grav/Common/HTTP/Response.php b/system/src/Grav/Common/HTTP/Response.php index f05af0e5e6..ca3a6efba6 100644 --- a/system/src/Grav/Common/HTTP/Response.php +++ b/system/src/Grav/Common/HTTP/Response.php @@ -41,7 +41,7 @@ class Response * @return string * @throws TransportExceptionInterface|RedirectionExceptionInterface|ServerExceptionInterface|TransportExceptionInterface|ClientExceptionInterface */ - public static function get(string $uri = '', array $overrides = [], callable $callback = null): string + public static function get(string $uri = '', array $overrides = [], ?callable $callback = null): string { $response = static::request('GET', $uri, $overrides, $callback); return $response->getContent(); @@ -58,7 +58,7 @@ public static function get(string $uri = '', array $overrides = [], callable $ca * @return ResponseInterface * @throws TransportExceptionInterface */ - public static function request(string $method, string $uri, array $overrides = [], callable $callback = null): ResponseInterface + public static function request(string $method, string $uri, array $overrides = [], ?callable $callback = null): ResponseInterface { if (empty($method)) { throw new TransportException('missing method (GET, PUT, etc.)'); diff --git a/system/src/Grav/Common/Helpers/Excerpts.php b/system/src/Grav/Common/Helpers/Excerpts.php index 254edc4974..77726d3022 100644 --- a/system/src/Grav/Common/Helpers/Excerpts.php +++ b/system/src/Grav/Common/Helpers/Excerpts.php @@ -30,7 +30,7 @@ class Excerpts * @param PageInterface|null $page Page, defaults to the current page object * @return string Returns final HTML string */ - public static function processImageHtml($html, PageInterface $page = null) + public static function processImageHtml($html, ?PageInterface $page = null) { $excerpt = static::getExcerptFromHtml($html, 'img'); if (null === $excerpt) { @@ -61,7 +61,7 @@ public static function processImageHtml($html, PageInterface $page = null) * @param PageInterface|null $page Page, defaults to the current page object * @return string Returns final HTML string */ - public static function processLinkHtml($html, PageInterface $page = null) + public static function processLinkHtml($html, ?PageInterface $page = null) { $excerpt = static::getExcerptFromHtml($html, 'a'); if (null === $excerpt) { @@ -158,7 +158,7 @@ public static function getHtmlFromExcerpt($excerpt) * @param string $type * @return mixed */ - public static function processLinkExcerpt($excerpt, PageInterface $page = null, $type = 'link') + public static function processLinkExcerpt($excerpt, ?PageInterface $page = null, $type = 'link') { $excerpts = new ExcerptsObject($page); @@ -172,7 +172,7 @@ public static function processLinkExcerpt($excerpt, PageInterface $page = null, * @param PageInterface|null $page Page, defaults to the current page object * @return array */ - public static function processImageExcerpt(array $excerpt, PageInterface $page = null) + public static function processImageExcerpt(array $excerpt, ?PageInterface $page = null) { $excerpts = new ExcerptsObject($page); @@ -187,7 +187,7 @@ public static function processImageExcerpt(array $excerpt, PageInterface $page = * @param PageInterface|null $page Page, defaults to the current page object * @return Medium|Link */ - public static function processMediaActions($medium, $url, PageInterface $page = null) + public static function processMediaActions($medium, $url, ?PageInterface $page = null) { $excerpts = new ExcerptsObject($page); diff --git a/system/src/Grav/Common/Helpers/YamlLinter.php b/system/src/Grav/Common/Helpers/YamlLinter.php index 1dee4958ae..53fe4f9dc3 100644 --- a/system/src/Grav/Common/Helpers/YamlLinter.php +++ b/system/src/Grav/Common/Helpers/YamlLinter.php @@ -29,7 +29,7 @@ class YamlLinter * @param string|null $folder * @return array */ - public static function lint(string $folder = null) + public static function lint(?string $folder = null) { if (null !== $folder) { $folder = $folder ?: GRAV_ROOT; diff --git a/system/src/Grav/Common/Iterator.php b/system/src/Grav/Common/Iterator.php index a60c74fb41..51ed5d1856 100644 --- a/system/src/Grav/Common/Iterator.php +++ b/system/src/Grav/Common/Iterator.php @@ -230,7 +230,7 @@ public function append($items) * * @return $this */ - public function filter(callable $callback = null) + public function filter(?callable $callback = null) { foreach ($this->items as $key => $value) { if ((!$callback && !(bool)$value) || ($callback && !$callback($value, $key))) { @@ -250,7 +250,7 @@ public function filter(callable $callback = null) * @return $this|array * */ - public function sort(callable $callback = null, $desc = false) + public function sort(?callable $callback = null, $desc = false) { if (!$callback || !is_callable($callback)) { return $this; diff --git a/system/src/Grav/Common/Language/Language.php b/system/src/Grav/Common/Language/Language.php index f2f3c1baaa..0e6096c690 100644 --- a/system/src/Grav/Common/Language/Language.php +++ b/system/src/Grav/Common/Language/Language.php @@ -358,7 +358,7 @@ public function getPageExtensions($fileExtension = null) * @param bool $assoc Return values in ['en' => '.en.md', ...] format. * @return array Key is the language code, value is the file extension to be used. */ - public function getFallbackPageExtensions(string $fileExtension = null, string $languageCode = null, bool $assoc = false) + public function getFallbackPageExtensions(?string $fileExtension = null, ?string $languageCode = null, bool $assoc = false) { $fileExtension = $fileExtension ?: CONTENT_EXT; $key = $fileExtension . '-' . ($languageCode ?? 'default') . '-' . (int)$assoc; @@ -411,7 +411,7 @@ public function resetFallbackPageExtensions() * @param bool $includeDefault If true, list contains '', which can be used for default * @return array */ - public function getFallbackLanguages(string $languageCode = null, bool $includeDefault = false) + public function getFallbackLanguages(?string $languageCode = null, bool $includeDefault = false) { // Handle default. if ($languageCode === '' || !$this->enabled()) { @@ -489,7 +489,7 @@ public function validate($lang) * @param bool $html_out * @return string|string[] */ - public function translate($args, array $languages = null, $array_support = false, $html_out = false) + public function translate($args, ?array $languages = null, $array_support = false, $html_out = false) { if (is_array($args)) { $lookup = array_shift($args); diff --git a/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php index a326e12cbd..58452f060c 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaCollectionInterface.php @@ -105,7 +105,7 @@ public function createFromFile($file, array $params = []); * @param Blueprint|null $blueprint * @return Medium|null */ - public function createFromArray(array $items = [], Blueprint $blueprint = null); + public function createFromArray(array $items = [], ?Blueprint $blueprint = null); /** * @param MediaObjectInterface $mediaObject diff --git a/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php b/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php index 7d0d18894c..f4a70001a7 100644 --- a/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php +++ b/system/src/Grav/Common/Media/Interfaces/MediaUploadInterface.php @@ -32,7 +32,7 @@ interface MediaUploadInterface * @return string * @throws RuntimeException */ - public function checkUploadedFile(UploadedFileInterface $uploadedFile, string $filename = null, array $settings = null): string; + public function checkUploadedFile(UploadedFileInterface $uploadedFile, ?string $filename = null, ?array $settings = null): string; /** * Copy uploaded file to the media collection. @@ -51,7 +51,7 @@ public function checkUploadedFile(UploadedFileInterface $uploadedFile, string $f * @return void * @throws RuntimeException */ - public function copyUploadedFile(UploadedFileInterface $uploadedFile, string $filename, array $settings = null): void; + public function copyUploadedFile(UploadedFileInterface $uploadedFile, string $filename, ?array $settings = null): void; /** * Delete real file from the media collection. @@ -60,7 +60,7 @@ public function copyUploadedFile(UploadedFileInterface $uploadedFile, string $fi * @param array|null $settings * @return void */ - public function deleteFile(string $filename, array $settings = null): void; + public function deleteFile(string $filename, ?array $settings = null): void; /** * Rename file inside the media collection. @@ -69,5 +69,5 @@ public function deleteFile(string $filename, array $settings = null): void; * @param string $to * @param array|null $settings */ - public function renameFile(string $from, string $to, array $settings = null): void; + public function renameFile(string $from, string $to, ?array $settings = null): void; } diff --git a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php index 2b1c3bbeec..45d5208af0 100644 --- a/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php +++ b/system/src/Grav/Common/Media/Traits/MediaUploadTrait.php @@ -71,7 +71,7 @@ public function createFromUploadedFile(UploadedFileInterface $uploadedFile, arra * @return string * @throws RuntimeException */ - public function checkUploadedFile(UploadedFileInterface $uploadedFile, string $filename = null, array $settings = null): string + public function checkUploadedFile(UploadedFileInterface $uploadedFile, ?string $filename = null, ?array $settings = null): string { // Check if there is an upload error. switch ($uploadedFile->getError()) { @@ -115,7 +115,7 @@ public function checkUploadedFile(UploadedFileInterface $uploadedFile, string $f * @return string * @throws RuntimeException */ - public function checkFileMetadata(array $metadata, string $filename = null, array $settings = null): string + public function checkFileMetadata(array $metadata, ?string $filename = null, ?array $settings = null): string { // Add the defaults to the settings. $settings = $this->getUploadSettings($settings); @@ -252,7 +252,7 @@ public function checkFileMetadata(array $metadata, string $filename = null, arra * @return void * @throws RuntimeException */ - public function copyUploadedFile(UploadedFileInterface $uploadedFile, string $filename, array $settings = null): void + public function copyUploadedFile(UploadedFileInterface $uploadedFile, string $filename, ?array $settings = null): void { // Add the defaults to the settings. $settings = $this->getUploadSettings($settings); @@ -329,7 +329,7 @@ public function copyUploadedFile(UploadedFileInterface $uploadedFile, string $fi * @return void * @throws RuntimeException */ - public function deleteFile(string $filename, array $settings = null): void + public function deleteFile(string $filename, ?array $settings = null): void { // Add the defaults to the settings. $settings = $this->getUploadSettings($settings); @@ -371,7 +371,7 @@ public function deleteFile(string $filename, array $settings = null): void * @param string $to * @param array|null $settings */ - public function renameFile(string $from, string $to, array $settings = null): void + public function renameFile(string $from, string $to, ?array $settings = null): void { // Add the defaults to the settings. $settings = $this->getUploadSettings($settings); diff --git a/system/src/Grav/Common/Page/Collection.php b/system/src/Grav/Common/Page/Collection.php index 8a625558c7..90d3346fd9 100644 --- a/system/src/Grav/Common/Page/Collection.php +++ b/system/src/Grav/Common/Page/Collection.php @@ -43,7 +43,7 @@ class Collection extends Iterator implements PageCollectionInterface * @param array $params * @param Pages|null $pages */ - public function __construct($items = [], array $params = [], Pages $pages = null) + public function __construct($items = [], array $params = [], ?Pages $pages = null) { parent::__construct($items); diff --git a/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php b/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php index 9f5588cf59..eb656fb62d 100644 --- a/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PageCollectionInterface.php @@ -46,7 +46,7 @@ public function setParams(array $params); * Add a single page to a collection * * @param PageInterface $page - * @return $this + * @return $this|PageCollectionInterface */ public function addPage(PageInterface $page); @@ -63,7 +63,7 @@ public function addPage(PageInterface $page); * * Create a copy of this collection * - * @return static + * @return static */ public function copy(); diff --git a/system/src/Grav/Common/Page/Interfaces/PageRoutableInterface.php b/system/src/Grav/Common/Page/Interfaces/PageRoutableInterface.php index 29002660c1..b2f6d409cf 100644 --- a/system/src/Grav/Common/Page/Interfaces/PageRoutableInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PageRoutableInterface.php @@ -133,7 +133,7 @@ public function folder($var = null); * @param PageInterface|null $var the parent page object * @return PageInterface|null the parent page object if it exists. */ - public function parent(PageInterface $var = null); + public function parent(?PageInterface $var = null); /** * Gets the top parent object for this page. Can return page itself. diff --git a/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php b/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php index d28f103f99..467d42a14f 100644 --- a/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php +++ b/system/src/Grav/Common/Page/Interfaces/PagesSourceInterface.php @@ -52,5 +52,5 @@ public function get(string $route): ?PageInterface; * @param array|null $options * @return array */ - public function getChildren(string $route, array $options = null): array; + public function getChildren(string $route, ?array $options = null): array; } diff --git a/system/src/Grav/Common/Page/Markdown/Excerpts.php b/system/src/Grav/Common/Page/Markdown/Excerpts.php index d613c790e7..406b4a4796 100644 --- a/system/src/Grav/Common/Page/Markdown/Excerpts.php +++ b/system/src/Grav/Common/Page/Markdown/Excerpts.php @@ -42,7 +42,7 @@ class Excerpts * @param PageInterface|null $page * @param array|null $config */ - public function __construct(PageInterface $page = null, array $config = null) + public function __construct(?PageInterface $page = null, ?array $config = null) { $this->page = $page ?? Grav::instance()['page'] ?? null; diff --git a/system/src/Grav/Common/Page/Media.php b/system/src/Grav/Common/Page/Media.php index b29bbf3482..6478528e5d 100644 --- a/system/src/Grav/Common/Page/Media.php +++ b/system/src/Grav/Common/Page/Media.php @@ -38,7 +38,7 @@ class Media extends AbstractMedia * @param array|null $media_order * @param bool $load */ - public function __construct($path, array $media_order = null, $load = true) + public function __construct($path, ?array $media_order = null, $load = true) { $this->setPath($path); $this->media_order = $media_order; diff --git a/system/src/Grav/Common/Page/Medium/AbstractMedia.php b/system/src/Grav/Common/Page/Medium/AbstractMedia.php index 906d0447a9..3efe735aca 100644 --- a/system/src/Grav/Common/Page/Medium/AbstractMedia.php +++ b/system/src/Grav/Common/Page/Medium/AbstractMedia.php @@ -229,7 +229,7 @@ public function createFromFile($file, array $params = []) * @param Blueprint|null $blueprint * @return Medium|null */ - public function createFromArray(array $items = [], Blueprint $blueprint = null) + public function createFromArray(array $items = [], ?Blueprint $blueprint = null) { return MediumFactory::fromArray($items, $blueprint); } diff --git a/system/src/Grav/Common/Page/Medium/ImageMedium.php b/system/src/Grav/Common/Page/Medium/ImageMedium.php index 580e9f586b..5539d9fb0d 100644 --- a/system/src/Grav/Common/Page/Medium/ImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/ImageMedium.php @@ -46,7 +46,7 @@ class ImageMedium extends Medium implements ImageMediaInterface, ImageManipulate * @param array $items * @param Blueprint|null $blueprint */ - public function __construct($items = [], Blueprint $blueprint = null) + public function __construct($items = [], ?Blueprint $blueprint = null) { parent::__construct($items, $blueprint); diff --git a/system/src/Grav/Common/Page/Medium/Medium.php b/system/src/Grav/Common/Page/Medium/Medium.php index a17f68a668..ede2a74415 100644 --- a/system/src/Grav/Common/Page/Medium/Medium.php +++ b/system/src/Grav/Common/Page/Medium/Medium.php @@ -43,7 +43,7 @@ class Medium extends Data implements RenderableInterface, MediaFileInterface * @param array $items * @param Blueprint|null $blueprint */ - public function __construct($items = [], Blueprint $blueprint = null) + public function __construct($items = [], ?Blueprint $blueprint = null) { parent::__construct($items, $blueprint); diff --git a/system/src/Grav/Common/Page/Medium/MediumFactory.php b/system/src/Grav/Common/Page/Medium/MediumFactory.php index 0796a8395d..3f555969cb 100644 --- a/system/src/Grav/Common/Page/Medium/MediumFactory.php +++ b/system/src/Grav/Common/Page/Medium/MediumFactory.php @@ -150,7 +150,7 @@ public static function fromUploadedFile(UploadedFileInterface $uploadedFile, arr * @param Blueprint|null $blueprint * @return Medium */ - public static function fromArray(array $items = [], Blueprint $blueprint = null) + public static function fromArray(array $items = [], ?Blueprint $blueprint = null) { $type = $items['type'] ?? null; diff --git a/system/src/Grav/Common/Page/Medium/VectorImageMedium.php b/system/src/Grav/Common/Page/Medium/VectorImageMedium.php index bf0beae4f6..0e5aac1a59 100644 --- a/system/src/Grav/Common/Page/Medium/VectorImageMedium.php +++ b/system/src/Grav/Common/Page/Medium/VectorImageMedium.php @@ -24,7 +24,7 @@ class VectorImageMedium extends StaticImageMedium * @param array $items * @param Blueprint|null $blueprint */ - public function __construct($items = [], Blueprint $blueprint = null) + public function __construct($items = [], ?Blueprint $blueprint = null) { parent::__construct($items, $blueprint); diff --git a/system/src/Grav/Common/Page/Page.php b/system/src/Grav/Common/Page/Page.php index 90b8c05701..2883b6ff8b 100644 --- a/system/src/Grav/Common/Page/Page.php +++ b/system/src/Grav/Common/Page/Page.php @@ -2395,7 +2395,7 @@ public function shouldProcess($process) * @param PageInterface|null $var the parent page object * @return PageInterface|null the parent page object if it exists. */ - public function parent(PageInterface $var = null) + public function parent(?PageInterface $var = null) { if ($var) { $this->parent = $var->path(); diff --git a/system/src/Grav/Common/Page/Pages.php b/system/src/Grav/Common/Page/Pages.php index df23287b91..a0b0506dcc 100644 --- a/system/src/Grav/Common/Page/Pages.php +++ b/system/src/Grav/Common/Page/Pages.php @@ -645,7 +645,7 @@ public function getCollection(array $params = [], array $context = []) * @param PageInterface|null $self * @return Collection */ - protected function evaluate($value, PageInterface $self = null) + protected function evaluate($value, ?PageInterface $self = null) { // Parse command. if (is_string($value)) { @@ -757,6 +757,10 @@ protected function evaluate($value, PageInterface $self = null) break; } + if (!$collection instanceof Collection) { + $collection = new Collection($collection->toArray()); + } + return $collection; } @@ -1156,7 +1160,7 @@ public function blueprints($type) * @param PageInterface|null $current * @return Collection */ - public function all(PageInterface $current = null) + public function all(?PageInterface $current = null) { $all = new Collection(); @@ -1230,7 +1234,7 @@ private static function getParents($rawRoutes) * @param bool $limitLevels * @return array */ - public function getList(PageInterface $current = null, $level = 0, $rawRoutes = false, $showAll = true, $showFullpath = false, $showSlug = false, $showModular = false, $limitLevels = false) + public function getList(?PageInterface $current = null, $level = 0, $rawRoutes = false, $showAll = true, $showFullpath = false, $showSlug = false, $showModular = false, $limitLevels = false) { if (!$current) { if ($level) { @@ -1818,7 +1822,7 @@ public function resetPages(array $pages_dirs): void * @throws RuntimeException * @internal */ - protected function recurse(string $directory, PageInterface $parent = null) + protected function recurse(string $directory, ?PageInterface $parent = null) { $directory = rtrim($directory, DS); $page = new Page; diff --git a/system/src/Grav/Common/Plugin.php b/system/src/Grav/Common/Plugin.php index 7b74c8ffd1..f6235141d3 100644 --- a/system/src/Grav/Common/Plugin.php +++ b/system/src/Grav/Common/Plugin.php @@ -72,7 +72,7 @@ public static function getSubscribedEvents() * @param Grav $grav * @param Config|null $config */ - public function __construct($name, Grav $grav, Config $config = null) + public function __construct($name, Grav $grav, ?Config $config = null) { $this->name = $name; $this->grav = $grav; @@ -414,7 +414,7 @@ public static function saveConfig($name) return true; } - public static function inheritedConfigOption(string $plugin, string $var, PageInterface $page = null, $default = null) + public static function inheritedConfigOption(string $plugin, string $var, ?PageInterface $page = null, $default = null) { if (Utils::isAdminPlugin()) { $page = Grav::instance()['admin']->page() ?? null; diff --git a/system/src/Grav/Common/Processors/InitializeProcessor.php b/system/src/Grav/Common/Processors/InitializeProcessor.php index 2c5035beb6..417f6c5436 100644 --- a/system/src/Grav/Common/Processors/InitializeProcessor.php +++ b/system/src/Grav/Common/Processors/InitializeProcessor.php @@ -415,7 +415,7 @@ protected function initializeUri(Config $config): void $this->stopTimer('_init_uri'); } - protected function handleRedirectRequest(RequestInterface $request, int $code = null): ?ResponseInterface + protected function handleRedirectRequest(RequestInterface $request, ?int $code = null): ?ResponseInterface { if (!in_array($request->getMethod(), ['GET', 'HEAD'])) { return null; diff --git a/system/src/Grav/Common/Scheduler/Job.php b/system/src/Grav/Common/Scheduler/Job.php index 3b119f434d..a5a5e6087d 100644 --- a/system/src/Grav/Common/Scheduler/Job.php +++ b/system/src/Grav/Common/Scheduler/Job.php @@ -188,7 +188,7 @@ public function getId() * @param DateTime|null $date * @return bool */ - public function isDue(DateTime $date = null) + public function isDue(?DateTime $date = null) { // The execution time is being defaulted if not defined if (!$this->executionTime) { @@ -259,7 +259,7 @@ public function runInBackground() * @param callable|null $whenOverlapping A callback to ignore job overlapping * @return self */ - public function onlyOne($tempDir = null, callable $whenOverlapping = null) + public function onlyOne($tempDir = null, ?callable $whenOverlapping = null) { if ($tempDir === null || !is_dir($tempDir)) { $tempDir = $this->tempDir; diff --git a/system/src/Grav/Common/Scheduler/Scheduler.php b/system/src/Grav/Common/Scheduler/Scheduler.php index d3cefb0f36..8e0f9e1d63 100644 --- a/system/src/Grav/Common/Scheduler/Scheduler.php +++ b/system/src/Grav/Common/Scheduler/Scheduler.php @@ -188,7 +188,7 @@ public function addCommand($command, $args = [], $id = null) * @param DateTime|null $runTime Optional, run at specific moment * @param bool $force force run even if not due */ - public function run(DateTime $runTime = null, $force = false) + public function run(?DateTime $runTime = null, $force = false) { $this->loadSavedJobs(); diff --git a/system/src/Grav/Common/Security.php b/system/src/Grav/Common/Security.php index 6fabf4eec3..491a61c01b 100644 --- a/system/src/Grav/Common/Security.php +++ b/system/src/Grav/Common/Security.php @@ -30,7 +30,7 @@ class Security * @param array|null $options * @return string|null */ - public static function detectXssFromSvgFile(string $filepath, array $options = null): ?string + public static function detectXssFromSvgFile(string $filepath, ?array $options = null): ?string { if (file_exists($filepath) && Grav::instance()['config']->get('security.sanitize_svg')) { $content = file_get_contents($filepath); @@ -95,7 +95,7 @@ public static function sanitizeSVG(string $file): void * @param callable|null $status * @return array */ - public static function detectXssFromPages(Pages $pages, $route = true, callable $status = null) + public static function detectXssFromPages(Pages $pages, $route = true, ?callable $status = null) { $routes = $pages->getList(null, 0, true); @@ -145,7 +145,7 @@ public static function detectXssFromPages(Pages $pages, $route = true, callable * @param string $prefix Prefix for returned values. * @return array Returns flatten list of potentially dangerous input values, such as 'data.content'. */ - public static function detectXssFromArray(array $array, string $prefix = '', array $options = null) + public static function detectXssFromArray(array $array, string $prefix = '', ?array $options = null) { if (null === $options) { $options = static::getXssDefaults(); @@ -176,7 +176,7 @@ public static function detectXssFromArray(array $array, string $prefix = '', arr * * Copies the code from: https://github.com/symphonycms/xssfilter/blob/master/extension.driver.php#L138 */ - public static function detectXss($string, array $options = null): ?string + public static function detectXss($string, ?array $options = null): ?string { // Skip any null or non string values if (null === $string || !is_string($string) || empty($string)) { diff --git a/system/src/Grav/Common/Twig/Extension/GravExtension.php b/system/src/Grav/Common/Twig/Extension/GravExtension.php index 3e30a02929..8e159ac865 100644 --- a/system/src/Grav/Common/Twig/Extension/GravExtension.php +++ b/system/src/Grav/Common/Twig/Extension/GravExtension.php @@ -932,7 +932,7 @@ public function translate(Environment $twig, ...$args) * @param bool $html_out * @return string */ - public function translateLanguage($args, array $languages = null, $array_support = false, $html_out = false) + public function translateLanguage($args, ?array $languages = null, $array_support = false, $html_out = false) { /** @var Language $language */ $language = $this->grav['language']; diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php b/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php index 8dcc9ddb94..b7de4bbef2 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeSwitch.php @@ -26,7 +26,7 @@ class TwigNodeSwitch extends Node * @param int $lineno * @param string|null $tag */ - public function __construct(Node $value, Node $cases, Node $default = null, $lineno = 0, $tag = null) + public function __construct(Node $value, Node $cases, ?Node $default = null, $lineno = 0, $tag = null) { $nodes = ['value' => $value, 'cases' => $cases, 'default' => $default]; $nodes = array_filter($nodes); diff --git a/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php b/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php index ddaf49d33b..d837861703 100644 --- a/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php +++ b/system/src/Grav/Common/Twig/Node/TwigNodeTryCatch.php @@ -26,7 +26,7 @@ class TwigNodeTryCatch extends Node * @param int $lineno * @param string|null $tag */ - public function __construct(Node $try, Node $catch = null, $lineno = 0, $tag = null) + public function __construct(Node $try, ?Node $catch = null, $lineno = 0, $tag = null) { $nodes = ['try' => $try, 'catch' => $catch]; $nodes = array_filter($nodes); diff --git a/system/src/Grav/Common/Twig/Twig.php b/system/src/Grav/Common/Twig/Twig.php index 6e50916fb3..45f54b3a4b 100644 --- a/system/src/Grav/Common/Twig/Twig.php +++ b/system/src/Grav/Common/Twig/Twig.php @@ -43,6 +43,17 @@ use function in_array; use function is_array; +// Twig3 compatibility +if (!class_exists('Twig_SimpleFunction')) { + class_alias('\Twig\TwigFunction', 'Twig_SimpleFunction'); +} +if (!class_exists('Twig_SimpleFilter')) { + class_alias('\Twig\TwigFilter', 'Twig_SimpleFilter'); +} +if (!class_exists('Twig_Extension')) { + class_alias('\Twig\Extension\AbstractExtension', 'Twig_Extension'); +} + /** * Class Twig * @package Grav\Common\Twig diff --git a/system/src/Grav/Common/Twig/TwigEnvironment.php b/system/src/Grav/Common/Twig/TwigEnvironment.php index 9de79298bf..289f2811c8 100644 --- a/system/src/Grav/Common/Twig/TwigEnvironment.php +++ b/system/src/Grav/Common/Twig/TwigEnvironment.php @@ -22,10 +22,10 @@ */ class TwigEnvironment extends Environment { - use WriteCacheFileTrait; - /** * @inheritDoc + * + * TODO: Needed for Twig 1 compatibility. */ public function resolveTemplate($names) { diff --git a/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php b/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php index 1045522321..d65c098ce2 100644 --- a/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php +++ b/system/src/Grav/Common/User/Interfaces/AuthorizeInterface.php @@ -22,5 +22,5 @@ interface AuthorizeInterface * @param string|null $scope * @return bool|null */ - public function authorize(string $action, string $scope = null): ?bool; + public function authorize(string $action, ?string $scope = null): ?bool; } diff --git a/system/src/Grav/Common/User/Traits/UserTrait.php b/system/src/Grav/Common/User/Traits/UserTrait.php index 8afcac0ac2..085de03eba 100644 --- a/system/src/Grav/Common/User/Traits/UserTrait.php +++ b/system/src/Grav/Common/User/Traits/UserTrait.php @@ -76,7 +76,7 @@ public function authenticate(string $password): bool * @param string|null $scope * @return bool|null */ - public function authorize(string $action, string $scope = null): ?bool + public function authorize(string $action, ?string $scope = null): ?bool { // User needs to be enabled. if ($this->get('state', 'enabled') !== 'enabled') { diff --git a/system/src/Grav/Common/Utils.php b/system/src/Grav/Common/Utils.php index 582fe5e3db..f106a64e7b 100644 --- a/system/src/Grav/Common/Utils.php +++ b/system/src/Grav/Common/Utils.php @@ -1005,7 +1005,7 @@ public static function checkFilename($filename): bool * @param int|null $flags * @return array|string */ - public static function pathinfo($path, int $flags = null) + public static function pathinfo($path, ?int $flags = null) { $path = str_replace(['%2F', '%5C'], ['/', '\\'], rawurlencode($path)); @@ -1618,7 +1618,7 @@ public static function sortArrayByKey($array, $array_key, $direction = SORT_DESC * @return string * @throws RuntimeException */ - public static function getPagePathFromToken($path, PageInterface $page = null) + public static function getPagePathFromToken($path, ?PageInterface $page = null) { return static::getPathFromToken($path, $page); } @@ -1947,7 +1947,7 @@ public static function getSubnet($ip, $prefix = 64) * @param array|null $defaults * @return array */ - public static function getSupportPageTypes(array $defaults = null) + public static function getSupportPageTypes(?array $defaults = null) { $types = Grav::instance()['config']->get('system.pages.types', $defaults); if (!is_array($types)) { diff --git a/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php b/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php index f550c518e4..210250c64f 100644 --- a/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php +++ b/system/src/Grav/Console/Application/CommandLoader/PluginCommandLoader.php @@ -57,6 +57,14 @@ public function __construct(string $name) $command = new $command_class(); if ($command instanceof Command) { $this->commands[$command->getName()] = $command; + + // If the command has an alias, add that as a possible command name. + $aliases = $this->commands[$command->getName()]->getAliases(); + if (isset($aliases)) { + foreach ($aliases as $alias) { + $this->commands[$alias] = $command; + } + } } } } diff --git a/system/src/Grav/Console/Application/PluginApplication.php b/system/src/Grav/Console/Application/PluginApplication.php index e748018773..c671b7b6d6 100644 --- a/system/src/Grav/Console/Application/PluginApplication.php +++ b/system/src/Grav/Console/Application/PluginApplication.php @@ -65,7 +65,7 @@ public function getPluginName(): string * @return int * @throws Throwable */ - public function run(InputInterface $input = null, OutputInterface $output = null): int + public function run(?InputInterface $input = null, ?OutputInterface $output = null): int { if (null === $input) { $argv = $_SERVER['argv'] ?? []; diff --git a/system/src/Grav/Console/Cli/InstallCommand.php b/system/src/Grav/Console/Cli/InstallCommand.php index 51fd16c333..fce40a10ef 100644 --- a/system/src/Grav/Console/Cli/InstallCommand.php +++ b/system/src/Grav/Console/Cli/InstallCommand.php @@ -173,7 +173,7 @@ private function gitclone(): int * @param string|null $type * @return int */ - private function symlink(string $name = null, string $type = null): int + private function symlink(?string $name = null, ?string $type = null): int { $io = $this->getIO(); diff --git a/system/src/Grav/Console/ConsoleTrait.php b/system/src/Grav/Console/ConsoleTrait.php index 2f8848ffd8..a514e88a2a 100644 --- a/system/src/Grav/Console/ConsoleTrait.php +++ b/system/src/Grav/Console/ConsoleTrait.php @@ -86,7 +86,7 @@ public function getIO(): SymfonyStyle * @return $this * @throws InvalidArgumentException If option mode is invalid or incompatible */ - public function addOption($name, $shortcut = null, $mode = null, $description = '', $default = null) + public function addOption(string $name, array|string|null $shortcut = null, ?int $mode = null, string $description = '', mixed $default = null): static { if ($name !== 'env' && $name !== 'lang') { parent::addOption($name, $shortcut, $mode, $description, $default); @@ -140,7 +140,7 @@ final protected function initializeGrav() * @param string|null $code * @return $this */ - final protected function setLanguage(string $code = null) + final protected function setLanguage(?string $code = null) { $this->initializeGrav(); diff --git a/system/src/Grav/Console/Gpm/InstallCommand.php b/system/src/Grav/Console/Gpm/InstallCommand.php index e3bb901f31..adbfea9de9 100644 --- a/system/src/Grav/Console/Gpm/InstallCommand.php +++ b/system/src/Grav/Console/Gpm/InstallCommand.php @@ -573,7 +573,7 @@ private function processGpm(Package $package, bool $is_update = false) * @param string|null $license * @return string|null */ - private function downloadPackage(Package $package, string $license = null) + private function downloadPackage(Package $package, ?string $license = null) { $io = $this->getIO(); diff --git a/system/src/Grav/Framework/Acl/Access.php b/system/src/Grav/Framework/Acl/Access.php index 2355da7cbd..408fa046e3 100644 --- a/system/src/Grav/Framework/Acl/Access.php +++ b/system/src/Grav/Framework/Acl/Access.php @@ -45,7 +45,7 @@ class Access implements JsonSerializable, IteratorAggregate, Countable * @param array|null $rules * @param string $name */ - public function __construct($acl = null, array $rules = null, string $name = '') + public function __construct($acl = null, ?array $rules = null, string $name = '') { $this->name = $name; $this->rules = $rules ?? []; @@ -70,7 +70,7 @@ public function getName(): string * @param string|null $name * @return void */ - public function inherit(Access $parent, string $name = null) + public function inherit(Access $parent, ?string $name = null) { // Remove cached null actions from acl. $acl = $this->getAllActions(); @@ -88,7 +88,7 @@ public function inherit(Access $parent, string $name = null) * @param string|null $scope * @return bool|null */ - public function authorize(string $action, string $scope = null): ?bool + public function authorize(string $action, ?string $scope = null): ?bool { if (null !== $scope) { $action = $scope !== 'test' ? "{$scope}.{$action}" : $action; diff --git a/system/src/Grav/Framework/Acl/Permissions.php b/system/src/Grav/Framework/Acl/Permissions.php index a07f7ebbc5..63c0141c79 100644 --- a/system/src/Grav/Framework/Acl/Permissions.php +++ b/system/src/Grav/Framework/Acl/Permissions.php @@ -156,7 +156,7 @@ public function addTypes(array $types): void * @param array|null $access * @return Access */ - public function getAccess(array $access = null): Access + public function getAccess(?array $access = null): Access { return new Access($access ?? []); } diff --git a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php index 1c2da8cdde..be5d5c5c62 100644 --- a/system/src/Grav/Framework/Collection/AbstractIndexCollection.php +++ b/system/src/Grav/Framework/Collection/AbstractIndexCollection.php @@ -551,14 +551,14 @@ abstract protected function loadElement($key, $value); * @return array * @phpstan-return array */ - abstract protected function loadElements(array $entries = null): array; + abstract protected function loadElements(?array $entries = null): array; /** * @param array|null $entries * @return CollectionInterface * @phpstan-return C */ - abstract protected function loadCollection(array $entries = null): CollectionInterface; + abstract protected function loadCollection(?array $entries = null): CollectionInterface; /** * @param mixed $value diff --git a/system/src/Grav/Framework/Collection/FileCollection.php b/system/src/Grav/Framework/Collection/FileCollection.php index 8fe254d7c1..5ec8fa6c9b 100644 --- a/system/src/Grav/Framework/Collection/FileCollection.php +++ b/system/src/Grav/Framework/Collection/FileCollection.php @@ -66,7 +66,7 @@ public function setNestingLimit($limit = 99) * @param callable|null $filterFunction * @return $this */ - public function setFilter(callable $filterFunction = null) + public function setFilter(?callable $filterFunction = null) { $this->filterFunction = $filterFunction; @@ -88,7 +88,7 @@ public function addFilter(callable $filterFunction) * @param callable|null $objectFunction * @return $this */ - public function setObjectBuilder(callable $objectFunction = null) + public function setObjectBuilder(?callable $objectFunction = null) { $this->createObjectFunction = $objectFunction ?: [$this, 'createObject']; diff --git a/system/src/Grav/Framework/Contracts/Relationships/RelationshipInterface.php b/system/src/Grav/Framework/Contracts/Relationships/RelationshipInterface.php index c0a7edfe40..3e2445f47b 100644 --- a/system/src/Grav/Framework/Contracts/Relationships/RelationshipInterface.php +++ b/system/src/Grav/Framework/Contracts/Relationships/RelationshipInterface.php @@ -53,7 +53,7 @@ public function getParent(): IdentifierInterface; * @return bool * @phpstan-pure */ - public function has(string $id, string $type = null): bool; + public function has(string $id, ?string $type = null): bool; /** * @param T $identifier @@ -72,7 +72,7 @@ public function addIdentifier(IdentifierInterface $identifier): bool; * @param T|null $identifier * @return bool */ - public function removeIdentifier(IdentifierInterface $identifier = null): bool; + public function removeIdentifier(?IdentifierInterface $identifier = null): bool; /** * @return iterable diff --git a/system/src/Grav/Framework/Contracts/Relationships/ToManyRelationshipInterface.php b/system/src/Grav/Framework/Contracts/Relationships/ToManyRelationshipInterface.php index 723bef6905..785928c44a 100644 --- a/system/src/Grav/Framework/Contracts/Relationships/ToManyRelationshipInterface.php +++ b/system/src/Grav/Framework/Contracts/Relationships/ToManyRelationshipInterface.php @@ -25,7 +25,7 @@ public function getNthIdentifier(int $pos): ?IdentifierInterface; * @return T|null * @phpstan-pure */ - public function getIdentifier(string $id, string $type = null): ?IdentifierInterface; + public function getIdentifier(string $id, ?string $type = null): ?IdentifierInterface; /** * @param string $id @@ -33,7 +33,7 @@ public function getIdentifier(string $id, string $type = null): ?IdentifierInter * @return T|null * @phpstan-pure */ - public function getObject(string $id, string $type = null): ?object; + public function getObject(string $id, ?string $type = null): ?object; /** * @param iterable $identifiers diff --git a/system/src/Grav/Framework/Contracts/Relationships/ToOneRelationshipInterface.php b/system/src/Grav/Framework/Contracts/Relationships/ToOneRelationshipInterface.php index 0e6aeb9738..94e969c1cd 100644 --- a/system/src/Grav/Framework/Contracts/Relationships/ToOneRelationshipInterface.php +++ b/system/src/Grav/Framework/Contracts/Relationships/ToOneRelationshipInterface.php @@ -19,7 +19,7 @@ interface ToOneRelationshipInterface extends RelationshipInterface * @return T|null * @phpstan-pure */ - public function getIdentifier(string $id = null, string $type = null): ?IdentifierInterface; + public function getIdentifier(?string $id = null, ?string $type = null): ?IdentifierInterface; /** * @param string|null $id @@ -27,11 +27,11 @@ public function getIdentifier(string $id = null, string $type = null): ?Identifi * @return T|null * @phpstan-pure */ - public function getObject(string $id = null, string $type = null): ?object; + public function getObject(?string $id = null, ?string $type = null): ?object; /** * @param T|null $identifier * @return bool */ - public function replaceIdentifier(IdentifierInterface $identifier = null): bool; + public function replaceIdentifier(?IdentifierInterface $identifier = null): bool; } diff --git a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php index 0840283772..a50c6d18bd 100644 --- a/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php +++ b/system/src/Grav/Framework/Controller/Traits/ControllerResponseTrait.php @@ -49,7 +49,7 @@ protected function createDisplayResponse(): ResponseInterface * @param array|null $headers * @return Response */ - protected function createHtmlResponse(string $content, int $code = null, array $headers = null): ResponseInterface + protected function createHtmlResponse(string $content, ?int $code = null, ?array $headers = null): ResponseInterface { $code = $code ?? 200; if ($code < 100 || $code > 599) { @@ -66,7 +66,7 @@ protected function createHtmlResponse(string $content, int $code = null, array $ * @param array|null $headers * @return Response */ - protected function createJsonResponse(array $content, int $code = null, array $headers = null): ResponseInterface + protected function createJsonResponse(array $content, ?int $code = null, ?array $headers = null): ResponseInterface { $code = $code ?? $content['code'] ?? 200; if (null === $code || $code < 100 || $code > 599) { @@ -87,7 +87,7 @@ protected function createJsonResponse(array $content, int $code = null, array $h * @param array|null $options * @return ResponseInterface */ - protected function createDownloadResponse(string $filename, $resource, array $headers = null, array $options = null): ResponseInterface + protected function createDownloadResponse(string $filename, $resource, ?array $headers = null, ?array $options = null): ResponseInterface { // Required for IE, otherwise Content-Disposition may be ignored if (ini_get('zlib.output_compression')) { @@ -134,7 +134,7 @@ protected function createDownloadResponse(string $filename, $resource, array $he * @param int|null $code * @return Response */ - protected function createRedirectResponse(string $url, int $code = null): ResponseInterface + protected function createRedirectResponse(string $url, ?int $code = null): ResponseInterface { if (null === $code || $code < 301 || $code > 307) { $code = (int)$this->getConfig()->get('system.pages.redirect_default_code', 302); diff --git a/system/src/Grav/Framework/File/AbstractFile.php b/system/src/Grav/Framework/File/AbstractFile.php index e81c419ba3..f49112b03f 100644 --- a/system/src/Grav/Framework/File/AbstractFile.php +++ b/system/src/Grav/Framework/File/AbstractFile.php @@ -46,7 +46,7 @@ class AbstractFile implements FileInterface * @param string $filepath * @param Filesystem|null $filesystem */ - public function __construct(string $filepath, Filesystem $filesystem = null) + public function __construct(string $filepath, ?Filesystem $filesystem = null) { $this->filesystem = $filesystem ?? Filesystem::getInstance(); $this->setFilepath($filepath); diff --git a/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php b/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php index 4ab0e62acc..83a444dce0 100644 --- a/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/AbstractFormatter.php @@ -106,7 +106,7 @@ public function __unserialize(array $data): void * @param string|null $name Configuration option (optional) * @return mixed */ - protected function getConfig(string $name = null) + protected function getConfig(?string $name = null) { if (null !== $name) { return $this->config[$name] ?? null; diff --git a/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php b/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php index cf16cf7b3e..46976d7319 100644 --- a/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php +++ b/system/src/Grav/Framework/File/Formatter/MarkdownFormatter.php @@ -23,7 +23,7 @@ class MarkdownFormatter extends AbstractFormatter /** @var FileFormatterInterface */ private $headerFormatter; - public function __construct(array $config = [], FileFormatterInterface $headerFormatter = null) + public function __construct(array $config = [], ?FileFormatterInterface $headerFormatter = null) { $config += [ 'file_extension' => '.md', diff --git a/system/src/Grav/Framework/Filesystem/Filesystem.php b/system/src/Grav/Framework/Filesystem/Filesystem.php index a46ce2a0fe..20b42c8d07 100644 --- a/system/src/Grav/Framework/Filesystem/Filesystem.php +++ b/system/src/Grav/Framework/Filesystem/Filesystem.php @@ -40,7 +40,7 @@ class Filesystem implements FilesystemInterface * @param bool|null $normalize See $this->setNormalization() * @return Filesystem */ - public static function getInstance(bool $normalize = null): Filesystem + public static function getInstance(?bool $normalize = null): Filesystem { if ($normalize === true) { $instance = &static::$safe; @@ -63,7 +63,7 @@ public static function getInstance(bool $normalize = null): Filesystem * @param bool|null $normalize * @internal */ - protected function __construct(bool $normalize = null) + protected function __construct(?bool $normalize = null) { $this->normalize = $normalize; } @@ -78,7 +78,7 @@ protected function __construct(bool $normalize = null) * @param bool|null $normalize * @return Filesystem */ - public function setNormalization(bool $normalize = null): self + public function setNormalization(?bool $normalize = null): self { return static::getInstance($normalize); } diff --git a/system/src/Grav/Framework/Flex/Flex.php b/system/src/Grav/Framework/Flex/Flex.php index c78a42c461..f51a4c84cd 100644 --- a/system/src/Grav/Framework/Flex/Flex.php +++ b/system/src/Grav/Framework/Flex/Flex.php @@ -94,7 +94,7 @@ public function hasDirectory(string $type): bool * @param bool $keepMissing * @return array */ - public function getDirectories(array $types = null, bool $keepMissing = false): array + public function getDirectories(?array $types = null, bool $keepMissing = false): array { if ($types === null) { return $this->types; @@ -125,7 +125,7 @@ public function getDirectory(string $type): ?FlexDirectory * @return FlexCollectionInterface|null * @phpstan-return FlexCollectionInterface|null */ - public function getCollection(string $type, array $keys = null, string $keyField = null): ?FlexCollectionInterface + public function getCollection(string $type, ?array $keys = null, ?string $keyField = null): ?FlexCollectionInterface { $directory = $type ? $this->getDirectory($type) : null; @@ -271,7 +271,7 @@ public function getObjects(array $keys, array $options = []): array * @param string|null $keyField * @return FlexObjectInterface|null */ - public function getObject(string $key, string $type = null, string $keyField = null): ?FlexObjectInterface + public function getObject(string $key, ?string $type = null, ?string $keyField = null): ?FlexObjectInterface { if (null === $type && null === $keyField) { // Special handling for quick Flex key lookups. @@ -303,7 +303,7 @@ public function count(): int * @param string|null $type * @return array */ - protected function resolveKeyAndType(string $flexKey, string $type = null): array + protected function resolveKeyAndType(string $flexKey, ?string $type = null): array { $guess = false; if (strpos($flexKey, ':') !== false) { @@ -323,7 +323,7 @@ protected function resolveKeyAndType(string $flexKey, string $type = null): arra * @param string|null $type * @return string */ - protected function resolveType(string $type = null): string + protected function resolveType(?string $type = null): string { if (null !== $type && strpos($type, '.') !== false) { return preg_replace('|\.obj$|', '', $type) ?? $type; diff --git a/system/src/Grav/Framework/Flex/FlexCollection.php b/system/src/Grav/Framework/Flex/FlexCollection.php index 3e9302cb87..7984719fc4 100644 --- a/system/src/Grav/Framework/Flex/FlexCollection.php +++ b/system/src/Grav/Framework/Flex/FlexCollection.php @@ -84,7 +84,7 @@ public static function getCachedMethods(): array * {@inheritdoc} * @see FlexCollectionInterface::createFromArray() */ - public static function createFromArray(array $entries, FlexDirectory $directory, string $keyField = null) + public static function createFromArray(array $entries, FlexDirectory $directory, ?string $keyField = null) { $instance = new static($entries, $directory); $instance->setKeyField($keyField); @@ -96,7 +96,7 @@ public static function createFromArray(array $entries, FlexDirectory $directory, * {@inheritdoc} * @see FlexCollectionInterface::__construct() */ - public function __construct(array $entries = [], FlexDirectory $directory = null) + public function __construct(array $entries = [], ?FlexDirectory $directory = null) { // @phpstan-ignore-next-line if (get_class($this) === __CLASS__) { @@ -145,7 +145,7 @@ public function getFlexFeatures(): array * {@inheritdoc} * @see FlexCollectionInterface::search() */ - public function search(string $search, $properties = null, array $options = null) + public function search(string $search, $properties = null, ?array $options = null) { $directory = $this->getFlexDirectory(); $properties = $directory->getSearchProperties($properties); @@ -298,7 +298,7 @@ public function getFlexKeys(): array * @param string|null $separator Separator, defaults to '.' * @return array */ - public function getDistinctValues(string $property, string $separator = null): array + public function getDistinctValues(string $property, ?string $separator = null): array { $list = []; @@ -320,7 +320,7 @@ public function getDistinctValues(string $property, string $separator = null): a * {@inheritdoc} * @see FlexCollectionInterface::withKeyField() */ - public function withKeyField(string $keyField = null) + public function withKeyField(?string $keyField = null) { $keyField = $keyField ?: 'key'; if ($keyField === $this->getKeyField()) { @@ -366,7 +366,7 @@ public function getCollection() * {@inheritdoc} * @see FlexCollectionInterface::render() */ - public function render(string $layout = null, array $context = []) + public function render(?string $layout = null, array $context = []) { if (!$layout) { $config = $this->getTemplateConfig(); @@ -485,7 +485,7 @@ public function getMetaData($key): array * @param string|null $namespace * @return CacheInterface */ - public function getCache(string $namespace = null) + public function getCache(?string $namespace = null) { return $this->_flexDirectory->getCache($namespace); } @@ -505,7 +505,7 @@ public function getKeyField(): string * @return static * @phpstan-return static */ - public function isAuthorized(string $action, string $scope = null, UserInterface $user = null) + public function isAuthorized(string $action, ?string $scope = null, ?UserInterface $user = null) { $list = $this->call('isAuthorized', [$action, $scope, $user]); $list = array_filter($list); diff --git a/system/src/Grav/Framework/Flex/FlexDirectory.php b/system/src/Grav/Framework/Flex/FlexDirectory.php index 28715978fc..3fb2f30bb5 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectory.php +++ b/system/src/Grav/Framework/Flex/FlexDirectory.php @@ -34,6 +34,7 @@ use RocketTheme\Toolbox\File\YamlFile; use RocketTheme\Toolbox\ResourceLocator\UniformResourceLocator; use RuntimeException; +use Symfony\Component\Cache\Psr16Cache; use function call_user_func_array; use function count; use function is_array; @@ -155,7 +156,7 @@ public function getDescription(): string * @param mixed $default * @return mixed */ - public function getConfig(string $name = null, $default = null) + public function getConfig(?string $name = null, $default = null) { if (null === $this->config) { $config = $this->getBlueprintInternal()->get('config', []); @@ -197,7 +198,7 @@ public function getSearchProperties($properties = null): array * @param array|null $options * @return array */ - public function getSearchOptions(array $options = null): array + public function getSearchOptions(?array $options = null): array { if (empty($options['merge'])) { return $options ?? (array)$this->getConfig('data.search.options'); @@ -214,7 +215,7 @@ public function getSearchOptions(array $options = null): array * @return FlexFormInterface * @internal */ - public function getDirectoryForm(string $name = null, array $options = []) + public function getDirectoryForm(?string $name = null, array $options = []) { $name = $name ?: $this->getConfig('admin.views.configure.form', '') ?: $this->getConfig('admin.configure.form', ''); @@ -311,7 +312,7 @@ public function loadDirectoryConfig(string $name): array * @param string|null $name * @return string */ - public function getDirectoryConfigUri(string $name = null): string + public function getDirectoryConfigUri(?string $name = null): string { $name = $name ?: $this->getFlexType(); $blueprint = $this->getBlueprint(); @@ -323,7 +324,7 @@ public function getDirectoryConfigUri(string $name = null): string * @param string|null $name * @return array */ - protected function getDirectoryConfig(string $name = null): array + protected function getDirectoryConfig(?string $name = null): array { $grav = Grav::instance(); @@ -372,7 +373,7 @@ public function getBlueprintFile(string $view = ''): string * @return FlexCollectionInterface * @phpstan-return FlexCollectionInterface */ - public function getCollection(array $keys = null, string $keyField = null): FlexCollectionInterface + public function getCollection(?array $keys = null, ?string $keyField = null): FlexCollectionInterface { // Get all selected entries. $index = $this->getIndex($keys, $keyField); @@ -399,7 +400,7 @@ public function getCollection(array $keys = null, string $keyField = null): Flex * @return FlexIndexInterface * @phpstan-return FlexIndexInterface */ - public function getIndex(array $keys = null, string $keyField = null): FlexIndexInterface + public function getIndex(?array $keys = null, ?string $keyField = null): FlexIndexInterface { $keyField = $keyField ?? ''; $index = $this->indexes[$keyField] ?? $this->loadIndex($keyField); @@ -422,7 +423,7 @@ public function getIndex(array $keys = null, string $keyField = null): FlexIndex * @param string|null $keyField Field to be used as the key. * @return FlexObjectInterface|null */ - public function getObject($key = null, string $keyField = null): ?FlexObjectInterface + public function getObject($key = null, ?string $keyField = null): ?FlexObjectInterface { if (null === $key) { return $this->createObject([], ''); @@ -438,7 +439,7 @@ public function getObject($key = null, string $keyField = null): ?FlexObjectInte * @param string|null $namespace * @return CacheInterface */ - public function getCache(string $namespace = null) + public function getCache(?string $namespace = null) { $namespace = $namespace ?: 'index'; $cache = $this->cache[$namespace] ?? null; @@ -452,6 +453,7 @@ public function getCache(string $namespace = null) $config = $this->getConfig('object.cache.' . $namespace); if (empty($config['enabled'])) { $cache = new MemoryCache('flex-objects-' . $this->getFlexType()); + $cache->setValidation(false); } else { $lifetime = $config['lifetime'] ?? 60; @@ -459,7 +461,8 @@ public function getCache(string $namespace = null) if (Utils::isAdminPlugin()) { $key = substr($key, 0, -1); } - $cache = new DoctrineCache($gravCache->getCacheDriver(), 'flex-objects-' . $this->getFlexType() . $key, $lifetime); + + $cache = new Psr16Cache($gravCache->getCacheAdapter('flex-objects-' . $this->getFlexType() . $key, $lifetime)); } } catch (Exception $e) { /** @var Debugger $debugger */ @@ -467,10 +470,9 @@ public function getCache(string $namespace = null) $debugger->addException($e); $cache = new MemoryCache('flex-objects-' . $this->getFlexType()); + $cache->setValidation(false); } - // Disable cache key validation. - $cache->setValidation(false); $this->cache[$namespace] = $cache; } @@ -506,7 +508,7 @@ public function clearCache() * @param string|null $key * @return string|null */ - public function getStorageFolder(string $key = null): ?string + public function getStorageFolder(?string $key = null): ?string { return $this->getStorage()->getStoragePath($key); } @@ -515,7 +517,7 @@ public function getStorageFolder(string $key = null): ?string * @param string|null $key * @return string|null */ - public function getMediaFolder(string $key = null): ?string + public function getMediaFolder(?string $key = null): ?string { return $this->getStorage()->getMediaPath($key); } @@ -555,7 +557,7 @@ public function createObject(array $data, string $key = '', bool $validate = fal * @return FlexCollectionInterface * @phpstan-return FlexCollectionInterface */ - public function createCollection(array $entries, string $keyField = null): FlexCollectionInterface + public function createCollection(array $entries, ?string $keyField = null): FlexCollectionInterface { /** phpstan-var class-string $className */ $className = $this->collectionClassName ?: $this->getCollectionClass(); @@ -572,7 +574,7 @@ public function createCollection(array $entries, string $keyField = null): FlexC * @return FlexIndexInterface * @phpstan-return FlexIndexInterface */ - public function createIndex(array $entries, string $keyField = null): FlexIndexInterface + public function createIndex(array $entries, ?string $keyField = null): FlexIndexInterface { /** @phpstan-var class-string $className */ $className = $this->indexClassName ?: $this->getIndexClass(); @@ -626,7 +628,7 @@ public function getIndexClass(): string * @return FlexCollectionInterface * @phpstan-return FlexCollectionInterface */ - public function loadCollection(array $entries, string $keyField = null): FlexCollectionInterface + public function loadCollection(array $entries, ?string $keyField = null): FlexCollectionInterface { return $this->createCollection($this->loadObjects($entries), $keyField); } @@ -1120,7 +1122,7 @@ public function getType(): string * @return FlexObjectInterface * @deprecated 1.7 Use $object->update()->save() instead. */ - public function update(array $data, string $key = null): FlexObjectInterface + public function update(array $data, ?string $key = null): FlexObjectInterface { user_error(__CLASS__ . '::' . __FUNCTION__ . '() should not be used anymore: use $object->update()->save() instead.', E_USER_DEPRECATED); diff --git a/system/src/Grav/Framework/Flex/FlexDirectoryForm.php b/system/src/Grav/Framework/Flex/FlexDirectoryForm.php index 459fb499fd..01041f7115 100644 --- a/system/src/Grav/Framework/Flex/FlexDirectoryForm.php +++ b/system/src/Grav/Framework/Flex/FlexDirectoryForm.php @@ -83,7 +83,7 @@ public static function instance(array $options = []): FlexFormInterface * @param FlexDirectory $directory * @param array|null $options */ - public function __construct(string $name, FlexDirectory $directory, array $options = null) + public function __construct(string $name, FlexDirectory $directory, ?array $options = null) { $this->name = $name; $this->setDirectory($directory); @@ -350,7 +350,7 @@ public function getFileDeleteAjaxRoute($field = null, $filename = null): ?Route * @param string|null $extension * @return string */ - public function getMediaTaskRoute(array $params = [], string $extension = null): string + public function getMediaTaskRoute(array $params = [], ?string $extension = null): string { return ''; } diff --git a/system/src/Grav/Framework/Flex/FlexForm.php b/system/src/Grav/Framework/Flex/FlexForm.php index f3a0d1fc0f..2d00b9d678 100644 --- a/system/src/Grav/Framework/Flex/FlexForm.php +++ b/system/src/Grav/Framework/Flex/FlexForm.php @@ -100,7 +100,7 @@ public static function instance(array $options = []) * @param FlexObjectInterface $object * @param array|null $options */ - public function __construct(string $name, FlexObjectInterface $object, array $options = null) + public function __construct(string $name, FlexObjectInterface $object, ?array $options = null) { $this->name = $name; $this->setObject($object); @@ -428,7 +428,7 @@ public function getFileDeleteAjaxRoute($field = null, $filename = null): ?Route * @param string|null $extension * @return string */ - public function getMediaTaskRoute(array $params = [], string $extension = null): string + public function getMediaTaskRoute(array $params = [], ?string $extension = null): string { $grav = Grav::instance(); /** @var Flex $flex */ diff --git a/system/src/Grav/Framework/Flex/FlexIndex.php b/system/src/Grav/Framework/Flex/FlexIndex.php index 39fec18c85..a7b05e7f03 100644 --- a/system/src/Grav/Framework/Flex/FlexIndex.php +++ b/system/src/Grav/Framework/Flex/FlexIndex.php @@ -9,6 +9,7 @@ namespace Grav\Framework\Flex; +use Closure; use Exception; use Grav\Common\Debugger; use Grav\Common\File\CompiledJsonFile; @@ -65,7 +66,7 @@ public static function createFromStorage(FlexDirectory $directory) * {@inheritdoc} * @see FlexCollectionInterface::createFromArray() */ - public static function createFromArray(array $entries, FlexDirectory $directory, string $keyField = null) + public static function createFromArray(array $entries, FlexDirectory $directory, ?string $keyField = null) { $instance = new static($entries, $directory); $instance->setKeyField($keyField); @@ -105,7 +106,7 @@ public static function updateObjectMeta(array &$meta, array $data, FlexStorageIn * @param array $entries * @param FlexDirectory|null $directory */ - public function __construct(array $entries = [], FlexDirectory $directory = null) + public function __construct(array $entries = [], ?FlexDirectory $directory = null) { // @phpstan-ignore-next-line if (get_class($this) === __CLASS__) { @@ -160,7 +161,7 @@ public function getFlexFeatures(): array * {@inheritdoc} * @see FlexCollectionInterface::search() */ - public function search(string $search, $properties = null, array $options = null) + public function search(string $search, $properties = null, ?array $options = null) { $directory = $this->getFlexDirectory(); $properties = $directory->getSearchProperties($properties); @@ -282,7 +283,7 @@ public function getFlexKeys(): array * {@inheritdoc} * @see FlexIndexInterface::withKeyField() */ - public function withKeyField(string $keyField = null) + public function withKeyField(?string $keyField = null) { $keyField = $keyField ?: 'key'; if ($keyField === $this->getKeyField()) { @@ -328,7 +329,7 @@ public function getCollection() * {@inheritdoc} * @see FlexCollectionInterface::render() */ - public function render(string $layout = null, array $context = []) + public function render(?string $layout = null, array $context = []) { return $this->__call('render', [$layout, $context]); } @@ -337,7 +338,7 @@ public function render(string $layout = null, array $context = []) * {@inheritdoc} * @see FlexIndexInterface::getFlexKeys() */ - public function getIndexMap(string $indexKey = null) + public function getIndexMap(?string $indexKey = null) { if (null === $indexKey) { return $this->getEntries(); @@ -373,7 +374,7 @@ public function getKeyField(): string * @param string|null $namespace * @return CacheInterface */ - public function getCache(string $namespace = null) + public function getCache(?string $namespace = null) { return $this->getFlexDirectory()->getCache($namespace); } @@ -557,7 +558,7 @@ public function __debugInfo() * @return static * @phpstan-return static */ - protected function createFrom(array $entries, string $keyField = null) + protected function createFrom(array $entries, ?string $keyField = null) { /** @phpstan-var static $index */ $index = new static($entries, $this->getFlexDirectory()); @@ -570,7 +571,7 @@ protected function createFrom(array $entries, string $keyField = null) * @param string|null $keyField * @return void */ - protected function setKeyField(string $keyField = null) + protected function setKeyField(?string $keyField = null) { $this->_keyField = $keyField ?? 'storage_key'; } @@ -641,7 +642,7 @@ protected function loadElement($key, $value): ?ObjectInterface * @return ObjectInterface[] * @phpstan-return T[] */ - protected function loadElements(array $entries = null): array + protected function loadElements(?array $entries = null): array { /** @phpstan-var T[] $objects */ $objects = $this->getFlexDirectory()->loadObjects($entries ?? $this->getEntries()); @@ -654,7 +655,7 @@ protected function loadElements(array $entries = null): array * @return CollectionInterface * @phpstan-return C */ - protected function loadCollection(array $entries = null): CollectionInterface + protected function loadCollection(?array $entries = null): CollectionInterface { /** @var C $collection */ $collection = $this->getFlexDirectory()->loadCollection($entries ?? $this->getEntries(), $this->_keyField); @@ -927,4 +928,15 @@ public function getType($prefix = false) return $type . $this->getFlexType(); } + + public function findFirst(Closure $p) + { + // TODO: Implement findFirst() method. + } + + public function reduce(Closure $func, mixed $initial = null) + { + // TODO: Implement reduce() method. + } + } diff --git a/system/src/Grav/Framework/Flex/FlexObject.php b/system/src/Grav/Framework/Flex/FlexObject.php index 14f28f9b6a..8be3081891 100644 --- a/system/src/Grav/Framework/Flex/FlexObject.php +++ b/system/src/Grav/Framework/Flex/FlexObject.php @@ -285,7 +285,7 @@ public function getCacheChecksum(): string * {@inheritdoc} * @see FlexObjectInterface::search() */ - public function search(string $search, $properties = null, array $options = null): float + public function search(string $search, $properties = null, ?array $options = null): float { $directory = $this->getFlexDirectory(); $properties = $directory->getSearchProperties($properties); @@ -362,7 +362,7 @@ public function exists(): bool * @param array|null $options * @return float */ - public function searchProperty(string $property, string $search, array $options = null): float + public function searchProperty(string $property, string $search, ?array $options = null): float { $options = $options ?? (array)$this->getFlexDirectory()->getConfig('data.search.options'); $value = $this->getProperty($property); @@ -376,7 +376,7 @@ public function searchProperty(string $property, string $search, array $options * @param array|null $options * @return float */ - public function searchNestedProperty(string $property, string $search, array $options = null): float + public function searchNestedProperty(string $property, string $search, ?array $options = null): float { $options = $options ?? (array)$this->getFlexDirectory()->getConfig('data.search.options'); if ($property === 'key') { @@ -395,7 +395,7 @@ public function searchNestedProperty(string $property, string $search, array $op * @param array|null $options * @return float */ - protected function searchValue(string $name, $value, string $search, array $options = null): float + protected function searchValue(string $name, $value, string $search, ?array $options = null): float { $options = $options ?? []; @@ -515,7 +515,7 @@ public function blueprints() * @param string|null $namespace * @return CacheInterface */ - public function getCache(string $namespace = null) + public function getCache(?string $namespace = null) { return $this->_flexDirectory->getCache($namespace); } @@ -546,7 +546,7 @@ public function setTimestamp($timestamp = null) * {@inheritdoc} * @see FlexObjectInterface::render() */ - public function render(string $layout = null, array $context = []) + public function render(?string $layout = null, array $context = []) { if (!$layout) { $config = $this->getTemplateConfig(); @@ -714,7 +714,7 @@ public function update(array $data, array $files = []) * {@inheritdoc} * @see FlexObjectInterface::create() */ - public function create(string $key = null) + public function create(?string $key = null) { if ($key) { $this->setStorageKey($key); @@ -731,7 +731,7 @@ public function create(string $key = null) * @param string|null $key * @return FlexObject|FlexObjectInterface */ - public function createCopy(string $key = null) + public function createCopy(?string $key = null) { $this->markAsCopy(); @@ -741,7 +741,7 @@ public function createCopy(string $key = null) /** * @param UserInterface|null $user */ - public function check(UserInterface $user = null): void + public function check(?UserInterface $user = null): void { // If user has been provided, check if the user has permissions to save this object. if ($user && !$this->isAuthorized('save', null, $user)) { @@ -865,7 +865,7 @@ public function getBlueprint(string $name = '') * {@inheritdoc} * @see FlexObjectInterface::getForm() */ - public function getForm(string $name = '', array $options = null) + public function getForm(string $name = '', ?array $options = null) { $hash = $name . '-' . md5(json_encode($options, JSON_THROW_ON_ERROR)); if (!isset($this->_forms[$hash])) { @@ -879,7 +879,7 @@ public function getForm(string $name = '', array $options = null) * {@inheritdoc} * @see FlexObjectInterface::getDefaultValue() */ - public function getDefaultValue(string $name, string $separator = null) + public function getDefaultValue(string $name, ?string $separator = null) { $separator = $separator ?: '.'; $path = explode($separator, $name); @@ -920,7 +920,7 @@ public function getDefaultValues(): array * {@inheritdoc} * @see FlexObjectInterface::getFormValue() */ - public function getFormValue(string $name, $default = null, string $separator = null) + public function getFormValue(string $name, $default = null, ?string $separator = null) { if ($name === 'storage_key') { return $this->getStorageKey(); @@ -1018,7 +1018,7 @@ protected function doSerialize(): array * @param FlexDirectory|null $directory * @return void */ - protected function doUnserialize(array $serialized, FlexDirectory $directory = null): void + protected function doUnserialize(array $serialized, ?FlexDirectory $directory = null): void { $type = $serialized['type'] ?? 'unknown'; @@ -1106,7 +1106,7 @@ protected function filterElements(array &$elements): void * @param array|null $options Form optiosn * @return FlexFormInterface */ - protected function createFormObject(string $name, array $options = null) + protected function createFormObject(string $name, ?array $options = null) { return new FlexForm($name, $this, $options); } diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php index 9561f59d99..a4603b74b7 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexAuthorizeInterface.php @@ -29,5 +29,5 @@ interface FlexAuthorizeInterface * @param UserInterface|null $user * @return bool|null */ - public function isAuthorized(string $action, string $scope = null, UserInterface $user = null): ?bool; + public function isAuthorized(string $action, ?string $scope = null, ?UserInterface $user = null): ?bool; } diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php index acfede55ba..3fd0507343 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexCollectionInterface.php @@ -37,7 +37,7 @@ interface FlexCollectionInterface extends FlexCommonInterface, ObjectCollectionI * @param string|null $keyField Key field used to index the collection. * @return static Returns a new Flex Collection. */ - public static function createFromArray(array $entries, FlexDirectory $directory, string $keyField = null); + public static function createFromArray(array $entries, FlexDirectory $directory, ?string $keyField = null); /** * Creates a new Flex Collection. @@ -48,7 +48,7 @@ public static function createFromArray(array $entries, FlexDirectory $directory, * @param FlexDirectory|null $directory Flex Directory where all the objects belong into. * @throws InvalidArgumentException */ - public function __construct(array $entries = [], FlexDirectory $directory = null); + public function __construct(array $entries = [], ?FlexDirectory $directory = null); /** * Search a string from the collection. @@ -60,7 +60,7 @@ public function __construct(array $entries = [], FlexDirectory $directory = null * @phpstan-return static * @api */ - public function search(string $search, $properties = null, array $options = null); + public function search(string $search, $properties = null, ?array $options = null); /** * Sort the collection. @@ -116,7 +116,7 @@ public function getFlexKeys(): array; * @phpstan-return static * @api */ - public function withKeyField(string $keyField = null); + public function withKeyField(?string $keyField = null); /** * Get Flex Index from the Flex Collection. diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php index 918feead3e..bea37ee8da 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexDirectoryInterface.php @@ -49,7 +49,7 @@ public function getDescription(): string; * @param mixed $default * @return mixed */ - public function getConfig(string $name = null, $default = null); + public function getConfig(?string $name = null, $default = null); /** * @param string|null $name @@ -57,7 +57,7 @@ public function getConfig(string $name = null, $default = null); * @return FlexFormInterface * @internal */ - public function getDirectoryForm(string $name = null, array $options = []); + public function getDirectoryForm(?string $name = null, array $options = []); /** * @return Blueprint @@ -78,7 +78,7 @@ public function saveDirectoryConfig(string $name, array $data); * @param string|null $name * @return string */ - public function getDirectoryConfigUri(string $name = null): string; + public function getDirectoryConfigUri(?string $name = null): string; /** * Returns a new uninitialized instance of blueprint. @@ -107,7 +107,7 @@ public function getBlueprintFile(string $view = ''): string; * @return FlexCollectionInterface * @phpstan-return FlexCollectionInterface */ - public function getCollection(array $keys = null, string $keyField = null): FlexCollectionInterface; + public function getCollection(?array $keys = null, ?string $keyField = null): FlexCollectionInterface; /** * Get the full collection of all stored objects. @@ -119,7 +119,7 @@ public function getCollection(array $keys = null, string $keyField = null): Flex * @return FlexIndexInterface * @phpstan-return FlexIndexInterface */ - public function getIndex(array $keys = null, string $keyField = null): FlexIndexInterface; + public function getIndex(?array $keys = null, ?string $keyField = null): FlexIndexInterface; /** * Returns an object if it exists. If no arguments are passed (or both of them are null), method creates a new empty object. @@ -130,13 +130,13 @@ public function getIndex(array $keys = null, string $keyField = null): FlexIndex * @param string|null $keyField Field to be used as the key. * @return FlexObjectInterface|null */ - public function getObject($key = null, string $keyField = null): ?FlexObjectInterface; + public function getObject($key = null, ?string $keyField = null): ?FlexObjectInterface; /** * @param string|null $namespace * @return CacheInterface */ - public function getCache(string $namespace = null); + public function getCache(?string $namespace = null); /** * @return $this @@ -147,13 +147,13 @@ public function clearCache(); * @param string|null $key * @return string|null */ - public function getStorageFolder(string $key = null): ?string; + public function getStorageFolder(?string $key = null): ?string; /** * @param string|null $key * @return string|null */ - public function getMediaFolder(string $key = null): ?string; + public function getMediaFolder(?string $key = null): ?string; /** * @return FlexStorageInterface @@ -174,7 +174,7 @@ public function createObject(array $data, string $key = '', bool $validate = fal * @return FlexCollectionInterface * @phpstan-return FlexCollectionInterface */ - public function createCollection(array $entries, string $keyField = null): FlexCollectionInterface; + public function createCollection(array $entries, ?string $keyField = null): FlexCollectionInterface; /** * @param array $entries @@ -182,7 +182,7 @@ public function createCollection(array $entries, string $keyField = null): FlexC * @return FlexIndexInterface * @phpstan-return FlexIndexInterface */ - public function createIndex(array $entries, string $keyField = null): FlexIndexInterface; + public function createIndex(array $entries, ?string $keyField = null): FlexIndexInterface; /** * @return string @@ -205,7 +205,7 @@ public function getIndexClass(): string; * @return FlexCollectionInterface * @phpstan-return FlexCollectionInterface */ - public function loadCollection(array $entries, string $keyField = null): FlexCollectionInterface; + public function loadCollection(array $entries, ?string $keyField = null): FlexCollectionInterface; /** * @param array $entries diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php index fe78465755..7d62822ebf 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexIndexInterface.php @@ -54,11 +54,11 @@ public static function loadEntriesFromStorage(FlexStorageInterface $storage): ar * @phpstan-return static * @api */ - public function withKeyField(string $keyField = null); + public function withKeyField(?string $keyField = null); /** * @param string|null $indexKey * @return array */ - public function getIndexMap(string $indexKey = null); + public function getIndexMap(?string $indexKey = null); } diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php index 3c9de49724..6952ad5593 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexInterface.php @@ -46,7 +46,7 @@ public function hasDirectory(string $type): bool; * @param bool $keepMissing * @return array */ - public function getDirectories(array $types = null, bool $keepMissing = false): array; + public function getDirectories(?array $types = null, bool $keepMissing = false): array; /** * @param string $type @@ -61,7 +61,7 @@ public function getDirectory(string $type): ?FlexDirectory; * @return FlexCollectionInterface|null * @phpstan-return FlexCollectionInterface|null */ - public function getCollection(string $type, array $keys = null, string $keyField = null): ?FlexCollectionInterface; + public function getCollection(string $type, ?array $keys = null, ?string $keyField = null): ?FlexCollectionInterface; /** * @param array $keys @@ -91,7 +91,7 @@ public function getObjects(array $keys, array $options = []): array; * @param string|null $keyField * @return FlexObjectInterface|null */ - public function getObject(string $key, string $type = null, string $keyField = null): ?FlexObjectInterface; + public function getObject(string $key, ?string $type = null, ?string $keyField = null): ?FlexObjectInterface; /** * @return int diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php index 826db3f66b..5893c23de9 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexObjectInterface.php @@ -55,7 +55,7 @@ public function __construct(array $elements, $key, FlexDirectory $directory, boo * @return float Returns a weight between 0 and 1. * @api */ - public function search(string $search, $properties = null, array $options = null): float; + public function search(string $search, $properties = null, ?array $options = null): float; /** * Returns true if object has a key. @@ -136,7 +136,7 @@ public function update(array $data, array $files = []); * @throws RuntimeException if object already exists. * @api */ - public function create(string $key = null); + public function create(?string $key = null); /** * Save object into the storage. @@ -175,7 +175,7 @@ public function getBlueprint(string $name = ''); * @return FlexFormInterface Returns a Form. * @api */ - public function getForm(string $name = '', array $options = null); + public function getForm(string $name = '', ?array $options = null); /** * Returns default value suitable to be used in a form for the given property. @@ -186,7 +186,7 @@ public function getForm(string $name = '', array $options = null); * @param string|null $separator Optional nested property separator. * @return mixed|null Returns default value of the field, null if there is no default value. */ - public function getDefaultValue(string $name, string $separator = null); + public function getDefaultValue(string $name, ?string $separator = null); /** * Returns default values suitable to be used in a form for the given property. @@ -207,5 +207,5 @@ public function getDefaultValues(): array; * @param string|null $separator Optional nested property separator. * @return mixed Returns value of the field. */ - public function getFormValue(string $name, $default = null, string $separator = null); + public function getFormValue(string $name, $default = null, ?string $separator = null); } diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php index 4980696edc..d78a8af69c 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexStorageInterface.php @@ -78,7 +78,7 @@ public function createRows(array $rows): array; * @param array|null $fetched Optional reference to store only fetched items. * @return array Returns rows. Note that non-existing rows will have `null` as their value. */ - public function readRows(array $rows, array &$fetched = null): array; + public function readRows(array $rows, ?array &$fetched = null): array; /** * Update existing rows in the storage. @@ -126,7 +126,7 @@ public function renameRow(string $src, string $dst): bool; * @param string|null $key Optional storage key. * @return string|null Path in the filesystem. Can be URI or null if storage is not filesystem based. */ - public function getStoragePath(string $key = null): ?string; + public function getStoragePath(?string $key = null): ?string; /** * Get filesystem path for the collection or object media. @@ -134,5 +134,5 @@ public function getStoragePath(string $key = null): ?string; * @param string|null $key Optional storage key. * @return string|null Path in the filesystem. Can be URI or null if media isn't supported. */ - public function getMediaPath(string $key = null): ?string; + public function getMediaPath(?string $key = null): ?string; } diff --git a/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php b/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php index 1ae8b7e38b..c3a488dc4e 100644 --- a/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php +++ b/system/src/Grav/Framework/Flex/Interfaces/FlexTranslateInterface.php @@ -23,7 +23,7 @@ interface FlexTranslateInterface * @param bool|null $fallback * @return bool */ - public function hasTranslation(string $languageCode = null, bool $fallback = null): bool; + public function hasTranslation(?string $languageCode = null, ?bool $fallback = null): bool; /** * Get translation. @@ -32,7 +32,7 @@ public function hasTranslation(string $languageCode = null, bool $fallback = nul * @param bool|null $fallback * @return static|null */ - public function getTranslation(string $languageCode = null, bool $fallback = null); + public function getTranslation(?string $languageCode = null, ?bool $fallback = null); /** * Returns all translated languages. diff --git a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php index 79d92845b5..1e49734f84 100644 --- a/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php +++ b/system/src/Grav/Framework/Flex/Pages/FlexPageObject.php @@ -39,6 +39,7 @@ class FlexPageObject extends FlexObject implements PageInterface, FlexTranslateI use PageAuthorsTrait; use PageContentTrait; use PageFormTrait; + /** @phpstan-use PageLegacyTrait */ use PageLegacyTrait; use PageRoutableTrait; use PageTranslateTrait; @@ -185,7 +186,7 @@ public function getUpdated_Timestamp(): int /** * @inheritdoc */ - public function getFormValue(string $name, $default = null, string $separator = null) + public function getFormValue(string $name, $default = null, ?string $separator = null) { $test = new stdClass(); @@ -240,7 +241,7 @@ public function getCacheKey(): string * @param string|null $key * @return FlexObjectInterface */ - public function createCopy(string $key = null) + public function createCopy(?string $key = null) { $this->copy(); diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php index 1061cbb251..878c5cba60 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageAuthorsTrait.php @@ -116,7 +116,7 @@ protected function loadAuthors(iterable $authors): array * @param bool $isAuthor * @return bool|null */ - public function isParentAuthorized(string $action, string $scope = null, UserInterface $user = null, bool $isAuthor = false): ?bool + public function isParentAuthorized(string $action, ?string $scope = null, ?UserInterface $user = null, bool $isAuthor = false): ?bool { $scope = $scope ?? $this->getAuthorizeScope(); diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php index 77c218fb74..37bca5e5af 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageLegacyTrait.php @@ -37,6 +37,9 @@ /** * Implements PageLegacyInterface + * + * @template TKey of array-key + * @template T of FlexPageObject */ trait PageLegacyTrait { @@ -291,7 +294,7 @@ public function move(PageInterface $parent) * @param PageInterface|null $parent New parent page. * @return $this */ - public function copy(PageInterface $parent = null) + public function copy(?PageInterface $parent = null) { $this->storeOriginal(); @@ -867,6 +870,7 @@ public function modularTwig($var = null): bool * Returns children of this page. * * @return PageCollectionInterface|FlexIndexInterface + * @phpstan-return PageCollectionInterface */ public function children() { @@ -1045,6 +1049,7 @@ public function find($url, $all = false) * @param string|array $params * @param bool $pagination * @return PageCollectionInterface|Collection + * @phpstan-return PageCollectionInterface|Collection * @throws InvalidArgumentException */ public function collection($params = 'content', $pagination = true) @@ -1074,6 +1079,7 @@ public function collection($params = 'content', $pagination = true) * @param string|array $value * @param bool $only_published * @return PageCollectionInterface|Collection + * @phpstan-return PageCollectionInterface|Collection */ public function evaluate($value, $only_published = true) { diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php index 918ad67ba7..b5b3f899e1 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageRoutableTrait.php @@ -409,7 +409,7 @@ function ($value) { * @param PageInterface|null $var the parent page object * @return PageInterface|null the parent page object if it exists. */ - public function parent(PageInterface $var = null) + public function parent(?PageInterface $var = null) { if (null !== $var) { // TODO: diff --git a/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php b/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php index 2bdfa8756e..6fc09fb0e9 100644 --- a/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php +++ b/system/src/Grav/Framework/Flex/Pages/Traits/PageTranslateTrait.php @@ -39,7 +39,7 @@ public function translated(): bool * @param bool|null $fallback * @return bool */ - public function hasTranslation(string $languageCode = null, bool $fallback = null): bool + public function hasTranslation(?string $languageCode = null, ?bool $fallback = null): bool { $code = $this->findTranslation($languageCode, $fallback); @@ -51,7 +51,7 @@ public function hasTranslation(string $languageCode = null, bool $fallback = nul * @param bool|null $fallback * @return FlexObjectInterface|PageInterface|null */ - public function getTranslation(string $languageCode = null, bool $fallback = null) + public function getTranslation(?string $languageCode = null, ?bool $fallback = null) { if ($this->root()) { return $this; @@ -147,7 +147,7 @@ public function getLanguage(): string * @param bool|null $fallback * @return string|null */ - public function findTranslation(string $languageCode = null, bool $fallback = null): ?string + public function findTranslation(?string $languageCode = null, ?bool $fallback = null): ?string { $translated = $this->getLanguageTemplates(); @@ -270,7 +270,7 @@ protected function getLanguageTemplates(): array * @param bool|null $fallback * @return array */ - protected function getFallbackLanguages(string $languageCode = null, bool $fallback = null): array + protected function getFallbackLanguages(?string $languageCode = null, ?bool $fallback = null): array { $fallback = $fallback ?? true; if (!$fallback && null !== $languageCode) { diff --git a/system/src/Grav/Framework/Flex/Storage/FileStorage.php b/system/src/Grav/Framework/Flex/Storage/FileStorage.php index 27701282e3..4ed0660fd0 100644 --- a/system/src/Grav/Framework/Flex/Storage/FileStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FileStorage.php @@ -42,7 +42,7 @@ public function __construct(array $options) * {@inheritdoc} * @see FlexStorageInterface::getMediaPath() */ - public function getMediaPath(string $key = null): ?string + public function getMediaPath(?string $key = null): ?string { $path = $this->getStoragePath(); if (!$path) { diff --git a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php index 157449d366..790eafdc4d 100644 --- a/system/src/Grav/Framework/Flex/Storage/FolderStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/FolderStorage.php @@ -135,7 +135,7 @@ public function createRows(array $rows): array * {@inheritdoc} * @see FlexStorageInterface::readRows() */ - public function readRows(array $rows, array &$fetched = null): array + public function readRows(array $rows, ?array &$fetched = null): array { $list = []; foreach ($rows as $key => $row) { @@ -277,7 +277,7 @@ public function renameRow(string $src, string $dst): bool * {@inheritdoc} * @see FlexStorageInterface::getStoragePath() */ - public function getStoragePath(string $key = null): ?string + public function getStoragePath(?string $key = null): ?string { if (null === $key || $key === '') { $path = $this->dataFolder; @@ -301,7 +301,7 @@ public function getStoragePath(string $key = null): ?string * {@inheritdoc} * @see FlexStorageInterface::getMediaPath() */ - public function getMediaPath(string $key = null): ?string + public function getMediaPath(?string $key = null): ?string { return $this->getStoragePath($key); } diff --git a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php index 5a92023eb6..4ffddd3b24 100644 --- a/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php +++ b/system/src/Grav/Framework/Flex/Storage/SimpleStorage.php @@ -148,7 +148,7 @@ public function createRows(array $rows): array * {@inheritdoc} * @see FlexStorageInterface::readRows() */ - public function readRows(array $rows, array &$fetched = null): array + public function readRows(array $rows, ?array &$fetched = null): array { if (null === $this->data) { $this->buildIndex(); @@ -305,7 +305,7 @@ public function renameRow(string $src, string $dst): bool * {@inheritdoc} * @see FlexStorageInterface::getStoragePath() */ - public function getStoragePath(string $key = null): ?string + public function getStoragePath(?string $key = null): ?string { return $this->dataFolder . '/' . $this->dataPattern; } @@ -314,7 +314,7 @@ public function getStoragePath(string $key = null): ?string * {@inheritdoc} * @see FlexStorageInterface::getMediaPath() */ - public function getMediaPath(string $key = null): ?string + public function getMediaPath(?string $key = null): ?string { return null; } diff --git a/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php index a821300418..17b3212b5a 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexAuthorizeTrait.php @@ -34,7 +34,7 @@ trait FlexAuthorizeTrait * @return bool|null * @final */ - public function isAuthorized(string $action, string $scope = null, UserInterface $user = null): ?bool + public function isAuthorized(string $action, ?string $scope = null, ?UserInterface $user = null): ?bool { $action = $this->getAuthorizeAction($action); $scope = $scope ?? $this->getAuthorizeScope(); diff --git a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php index a4d9a7e41a..e87b878865 100644 --- a/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php +++ b/system/src/Grav/Framework/Flex/Traits/FlexMediaTrait.php @@ -241,7 +241,7 @@ protected function parseFileProperty($value, array $settings = []) * @return void * @internal */ - public function checkUploadedMediaFile(UploadedFileInterface $uploadedFile, string $filename = null, string $field = null) + public function checkUploadedMediaFile(UploadedFileInterface $uploadedFile, ?string $filename = null, ?string $field = null) { $media = $this->getMedia(); if (!$media instanceof MediaUploadInterface) { @@ -258,7 +258,7 @@ public function checkUploadedMediaFile(UploadedFileInterface $uploadedFile, stri * @return void * @internal */ - public function uploadMediaFile(UploadedFileInterface $uploadedFile, string $filename = null, string $field = null): void + public function uploadMediaFile(UploadedFileInterface $uploadedFile, ?string $filename = null, ?string $field = null): void { $settings = $this->getMediaFieldSettings($field ?? ''); @@ -305,7 +305,7 @@ public function __debugInfo() * @param MediaObjectInterface|null $image * @return MediaObject|UploadedMediaObject */ - protected function buildMediaObject(?string $field, string $filename, MediaObjectInterface $image = null) + protected function buildMediaObject(?string $field, string $filename, ?MediaObjectInterface $image = null) { if (!$image) { $media = $field ? $this->getMediaField($field) : null; diff --git a/system/src/Grav/Framework/Form/FormFlash.php b/system/src/Grav/Framework/Form/FormFlash.php index db1d8d4c9f..8de7588900 100644 --- a/system/src/Grav/Framework/Form/FormFlash.php +++ b/system/src/Grav/Framework/Form/FormFlash.php @@ -320,7 +320,7 @@ public function getFilesByFields($includeOriginal = false): array /** * @inheritDoc */ - public function addUploadedFile(UploadedFileInterface $upload, string $field = null, array $crop = null): string + public function addUploadedFile(UploadedFileInterface $upload, ?string $field = null, ?array $crop = null): string { $tmp_dir = $this->getTmpDir(); $tmp_name = Utils::generateRandomString(12); @@ -348,7 +348,7 @@ public function addUploadedFile(UploadedFileInterface $upload, string $field = n /** * @inheritDoc */ - public function addFile(string $filename, string $field, array $crop = null): bool + public function addFile(string $filename, string $field, ?array $crop = null): bool { if (!file_exists($filename)) { throw new RuntimeException("File not found: {$filename}"); @@ -369,7 +369,7 @@ public function addFile(string $filename, string $field, array $crop = null): bo /** * @inheritDoc */ - public function removeFile(string $name, string $field = null): bool + public function removeFile(string $name, ?string $field = null): bool { if (!$name) { return false; @@ -447,7 +447,7 @@ public function setUrl(string $url): self * @param UserInterface|null $user * @return $this */ - public function setUser(UserInterface $user = null) + public function setUser(?UserInterface $user = null) { if ($user && $user->username) { $this->user = [ @@ -465,7 +465,7 @@ public function setUser(UserInterface $user = null) * @param string|null $username * @return $this */ - public function setUserName(string $username = null): self + public function setUserName(?string $username = null): self { $this->user['username'] = $username; @@ -476,7 +476,7 @@ public function setUserName(string $username = null): self * @param string|null $email * @return $this */ - public function setUserEmail(string $email = null): self + public function setUserEmail(?string $email = null): self { $this->user['email'] = $email; @@ -538,7 +538,7 @@ protected function removeTmpDir(): void * @param array|null $crop * @return void */ - protected function addFileInternal(?string $field, string $name, array $data, array $crop = null): void + protected function addFileInternal(?string $field, string $name, array $data, ?array $crop = null): void { if (!($this->folder && $this->uniqueId)) { throw new RuntimeException('Cannot upload files: form flash folder not defined'); diff --git a/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php index a834994e1c..d01956b3c2 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormFlashInterface.php @@ -146,7 +146,7 @@ public function getFilesByFields($includeOriginal = false): array; * @param array|null $crop * @return string Return name of the file */ - public function addUploadedFile(UploadedFileInterface $upload, string $field = null, array $crop = null): string; + public function addUploadedFile(UploadedFileInterface $upload, ?string $field = null, ?array $crop = null): string; /** * Add existing file to the form flash. @@ -156,7 +156,7 @@ public function addUploadedFile(UploadedFileInterface $upload, string $field = n * @param array|null $crop * @return bool */ - public function addFile(string $filename, string $field, array $crop = null): bool; + public function addFile(string $filename, string $field, ?array $crop = null): bool; /** * Remove any file from form flash. @@ -165,7 +165,7 @@ public function addFile(string $filename, string $field, array $crop = null): bo * @param string|null $field * @return bool */ - public function removeFile(string $name, string $field = null): bool; + public function removeFile(string $name, ?string $field = null): bool; /** * Clear form flash from all uploaded files. diff --git a/system/src/Grav/Framework/Form/Interfaces/FormInterface.php b/system/src/Grav/Framework/Form/Interfaces/FormInterface.php index 5d60965f63..79beae1539 100644 --- a/system/src/Grav/Framework/Form/Interfaces/FormInterface.php +++ b/system/src/Grav/Framework/Form/Interfaces/FormInterface.php @@ -140,7 +140,7 @@ public function handleRequest(ServerRequestInterface $request): FormInterface; * @param UploadedFileInterface[]|null $files * @return $this */ - public function submit(array $data, array $files = null): FormInterface; + public function submit(array $data, ?array $files = null): FormInterface; /** * @return bool diff --git a/system/src/Grav/Framework/Form/Traits/FormTrait.php b/system/src/Grav/Framework/Form/Traits/FormTrait.php index 4bcae673ee..b64dd9a9ba 100644 --- a/system/src/Grav/Framework/Form/Traits/FormTrait.php +++ b/system/src/Grav/Framework/Form/Traits/FormTrait.php @@ -194,7 +194,7 @@ public function getTask(): string * @param string|null $name * @return mixed */ - public function getData(string $name = null) + public function getData(?string $name = null) { return null !== $name ? $this->data[$name] : $this->data; } @@ -366,7 +366,7 @@ public function validate(): bool * @param UploadedFileInterface[]|null $files * @return FormInterface|$this */ - public function submit(array $data, array $files = null): FormInterface + public function submit(array $data, ?array $files = null): FormInterface { try { if ($this->isSubmitted()) { @@ -502,7 +502,7 @@ public function getAllFlashes(): array * {@inheritdoc} * @see FormInterface::render() */ - public function render(string $layout = null, array $context = []) + public function render(?string $layout = null, array $context = []) { if (null === $layout) { $layout = 'default'; diff --git a/system/src/Grav/Framework/Interfaces/RenderInterface.php b/system/src/Grav/Framework/Interfaces/RenderInterface.php index 0cefae3ad7..5a2397a88c 100644 --- a/system/src/Grav/Framework/Interfaces/RenderInterface.php +++ b/system/src/Grav/Framework/Interfaces/RenderInterface.php @@ -34,5 +34,5 @@ interface RenderInterface * @return ContentBlockInterface|HtmlBlock Returns `HtmlBlock` containing the rendered output. * @api */ - public function render(string $layout = null, array $context = []); + public function render(?string $layout = null, array $context = []); } diff --git a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php index 4c7f621e04..d9d8e41df8 100644 --- a/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php +++ b/system/src/Grav/Framework/Object/Base/ObjectCollectionTrait.php @@ -21,8 +21,8 @@ * ObjectCollection Trait * @package Grav\Framework\Object * - * @template TKey as array-key - * @template T as ObjectInterface + * @template TKey of array-key + * @template T of ObjectInterface */ trait ObjectCollectionTrait { @@ -367,7 +367,7 @@ public function collectionGroup($property) $collections = []; foreach ($this->group($property) as $id => $elements) { /** @phpstan-var static $collection */ - $collection = $this->createFrom($elements); + $collection = $this->createFrom($elements); /** @phpstan-ignore-line generic type in trait cannot be resolved */ $collections[$id] = $collection; } diff --git a/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php b/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php index 5b28ab0bb3..d622538251 100644 --- a/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php +++ b/system/src/Grav/Framework/Object/Collection/ObjectExpressionVisitor.php @@ -135,7 +135,7 @@ public static function filterTrim($str) * * @return Closure */ - public static function sortByField($name, $orientation = 1, Closure $next = null) + public static function sortByField($name, $orientation = 1, ?Closure $next = null) { if (!$next) { $next = function ($a, $b) { diff --git a/system/src/Grav/Framework/Pagination/AbstractPagination.php b/system/src/Grav/Framework/Pagination/AbstractPagination.php index 084fb1d490..401b1662b8 100644 --- a/system/src/Grav/Framework/Pagination/AbstractPagination.php +++ b/system/src/Grav/Framework/Pagination/AbstractPagination.php @@ -121,7 +121,7 @@ public function getNextNumber(int $count = 1): ?int * @param string|null $label * @return PaginationPage|null */ - public function getPage(int $page, string $label = null): ?PaginationPage + public function getPage(int $page, ?string $label = null): ?PaginationPage { if ($page < 1 || $page > $this->pages) { return null; @@ -163,7 +163,7 @@ public function getPage(int $page, string $label = null): ?PaginationPage * @param int $count * @return PaginationPage|null */ - public function getFirstPage(string $label = null, int $count = 0): ?PaginationPage + public function getFirstPage(?string $label = null, int $count = 0): ?PaginationPage { return $this->getPage(1 + $count, $label ?? $this->getOptions()['label_first'] ?? null); } @@ -173,7 +173,7 @@ public function getFirstPage(string $label = null, int $count = 0): ?PaginationP * @param int $count * @return PaginationPage|null */ - public function getPrevPage(string $label = null, int $count = 1): ?PaginationPage + public function getPrevPage(?string $label = null, int $count = 1): ?PaginationPage { return $this->getPage($this->page - $count, $label ?? $this->getOptions()['label_prev'] ?? null); } @@ -183,7 +183,7 @@ public function getPrevPage(string $label = null, int $count = 1): ?PaginationPa * @param int $count * @return PaginationPage|null */ - public function getNextPage(string $label = null, int $count = 1): ?PaginationPage + public function getNextPage(?string $label = null, int $count = 1): ?PaginationPage { return $this->getPage($this->page + $count, $label ?? $this->getOptions()['label_next'] ?? null); } @@ -193,7 +193,7 @@ public function getNextPage(string $label = null, int $count = 1): ?PaginationPa * @param int $count * @return PaginationPage|null */ - public function getLastPage(string $label = null, int $count = 0): ?PaginationPage + public function getLastPage(?string $label = null, int $count = 0): ?PaginationPage { return $this->getPage($this->pages - $count, $label ?? $this->getOptions()['label_last'] ?? null); } @@ -289,7 +289,7 @@ protected function setRoute(Route $route) * @param array|null $options * @return $this */ - protected function setOptions(array $options = null) + protected function setOptions(?array $options = null) { $this->options = $options ? array_merge($this->defaultOptions, $options) : $this->defaultOptions; @@ -300,7 +300,7 @@ protected function setOptions(array $options = null) * @param int|null $page * @return $this */ - protected function setPage(int $page = null) + protected function setPage(?int $page = null) { $this->page = (int)max($page, 1); $this->start = null; @@ -312,7 +312,7 @@ protected function setPage(int $page = null) * @param int|null $start * @return $this */ - protected function setStart(int $start = null) + protected function setStart(?int $start = null) { $this->start = (int)max($start, 0); $this->page = null; @@ -324,7 +324,7 @@ protected function setStart(int $start = null) * @param int|null $limit * @return $this */ - protected function setLimit(int $limit = null) + protected function setLimit(?int $limit = null) { $this->limit = (int)max($limit ?? $this->getOptions()['limit'], 0); @@ -353,7 +353,7 @@ protected function setTotal(int $total) * @param array|null $options * @return void */ - protected function initialize(Route $route, int $total, int $pos = null, int $limit = null, array $options = null) + protected function initialize(Route $route, int $total, ?int $pos = null, ?int $limit = null, ?array $options = null) { $this->setRoute($route); $this->setOptions($options); diff --git a/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php b/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php index b329c53d47..5dbf218053 100644 --- a/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php +++ b/system/src/Grav/Framework/Pagination/Interfaces/PaginationInterface.php @@ -72,33 +72,33 @@ public function getOptions(): array; * @param string|null $label * @return PaginationPage|null */ - public function getPage(int $page, string $label = null): ?PaginationPage; + public function getPage(int $page, ?string $label = null): ?PaginationPage; /** * @param string|null $label * @param int $count * @return PaginationPage|null */ - public function getFirstPage(string $label = null, int $count = 0): ?PaginationPage; + public function getFirstPage(?string $label = null, int $count = 0): ?PaginationPage; /** * @param string|null $label * @param int $count * @return PaginationPage|null */ - public function getPrevPage(string $label = null, int $count = 1): ?PaginationPage; + public function getPrevPage(?string $label = null, int $count = 1): ?PaginationPage; /** * @param string|null $label * @param int $count * @return PaginationPage|null */ - public function getNextPage(string $label = null, int $count = 1): ?PaginationPage; + public function getNextPage(?string $label = null, int $count = 1): ?PaginationPage; /** * @param string|null $label * @param int $count * @return PaginationPage|null */ - public function getLastPage(string $label = null, int $count = 0): ?PaginationPage; + public function getLastPage(?string $label = null, int $count = 0): ?PaginationPage; } diff --git a/system/src/Grav/Framework/Pagination/Pagination.php b/system/src/Grav/Framework/Pagination/Pagination.php index 99c6661a09..76f55a6aa9 100644 --- a/system/src/Grav/Framework/Pagination/Pagination.php +++ b/system/src/Grav/Framework/Pagination/Pagination.php @@ -25,7 +25,7 @@ class Pagination extends AbstractPagination * @param int|null $limit * @param array|null $options */ - public function __construct(Route $route, int $total, int $pos = null, int $limit = null, array $options = null) + public function __construct(Route $route, int $total, ?int $pos = null, ?int $limit = null, ?array $options = null) { $this->initialize($route, $total, $pos, $limit, $options); } diff --git a/system/src/Grav/Framework/Psr7/Response.php b/system/src/Grav/Framework/Psr7/Response.php index 4126ff8e66..b7ed93e380 100644 --- a/system/src/Grav/Framework/Psr7/Response.php +++ b/system/src/Grav/Framework/Psr7/Response.php @@ -35,7 +35,7 @@ class Response implements ResponseInterface * @param string $version Protocol version * @param string|null $reason Reason phrase (optional) */ - public function __construct(int $status = 200, array $headers = [], $body = null, string $version = '1.1', string $reason = null) + public function __construct(int $status = 200, array $headers = [], $body = null, string $version = '1.1', ?string $reason = null) { $this->message = new \Nyholm\Psr7\Response($status, $headers, $body, $version, $reason); } @@ -55,7 +55,7 @@ public function __construct(int $status = 200, array $headers = [], $body = null * @return static * @phpstan-param positive-int $depth */ - public function withJson($data, int $status = null, int $options = 0, int $depth = 512): ResponseInterface + public function withJson($data, ?int $status = null, int $options = 0, int $depth = 512): ResponseInterface { $json = (string) json_encode($data, $options, $depth); diff --git a/system/src/Grav/Framework/Psr7/Uri.php b/system/src/Grav/Framework/Psr7/Uri.php index 2638876227..01af4021c9 100644 --- a/system/src/Grav/Framework/Psr7/Uri.php +++ b/system/src/Grav/Framework/Psr7/Uri.php @@ -128,7 +128,7 @@ public function isRelativePathReference(): bool * @return bool * @link https://tools.ietf.org/html/rfc3986#section-4.4 */ - public function isSameDocumentReference(UriInterface $base = null): bool + public function isSameDocumentReference(?UriInterface $base = null): bool { return GuzzleUri::isSameDocumentReference($this, $base); } diff --git a/system/src/Grav/Framework/Relationships/Relationships.php b/system/src/Grav/Framework/Relationships/Relationships.php index 6485682048..55c004d47f 100644 --- a/system/src/Grav/Framework/Relationships/Relationships.php +++ b/system/src/Grav/Framework/Relationships/Relationships.php @@ -184,7 +184,7 @@ public function jsonSerialize(): array /** * @param string $name * @param array $options - * @return ToOneRelationship|ToManyRelationship + * @return ToOneRelationship|ToManyRelationship */ private function createRelationship(string $name, array $options): RelationshipInterface { @@ -203,9 +203,11 @@ private function createRelationship(string $name, array $options): RelationshipI $cardinality = $options['cardinality'] ?? ''; switch ($cardinality) { case 'to-one': + /** @var ToOneRelationship $relationship */ $relationship = new ToOneRelationship($parent, $name, $options, $data); break; case 'to-many': + /** @var ToManyRelationship $relationship */ $relationship = new ToManyRelationship($parent, $name, $options, $data ?? []); break; default: diff --git a/system/src/Grav/Framework/Relationships/ToManyRelationship.php b/system/src/Grav/Framework/Relationships/ToManyRelationship.php index 3ea501b29c..64e2e3a5c3 100644 --- a/system/src/Grav/Framework/Relationships/ToManyRelationship.php +++ b/system/src/Grav/Framework/Relationships/ToManyRelationship.php @@ -83,7 +83,7 @@ public function fetch(): array * @return bool * @phpstan-pure */ - public function has(string $id, string $type = null): bool + public function has(string $id, ?string $type = null): bool { return $this->getIdentifier($id, $type) !== null; } @@ -109,7 +109,7 @@ public function getNthIdentifier(int $pos): ?IdentifierInterface * @return IdentifierInterface|null * @phpstan-pure */ - public function getIdentifier(string $id, string $type = null): ?IdentifierInterface + public function getIdentifier(string $id, ?string $type = null): ?IdentifierInterface { if (null === $type) { $type = $this->getType(); @@ -130,7 +130,7 @@ public function getIdentifier(string $id, string $type = null): ?IdentifierInter * @param string|null $type * @return T|null */ - public function getObject(string $id, string $type = null): ?object + public function getObject(string $id, ?string $type = null): ?object { $identifier = $this->getIdentifier($id, $type); if ($identifier && is_callable([$identifier, 'getObject'])) { @@ -153,7 +153,7 @@ public function addIdentifier(IdentifierInterface $identifier): bool * @param IdentifierInterface|null $identifier * @return bool */ - public function removeIdentifier(IdentifierInterface $identifier = null): bool + public function removeIdentifier(?IdentifierInterface $identifier = null): bool { return !$identifier || $this->removeIdentifiers([$identifier]); } diff --git a/system/src/Grav/Framework/Relationships/ToOneRelationship.php b/system/src/Grav/Framework/Relationships/ToOneRelationship.php index 9b09651430..4f7e23f119 100644 --- a/system/src/Grav/Framework/Relationships/ToOneRelationship.php +++ b/system/src/Grav/Framework/Relationships/ToOneRelationship.php @@ -25,7 +25,7 @@ class ToOneRelationship implements ToOneRelationshipInterface /** @var IdentifierInterface|null */ protected $identifier = null; - public function __construct(IdentifierInterface $parent, string $name, array $options, IdentifierInterface $identifier = null) + public function __construct(IdentifierInterface $parent, string $name, array $options, ?IdentifierInterface $identifier = null) { $this->parent = $parent; $this->name = $name; @@ -74,7 +74,7 @@ public function fetch(): ?object * @return bool * @phpstan-pure */ - public function has(string $id = null, string $type = null): bool + public function has(?string $id = null, ?string $type = null): bool { return $this->getIdentifier($id, $type) !== null; } @@ -85,7 +85,7 @@ public function has(string $id = null, string $type = null): bool * @return IdentifierInterface|null * @phpstan-pure */ - public function getIdentifier(string $id = null, string $type = null): ?IdentifierInterface + public function getIdentifier(?string $id = null, ?string $type = null): ?IdentifierInterface { if ($id && $this->getType() === 'media' && !str_contains($id, '/')) { $name = $this->name; @@ -105,7 +105,7 @@ public function getIdentifier(string $id = null, string $type = null): ?Identifi * @param string|null $type * @return T|null */ - public function getObject(string $id = null, string $type = null): ?object + public function getObject(?string $id = null, ?string $type = null): ?object { $identifier = $this->getIdentifier($id, $type); if ($identifier && is_callable([$identifier, 'getObject'])) { @@ -131,7 +131,7 @@ public function addIdentifier(IdentifierInterface $identifier): bool * @param IdentifierInterface|null $identifier * @return bool */ - public function replaceIdentifier(IdentifierInterface $identifier = null): bool + public function replaceIdentifier(?IdentifierInterface $identifier = null): bool { if ($identifier === null) { $this->identifier = null; @@ -147,7 +147,7 @@ public function replaceIdentifier(IdentifierInterface $identifier = null): bool * @param IdentifierInterface|null $identifier * @return bool */ - public function removeIdentifier(IdentifierInterface $identifier = null): bool + public function removeIdentifier(?IdentifierInterface $identifier = null): bool { if (null === $identifier || $this->has($identifier->getId(), $identifier->getType())) { $this->identifier = null; diff --git a/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php b/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php index e6d084b276..4ca59541a5 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/InvalidArgumentException.php @@ -30,7 +30,7 @@ class InvalidArgumentException extends \InvalidArgumentException * @param int $code * @param Throwable|null $previous */ - public function __construct($message = '', $invalidMiddleware = null, $code = 0, Throwable $previous = null) + public function __construct($message = '', $invalidMiddleware = null, $code = 0, ?Throwable $previous = null) { parent::__construct($message, $code, $previous); diff --git a/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php b/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php index 9d6a55aff2..ebfcbbe81a 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/NotFoundException.php @@ -26,7 +26,7 @@ class NotFoundException extends RequestException * @param ServerRequestInterface $request * @param Throwable|null $previous */ - public function __construct(ServerRequestInterface $request, Throwable $previous = null) + public function __construct(ServerRequestInterface $request, ?Throwable $previous = null) { if (in_array(strtoupper($request->getMethod()), ['PUT', 'PATCH', 'DELETE'])) { parent::__construct($request, 'Method Not Allowed', 405, $previous); diff --git a/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php b/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php index 75317d979a..30495da002 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/PageExpiredException.php @@ -25,7 +25,7 @@ class PageExpiredException extends RequestException * @param ServerRequestInterface $request * @param Throwable|null $previous */ - public function __construct(ServerRequestInterface $request, Throwable $previous = null) + public function __construct(ServerRequestInterface $request, ?Throwable $previous = null) { parent::__construct($request, 'Page Expired', 400, $previous); // 419 } diff --git a/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php b/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php index 945a591c05..bd894fe580 100644 --- a/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php +++ b/system/src/Grav/Framework/RequestHandler/Exception/RequestException.php @@ -73,7 +73,7 @@ class RequestException extends \RuntimeException * @param int $code * @param Throwable|null $previous */ - public function __construct(ServerRequestInterface $request, string $message, int $code = 500, Throwable $previous = null) + public function __construct(ServerRequestInterface $request, string $message, int $code = 500, ?Throwable $previous = null) { $this->request = $request; diff --git a/system/src/Grav/Framework/RequestHandler/RequestHandler.php b/system/src/Grav/Framework/RequestHandler/RequestHandler.php index 44fb7f939d..7af26b6916 100644 --- a/system/src/Grav/Framework/RequestHandler/RequestHandler.php +++ b/system/src/Grav/Framework/RequestHandler/RequestHandler.php @@ -33,7 +33,7 @@ class RequestHandler implements RequestHandlerInterface * @param callable $default * @param ContainerInterface|null $container */ - public function __construct(array $middleware, callable $default, ContainerInterface $container = null) + public function __construct(array $middleware, callable $default, ?ContainerInterface $container = null) { $this->middleware = $middleware; $this->handler = $default; diff --git a/system/src/Grav/Framework/Route/Route.php b/system/src/Grav/Framework/Route/Route.php index c65a827693..8d009890fa 100644 --- a/system/src/Grav/Framework/Route/Route.php +++ b/system/src/Grav/Framework/Route/Route.php @@ -92,7 +92,7 @@ public function getLanguagePrefix() * @param string|null $language * @return string */ - public function getBase(string $language = null): string + public function getBase(?string $language = null): string { $parts = [$this->root]; diff --git a/system/src/Grav/Framework/Session/Messages.php b/system/src/Grav/Framework/Session/Messages.php index 66a72c4bba..a0d19979f0 100644 --- a/system/src/Grav/Framework/Session/Messages.php +++ b/system/src/Grav/Framework/Session/Messages.php @@ -50,7 +50,7 @@ public function add(string $message, string $scope = 'default'): Messages * @param string|null $scope * @return $this */ - public function clear(string $scope = null): Messages + public function clear(?string $scope = null): Messages { if ($scope === null) { if ($this->messages !== []) { @@ -83,7 +83,7 @@ public function isCleared(): bool * @param string|null $scope * @return array */ - public function all(string $scope = null): array + public function all(?string $scope = null): array { if ($scope === null) { return array_values($this->messages); @@ -105,7 +105,7 @@ public function all(string $scope = null): array * @param string|null $scope * @return array */ - public function fetch(string $scope = null): array + public function fetch(?string $scope = null): array { $messages = $this->all($scope); $this->clear($scope); diff --git a/system/src/Grav/Framework/Session/Session.php b/system/src/Grav/Framework/Session/Session.php index e30b03b2e5..5867c15133 100644 --- a/system/src/Grav/Framework/Session/Session.php +++ b/system/src/Grav/Framework/Session/Session.php @@ -477,7 +477,7 @@ protected function onSessionStart(): void * @param int|null $lifetime * @return array */ - public function getCookieOptions(int $lifetime = null): array + public function getCookieOptions(?int $lifetime = null): array { $params = session_get_cookie_params(); diff --git a/system/src/Grav/Framework/Uri/Uri.php b/system/src/Grav/Framework/Uri/Uri.php index d31937cae3..a4b3060bcd 100644 --- a/system/src/Grav/Framework/Uri/Uri.php +++ b/system/src/Grav/Framework/Uri/Uri.php @@ -209,7 +209,7 @@ public function isRelativePathReference() * @return bool * @link https://tools.ietf.org/html/rfc3986#section-4.4 */ - public function isSameDocumentReference(UriInterface $base = null) + public function isSameDocumentReference(?UriInterface $base = null) { return GuzzleUri::isSameDocumentReference($this, $base); } diff --git a/system/src/Grav/Installer/VersionUpdater.php b/system/src/Grav/Installer/VersionUpdater.php index 75a3b042fa..be28ebf4aa 100644 --- a/system/src/Grav/Installer/VersionUpdater.php +++ b/system/src/Grav/Installer/VersionUpdater.php @@ -85,7 +85,7 @@ public function getVersions(): Versions * @param string|null $name * @return string|null */ - public function getExtensionVersion(string $name = null): ?string + public function getExtensionVersion(?string $name = null): ?string { return $this->versions->getVersion($name ?? $this->name); } @@ -94,7 +94,7 @@ public function getExtensionVersion(string $name = null): ?string * @param string|null $name * @return string|null */ - public function getExtensionSchema(string $name = null): ?string + public function getExtensionSchema(?string $name = null): ?string { return $this->versions->getSchema($name ?? $this->name); } @@ -103,7 +103,7 @@ public function getExtensionSchema(string $name = null): ?string * @param string|null $name * @return array */ - public function getExtensionHistory(string $name = null): array + public function getExtensionHistory(?string $name = null): array { return $this->versions->getHistory($name ?? $this->name); } diff --git a/system/src/Grav/Installer/Versions.php b/system/src/Grav/Installer/Versions.php index 201b9e85c6..f3f4ef9873 100644 --- a/system/src/Grav/Installer/Versions.php +++ b/system/src/Grav/Installer/Versions.php @@ -34,7 +34,7 @@ final class Versions * @param string|null $filename * @return self */ - public static function instance(string $filename = null): self + public static function instance(?string $filename = null): self { $filename = $filename ?? USER_DIR . 'config/versions.yaml'; diff --git a/system/src/RocketTheme/Toolbox/Event/Event.php b/system/src/RocketTheme/Toolbox/Event/Event.php new file mode 100644 index 0000000000..412790c7a5 --- /dev/null +++ b/system/src/RocketTheme/Toolbox/Event/Event.php @@ -0,0 +1,23 @@ +grav = Fixtures::get('grav'); + parent::setUp(); +$this->grav = Fixtures::get('grav'); $this->directInstallCommand = new DirectInstallCommand(); } } diff --git a/tests/phpstan/classes/Grav/UtilsPathinfoExtension.php b/tests/phpstan/classes/Grav/UtilsPathinfoExtension.php new file mode 100644 index 0000000000..e07099c0eb --- /dev/null +++ b/tests/phpstan/classes/Grav/UtilsPathinfoExtension.php @@ -0,0 +1,56 @@ +getName() === 'pathinfo'; + } + + public function getTypeFromStaticMethodCall( + MethodReflection $methodReflection, + Node\Expr\StaticCall $methodCall, + Scope $scope + ): Type + { + $argsCount = count($methodCall->getArgs()); + if ($argsCount === 0) { + return ParametersAcceptorSelector::selectSingle($methodReflection->getVariants())->getReturnType(); + } + if ($argsCount === 1) { + $stringType = new StringType(); + + $builder = ConstantArrayTypeBuilder::createFromConstantArray( + new ConstantArrayType( + [new ConstantStringType('dirname'), new ConstantStringType('basename'), new ConstantStringType('filename')], + [$stringType, $stringType, $stringType], + ), + ); + $builder->setOffsetValueType(new ConstantStringType('extension'), $stringType, true); + + return $builder->getArray(); + } + + return new StringType(); + } +} diff --git a/tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php b/tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php index 98bbca8a9f..8989e7ed01 100644 --- a/tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php +++ b/tests/phpstan/classes/Toolbox/UniformResourceLocatorExtension.php @@ -1,4 +1,4 @@ -grav = $grav(); $this->assets = $this->grav['assets']; } - protected function _after(): void + protected function tearDown(): void { } @@ -565,12 +566,12 @@ public function testPipeline(): void $this->assets->add('test.css', null, true); $this->assets->setCssPipeline(true); $css = $this->assets->css(); - self::assertRegExp('##', $css); + self::assertMatchesRegularExpression('##', $css); //Add a core Grav CSS file, which is found. Pipeline will now return a file $this->assets->add('/system/assets/debugger/phpdebugbar', null, true); $css = $this->assets->css(); - self::assertRegExp('##', $css); + self::assertMatchesRegularExpression('##', $css); } public function testPipelineWithTimestamp(): void @@ -582,7 +583,7 @@ public function testPipelineWithTimestamp(): void //Add a core Grav CSS file, which is found. Pipeline will now return a file $this->assets->add('/system/assets/debugger.css', null, true); $css = $this->assets->css(); - self::assertRegExp('##', $css); + self::assertMatchesRegularExpression('##', $css); } public function testInline(): void diff --git a/tests/unit/Grav/Common/BrowserTest.php b/tests/unit/Grav/Common/BrowserTest.php index a1033d8c97..c44dffecb3 100644 --- a/tests/unit/Grav/Common/BrowserTest.php +++ b/tests/unit/Grav/Common/BrowserTest.php @@ -6,18 +6,19 @@ /** * Class BrowserTest */ -class BrowserTest extends \Codeception\TestCase\Test +class BrowserTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $grav = Fixtures::get('grav'); $this->grav = $grav(); } - protected function _after(): void + protected function tearDown(): void { } diff --git a/tests/unit/Grav/Common/ComposerTest.php b/tests/unit/Grav/Common/ComposerTest.php index 8c73a1fc3d..b4f47d84c6 100644 --- a/tests/unit/Grav/Common/ComposerTest.php +++ b/tests/unit/Grav/Common/ComposerTest.php @@ -3,13 +3,13 @@ use Codeception\Util\Fixtures; use Grav\Common\Composer; -class ComposerTest extends \Codeception\TestCase\Test +class ComposerTest extends \PHPUnit\Framework\TestCase { - protected function _before(): void + protected function setUp(): void { } - protected function _after(): void + protected function tearDown(): void { } diff --git a/tests/unit/Grav/Common/Data/BlueprintTest.php b/tests/unit/Grav/Common/Data/BlueprintTest.php index ff6ccf56e7..54a2879e10 100644 --- a/tests/unit/Grav/Common/Data/BlueprintTest.php +++ b/tests/unit/Grav/Common/Data/BlueprintTest.php @@ -7,7 +7,7 @@ /** * Class InstallCommandTest */ -class BlueprintTest extends \Codeception\TestCase\Test +class BlueprintTest extends \PHPUnit\Framework\TestCase { /** */ diff --git a/tests/unit/Grav/Common/GPM/GPMTest.php b/tests/unit/Grav/Common/GPM/GPMTest.php index 684ed3dd18..6968021e18 100644 --- a/tests/unit/Grav/Common/GPM/GPMTest.php +++ b/tests/unit/Grav/Common/GPM/GPMTest.php @@ -35,7 +35,7 @@ public function findPackages($searches = []) /** * Class InstallCommandTest */ -class GpmTest extends \Codeception\TestCase\Test +class GpmTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; @@ -43,13 +43,15 @@ class GpmTest extends \Codeception\TestCase\Test /** @var GpmStub */ protected $gpm; - protected function _before(): void + protected function setUp(): void { - $this->grav = Fixtures::get('grav'); + parent::setUp(); + +$this->grav = Fixtures::get('grav'); $this->gpm = new GpmStub(); } - protected function _after(): void + protected function tearDown(): void { } diff --git a/tests/unit/Grav/Common/Helpers/ExcerptsTest.php b/tests/unit/Grav/Common/Helpers/ExcerptsTest.php index 8cb473c314..950f213045 100644 --- a/tests/unit/Grav/Common/Helpers/ExcerptsTest.php +++ b/tests/unit/Grav/Common/Helpers/ExcerptsTest.php @@ -13,7 +13,7 @@ /** * Class ExcerptsTest */ -class ExcerptsTest extends \Codeception\TestCase\Test +class ExcerptsTest extends \PHPUnit\Framework\TestCase { /** @var Parsedown $parsedown */ protected $parsedown; @@ -38,8 +38,9 @@ class ExcerptsTest extends \Codeception\TestCase\Test protected $old_home; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $grav = Fixtures::get('grav'); $this->grav = $grav(); $this->pages = $this->grav['pages']; @@ -70,7 +71,7 @@ protected function _before(): void $this->uri->initializeWithURL('http://testing.dev/item2/item2-2')->init(); } - protected function _after(): void + protected function tearDown(): void { $this->config->set('system.home.alias', $this->old_home); } @@ -78,11 +79,11 @@ protected function _after(): void public function testProcessImageHtml(): void { - self::assertRegexp( + self::assertMatchesRegularExpression( '|Sample Image|', Excerpts::processImageHtml('Sample Image', $this->page) ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|Sample Image|', Excerpts::processImageHtml('Sample Image', $this->page) ); diff --git a/tests/unit/Grav/Common/InflectorTest.php b/tests/unit/Grav/Common/InflectorTest.php index 63e6e9961e..4c914474e9 100644 --- a/tests/unit/Grav/Common/InflectorTest.php +++ b/tests/unit/Grav/Common/InflectorTest.php @@ -8,7 +8,7 @@ /** * Class InflectorTest */ -class InflectorTest extends \Codeception\TestCase\Test +class InflectorTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; @@ -16,14 +16,15 @@ class InflectorTest extends \Codeception\TestCase\Test /** @var Inflector $uri */ protected $inflector; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $grav = Fixtures::get('grav'); $this->grav = $grav(); $this->inflector = $this->grav['inflector']; } - protected function _after(): void + protected function tearDown(): void { } diff --git a/tests/unit/Grav/Common/Language/LanguageCodesTest.php b/tests/unit/Grav/Common/Language/LanguageCodesTest.php index 3450c88ea5..e163942d0c 100644 --- a/tests/unit/Grav/Common/Language/LanguageCodesTest.php +++ b/tests/unit/Grav/Common/Language/LanguageCodesTest.php @@ -5,7 +5,7 @@ /** * Class ParsedownTest */ -class LanguageCodesTest extends \Codeception\TestCase\Test +class LanguageCodesTest extends \PHPUnit\Framework\TestCase { public function testRtl(): void { diff --git a/tests/unit/Grav/Common/Markdown/ParsedownTest.php b/tests/unit/Grav/Common/Markdown/ParsedownTest.php index 5706389b9e..4503c4d91c 100644 --- a/tests/unit/Grav/Common/Markdown/ParsedownTest.php +++ b/tests/unit/Grav/Common/Markdown/ParsedownTest.php @@ -13,7 +13,7 @@ /** * Class ParsedownTest */ -class ParsedownTest extends \Codeception\TestCase\Test +class ParsedownTest extends \PHPUnit\Framework\TestCase { /** @var Parsedown $parsedown */ protected $parsedown; @@ -35,8 +35,9 @@ class ParsedownTest extends \Codeception\TestCase\Test protected $old_home; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $grav = Fixtures::get('grav'); $this->grav = $grav(); $this->pages = $this->grav['pages']; @@ -72,7 +73,7 @@ protected function _before(): void $this->parsedown = new Parsedown($excerpts); } - protected function _after(): void + protected function tearDown(): void { $this->config->set('system.home.alias', $this->old_home); } @@ -88,7 +89,7 @@ public function testImages(): void '

', $this->parsedown->text('![](sample-image.jpg)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](cache-image.jpg?cropResize=200,200&foo)') ); @@ -99,11 +100,11 @@ public function testImages(): void '

', $this->parsedown->text('![](sample-image.jpg)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](cache-image.jpg?cropResize=200,200&foo)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](/home-cache-image.jpg?cache)') ); @@ -130,7 +131,7 @@ public function testImagesSubDir(): void $this->config->set('system.images.cache_all', false); $this->uri->initializeWithUrlAndRootPath('http://testing.dev/subdir/item2/item2-2', '/subdir')->init(); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](/home-cache-image.jpg?cache)') ); @@ -138,7 +139,7 @@ public function testImagesSubDir(): void '

', $this->parsedown->text('![](sample-image.jpg)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](cache-image.jpg?cache)') ); @@ -161,11 +162,11 @@ public function testImagesAbsoluteUrls(): void '

', $this->parsedown->text('![](sample-image.jpg)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](cache-image.jpg?cache)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](/home-cache-image.jpg?cache)') ); @@ -188,11 +189,11 @@ public function testImagesSubDirAbsoluteUrls(): void '

', $this->parsedown->text('![](sample-image.jpg)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](cache-image.jpg?cache)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](/home-cache-image.jpg?cropResize=200,200)') ); @@ -320,7 +321,7 @@ public function testCLSAutoSizes(): void $this->parsedown->text('![](sample-image.jpg?autoSizes=false)') ); - self::assertRegExp( + self::assertMatchesRegularExpression( '/width="400" height="200"/', $this->parsedown->text('![](sample-image.jpg?reset&resize=400,200)') ); @@ -328,33 +329,33 @@ public function testCLSAutoSizes(): void $this->config->set('system.images.cls.retina_scale', 2); - self::assertRegExp( + self::assertMatchesRegularExpression( '/width="400" height="200"/', $this->parsedown->text('![](sample-image.jpg?reset&resize=800,400)') ); $this->config->set('system.images.cls.retina_scale', 4); - self::assertRegExp( + self::assertMatchesRegularExpression( '/width="200" height="100"/', $this->parsedown->text('![](sample-image.jpg?reset&resize=800,400)') ); - self::assertRegExp( + self::assertMatchesRegularExpression( '/width="266" height="133"/', $this->parsedown->text('![](sample-image.jpg?reset&resize=800,400&retinaScale=3)') ); $this->config->set('system.images.cls.aspect_ratio', true); - self::assertRegExp( + self::assertMatchesRegularExpression( '/style="--aspect-ratio: 800\/400;"/', $this->parsedown->text('![](sample-image.jpg?reset&resize=800,400)') ); $this->config->set('system.images.cls.aspect_ratio', false); - self::assertRegExp( + self::assertMatchesRegularExpression( '/style="--aspect-ratio: 800\/400;"/', $this->parsedown->text('![](sample-image.jpg?reset&resize=800,400&aspectRatio=true)') ); @@ -383,11 +384,11 @@ public function testRootImages(): void '

', $this->parsedown->text('![](home-sample-image.jpg)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](home-cache-image.jpg?cache)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](home-cache-image.jpg?cropResize=200,200&foo)') ); @@ -416,11 +417,11 @@ public function testRootImagesSubDirAbsoluteUrls(): void '

', $this->parsedown->text('![](sample-image.jpg)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](cache-image.jpg?cache)') ); - self::assertRegexp( + self::assertMatchesRegularExpression( '|

<\/p>|', $this->parsedown->text('![](/home-cache-image.jpg?cropResize=200,200)') ); diff --git a/tests/unit/Grav/Common/Page/PagesTest.php b/tests/unit/Grav/Common/Page/PagesTest.php index edff75bc83..74f816ad51 100644 --- a/tests/unit/Grav/Common/Page/PagesTest.php +++ b/tests/unit/Grav/Common/Page/PagesTest.php @@ -10,7 +10,7 @@ /** * Class PagesTest */ -class PagesTest extends \Codeception\TestCase\Test +class PagesTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; @@ -21,8 +21,9 @@ class PagesTest extends \Codeception\TestCase\Test /** @var PageInterface $root_page */ protected $root_page; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $grav = Fixtures::get('grav'); $this->grav = $grav(); $this->pages = $this->grav['pages']; diff --git a/tests/unit/Grav/Common/Twig/Extensions/GravExtensionTest.php b/tests/unit/Grav/Common/Twig/Extensions/GravExtensionTest.php index 2adb023788..d5370b1f41 100644 --- a/tests/unit/Grav/Common/Twig/Extensions/GravExtensionTest.php +++ b/tests/unit/Grav/Common/Twig/Extensions/GravExtensionTest.php @@ -7,7 +7,7 @@ /** * Class GravExtensionTest */ -class GravExtensionTest extends \Codeception\TestCase\Test +class GravExtensionTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; @@ -15,8 +15,9 @@ class GravExtensionTest extends \Codeception\TestCase\Test /** @var GravExtension $twig_ext */ protected $twig_ext; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $this->grav = Fixtures::get('grav'); $this->twig_ext = new GravExtension(); } diff --git a/tests/unit/Grav/Common/UriTest.php b/tests/unit/Grav/Common/UriTest.php index c36ce52daf..8f236dc403 100644 --- a/tests/unit/Grav/Common/UriTest.php +++ b/tests/unit/Grav/Common/UriTest.php @@ -9,7 +9,7 @@ /** * Class UriTest */ -class UriTest extends \Codeception\TestCase\Test +class UriTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; @@ -858,15 +858,16 @@ class UriTest extends \Codeception\TestCase\Test ], ]; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $grav = Fixtures::get('grav'); $this->grav = $grav(); $this->uri = $this->grav['uri']; $this->config = $this->grav['config']; } - protected function _after(): void + protected function tearDown(): void { } diff --git a/tests/unit/Grav/Common/UtilsTest.php b/tests/unit/Grav/Common/UtilsTest.php index 9a29ad7e2f..05b7cbd8c0 100644 --- a/tests/unit/Grav/Common/UtilsTest.php +++ b/tests/unit/Grav/Common/UtilsTest.php @@ -8,7 +8,7 @@ /** * Class UtilsTest */ -class UtilsTest extends \Codeception\TestCase\Test +class UtilsTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; @@ -16,14 +16,15 @@ class UtilsTest extends \Codeception\TestCase\Test /** @var Uri $uri */ protected $uri; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $grav = Fixtures::get('grav'); $this->grav = $grav(); $this->uri = $this->grav['uri']; } - protected function _after(): void + protected function tearDown(): void { } diff --git a/tests/unit/Grav/Console/Gpm/InstallCommandTest.php b/tests/unit/Grav/Console/Gpm/InstallCommandTest.php index 94aef1ac81..43dd5a49f7 100644 --- a/tests/unit/Grav/Console/Gpm/InstallCommandTest.php +++ b/tests/unit/Grav/Console/Gpm/InstallCommandTest.php @@ -7,7 +7,7 @@ /** * Class InstallCommandTest */ -class InstallCommandTest extends \Codeception\TestCase\Test +class InstallCommandTest extends \PHPUnit\Framework\TestCase { /** @var Grav $grav */ protected $grav; @@ -16,13 +16,14 @@ class InstallCommandTest extends \Codeception\TestCase\Test protected $installCommand; - protected function _before(): void + protected function setUp(): void { + parent::setUp(); $this->grav = Fixtures::get('grav'); $this->installCommand = new InstallCommand(); } - protected function _after(): void + protected function tearDown(): void { } } diff --git a/tests/unit/Grav/Framework/File/Formatter/CsvFormatterTest.php b/tests/unit/Grav/Framework/File/Formatter/CsvFormatterTest.php index 7bff4e25fe..cce1d20fc7 100644 --- a/tests/unit/Grav/Framework/File/Formatter/CsvFormatterTest.php +++ b/tests/unit/Grav/Framework/File/Formatter/CsvFormatterTest.php @@ -5,7 +5,7 @@ /** * Class CsvFormatterTest */ -class CsvFormatterTest extends \Codeception\TestCase\Test +class CsvFormatterTest extends \PHPUnit\Framework\TestCase { public function testEncodeWithAssocColumns(): void { diff --git a/tests/unit/Grav/Framework/Filesystem/FilesystemTest.php b/tests/unit/Grav/Framework/Filesystem/FilesystemTest.php index 2aea40ca46..eb9eab0f5b 100644 --- a/tests/unit/Grav/Framework/Filesystem/FilesystemTest.php +++ b/tests/unit/Grav/Framework/Filesystem/FilesystemTest.php @@ -5,7 +5,7 @@ /** * Class FilesystemTest */ -class FilesystemTest extends \Codeception\TestCase\Test +class FilesystemTest extends \PHPUnit\Framework\TestCase { protected $class; @@ -280,12 +280,14 @@ class FilesystemTest extends \Codeception\TestCase\Test ], ]; - protected function _before(): void + protected function setUp(): void { - $this->class = Filesystem::getInstance(); + parent::setUp(); + +$this->class = Filesystem::getInstance(); } - protected function _after(): void + protected function tearDown(): void { unset($this->class); }